Comments (11)
i don't think what visual separation is useless
from awesome.
Oh, I forgot to talk about the code:
Done:
- Implement for all layouts
- Add methods in awful.tag like other properties
What's left:
- Find a way to hook that with beautiful (I don't want to
require()
it in awful.tag - Remove the 10px default and use 0px
- Somehow add comments in theme or rc.lua to guide users
- Port to master
- Do more advanced testing
from awesome.
For what it's worth, I would love to see this in Awesome. For now, I use lain, which is great but has one annoying issue.
from awesome.
Neat. I'd like this.
from awesome.
@BenoitZugmeyer @liquiddandruff: Can you test the branch and give some feedback?
Thanks
from awesome.
Testing it right now. No issue spotted. I'll keep using it for a few days.
If anyone is interested, here is an ArchLinux PKGBUILD
from awesome.
I've spotted an issue:
- With the layout awful.layout.suit.tile
- Open two clients
- Increase the number of columns (
awful.tag.incncol(1)
, default binding Mod+Ctrl+h)
The space between the clients is increasing.
from awesome.
I would definitely like this to be added. Window borders are so ugly, but useless gaps provide the same separation while looking nice! I'll see if I can play around with the code a bit.
from awesome.
I took a different approach which I find much simpler: silverhammermba/awesome@986e9bf
My idea was to let the layout arrange the clients as usual, then perform a second pass to slightly shrink each client to create the gaps. The advantage of this method is that it involves very little code and is layout-agnostic.
However, there are two issues with this approach:
- Since each layout directly modifies the client geometry, this approach resizes each client twice when arranging the screen (once for the layout, once for the gaps). This causes an unpleasant flickering effect.
- A naive implementation completely breaks the floating layout. That's because the floating layout doesn't actually mark the clients as floating (they are still returned by
awful.client.tiled
) it just doesn't modify any client geometry. But this results in every client shrinking down to nothing because the second pass assumes that the client geometry has been set to some fixed size before shrinking it. My workaround is to store the client geometries before the layout does its stuff, so that we can check if the geometry was unchanged and not shrink it.
I think that both of these problems could be solved by DRYing off the layout code so that each layout simply partitions the screen according to the number of clients, returns the resulting geometries, and the geometries are actually applied in awful.layout.arrange
after optional post-processing (for borders, useless gaps, etc.). I implemented these as #101
from awesome.
Now that #101 is merged, useless gaps can/should be implemented based on it (silverhammermba@986e9bf).
@silverhammermba
Can you please create a new PR for this?
from awesome.
Sure thing, but I'm stuck in the same place @Elv13 was: making the gaps not hard-coded. I feel like they should be configured similarly to border widths, but there's a surprising amount of code for handling the border width property. Any advice on how I should approach this?
from awesome.
Related Issues (20)
- Multiple windows struck to gether with padding HOT 2
- Hotkeys overwritten by KDE when system wakes up HOT 1
- Notification tray icon issue w/ Indicator Sound Switcher HOT 5
- Attach clients into the stack area when you toggle a new tag into view
- prompt hooks keep making prompt stopped HOT 1
- Focus by hover ignored after layout change to max HOT 1
- Border around Firefox developer tools popup HOT 11
- awesomeWM workspaces and skippy-xd HOT 3
- `urgent = false` not working HOT 3
- BUG: `gears.timer {call_now=true}` doesn't pass `self` (`ret`) HOT 1
- Incorrect completion_callback usage example
- Errors returned with luajit but not lua 5.4 HOT 2
- Mouse events ignored by application only when managed by Awesome
- Lgi FFI error on startup HOT 1
- Multiple definition error while compiling on a 32bit machine. HOT 1
- GTK theme breaks if user's locale uses commas instead of dots as decimal separators HOT 11
- How to make new notifications update to existing notifications? HOT 2
- workaround for pystray python tray icon programs HOT 2
- Shell environment not correct while using `awful.spawn_with_shell`? HOT 4
- Stdout not working correctly for awful.spawn.with_line_callback but stderr does HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from awesome.