this post was submitted on 08 Jan 2024
71 points (96.1% liked)

Linux

48224 readers
111 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

Tiling window manager users: how exactly do you use yours?

Do you have advanced keybindings for bringing up frequently used programs?

Are there less common layouts you use frequently?

Do you use any advanced or fancy features?

all 30 comments
sorted by: hot top controversial new old
[–] [email protected] 31 points 10 months ago (1 children)

I read this as "tilting window manager" and was about to get so upset. That diagonal monitor meme has infected my brain

[–] [email protected] 7 points 10 months ago (1 children)
[–] [email protected] 4 points 10 months ago

that's so much more in depth than the lemmy post I saw 😭

[–] [email protected] 10 points 10 months ago (3 children)

I have a very unusual workflow. In addition to not stacking windows, I don't minimize them either. Instead, I spread them out over many workspaces. Per workspace, I usually only have 1 or 2 windows, but I 'group' workspaces to keep semantically related windows together.
And I do that, by having all workspaces in a column and just placing windows in neighboring workspaces + leaving workspaces empty between the groupings. I also have a minimap for my workspaces in my panel, to just keep track of all of this.

I like this workflow a lot, because it maps semantics to location. It feels like a desk where you just place related documents next to each other and might place some documents more in the middle, others in a faraway corner.

This is in contrast to the traditional Windows workflow or the workflow that many tiling folks use, where the first workspace is for web browsing etc..
Those use groupings based on the kind of task you do in them (often effectively being tabs in an application), like web browsing. They don't group by the topic, e.g. you might frantically research ants and use a separate browser window, separate text editor etc., all grouped up for ants.

Now, traditional use of workspaces does allow this grouping by topics, by just assigning each workspace a topic. But personally, I found that too static.
Like, yeah, I have some larger, completely distinct topics, but often I'll just quickly research bees and that's kind of ant-related, but doesn't need to be fully mixed with that either. I'd rather just place it to the side of the ant stuff.

[–] [email protected] 4 points 10 months ago* (last edited 10 months ago)

That's pretty much what I do as well. It was an absolute game-changer for me when I discovered tiling WMs some ~7 years ago, because it meant super consistent keyboard shortcuts for getting to exactly what I wanted to interact with. I know where individual apps/tasks go, so I put them there. And then when I need to switch to them, it's as straightforward as Super+[workspace].

Also helps a ton that i3wm's workspaces only take up a single monitor at a time, which makes it excellent for jumping between monitors.

None of this is set in stone, but I usually follow a relatively consistent pattern:

Center Monitor

  • 1: Primary/"serious tasks" web browser
  • 4: Any remote or virtualized desktop I might have open at the time
  • 6: Image/video editors. Also sometimes just misc usage.
  • 8: Development web browser next to neovim
  • 9: Steam/games
  • 10: Misc. Often a DBMS or file manager
  • 11: Misc. Often where I put any secondary tasks or second projects I need to reference
  • 12: Misc. Often where I'll stick any long-running tasks that I just need to check on every now and again.

Left monitor

  • 2: Music/comms/task list

Right monitor

  • 3: Always only a terminal.
  • 5: Text editor to use as a
  • 7: Secondary/"wasting time" web browser
[–] [email protected] 3 points 10 months ago (1 children)

There is two of us. Sidenote: my workspaces are all named after the topic they represent. E.g. dots, htmxpoc...

[–] [email protected] 1 points 10 months ago

I don't do that (again, too static for me), but I have larger meta-workspaces still, which group 20 workspaces each into very big, very distinct topics like "Orga" and "Work".

[–] [email protected] 3 points 10 months ago

I do this too, but additionally group these outputs strategically on my 4 displays. I never thought of it like a desk with papers on it but that's very much what it is. And also how I organize papers on the few occasions that I do that.

[–] [email protected] 5 points 10 months ago

So, I use keybindings for my browser, terminal, file manager, run launcher, Screenshots (latest addition), music player, and a few other things, but almost everything else is for window management such as changing layouts (which I never use), Promoting a Window to master, moving a window up and down the stack, closing the focused window, switching between workspaces and moving windows between workspaces.

For me, the most used features of a tiling window manager are keybindings, workspaces and then tiling, in that order. I usually keep my windows either maximised or as 2 windows next to each other. I sometimes use 3 windows in a workspace, albeit rarely, and I pretty much never use 4 windows in the same workspace.

In terms of workspaces, I use my 9th (last) workspace for my music player, and the other workspaces for other things depending on what I'm doing. I know some people have a workspace for web browsing, a workspace for programming etc. but I have a pretty dynamic range of things I use my device for, so I don't have the workspaces marked for a specific use.

For example, in the last few days, I found myself following the updates for a game I play so discord was opened on workspace 8. I needed 3 vscodium windows and 2 workspaces with a total of 5 terminals between them. That's 5 workspaces total. I also had a workspace with 2-3 browsers where I would change between them when needed (meaning I would have 1 maximised and then maximise another when needed, hiding the others under it), with discord on the 8th workspace, and cmus, my music player on the 9th. I think only 1 workspace was free at that time. So safe to say, I use my workspaces a lot.

In terms of my layout, I have used, currently use, and will continue to use a tiling (master and stack) layout where the new window is spawned at the bottom of the stack (rather than at the top, or after the currently focused window), with the master window on the left, and the ratio between the master and the stack being 0.5 (meaning the master window takes half, the stack splits the other half). That way, I can have, for example, my browser on the left, a terminal on the right, and if I temporarily need a file manager for something, it will open at the bottom of the stack, under the terminal, regardless of where my mouse is (I use dynamic tiling), with minimal changes to the layout of other windows (My browser is still on the left, my terminal is still on the right, and as my terminal remains on the top right, it means that there is no need for me to readjust to a different window layout because I spawned a new window for a few seconds.

So yes, that's the workflow I use and have used for a while. As I'm on Hyprland, I decided I might as well use the animations available, and I think I'm running the default in terms of animations and rounded corners. One of the things that sold me on Hyprland were the rounded corners, with the animations just being a nice benefit. I have ran Hyprland both with and without them, and it really doesn't change anything for me. In fact, they are so unimportant to me that I had to check if I had them activated right now to see if I use them, and yet when I do occasionally notice them, I enjoy the fluidity that they create. I have also recently decided to "upgrade" my setup a bit and I changed the "Brightness:", "Mem:", "CPU:" and other text indicators, to icons, and habe mande the bar rounded and floating, and it looks so much better. While I was at it, I wanted to changed the Wayland icon, which was a bit blurry, to an Arch icon, and prepared a config with a NixOS icon, as I plan on switching to NixOS full time eventually.

If there is anything else you are interested in or have questions about, feel free to ask.

[–] Samueru 5 points 10 months ago* (last edited 10 months ago)

i3 here, mine is very different from the usual, I made it to use the left hand as much as possible:

How I launch commonly used programs:

bindsym $mod+F1 exec --no-startup-id pgrep librewolf && i3-msg "[class=LibreWolf] focus" && dunstify -r 34 -t 1500 "LibreWolf"  || librewolf | dunstify -r 34 -t 2000 "Launching non-XDG Compliant Software: LibreWolf"
bindsym $mod+Shift+F1 exec --no-startup-id librewolf | dunstify -r 35 -t 1000 "New LibreWolf Window"
bindsym $mod+F2 exec --no-startup-id thunar
bindsym $mod+F3 exec --no-startup-id pgrep deadbeef && i3-msg "[class=Deadbeef] focus" && dunstify -r 36 -t 1500 "DeaDBeef" || deadbeef | dunstify -r 36 -t 2000 "Launching DeaDBeef"
bindsym $mod+F4 exec --no-startup-id pgrep ferdium && i3-msg "[class=Ferdium] focus" && dunstify -r 37 -t 1500 "Ferdium" || ferdium | dunstify -r 37 -t 2000 "Launching Ferdium"
bindsym $mod+F5 exec --no-startup-id pgrep freetube && i3-msg "[class=FreeTube] focus" && dunstify -r 38 -t 1500 "FreeTube" || freetube | dunstify -r 38 -t 2000 "Launching Freetube"
bindsym $mod+F6 exec --no-startup-id pgrep steam && i3-msg "[class=steam] focus" && dunstify -r 39 -t 1500 "Steam" || exec steam | dunstify -r 39 -t 2000 "Launching Ruthless non-XDG Compliant Software: Steam" "(Also fucks your screensaver lol)"
bindsym $mod+F7 exec --no-startup-id pgrep yuzu && i3-msg "[class=yuzu] focus" && dunstify -r 40 -t 1500 "yuzu" || gamemoderun yuzu | dunstify -r 40 -t 2000 "Launching yuzu"

If the program is already opened and I press the key it will focus on it instead of opening another window, to open another window for the browser I need to press Shift. (And yes I have some beef against programs that don't follow xdg base directory specs lol)

For navigation keys, I use esdf instead of wasd, I can also use the arrow keys:


bindsym $mod+Shift+r layout toggle splitv tabbed splith
bindsym $mod+r layout toggle splith tabbed splitv
bindsym $mod+q kill
bindsym $mod+z split toggle
bindsym $mod+g fullscreen toggle
bindsym $mod+Shift+space floating toggle, resize set 710 400, move position center
bindsym $mod+Mod1+space floating toggle
bindsym $mod+space focus mode_toggle
bindsym $mod+Shift+x move scratchpad, exec --no-startup-id dunstify -r 33 -t 1500 "Window Moved to Scratchpad"
bindsym $mod+x scratchpad show, exec --no-startup-id dunstify -r 33 -t 1500 "Scratchpad Show"
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
bindsym $mod+a exec --no-startup-id ~/.local/bin/scripts/togglefocus.sh 

bindsym $mod+s focus left
bindsym $mod+d focus down
bindsym $mod+e focus up
bindsym $mod+f focus right

bindsym $mod+Ctrl+Left resize shrink width 100 px or 15 ppt
bindsym $mod+Ctrl+Down resize shrink height 100 px or 15 ppt
bindsym $mod+Ctrl+Up resize grow height 100 px or 15 ppt
bindsym $mod+Ctrl+Right resize grow width 100 px or 15 ppt

bindsym $mod+Ctrl+s resize shrink width 100 px or 15 ppt
bindsym $mod+Ctrl+d resize shrink height 100 px or 15 ppt
bindsym $mod+Ctrl+e resize grow height 100 px or 15 ppt
bindsym $mod+Ctrl+f resize grow width 100 px or 15 ppt

I had to use an script for mod+a because i3 can't use the same keybind to focus parent and focus child (I use it like select all thing).

The default config of i3 has a resize mode, I got rid of all of that, it is much better to use mod+control to resize lol.

I also have the mouse side buttons to control media playback as well as making the window float with middleclick:

bindsym --whole-window $mod+button2 floating toggle, resize set 710 400, move position center
bindsym --whole-window $mod+button9 exec --no-startup-id playerctl next
bindsym --whole-window $mod+button8 exec --no-startup-id playerctl previous
bindsym --whole-window $mod+Shift+button8 exec --no-startup-id playerctl play-pause && sleep 0.2 && playerctl metadata --format '{{ status }}: {{ title }} by {{ artist }}' | xargs -0 -I {} dunstify -r 11 -t 2000 "Playback" "{}"

edit: lemmy can’t display && when I paste it as code lol

[–] [email protected] 5 points 10 months ago* (last edited 10 months ago) (1 children)

I mostly work in qtile in a fullscreen layout or a diagonal split between two windows. My hotkeys are super+d for rofi in dmenu mode and super+q for a shutdown menu also in rofi.

[–] Samueru 1 points 10 months ago* (last edited 10 months ago)

I use mod+enter or mod+~ (the key is called grave) to open rofi

mod+q closes the program while mod+shift+q opens rofi-power-menu which is what I use to reset, shutdown, logout, etc

mod+d is part of my navigation keys, that way I can move focus or programs around with just the left hand:

mod+esdf to move focus

mod+shift+esdf to move the window

mod+control+esdf to resize the window

[–] Waffelson 5 points 10 months ago

I use hyprland My browser and daemons are autostart and I've some keybinds

App launch

Mod + e file manager (thunar) Mod + d app launcher (fuzzel) Mod + return terminal emulator (foot) Mod + b btop Mod + c cava

Window control

Mod + q close window Mod + space toggle float mode Mod + f toggle fullscreens mode

[–] [email protected] 4 points 10 months ago* (last edited 10 months ago)

Former Xmonad user here.

I had two 5 screens and two columns. One screen was for terminal emulators, one was for writing code and software development, one was for my web browser, 2 others were for miscelaneous things, but most often were for working with files a GUI file browser like Nautilus or Thunar, or for reading PDF files in Evince, or reading PowerPoint or Excel documents in LibreOffice.

On each screen the tiles were always in 2 columns. The left for doing work, writing code, prose, drawing graphics and charts, interacting with the CLI, and so on. On the right was documentation: manual pages, PDF files, HTML documents, sometimes the MPV video player window when watching a tutorial that I was able to download from YouTube.

The right column usually had no more than 3 windows open, they started to get too narrow to be useful if more than that were open. I would occasionally horizontally split the left column as well, usually when going back and forth between two documents I was editing.

However...

I did not use this workflow once I started using Tmux, and then I continued not using this workflow when I switched to Emacs. The reason is of course because Tmux and Emacs both provide their own tiling windowing system that operate within a single application window. So my main workflow was always in a single maximized terminal window, or a single maximized Emacs window, or a single maximized GIMP window. Only occasionally would I un-maximize these windows, but then to keep it from getting too small, I would set it in "floating window" mode. Also my web browser, PDF reader, GIMP, LibreOffice, all worked better in full-screen (maximized window) mode. Even Thunar (GUI file browser) has multiple tabs, and a multi-column mode which was useful for the very few times I ever needed a GUI file browser.

At one point, I actually changed my tiling window manager configuration to always open windows maximized, except for Thnuar (GUI file browser) which would open in floating mode, not tiling mode. At that point I finally realized that I don't really using a tiling window manager at all, it is just there managing windows the same as a non-tiling window manager would do.

I switched back to the Xfce default window manager, and quit worrying about window managers all together.

[–] [email protected] 4 points 10 months ago* (last edited 10 months ago) (1 children)

Gnome + pop shell extension. Normal i3 tiling keybinds. All the following bindings include super. w for tabbed layout, f1 for calculator, f2 for Firefox, f3 for nautilus, f4 for settings, f5 for package manager. D for search which I can use like dmenu but much better. Shift+s for screenshot. Shift+q to quit application. I program with in the terminal so I need tiling for keyboard-only use. when I first used i3 I underrated tabbing. It solved nearly all of my problems with tiling.

[–] Samueru 2 points 10 months ago* (last edited 10 months ago)

I have mod+c for the calculator:

bindsym $mod+c exec --no-startup-id pgrep mate-calc && killall mate-calc || mate-calc

mod+c opens it and if I press mod+c again it will close it instead. Same trick with mod+b for pavucontrol.

edit: lemmy can't display && when I paste it as code lol

[–] [email protected] 4 points 10 months ago

I just use Super+p to run commands. Awesome and custom keybidings are to easily move between tags, windows and monitors, not to launch programs. I use nvim for coding and this combined with awesome means I can do a lot without touching my mouse. At work I use Cinnamon and IntelliJ tools and it's just less ergonomic. Not a huge difference but I definitely prefer my home setup. In general all Linux WM I used over the years were easy to configure and get good experience. The worst environment I had to ever use was OS X. I just hated all their weir solutions like the launch bar and the common menu bar on top. On Linux I never had any issues.

[–] jjhanger 3 points 10 months ago

I use awesome. Right now I use pretty standard key bindings. I have it looking more like i3, due to the awful wibar placement and font size. I've thought about making special key bindings for constantly used programs however I'm pretty content with Super-P and type the program I want. The most customized I have the awesome config file is, the only available layout is set to spiral and dwindle.

Soon I'd like to implement glyphs and once I figure that out I'll be more apt to make keyboard shortcuts. I also would like to see if I can round up the awful wibar.

[–] [email protected] 3 points 10 months ago* (last edited 10 months ago)

Last 25 years I have been using a couple of different tiling window managers. My main workstations usually have four monitors, accessed by AltGr+number.

I heavily base my workflow on virtual desktops, accessed by Ctrl+number.

Each virtual desktop have a specific type of programs on it:

  1. Development
  2. Terminals
  3. Browsers
  4. Communication / documentation
  5. Multimedia
  6. Graphics
  7. SQL
  8. Debugging
  9. Email
  10. Virtual machines / monitoring

So with this I can access nearly every program with AltGr+number, Ctrl+number which is quite quick. As long as I remember the monitor I placed it on, I always know which virtual desktop.

I use chained keyboard shortcuts for window manager shortcuts, here: https://files.ahall.se/images/i3-keybindings.svg (old one, this has grown a bit...)

The chaining allows me to easier remember shortcuts with mnemonics, and they are fast enough, especially considering the amount of shortcuts I can scale it to.

  • Alt+T to start the chain, L for Layout, R for Resize.
  • Alt+T, R for Run, I for Inkscape.
  • Alt+T, A for Audio, N for Next.

There are some exceptions for the most used focus- and window moving operations, as well as for managing a clipboard buffer system. There are too many times when one goes back and forth to copy something, paste it somewhere else and going back for the previous one. So I can copy something, press Ctrl+Shift+3 to put in buffer 3. After a few other copy/pastes, I bring it into clipboard again with Ctrl+Alt+3. This also allows me to for example reload a page I'm working on and login with user/pass easily accessible in buffer 1 and 2, or login to four different network devices again and again without going to a text file and copying one of four passwords each and every time.

I wrote a special session manager via socket for i3 to be able to press Ctrl+number and go to a certain predefined desktop on the current monitor I'm at.

[–] [email protected] 3 points 10 months ago

simplicity, there is a comfort from not having to position windows for mutitasking

[–] [email protected] 3 points 10 months ago

AwesomeWM:

  • 3 tags (term, web and files)
  • A different layout for every tag (CornerSE, Maximize and Fair, in that order)
  • Super+/ for a hotkey list
  • Super+P for rofi -show run
  • Super+C for a scratchpad with profanity
  • Super+V for a scratchpad with cmus
  • Super+X for a scratchpad with notes
  • Super+~ for a quake term
  • Most of the default Awesome keybindings

In the files tag I run terms and Thunar, in the web tag qutebrowser and everything else in the term tag.

[–] [email protected] 2 points 10 months ago

Using i3, I have a screen shot utility bound, a gif maker bound, and also I have a smart light which i turn on and off via an HTTP request, also bound in i3.

[–] [email protected] 2 points 10 months ago* (last edited 10 months ago) (1 children)

sway with tabs (i usually dont use actual tiling)+4-5 workspaces

waybar for status display and on mobile also for menu access

rofi as the app launcher (i also plan to write a proper rofi menu for my phone for quick access to useful commands/config but it's heavily wip)

i patched sway for push to talk because wayland spec doesnt support keybindings in a way required for push to talk for now

i also plan to patch it on the phone to completely forbid fullscreen apps (as they hide the menu which i use for workspace/window switching) and show the window bar on all windows (for example, firefox extension/downloads popups)

[–] [email protected] 3 points 10 months ago (1 children)

Pinephone?

Also I like fuzzle better than rofi, check it out if you haven't

[–] [email protected] 1 points 10 months ago* (last edited 10 months ago)

I don't care much about rofi itself, I primarily like it for how powerful its scripting is compared to e.g. dmenu (css themes are nice to have too I guess)

And no, OnePlus 6

[–] [email protected] 1 points 10 months ago

I have an binding for my terminal, my Emacs and a general fuzzy selector for apps or SSH hosts. I generally operate with everything full screen with windows sorted across 10 named workspaces across 3 monitors.

Sway config: https://raw.githubusercontent.com/stsquad/dotfiles/master/dotconfig/sway/config

[–] GustavoM 1 points 10 months ago

Eh.

Alt + F4 to close running commands

Alt + enter for full screen

Alt + (arrow key) to switch between windows

Alt + p to run bemenu

thats it

[–] [email protected] 1 points 10 months ago

Kwin: meta+left, meta+right, meta+screenup

Thats it. For the rest I use a taskbar and buttons

[–] [email protected] 1 points 10 months ago

i use bismuth / polonium on KDE. both are very bare bone, but it's nice to have a full plasma desktop + tiling.

let me know if you happen to know a better combination