6

I've been trying different tiling WM's to see which one best fits my needs. Every time I try a new one, it looks good but I find other things that don't quite work the way I like. My requirements have evolved as I go. Initially, I didn't want to get into Awesome because having to learn Lua is not on my wish list but maybe I should give it a try IF it can do what I want better than the other tiling WM's out there.

I'm going to as specific as I can about what I want. I am running a 3440x1440 monitor. I want to use as much vertical space as possible (meaning, a full width, persistent but mostly empty status bar is not an option, but I do like the notification area and a date/time).

I understand it may not do everything exactly the way I want, which is oke. If it does more or less most of what I want I can weigh my options between Awesome and other tiling WM's (actually, only i3 which is what I'm using now but I'm open to better suggestions). I would very much appreciate it if people don't just say no to something it can't do, but say "no, but it can do ...". In other words, feel free to suggest alternatives that might be helpful as well.

  • Divide the screen in 3 columns, initially 30/45/25, with the right column split horizontally; Fully adjustable and resizable as needed during my work session;
  • Persistent layout; when closing the last application in a tile, I don't want that tile to disappear and the remaining tiles to resize. Just show an empty space and leave all tiles as they are.
  • tabbed tiles, so I see which applications are running in a tile (similar to i3).
  • Resizable tiles with the keyboard into 1 direction; When making the middle column/tile wider, I want that into a specific direction into another tile and leave the other side alone.
  • Certain applications I want to always launch into a specific tile. For instance, terminals always go into the right-most column top/bottom, browser/spotify always into the middle, atom/IDE always into the left. Some applications should always be floating. Obviously I want to be able to send them to a different tile after launch.
  • I don't want a 100% width status bar. It will be mostly empty which is a waste of screen estate. Preferably, I'd like a statusbar part of a tile, for example in the right-most tile, resizing with it. Otherwise I'd like it to be fixed to 30% and allow tiles which are not beneath it to use the full height of the screen. My reason for a statusbar is mute; I actually only want a notification area and a date time permanently visible. I don't need a "start menu", dmenu or similar is perfect, which I believe it has integrated.

Many thanks in advance!

phd68lnx
  • 93
  • 1
  • 6
  • try i3wm instead https://i3wm.org/ – hjpotter92 Jul 31 '17 at 09:32
  • Can you justify your answer please? Your reply is very minimal and hardly answers my question. I am using i3 now and it can't do persistent layout, which is my biggest gripe. – phd68lnx Jul 31 '17 at 09:54
  • You have persistent layouts in i3: https://i3wm.org/docs/layout-saving.html – hjpotter92 Jul 31 '17 at 11:35
  • 1
    No it doesn't. Saved layouts that can be restored are not the same as a persistent layout, meaning that a tile will remain empty after the last application was closed. Awesome seems to have something that makes it semi-persistent using fill_strategy but I've been unable to work out how that works. – phd68lnx Aug 04 '17 at 15:58

2 Answers2

6

The general answer is "Awesome configuration is code and it can do whatever you want". But there is a catch. Can Awesome be configured like you describe? Yes, totally. There is at least 2 distributions coming close enough (mine[1] and worron[2]) (at least for the tiling workflow, not the look).

The "catch" is that the workflow you describe isn't really the "Awesome way". Awesome is usually used as an automatic tiler. You have layouts that describe a workflow (code, web, internet) and manage the clients according to their programming. Manual tile management is rarely necessary once you have proper layouts. That doesn't mean you can't, I did, but it might be worth thinking outside the box and see if you can automate your workflow a bit further.

Also, the default layout system isn't very modern and makes it hard to implement the features you requested. My layout system (see link below) can be used as a module or as a branch and supports all features described above. Awesome is extremely configurable and it's components can be replaced by modules.

https://github.com/awesomeWM/awesome/pull/644

The layout "serialization" documentation is here:

https://elv13.github.io/libraries/awful.layout.html#awful.layout.suit.dynamic.manual

It is similar to i3 but has more layouts and containers. As for the "leaving blank space" part, it is configured using the fill_strategy:

https://awesomewm.org/doc/api/classes/wibox.layout.ratio.html#wibox.layout.ratio.inner_fill_strategy

As a word of conclusion, I would note that what you ask is "work exactly like i3". If you want such thing, well, use i3. Awesome is a window manager framework. Its goal and purpose is to create a customized desktop shell / WM. If it's what you want, then go ahead and learn it, nothing else can come close to the possibility and the level of control you can get out of it. However it takes time and effort to get to the point where you have "your own perfect desktop". Our users perfect desktops:

https://github.com/awesomeWM/awesome/issues/1395

[1] https://gfycat.com/SmallTerribleAdamsstaghornedbeetle

[2] https://www.youtube.com/watch?v=-yNALqST1-Y

  • Thanks for the elaborate answer! Maybe I misunderstand one thing, I didn't say or mean "work exactly like i3". The reason I'm here is because i3 can't do what I want. The saved/restore layout works once but its not persistent so once I close the last app, it closes the container and resizes everything. I need what I am focusing on in the middle part because the monitor is too wide and a tile resizing to the left or right edge will shift the content of my work too far left or right. I will look further into the links you provided. Thanks again! – phd68lnx Aug 01 '17 at 05:59
  • Maybe a better alternative if you want 3 "fixed" columns is to create 3 virtual screens (Awesome `screen` module has APIs for it) in your physical screen. Resizing will be a more complex, because you will have to resize the virtual screens instead of the layouts. Depending on your taste, it might have a few advantages. The most obvious one is that you have 3 sets of virtual workspaces (tags), negating the need to manage with the tabs and the empty space. On the other hand, you lose the ability to easily watch a full screen movie (the fullscreen mode will be limited to a single virtual screen). – Emmanuel Lepage Vallee Aug 01 '17 at 15:17
  • 1
    Yeh I don't want them fixed like that. Full screen needs to be possible and resizing/splitting as well, but manually. i3 frustrates me with this because I constantly need to have bogus programs open to keep my "work" program centered. I'm trying to wrap my head around awesome's config but the documentation is too academic (if thats the right word?), describes what each setting does, but not enough about how it should be implemented. I can't find good guides or examples either. – phd68lnx Aug 02 '17 at 11:44
1

The WM your are looking for is herbstluftwm (hlwm). Its a manual tiling window manager. The tiles which you are talking about are called frames in hlwm. Each frame can contain multiple windows. A frame can also be empty. Only if you kill a frame the other frames will automatically resize. You can add new frames vertically and horizontally and resize them. Each frame can also have a different layout to organize the windows inside. The layout you are looking for is max. This will stack the windows inside a frame on each other. It doesn't show you tabs like i3 however. hlwm allows you to create rules to open certain applications always in certain frames and workspaces. hlwm doesn't have a statusbar buildin. I personally like to use tint2. It can be used as a replacement for your requirement to see running applications as tabs.

aleks
  • 21
  • 2