Table of Contents
i3wm
i3wm is a simple tiling window manager for Linux. Customisation is easy, and it comes with useful defaults.
Config
Bar
You can set different bars for different screens. For example I find it useful to have time, date, battery, and volume always on my laptop screen, and have some monitoring stuff like free disk space, Internet bandwidth, and RAM usage when i have a secondary monitor plugged-in.
So I have two seperate bar{}
sections in my main i3 config file, one for each screen. You just need to give them each a label, a screen to target, and a seperate config to load.
For example this is at the top of each bar
definition:
id bar-main output LVDS1 status_command i3blocks -c ~/.config/i3blocks/config-main
id bar-secondary output VGA1 status_command i3blocks -c ~/.config/i3blocks/config-secondary
Floating Windows
Some useful lines to set some windows to always float:
for_window [title="alsamixer"] floating enable for_window [title="Calculator"] floating enable, move position center for_window [class="Firefox" instance="Navigator"] floating enable for_window [class="Godot" instance="Godot_ProjectList"] floating enable for_window [instance="Godot_Engine" title="\(DEBUG\)$"] floating enable for_window [class="Lazarus"] floating enable for_window [title="MediaInfo"] floating enable for_window [title="Minecraft Launcher"] floating enable for_window [title="Page Info*"] floating enable for_window [class="pcmanfm" instance="Confirm File Replacing"] move position center for_window [title="Preferences$"] floating enable for_window [title="Radiotray-NG Bookmark Editor"] floating enable for_window [title="Screenshot Uploader"] floating enable for_window [class="Steam" title="^Steam Community Market"] floating enable for_window [class="Thunderbird" title="^Edit Event"] floating enable
And here's a useful trick to have a shortcut to load a terminal window floating. So I have Meta+Enter
to open a regular terminal window, and Meta+Shift+Enter
to open a floating one. I use it a bunch when I want to quickly open a terminal, do something, and close it again; EG grab a video with Yt-dlp:
bindsym $mod+Shift+Return exec --no-startup-id urxvt -geometry 80x26 -name "floating_urxvt" for_window [class="URxvt" instance="floating_urxvt$"] floating enable
What this does is set a shortcut to launch Urxvt, specify window dimensions, and give it a name. Then we use the regular stuff we use to tell a window to float, and target that specific window by the name we gave it. Can't remember where I read this, but I wish I'd always known it!
Tools
- i3parse - scans config file for unused keys (+?)
- dunst - easy to setup and customise desktop notifications.