<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>sglavoie.com – Tag: Window Manager</title><link>https://www.sglavoie.com/tags/window-manager/</link><description>Posts and writings by Sébastien Lavoie. Customization setups and articles on productivity for developers who like minimalism.</description><language>en</language><atom:link href="https://www.sglavoie.com/tags/window-manager/feed.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Sat, 15 Aug 2020 10:51:00 -0500</lastBuildDate><item><title>A Guided Tour of an i3 Configuration</title><link>https://www.sglavoie.com/posts/a-guided-tour-of-an-i3-configuration/</link><description>This article will go over my dear i3 configuration file, which contains quite a few sections I hope I had stumbled upon right from the start when I got introduced to the tiling window manager world. It would probably have been less scary and intimidating. May you find the shortcut you needed!</description><content:encoded>&lt;hr&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In &lt;a href="https://www.sglavoie.com/posts/a-guided-tour-of-an-i3-configuration/"&gt;Using i3 as a Window Manager for Increased Productivity&lt;/a&gt;, a number of reasons were given to get going with this fantastic tiling window manager. Now, it&amp;rsquo;s time to jump in and explore how to actually use i3! If you&amp;rsquo;re looking for an in-depth guide, the &lt;a href="https://i3wm.org/docs/userguide.html"&gt;official i3 documentation&lt;/a&gt; or the &lt;a href="https://wiki.archlinux.org/index.php/i3"&gt;i3 page on the Arch Wiki&lt;/a&gt; are awesome resources to dive deeper. Here, we&amp;rsquo;ll focus on day-to-day usage based on my current configuration file which I have used and refined over the past three years or so. I hope that you&amp;rsquo;ll be able to glean useful tips and tricks to apply to your own use case.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="the-configuration-file"&gt;The Configuration File&lt;/h2&gt;
&lt;p&gt;To set keybindings, it &lt;em&gt;may&lt;/em&gt; be handy to know the keycodes and their respective names. To get a full list, you can use &lt;code&gt;xmodmap -pk&lt;/code&gt; in the terminal. If you&amp;rsquo;re not sure of the name of the key you want to press (is it &amp;ldquo;PageDown&amp;rdquo;, &amp;ldquo;PageDwn&amp;rdquo; or &amp;ldquo;Next&amp;rdquo;?), you can retrieve it by executing the &lt;code&gt;xev&lt;/code&gt; command, which will open two windows: one for capturing the actual key press and the other one to display the relevant details for that key. For example, if you press the backspace key, the output will contain something like &lt;code&gt;keycode 22 (keysym 0xff08, BackSpace)&lt;/code&gt;. From there, you will know that a mapping would be of the form &lt;code&gt;mod+BackSpace&lt;/code&gt;, where &lt;code&gt;mod&lt;/code&gt; is the modifier of your choice that is usually specified at the top of the configuration file. Now we can start!&lt;/p&gt;
&lt;h2 id="i3-config-shortcuts"&gt;i3 config shortcuts&lt;/h2&gt;
&lt;div class="code-block code-block--wrap"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight" wrap="true"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Paths and names&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-laptop-down &lt;span class="s2"&gt;&amp;#34;light -U 1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-laptop-up &lt;span class="s2"&gt;&amp;#34;light -A 1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-monitor-default &lt;span class="s2"&gt;&amp;#34;python3 ~/.local/bin/monitor_brightness default&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-monitor-down &lt;span class="s2"&gt;&amp;#34;python3 ~/.local/bin/monitor_brightness down&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-monitor-up &lt;span class="s2"&gt;&amp;#34;python3 ~/.local/bin/monitor_brightness up&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-toggle-laptop ~/.local/bin/toggle_laptop_brightness
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$default&lt;/span&gt;-web-browser brave-browser-stable
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$launcher&lt;/span&gt;-python-term ~/.config/ipython_launch.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$launcher&lt;/span&gt;-temp-notes ~/.config/tmpnotes_launch.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$launcher&lt;/span&gt;-todoist ~/.config/todoist_launch.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$path&lt;/span&gt;-xrandr-both ~/.config/i3/run_xrandr.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$path&lt;/span&gt;-xrandr-laptop ~/.config/i3/run_xrandr_laptop.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$path&lt;/span&gt;-xrandr-monitor ~/.config/i3/run_xrandr_monitor.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$screenshots&lt;/span&gt;-folder ~/Pictures/screenshots/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$todoist&lt;/span&gt;-app-name &lt;span class="s2"&gt;&amp;#34;crx_elldfnmogicegdcphgljaoaklkpcnbnn&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$toggle&lt;/span&gt;-mic-on-off ~/.local/bin/toggle_mic_source
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# i3 specific&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse &lt;span class="nb"&gt;exec&lt;/span&gt; ~/.config/i3/center-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$default&lt;/span&gt;-web-browser-class &lt;span class="s2"&gt;&amp;#34;(?i)brave-browser&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$exec&lt;/span&gt; &lt;span class="nb"&gt;exec&lt;/span&gt; --no-startup-id
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-primary output eDP
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-secondary output HDMI-A-0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$python&lt;/span&gt;-term &lt;span class="s2"&gt;&amp;#34;ipythonterm&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$scratchpad&lt;/span&gt;-size &lt;span class="m"&gt;1920&lt;/span&gt; &lt;span class="m"&gt;1060&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$temp&lt;/span&gt;-notes &lt;span class="s2"&gt;&amp;#34;tmpnotes&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$volumepath&lt;/span&gt; ~/.config/i3-volume/volume
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# set mod key (Mod1=Alt, Mod4=Super)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ the main modifier used to trigger shortcuts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$mod&lt;/span&gt; Mod4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Workspaces&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#######################################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Workspace names — can be customized with emojis and names&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ I find I like minimalism best and just mentally associate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# one workspace number with a specific type of task&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ those are set across all monitors&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$ws1&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$ws2&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$ws3&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$ws4&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$ws5&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;5&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$ws6&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;6&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$ws7&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;7&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$ws8&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;8&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$ws9&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;9&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$ws10&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Modes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#######################################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# set shut down, restart and locking features&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ type `$mod+Shift+Delete` then either `e`, `r` or `s`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mode &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$mode_system&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym e &lt;span class="nb"&gt;exec&lt;/span&gt; --no-startup-id i3-msg &lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym r &lt;span class="nb"&gt;exec&lt;/span&gt; --no-startup-id systemctl reboot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym s &lt;span class="nb"&gt;exec&lt;/span&gt; --no-startup-id systemctl poweroff
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# exit system mode with &amp;#34;Enter&amp;#34; or &amp;#34;Escape&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym Return mode &lt;span class="s2"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym Escape mode &lt;span class="s2"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$mode_system&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;e&lt;span class="o"&gt;)&lt;/span&gt;xit, &lt;span class="o"&gt;(&lt;/span&gt;r&lt;span class="o"&gt;)&lt;/span&gt;eboot, &lt;span class="o"&gt;(&lt;/span&gt;s&lt;span class="o"&gt;)&lt;/span&gt;hutdown
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+Delete mode &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$mode_system&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# resize with smaller steps to get more control&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mode &lt;span class="s2"&gt;&amp;#34;resize&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym h resize shrink width &lt;span class="m"&gt;2&lt;/span&gt; px or &lt;span class="m"&gt;2&lt;/span&gt; ppt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym j resize grow height &lt;span class="m"&gt;2&lt;/span&gt; px or &lt;span class="m"&gt;2&lt;/span&gt; ppt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym k resize shrink height &lt;span class="m"&gt;2&lt;/span&gt; px or &lt;span class="m"&gt;2&lt;/span&gt; ppt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym l resize grow width &lt;span class="m"&gt;2&lt;/span&gt; px or &lt;span class="m"&gt;2&lt;/span&gt; ppt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# exit resize mode: Enter or Escape&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym Return mode &lt;span class="s2"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym Escape mode &lt;span class="s2"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+r mode &lt;span class="s2"&gt;&amp;#34;resize&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show the next scratchpad window or hide the focused scratchpad window.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# If there are multiple scratchpad windows, this command cycles through them.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# There is an additional keybinding to allow a floating window to be toggled&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# (recovered as a normal window).&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# keycode 179 = F10 button&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# (not the actual F10 key, but same button on my laptop with default function!)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mode &lt;span class="s2"&gt;&amp;#34;Scratchpad&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindcode &lt;span class="m"&gt;179&lt;/span&gt; scratchpad show, resize &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="m"&gt;1920&lt;/span&gt; 1060, move position center&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; scratchpad show, resize &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="m"&gt;1920&lt;/span&gt; 1060, move position center
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+space floating toggle&lt;span class="p"&gt;;&lt;/span&gt; mode &lt;span class="s2"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Escape kill&lt;span class="p"&gt;;&lt;/span&gt; mode &lt;span class="s2"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym Escape scratchpad show&lt;span class="p"&gt;;&lt;/span&gt; mode &lt;span class="s2"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindcode &lt;span class="m"&gt;179&lt;/span&gt; mode &lt;span class="s2"&gt;&amp;#34;Scratchpad&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; scratchpad show, resize &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="m"&gt;1920&lt;/span&gt; 1060, move position center
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Caps Lock indicator, seen at&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# https://www.reddit.com/r/i3wm/comments/k8m4k4/share_your_i3_tips_and_tricks_that_you_have/gf2lppd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mode &lt;span class="s2"&gt;&amp;#34;-------------------- CAPSLOCK --------------------&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym Caps_Lock mode &lt;span class="s2"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym Caps_Lock mode &lt;span class="s2"&gt;&amp;#34;-------------------- CAPSLOCK --------------------&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Sound&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#######################################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$statuscmd&lt;/span&gt; i3status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Signal used to update the status line&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$statussig&lt;/span&gt; SIGUSR1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Amount to increase/decrease volume as a percentage&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$volumestep&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Font&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#######################################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# font for window titles&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ this is what you see in your i3bar&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$font&lt;/span&gt;-small font xft:Lato &lt;span class="m"&gt;12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$font&lt;/span&gt;-medium font xft:Lato &lt;span class="m"&gt;14&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set default font&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$font&lt;/span&gt;-small
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Font used with Rofi (dmenu alternative)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$rofi&lt;/span&gt;-font &lt;span class="s1"&gt;&amp;#39;JetBrainsMono 16&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Keyboard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#######################################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set the compose key to right Control&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$compose&lt;/span&gt;-key &lt;span class="s2"&gt;&amp;#34;compose:rctrl&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A few notes on the &lt;strong&gt;i3 config shortcuts&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This section appears at the top because it will affect how i3 works in general.&lt;/li&gt;
&lt;li&gt;It makes extensive use of the &lt;code&gt;set&lt;/code&gt; command so that all important shortcuts and paths to programs that could &amp;ldquo;break&amp;rdquo; if they are missing are easy to configure globally.&lt;/li&gt;
&lt;li&gt;It sets all the different modes that i3 can use so it can be extended in one single place.&lt;/li&gt;
&lt;li&gt;I use &lt;code&gt;Alt&lt;/code&gt; in a few applications and reserve &lt;code&gt;Super&lt;/code&gt; for the window manager only.&lt;/li&gt;
&lt;li&gt;Find the font name you need with &lt;code&gt;fc-list&lt;/code&gt;. For instance, to use JetBrains&amp;rsquo; font: &lt;code&gt;fc-list | grep Jet&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="general-settings"&gt;General settings&lt;/h2&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# launch a terminal&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Return &lt;span class="nb"&gt;exec&lt;/span&gt; kitty
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# launch a terminal in the same directory currently used&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+Return &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;xcwd&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;exec&lt;/span&gt; kitty
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# kill focused window&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ usual way to close applications&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Escape &lt;span class="nb"&gt;kill&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+mod1+Escape --release &lt;span class="nv"&gt;$exec&lt;/span&gt; xkill
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# reload the configuration file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ apply changes from this file on the fly&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+c reload
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# restart i3 inplace&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ preserves your layout/session, can be used when upgrading i3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+r restart
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# exit i3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ logs you out of your X session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+e &lt;span class="nv"&gt;$exec&lt;/span&gt; i3-msg &lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# resize windows&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# you can also use the mouse for that:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# for tiled windows ⇒&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# drag the border with LeftClick or RightClick&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# for floating windows ⇒&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# `mod + RightClick`, then drag&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# resize without entering &amp;#34;resize mode&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ I find this more convenient. I usually don&amp;#39;t care about&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# precise window sizes, so here the steps are far greater.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# If I want more control, then entering resize mode will do.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Control+l resize shrink width &lt;span class="m"&gt;10&lt;/span&gt; px or &lt;span class="m"&gt;10&lt;/span&gt; ppt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Control+k resize grow height &lt;span class="m"&gt;10&lt;/span&gt; px or &lt;span class="m"&gt;10&lt;/span&gt; ppt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Control+j resize shrink height &lt;span class="m"&gt;10&lt;/span&gt; px or &lt;span class="m"&gt;10&lt;/span&gt; ppt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Control+h resize grow width &lt;span class="m"&gt;10&lt;/span&gt; px or &lt;span class="m"&gt;10&lt;/span&gt; ppt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A few notes on the &lt;strong&gt;General settings&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Resizing and moving floating windows with the mouse also works great: &lt;code&gt;mod+LeftClick&lt;/code&gt; to move around and &lt;code&gt;mod+RightClick&lt;/code&gt; to resize. This way, it&amp;rsquo;s also possible to move windows to other screens.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="screens-and-monitors"&gt;Screens and monitors&lt;/h2&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# lock the screens with a black color background&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Delete &lt;span class="nv"&gt;$exec&lt;/span&gt; i3lock -c &lt;span class="m"&gt;000000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# hide/unhide i3status bar (laptop)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+m bar mode invisible bar-0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+m bar mode dock bar-0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# hide/unhide i3status bar (monitor)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+b bar mode invisible bar-1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+b bar mode dock bar-1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# set up displays&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nv"&gt;$path&lt;/span&gt;-xrandr-both
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# use laptop display only (turn off monitor)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+o &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nv"&gt;$path&lt;/span&gt;-xrandr-laptop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# use monitor display only (turn off laptop screen)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+mod1+o &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nv"&gt;$path&lt;/span&gt;-xrandr-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# use laptop + monitor displays&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+shift+o &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nv"&gt;$path&lt;/span&gt;-xrandr-both
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# disable screen saver&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$exec&lt;/span&gt; xset s off
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# disable power saving&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$exec&lt;/span&gt; xset -dpms&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A few notes on the &lt;strong&gt;Screens and monitors&lt;/strong&gt; section:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It sets keybindings to hide/unhide bars on separate screens, which can be particularly useful when screen sharing without having to enter in fullscreen mode.&lt;/li&gt;
&lt;li&gt;It has additional keybindings to turn on/off the displays independently.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="navigation"&gt;Navigation&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Note&lt;/em&gt;: I rely on Vim keybindings to move between containers and workspaces as I find the position of those keys on the home row really comfortable to apply to the main window actions one would want to execute.&lt;/p&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# container focuses where the mouse is (yes/no)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;focus_follows_mouse no
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# go to last urgent workspace&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ this is the worspace that turns &amp;#34;red&amp;#34; by default when something happens&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# in an unfocused workspace, like an application pop-up&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+u &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;urgent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;latest&lt;span class="o"&gt;]&lt;/span&gt; focus&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# change focus&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ works in all modes: tabbed, stacked, etc.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+h focus left&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+j focus down&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+k focus up&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Down focus down&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Up focus up&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+l focus right&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# move focused window (works in all modes)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+h move left&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+j move down&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+k move up&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+l move right&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# for example, switching from workspace 1 to workspace 2 (e.g. mod+2) then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# typing again mod+2 would bring you back to workspace 1 without having to&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# remember that you came from workspace 1 in the first place.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace_auto_back_and_forth no
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# alternate between the last two workspaces that have been used&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Tab workspace back_and_forth
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# move a container (window or group of windows if you grouped them) to the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# &amp;#34;alternate&amp;#34; workspace you visited last&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# (the one brought with $mod+Tab in this case)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+mod1+Tab move container to workspace back_and_forth&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; workspace back_and_forth
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# switch to any window with Rofi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ this simulates the familiar behavior of Alt+Tab on Windows and allows you&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# to find windows by typing, but uses a better operating system to do it ;).&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym Mod1+Tab &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;rofi -theme lb -font &lt;/span&gt;&lt;span class="nv"&gt;$rofi&lt;/span&gt;&lt;span class="s2"&gt;-font \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; -show-icons -width 95 -show window&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# toggle fullscreen mode for the focused container&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ this hides the i3bar for the current monitor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ you can still leave the i3bar hidden and switch to other workspaces&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+f fullscreen toggle
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# navigate workspaces next / previous&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ works for all monitors and will go in increasing order&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# if workspaces 1 to 6 are on monitorX and workspaces&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 7 to 10 are on monitorY as in this config, this will switch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# to any workspace where there is at least one container&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+l workspace next
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+h workspace prev
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+Right workspace next
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+Left workspace prev
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# the difference with the above is that it limits movements to the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# the current monitor only&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Right workspace next_on_output
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+BackSpace workspace next_on_output
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+BackSpace workspace prev_on_output
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Left workspace prev_on_output
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Bindings to &amp;#34;mark&amp;#34; and &amp;#34;goto&amp;#34; mark specified with 1 character&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ rarely used, but can still be useful if you have many containers open&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+z &lt;span class="nb"&gt;exec&lt;/span&gt; i3-input -F &lt;span class="s1"&gt;&amp;#39;mark %s&amp;#39;&lt;/span&gt; -l &lt;span class="m"&gt;1&lt;/span&gt; -P &lt;span class="s1"&gt;&amp;#39;Mark: &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+g &lt;span class="nb"&gt;exec&lt;/span&gt; i3-input -F &lt;span class="s1"&gt;&amp;#39;[con_mark=&amp;#34;%s&amp;#34;] focus&amp;#39;&lt;/span&gt; -l &lt;span class="m"&gt;1&lt;/span&gt; -P &lt;span class="s1"&gt;&amp;#39;Goto: &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# switch to workspace (no matter which monitor it is set to)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+1 workspace &lt;span class="nv"&gt;$ws1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+2 workspace &lt;span class="nv"&gt;$ws2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+3 workspace &lt;span class="nv"&gt;$ws3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+4 workspace &lt;span class="nv"&gt;$ws4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+5 workspace &lt;span class="nv"&gt;$ws5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+6 workspace &lt;span class="nv"&gt;$ws6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+7 workspace &lt;span class="nv"&gt;$ws7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+8 workspace &lt;span class="nv"&gt;$ws8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+9 workspace &lt;span class="nv"&gt;$ws9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+0 workspace &lt;span class="nv"&gt;$ws10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# determine which workspace appears on which screen&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ with a single output screen, this is not necessary&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-secondary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace &lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-secondary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace &lt;span class="m"&gt;3&lt;/span&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-secondary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace &lt;span class="m"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-secondary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-secondary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace &lt;span class="m"&gt;6&lt;/span&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-secondary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace &lt;span class="m"&gt;7&lt;/span&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-primary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace &lt;span class="m"&gt;8&lt;/span&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-primary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace &lt;span class="m"&gt;9&lt;/span&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-primary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace &lt;span class="m"&gt;10&lt;/span&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-primary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# move focused container to workspace and switch to workspace&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+1 move container to workspace &lt;span class="nv"&gt;$ws1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+2 move container to workspace &lt;span class="nv"&gt;$ws2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+3 move container to workspace &lt;span class="nv"&gt;$ws3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+4 move container to workspace &lt;span class="nv"&gt;$ws4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+5 move container to workspace &lt;span class="nv"&gt;$ws5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+6 move container to workspace &lt;span class="nv"&gt;$ws6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+7 move container to workspace &lt;span class="nv"&gt;$ws7&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+8 move container to workspace &lt;span class="nv"&gt;$ws8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+9 move container to workspace &lt;span class="nv"&gt;$ws9&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+0 move container to workspace &lt;span class="nv"&gt;$ws10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A few notes on the &lt;strong&gt;Navigation&lt;/strong&gt; section:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I like to keep the number of workspaces to 10 because the number row is easily accessible and there&amp;rsquo;s less context switching involved.&lt;/li&gt;
&lt;li&gt;I also like to keep a higher number of workspaces on the main screen I work on as I can use &lt;code&gt;mod+Left&lt;/code&gt; and &lt;code&gt;mod+Right&lt;/code&gt; to switch focus on that screen only. This is usually to keep a reference opened on the other screen, like server logs.&lt;/li&gt;
&lt;li&gt;Those keybindings make it really easy to navigate between workspaces on one particular screen. Even though I like to work with a monitor being higher than the laptop located in front of it to avoid working in a twisted position at all times, this would work fantastically well in the horizontal direction too.&lt;/li&gt;
&lt;li&gt;If for whatever reason the main screen is disconnected (power outage or unplugged), I can still use the laptop screen without needing to modify the config file, although with a slightly more limited amount of workspaces. &lt;em&gt;Tip&lt;/em&gt;: if a monitor has been disconnected (such as in the power outage scenario), using the keybinding to turn it off will move all the workspaces to the other display(s), so everything will be visible again.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="nice-addition-to-make-the-mouse-follow-any-focused-container"&gt;Nice addition to make the mouse follow any focused container&lt;/h3&gt;
&lt;p&gt;By default, the focus of the mouse in i3 will go to the active screen, but it won&amp;rsquo;t follow the focus if switching to different containers on the &lt;em&gt;same&lt;/em&gt; screen. I found this little hack using the &lt;code&gt;center-mouse&lt;/code&gt; script after running commands like &lt;code&gt;move&lt;/code&gt; and &lt;code&gt;focus&lt;/code&gt; to force the mouse to move to any focused container. For convenience, &lt;a href="https://github.com/sglavoie/dotfiles/blob/main/.config/i3/center-mouse"&gt;here is the content of that script&lt;/a&gt;. You will need the program &lt;code&gt;xdotool&lt;/code&gt; to use it.&lt;/p&gt;
&lt;h2 id="layout"&gt;Layout&lt;/h2&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# set default desktop layout (default is tiling), &amp;lt;stacking|tabbed&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace_layout tabbed
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# change container layout (stacked, tabbed, toggle split)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+s layout stacking
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+w layout tabbed
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+e layout toggle split
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# start in opposite orientation from your monitor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;default_orientation vertical
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# toggle split at each new window (Fibonnaci layout)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# note: only useful if the layout is set to `default`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# for_window [class=&amp;#34;.*&amp;#34;] split toggle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# toggle the way a split happens in the focused window&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+t split toggle
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# toggle tiling / floating&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ this works on a container with any number of windows!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# if you select multiple windows with `$mod+a` (see below)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# to group them and then toggle them, the whole group will&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# either tile or float&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+space floating toggle
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# change focus between tiling / floating windows&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ⇒ If you leave a floating window on top of other tiled windows,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# you can switch the focus from the one on top to the one(s) in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# the background (useful with apps like Zoom or Google Meet that&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# you want to keep in the foreground)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+space focus mode_toggle
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Use Mouse+$mod to drag floating windows&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;floating_modifier &lt;span class="nv"&gt;$mod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# toggle sticky for floating windows&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+s sticky toggle
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# focus the surrounding containers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+a focus parent&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+c focus child&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$center&lt;/span&gt;-mouse&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A few notes on the &lt;strong&gt;Layout&lt;/strong&gt; section:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To maximize the size of applications, I prefer using the &amp;ldquo;tabbed&amp;rdquo; mode, which is more compact than the stacking mode. If I quickly want to split windows side-by-side, I just type &lt;code&gt;mod+e&lt;/code&gt; to toggle split vertically by default and if I need a horizontal split, I just toggle again with &lt;code&gt;mod+e&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;I don&amp;rsquo;t use the &amp;ldquo;grouping&amp;rdquo; feature with &lt;code&gt;mod+a&lt;/code&gt; and &lt;code&gt;mod+c&lt;/code&gt; very often, but when I need to move a few windows to another workspace for instance, that&amp;rsquo;s quite handy!&lt;/li&gt;
&lt;li&gt;A floating window in &amp;ldquo;sticky mode&amp;rdquo; will follow you on all your workspaces and remember that this mode is enabled even if you put in back in a tiling window and then to a floating window again.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="scratchpad"&gt;Scratchpad&lt;/h2&gt;
&lt;p&gt;The scratchpad is sometimes so useful that it deserves its own section! When you send a window to the &amp;ldquo;scratchpad&amp;rdquo;, it disappears. Then, with a keybinding, you can bring in back in floating mode on top of any other window on any active workspace you happen to be in. The same keybinding will toggle on/off the display of that scratchpad and if you happen to have sent multiple windows to the scratchpad, activating the same keybinding again will cycle through all the scratchpads as we set a custom mode called &lt;code&gt;Scratchpad&lt;/code&gt; in this example.&lt;/p&gt;
&lt;p&gt;I often use that for an audio player I leave running in the background and instead of using a whole workspace to leave that window opened, I send it to the scratchpad, which means it doesn&amp;rsquo;t take any space and I can quickly bring it back in focus whenever I want, in any workspace. I find that having more than three windows in the list of scratchpads becomes cumbersome as you cycle through them, so I keep the scratchpad for specific, infrequent uses for applications that require less attention.&lt;/p&gt;
&lt;p&gt;If you want to convert a scratchpad back to a regular tiled container, it&amp;rsquo;s as easy as triggering &amp;ldquo;toggle tiling / floating&amp;rdquo; (in this config file, it happens with &lt;code&gt;mod+Shift+space&lt;/code&gt;).&lt;/p&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Move the currently focused window to the scratchpad.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# First, we toggle floating mode and we resize and position the window to make sure&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# it will appear correctly when showing it for the first time.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+minus floating toggle&lt;span class="p"&gt;;&lt;/span&gt; resize &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$scratchpad&lt;/span&gt;-size, &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; move position center&lt;span class="p"&gt;;&lt;/span&gt; move scratchpad
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set up scratchpad applications&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Audacious&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; floating &lt;span class="nb"&gt;enable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Audacious&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; move scratchpad
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Audacious&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; resize &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$scratchpad&lt;/span&gt;-size
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$temp&lt;/span&gt;-notes&lt;span class="o"&gt;]&lt;/span&gt; floating &lt;span class="nb"&gt;enable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$temp&lt;/span&gt;-notes&lt;span class="o"&gt;]&lt;/span&gt; move scratchpad
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$temp&lt;/span&gt;-notes&lt;span class="o"&gt;]&lt;/span&gt; resize &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$scratchpad&lt;/span&gt;-size
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$python&lt;/span&gt;-term&lt;span class="o"&gt;]&lt;/span&gt; floating &lt;span class="nb"&gt;enable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$python&lt;/span&gt;-term&lt;span class="o"&gt;]&lt;/span&gt; move scratchpad
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$python&lt;/span&gt;-term&lt;span class="o"&gt;]&lt;/span&gt; resize &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$scratchpad&lt;/span&gt;-size
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$todoist&lt;/span&gt;-app-name&lt;span class="o"&gt;]&lt;/span&gt; floating &lt;span class="nb"&gt;enable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$todoist&lt;/span&gt;-app-name&lt;span class="o"&gt;]&lt;/span&gt; move scratchpad
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$todoist&lt;/span&gt;-app-name&lt;span class="o"&gt;]&lt;/span&gt; resize &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$scratchpad&lt;/span&gt;-size&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A note on the &lt;strong&gt;Scratchpad&lt;/strong&gt; section:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In my setup, I have two screens with the same resolution of 1920x1080, so the same &amp;ldquo;resize&amp;rdquo; command works on both screens. You might want to use two different keybindings if you want to bring a scratchpad back to a screen with a different resolution.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="borders"&gt;Borders&lt;/h2&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Configure border style &amp;lt;normal|1pixel|pixel xx|none|pixel&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;new_window pixel &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;new_float normal
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;default_floating_border pixel &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Hide borders&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hide_edge_borders smart
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# change borders&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+n border none
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+n border pixel &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+y border normal &lt;span class="m"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A few notes on the &lt;strong&gt;Borders&lt;/strong&gt; section:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I just &lt;strong&gt;love&lt;/strong&gt; knowing which container is active, so I set thick, bright borders with a nice kind of &amp;ldquo;electric blue&amp;rdquo; color that&amp;rsquo;s easy to spot on a light or dark background (colors are set below in the section &lt;strong&gt;Colors &amp;amp; theming&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;I also &lt;strong&gt;love&lt;/strong&gt; saving space whenever possible to see more stuff on the screen, so I avoid gaps altogether (if you like them, have a look at &lt;a href="https://github.com/Airblader/i3"&gt;i3-gaps&lt;/a&gt;). In that spirit, I also set the option &lt;code&gt;hide_edge_borders smart&lt;/code&gt; so that borders don&amp;rsquo;t show up when I have only one tiled container covering the whole space.&lt;/li&gt;
&lt;li&gt;This also shows that you can have a different border size for floating windows if you find the thickness distracting. Personally, I just find it helps me know which container is active when I toggle from foreground to background window with &lt;code&gt;mod+space&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
 &lt;a href="https://www.sglavoie.com/images/posts/0022_guided-tour-i3/demo_dark_light_background_thick_border.png"&gt;&lt;img src="https://www.sglavoie.com/images/posts/0022_guided-tour-i3/demo_dark_light_background_thick_border.png" alt="demo_dark_light_background_thick_border_i3" class="max-size-img-post"&gt;&lt;/a&gt;
 &lt;figcaption&gt;Bashtop on the left with a dark background, LibreOffice on the right with a light background, Neofetch floating window on top featuring a thick, blue border.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="dmenu"&gt;dmenu&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;dmenu&lt;/code&gt; is so useful that it also got its own section. By default, you usually launch applications with &lt;code&gt;mod+d&lt;/code&gt;: I kept the same behavior here. I added a few custom launchers that I use all the time to open files based on a topic, using mnemonics that work (for me, at least). If you want to know more about setting these kinds of shortcuts, you may be interested in reading &lt;a href="https://www.sglavoie.com/posts/using-dmenu-to-optimize-common-tasks/"&gt;Using dmenu to Optimize Common Tasks&lt;/a&gt; ;).&lt;/p&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+b &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/books.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+c &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/cheatsheets.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+d &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/documents.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+e &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/edit_scripts.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+f &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/filepaths.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+q &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/quotes.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+r &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/reading.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+s &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/scripts.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+u &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/university.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+w &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/work.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+f &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/thunar_launcher.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+u &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/university_launchers.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+d &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/software.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="shortcuts"&gt;Shortcuts&lt;/h2&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+control+r &lt;span class="nv"&gt;$exec&lt;/span&gt; thunar ~/Desktop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Display multiple time zones around the world&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Mod1+t &lt;span class="nv"&gt;$exec&lt;/span&gt; ~/Dropbox/.custom/dmenu/times.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A few notes on the &lt;strong&gt;Shortcuts&lt;/strong&gt; mini-section:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In i3, you don&amp;rsquo;t really make use of icons on the desktop. I like the absence of visual clutter it provides, but I sometimes like to access a specific folder in which I drop a few shortcuts/symlinks to access other files from there.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;An idea for customization&lt;/em&gt;: working remotely with many teammates from around the world is sometimes confusing timewise, so I have a simple script that outputs the current time in the places I&amp;rsquo;m interested in monitoring.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
 &lt;a href="https://www.sglavoie.com/images/posts/0022_guided-tour-i3/timezones.png"&gt;&lt;img src="https://www.sglavoie.com/images/posts/0022_guided-tour-i3/timezones.png" alt="timezones_dmenu" class="max-size-img-post"&gt;&lt;/a&gt;
 &lt;figcaption&gt;Simple pop-up with a list of timezones.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="sound"&gt;Sound&lt;/h2&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# `pkill` is useful to quickly update the block in i3blocks&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym XF86AudioRaiseVolume &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nv"&gt;$volumepath&lt;/span&gt; -np up &lt;span class="nv"&gt;$volumestep&lt;/span&gt; -t &lt;span class="nv"&gt;$statuscmd&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -u &lt;span class="nv"&gt;$statussig&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; pkill -RTMIN+1 i3blocks
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym XF86AudioLowerVolume &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nv"&gt;$volumepath&lt;/span&gt; -np down &lt;span class="nv"&gt;$volumestep&lt;/span&gt; -t &lt;span class="nv"&gt;$statuscmd&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -u &lt;span class="nv"&gt;$statussig&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; pkill -RTMIN+1 i3blocks
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym XF86AudioMute &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nv"&gt;$volumepath&lt;/span&gt; mute -n -t &lt;span class="nv"&gt;$statuscmd&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -u &lt;span class="nv"&gt;$statussig&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; pkill -RTMIN+1 i3blocks
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym XF86AudioMicMute &lt;span class="nv"&gt;$exec&lt;/span&gt; &lt;span class="nv"&gt;$toggle&lt;/span&gt;-mic-on-off
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+exclamdown &lt;span class="nv"&gt;$exec&lt;/span&gt; &lt;span class="nv"&gt;$toggle&lt;/span&gt;-mic-on-off
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Automatically set the volume to a given value when (re)launching i3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exec_always --no-startup-id &lt;span class="s2"&gt;&amp;#34;amixer -D pulse set Master 50%&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Always mute the microphone source when (re)launching i3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exec_always --no-startup-id pactl set-source-mute &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;alsa_input.pci-0000_03_00.6.analog-stereo&amp;#34;&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pkill -RTMIN+10 i3blocks&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This section will depend on the hardware being used, but it gives an idea of how to do things. I use &lt;a href="https://github.com/hastinbe/i3-volume"&gt;&lt;code&gt;i3-volume&lt;/code&gt;&lt;/a&gt; to get nice notifications when changing the volume and all the options being set here use &lt;code&gt;i3-volume&lt;/code&gt;. Toggling the mic output was not super obvious at first, but it&amp;rsquo;s obviously doable and it&amp;rsquo;s good to know there&amp;rsquo;s an &lt;code&gt;XF86Audio&lt;/code&gt; property for that purpose!&lt;/p&gt;
&lt;h2 id="brightness"&gt;Brightness&lt;/h2&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Control brightness more precisely through software `light`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym XF86MonBrightnessDown &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-laptop-down
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym XF86MonBrightnessUp &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-laptop-up
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Adjust external monitor brightness&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+F2 &lt;span class="nv"&gt;$exec&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-monitor-down
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+F1 &lt;span class="nv"&gt;$exec&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-monitor-up
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+F3 &lt;span class="nv"&gt;$exec&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-monitor-default
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Toggle laptop screen&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Control+b &lt;span class="nv"&gt;$exec&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-toggle-laptop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;To control the screen brightness, I use &lt;a href="https://github.com/haikarainen/light"&gt;&lt;code&gt;light&lt;/code&gt;&lt;/a&gt;. I also like to just toggle the brightness of my laptop at night when I read something on my external monitor, so I use a &lt;a href="https://github.com/sglavoie/dotfiles/blob/main/.local/bin/toggle_laptop_brightness"&gt;&lt;code&gt;toggle_laptop_brightness&lt;/code&gt;&lt;/a&gt; script that I found somewhere online and adapted slightly.&lt;/p&gt;
&lt;h2 id="applications"&gt;Applications&lt;/h2&gt;
&lt;p&gt;This section will heavily depend on the software you use of course, but there&amp;rsquo;s the gist of it. I like to have a shortcut for &lt;a href="https://github.com/aristocratos/bashtop"&gt;bashtop&lt;/a&gt; to quickly monitor system resources (&lt;a href="https://github.com/nicolargo/glances"&gt;glances&lt;/a&gt; is also quite nice). Besides that, I like to have applications automatically appear on specific workspaces and be switched to in some instances.&lt;/p&gt;
&lt;p&gt;Controlling which application opens in floating mode is also useful as some just don&amp;rsquo;t play that well with tiling. To find information about an application, you can open a new terminal window and launch &lt;code&gt;xprop&lt;/code&gt;, click on the window you need information about and &lt;em&gt;voilà&lt;/em&gt;, a couple of strings will be displayed like so (output truncated a bit):&lt;/p&gt;
&lt;div class="code-block code-block--wrap"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;pre tabindex="0"&gt;&lt;code&gt;	Icon (16 x 16):
	 ▒▓▓▓▓▒
	 ▒▓██████▓▒
	 ▒█▓▒░ ░▒▓█▒
	 ▒█▓░ ░▓█▒
	 ▓▓░ ░░░ ░▓▓
	▒█▒ ░███▓░ ▒█▒
	▓█░ ░░▓█▓ ░█▓
	▓█ ░▓▓██▓ █▓
	▓█ ▓█▒▓█▓ █▓
	▓█░ ▓█▓▓█▓ ░█▓
	▒█▒ ░▓▓▒▓▒ ▒█▒
	 ▓▓░ ░▓▓
	 ▒█▓░ ░▓█▒
	 ▒█▓▒░ ░▒▓█▒
	 ▒▓██████▓▒
	 ▒▓▓▓▓▒
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		program specified location: 0, 0
		program specified minimum size: 627 by 279
		window gravity: NorthWest
WM_CLASS(STRING) = &amp;#34;audacious&amp;#34;, &amp;#34;Audacious&amp;#34;
WM_ICON_NAME(STRING) = &amp;#34;47. David Bowie - Best Of Bowie - Heroes (3:36) - Audacious&amp;#34;
WM_NAME(STRING) = &amp;#34;47. David Bowie - Best Of Bowie - Heroes (3:36) - Audacious&amp;#34;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;You may need to switch to tiling windows or make the terminal window that launches &lt;code&gt;xprop&lt;/code&gt; a floating window to be able to click on the desired window. Here, we get an output for the Audacious music player. You usually need the second string from &lt;code&gt;WM_CLASS(STRING)&lt;/code&gt; but if you don&amp;rsquo;t want to mess with letter casing being upper vs lowercase, you can prefix with &lt;code&gt;(?i)&lt;/code&gt; for &amp;ldquo;insensitive&amp;rdquo; as shown below and that will match any window containing that pattern. Sometimes, you&amp;rsquo;re just after matching a &amp;ldquo;title&amp;rdquo; (like it&amp;rsquo;s done with LibreOffice in the snippet of code below) and you can get that one by showing the container&amp;rsquo;s border. With this config file, the &lt;code&gt;mod+n&lt;/code&gt; keybinding will show the border you want at the top and &lt;code&gt;mod+y&lt;/code&gt; will make it disappear again.&lt;/p&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Autostart applications&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$exec&lt;/span&gt; &lt;span class="nv"&gt;$brightness&lt;/span&gt;-monitor-default
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$exec&lt;/span&gt; &lt;span class="nv"&gt;$default&lt;/span&gt;-web-browser
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$exec&lt;/span&gt; &lt;span class="nv"&gt;$launcher&lt;/span&gt;-todoist
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$exec&lt;/span&gt; brightnessctl s 20%
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$exec&lt;/span&gt; compton -CG --config /dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$exec&lt;/span&gt; nitrogen --restore
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$exec&lt;/span&gt; nm-applet
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$exec&lt;/span&gt; pasystray
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$exec&lt;/span&gt; xfce4-clipman
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# First kill it as it doesn&amp;#39;t always respect the `--timeout` option otherwise&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exec_always --no-startup-id &lt;span class="s2"&gt;&amp;#34;killall unclutter; unclutter --jitter 40 --ignore-scrolling --timeout 5 &amp;amp;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Start&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+d --release &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;killall dunst; exec notify-send &amp;#39;restart dunst&amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+t &lt;span class="nb"&gt;exec&lt;/span&gt; thunar
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+w &lt;span class="nv"&gt;$exec&lt;/span&gt; &lt;span class="nv"&gt;$default&lt;/span&gt;-web-browser
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+masculine &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$python&lt;/span&gt;-term&lt;span class="o"&gt;]&lt;/span&gt; scratchpad show&lt;span class="p"&gt;;&lt;/span&gt; move position center
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+masculine &lt;span class="nv"&gt;$exec&lt;/span&gt; kitty --name ipythonterm -o &lt;span class="nv"&gt;font_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;22&lt;/span&gt; -e &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$launcher&lt;/span&gt;-python-term -q
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+plus &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$temp&lt;/span&gt;-notes&lt;span class="o"&gt;]&lt;/span&gt; scratchpad show&lt;span class="p"&gt;;&lt;/span&gt; move position center
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+plus &lt;span class="nv"&gt;$exec&lt;/span&gt; kitty --name tmpnotes -e &lt;span class="nv"&gt;$launcher&lt;/span&gt;-temp-notes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+p &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Audacious&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; scratchpad show&lt;span class="p"&gt;;&lt;/span&gt; move position center
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+p &lt;span class="nv"&gt;$exec&lt;/span&gt; audacious
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+q &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$todoist&lt;/span&gt;-app-name&lt;span class="o"&gt;]&lt;/span&gt; scratchpad show&lt;span class="p"&gt;;&lt;/span&gt; move position center
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Shift+q &lt;span class="nv"&gt;$exec&lt;/span&gt; &lt;span class="nv"&gt;$launcher&lt;/span&gt;-todoist
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym Print --release &lt;span class="nv"&gt;$exec&lt;/span&gt; flameshot gui --path &lt;span class="nv"&gt;$screenshots&lt;/span&gt;-folder
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym &lt;span class="nv"&gt;$mod&lt;/span&gt;+Print --release &lt;span class="nv"&gt;$exec&lt;/span&gt; flameshot screen --path &lt;span class="nv"&gt;$screenshots&lt;/span&gt;-folder
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindsym mod1+F3 &lt;span class="nv"&gt;$exec&lt;/span&gt; kitty -e htop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Open applications on specific workspaces&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(?i)code&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$default&lt;/span&gt;-web-browser&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(?i)firefox&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$default&lt;/span&gt;-web-browser-class&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Audacity&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Gimp&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Inkscape&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;vlc&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(?i)atril&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(?i)zathura&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(?i)libreoffice&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Transmission&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;keepassxc&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;obs&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="nv"&gt;$ws8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Automatically switch to workspace when opening those&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(?i)code&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$default&lt;/span&gt;-web-browser&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$default&lt;/span&gt;-web-browser-class&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(?i)firefox&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Gimp&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Inkscape&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;audacity&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;vlc&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(?i)zathura&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(?i)atril&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(?i)libreoffice&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Transmission&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;keepassxc&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;obs&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; workspace &lt;span class="nv"&gt;$ws8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Open specific applications in floating mode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(?i)virtualbox&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; floating &lt;span class="nb"&gt;enable&lt;/span&gt; border pixel &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;GParted&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; floating &lt;span class="nb"&gt;enable&lt;/span&gt; border pixel &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Lightdm-settings&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; floating &lt;span class="nb"&gt;enable&lt;/span&gt; pixel &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Lxappearance&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; floating &lt;span class="nb"&gt;enable&lt;/span&gt; sticky &lt;span class="nb"&gt;enable&lt;/span&gt; border pixel &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Nitrogen&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; floating &lt;span class="nb"&gt;enable&lt;/span&gt; sticky &lt;span class="nb"&gt;enable&lt;/span&gt; border pixel &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;File Transfer*&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; floating &lt;span class="nb"&gt;enable&lt;/span&gt; border pixel &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;alsamixer&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; floating &lt;span class="nb"&gt;enable&lt;/span&gt; border pixel &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for_window &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(?i)zoom&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; floating &lt;span class="nb"&gt;enable&lt;/span&gt; border pixel &lt;span class="m"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The section &lt;strong&gt;Autostart applications&lt;/strong&gt; is the list of applications that launch when you open your X session with i3.&lt;/p&gt;
&lt;h2 id="keyboard--mouse"&gt;Keyboard &amp;amp; mouse&lt;/h2&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set compose key to Right Ctrl&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exec_always --no-startup-id setxkbmap -option &lt;span class="nv"&gt;$compose&lt;/span&gt;-key
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Delay, interval&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exec_always --no-startup-id xset r rate &lt;span class="m"&gt;250&lt;/span&gt; &lt;span class="m"&gt;60&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I like to set those options in my config file as they can be modified on the fly if you reload i3. This is thanks to the &lt;code&gt;exec_always --no-startup-id&lt;/code&gt; directive which will always run the invoked command when relaunching, not just when logging in to a session.&lt;/p&gt;
&lt;h2 id="colors--theming"&gt;Colors &amp;amp; theming&lt;/h2&gt;
&lt;p&gt;Of interest in this section, apart from the actual colors, is where you will set your i3bar on the screen (top vs bottom) and on which monitor your tray (the space with little icons to show the volume, WiFi connectivity and so on) will be displayed if you have more than one monitor. In this case, the bar displays at the top of the screen &lt;em&gt;à la Mac&lt;/em&gt; or &lt;em&gt;à la GNOME&lt;/em&gt; with &lt;code&gt;position top&lt;/code&gt; and reveals information about system resources with &lt;code&gt;i3blocks&lt;/code&gt; (you can find how it can be configured in &lt;a href="https://github.com/sglavoie/dotfiles/tree/main/.config/i3blocks"&gt;my dotfiles&lt;/a&gt; or in the &lt;a href="https://github.com/vivien/i3blocks/"&gt;i3blocks GitHub repo&lt;/a&gt;).&lt;/p&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Start i3bar to display a workspace bar (plus the system information i3status if available)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bar &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; id bar-1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$font&lt;/span&gt;-small
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-secondary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# mode invisible&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tray_output none
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; status_command i3blocks
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; position top
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; colors &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background &lt;span class="c1"&gt;#000000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; statusline &lt;span class="c1"&gt;#ffffff&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; separator &lt;span class="c1"&gt;#666666&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# border backgr. text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; focused_workspace &lt;span class="c1"&gt;#4c7899 #285577 #ffffff #ffffff&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; active_workspace &lt;span class="c1"&gt;#333333 #5f676a #ffffff #3c3b37&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; inactive_workspace &lt;span class="c1"&gt;#333333 #222222 #888888 #aea79f&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; urgent_workspace &lt;span class="c1"&gt;#2f343a #900000 #ffffff #ffffff&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bar &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; id bar-0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$font&lt;/span&gt;-medium
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$output&lt;/span&gt;-primary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tray_output primary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; status_command i3blocks
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; position top
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym button4 nop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bindsym button5 nop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; colors &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background &lt;span class="c1"&gt;#000000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; statusline &lt;span class="c1"&gt;#ffffff&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; separator &lt;span class="c1"&gt;#666666&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# border backgr. text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; focused_workspace &lt;span class="c1"&gt;#4c7899 #285577 #ffffff #ffffff&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; active_workspace &lt;span class="c1"&gt;#333333 #5f676a #ffffff #3c3b37&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; inactive_workspace &lt;span class="c1"&gt;#333333 #222222 #888888 #aea79f&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; urgent_workspace &lt;span class="c1"&gt;#2f343a #900000 #ffffff #ffffff&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Theme colors&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# class border backgr. text indic. child_border&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; client.focused &lt;span class="c1"&gt;#ffffff #ff0054 #ffffff #2e9ef4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; client.focused_inactive &lt;span class="c1"&gt;#333333 #8338ec #ffffff #484e50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; client.unfocused &lt;span class="c1"&gt;#333333 #000000 #bbbbbb #292d2e&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; client.urgent &lt;span class="c1"&gt;#2f343a #900000 #ffffff #900000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; client.placeholder &lt;span class="c1"&gt;#F9FAF9 #061229 #FFFFFF #061229&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; client.background &lt;span class="c1"&gt;#000000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;What I&amp;rsquo;ve found particularly useful here is the fact you can have a different &amp;ldquo;i3 bar&amp;rdquo; for each screen. I&amp;rsquo;ve set keybindings in the section &lt;a href="#screens-and-monitors"&gt;Screens and monitors&lt;/a&gt; so I can toggle them on/off separately too.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve also switched away from the default &lt;a href="https://github.com/i3/i3status"&gt;i3status&lt;/a&gt; program to display the status bar(s) to &lt;a href="https://github.com/vivien/i3blocks/"&gt;i3blocks&lt;/a&gt;, which I&amp;rsquo;ve found a lot nicer to look at and easier to configure too.&lt;/p&gt;
&lt;p&gt;Theming i3 can be tedious, but thankfully there are tools to automate the process! One such tool is &lt;a href="https://github.com/altdesktop/i3-style"&gt;i3-style&lt;/a&gt;, which allows you to quickly switch in place your theme without having to log out or modify manually your i3 &lt;code&gt;config&lt;/code&gt; file. To go the manual route or to tweak an existing theme, you can always use a website like &lt;a href="https://htmlcolorcodes.com"&gt;HTML Color Codes&lt;/a&gt; to find an exact hexadecimal value. You can also use &lt;a href="https://terminal.sexy"&gt;terminal.sexy&lt;/a&gt; to come up with nice looking themes, which can be exported for other applications you may be using.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;You can find the &lt;a href="https://github.com/sglavoie/dotfiles/blob/main/.config/i3/config"&gt;complete &lt;code&gt;config&lt;/code&gt; file in my dotfiles on GitHub&lt;/a&gt;. If you liked this article, you may also enjoy reading the following ones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sglavoie.com/posts/suckless-minimalist-tools-that-work-great/"&gt;Suckless: Minimalist Tools That Work Great&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sglavoie.com/posts/using-dmenu-to-optimize-common-tasks/"&gt;Using dmenu to Optimize Common Tasks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sglavoie.com/posts/using-i3-as-a-window-manager-for-increased-productivity/"&gt;Using i3 as a Window Manager for Increased Productivity&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="more-resources-and-references"&gt;More resources and references&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://fedoramagazine.org/getting-started-i3-window-manager/"&gt;Getting started with the i3 tiling window manager&lt;/a&gt; — Fedora Magazine&lt;/li&gt;
&lt;li&gt;&lt;a href="https://i3wm.org/docs/userguide.html"&gt;Official i3 documentation&lt;/a&gt; — i3wm.org&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.archlinux.org/index.php/i3"&gt;i3 page on the Arch Wiki&lt;/a&gt; — Arch Wiki&lt;/li&gt;
&lt;/ul&gt;</content:encoded><dc:creator>Sébastien Lavoie</dc:creator><pubDate>Sat, 15 Aug 2020 10:51:00 -0500</pubDate><guid isPermaLink="false">https://www.sglavoie.com/posts/a-guided-tour-of-an-i3-configuration/</guid><category>tools</category><category>i3</category><category>window-manager</category></item><item><title>Using i3 as a Window Manager for Increased Productivity</title><link>https://www.sglavoie.com/posts/using-i3-as-a-window-manager-for-increased-productivity/</link><description>I was striving to improve my productivity as one of my New Year’s resolutions and finally found the courage to take the time to try out i3, a fantastic window manager.</description><content:encoded>&lt;hr&gt;
&lt;h2 id="what-is-i3"&gt;What is i3?&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://i3wm.org/"&gt;i3&lt;/a&gt; is a tiling window manager. To get to know &lt;code&gt;i3&lt;/code&gt;
better, it&amp;rsquo;s good to situate what desktop environments are in the first
place.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="what-are-desktop-environments"&gt;What are desktop environments?&lt;/h3&gt;
&lt;p&gt;If you are familiar with Linux,
you certainly know about desktop environments such as
&lt;a href="https://www.gnome.org/"&gt;GNOME&lt;/a&gt;, &lt;a href="https://www.kde.org/"&gt;KDE&lt;/a&gt;,
&lt;a href="https://www.xfce.org/"&gt;Xfce&lt;/a&gt;&amp;hellip; and actually many
more are available (you can see &lt;a href="https://en.wikipedia.org/wiki/Desktop_environment"&gt;this article on
Wikipedia&lt;/a&gt;
for an extended selection)! The classic Graphical User Interface
(GUI) on Windows XP was known as
&lt;a href="https://en.wikipedia.org/wiki/Luna_%28theme%29"&gt;Luna&lt;/a&gt; and is now
called Modern on Windows 10.
&lt;a href="https://en.wikipedia.org/wiki/Aqua_%28user_interface%29"&gt;Aqua&lt;/a&gt; is the
name of the GUI on macOS. Well, every desktop environment comes with
a window manager, the main component that makes interactions with
windows possible, like moving, resizing, minimizing or closing them.&lt;/p&gt;
&lt;p&gt;Desktop environments are very useful in many ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They are usually very easy to set up as they come fully functional out
of the box. Like opening a user session on macOS or Windows.&lt;/li&gt;
&lt;li&gt;They are sometimes quite customizable, but you don&amp;rsquo;t have to change
anything to get them to work, as they normally set default applications
to open with certain file types.&lt;/li&gt;
&lt;li&gt;They automatically integrate services such as WiFi network detection,
automatic mounting of drives when you plug them in, etc.&lt;/li&gt;
&lt;li&gt;You can enable &lt;a href="https://en.wikipedia.org/wiki/Virtual_desktop"&gt;virtual
desktops&lt;/a&gt;
to split your work
across different spaces. This concept can grow to
&lt;em&gt;[Activities](&lt;a href="https://docs.kde.org/trunk5/en/kde-workspace/plasma-deskto"&gt;https://docs.kde.org/trunk5/en/kde-workspace/plasma-deskto&lt;/a&gt;
p/activities-interface.html)&lt;/em&gt;, which is a feature implemented in KDE
that allows you to use virtual spaces literally for different activities
by having settings that are specific to each activity (like launching
one application or keeping widgets in determined positions), plus the
ability to use multiple virtual desktops inside each &lt;em&gt;activity&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;They integrate with applications that are specifically designed to
take advantage of the desktop environment in question by adapting
colors and themes perfectly to match the general look of the system and
arranging settings in a common location for all applications.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="why-use-a-window-manager-like-i3"&gt;Why use a window manager like i3?&lt;/h3&gt;
&lt;p&gt;Even though desktop environments are user-friendly and include many
goodies, they do have several disadvantages that make window managers
great alternatives.&lt;/p&gt;
&lt;h4 id="less-bloated"&gt;Less bloated&lt;/h4&gt;
&lt;p&gt;Desktop environments are often bloated with many applications
that you may not need but that are nevertheless occupying system
resources as they have many dependencies. For example, if you use
&lt;a href="https://www.thunderbird.net"&gt;Thunderbird&lt;/a&gt; for managing your emails and
your desktop environment is GNOME, try to remove Evolution, the default
application for emails that comes with it&amp;hellip; It&amp;rsquo;s still relatively easy
to disable its processes, but you sometimes have to configure files
manually to satisfy your need for removing clutter.&lt;/p&gt;
&lt;h4 id="lower-memory-and-cpu-consumption"&gt;Lower memory and CPU consumption&lt;/h4&gt;
&lt;p&gt;Other than coming with a set of default applications (more disk space),
the whole environment occupies a lot more memory to run smoothly. On
my modest laptop, I was still experiencing speed issues because the
system was occupying too much RAM when opening heavy applications (lots
of tabs when web browsing, photo editing, loading IDEs like PyCharm
for programming, etc.) and I had 4 GB of RAM installed at the time.
KDE requires at least 600 MB, same is true for GNOME in most recent
versions (but used to be over 1 GB not very long ago, just like for
KDE). Windows, for example, requires more than 1.5 GB of RAM to operate
with basic features. &lt;strong&gt;&lt;code&gt;i3&lt;/code&gt;&lt;/strong&gt; needs less than &lt;strong&gt;~15 MB&lt;/strong&gt; with as many
windows and spaces open as you would ever want. Since there are much
less processes to take care of, CPU consumption is also lower, which is
more noticeable on older machines.&lt;/p&gt;
&lt;h4 id="keyboard-efficiency"&gt;Keyboard efficiency&lt;/h4&gt;
&lt;p&gt;There are obviously ways to go about using keyboard shortcuts for pretty
much anything you want with desktop environments. However, window
managers and especially &lt;code&gt;i3&lt;/code&gt; make this a must, as there is really no
reason to use a mouse for moving windows.&lt;/p&gt;
&lt;p&gt;First of all, windows are &amp;ldquo;stuck&amp;rdquo; in place and never overlap by default.
You can&amp;rsquo;t move them around with a mouse unless they are &amp;ldquo;floating&amp;rdquo;
windows, which means you can separate them to move them around freely
like in most desktop environments. The whole point of using a window
manager like &lt;code&gt;i3&lt;/code&gt; is to maximize screen space, so every window opens
in full screen. Honestly, the only time I ever found the need to use a
floating window with &lt;code&gt;i3&lt;/code&gt; is when using the operating system Windows in
a virtual environment when connecting through RDP with Google Chrome on
Google Cloud Platform (that is, not very often). Other than that, I find
it very practical to split the screen with no overlapping windows, even
with my small 15 inches screen.&lt;/p&gt;
&lt;p&gt;Because windows are managed the way they are in &lt;code&gt;i3&lt;/code&gt;, getting split when
multiple windows are in the same workspace and never overlapping, it
nurtures the good habit of dividing workspaces appropriately to maximize
the space that each application occupies, which is done with keyboard
shortcuts. With (customizable) shortcuts, you can split windows,
move them to other workspaces, change workspaces, open applications
automatically in specific workspaces, etc. Using exclusively the
keyboard to manage the windows becomes a huge time saver, and even more
so when considering the very small footprint required to use the window
manager, making for a lightning fast experience.&lt;/p&gt;
&lt;h4 id="extremely-fast-customization"&gt;Extremely fast customization&lt;/h4&gt;
&lt;p&gt;Once you get past the initial lack of visual appeal and weird way to
move around, you can actually customize many aspects of &lt;code&gt;i3&lt;/code&gt;, including
fonts, mouse bindings, window border decorations, colors, automatic
execution of apps when initiating a session, etc.&lt;/p&gt;
&lt;p&gt;Why is it so fast to customize? Because the configuration is all
contained in one simple text file and you can make a change and reload
the window manager on the fly to see your changes being reflected.
Setting the number of workspaces is as easy as adding or removing a line
(well, as a bare minimum, otherwise it&amp;rsquo;s useful to also bind certain
keyboard shortcuts to move to those newly created workspaces). Setting a
wallpaper is one line, setting a screen lock is another one. Quick and
efficient.&lt;/p&gt;
&lt;h4 id="easy-to-switch-layouts-and-focus"&gt;Easy to switch layouts and focus&lt;/h4&gt;
&lt;p&gt;I actually enjoy the default layout quite a lot, in which there exists
no overlap between windows (they split as needed) and all windows are
visible at the same time in each workspace. If you need to make more
space for a window, you can either &amp;ldquo;focus&amp;rdquo; on the current window, which
will make it full screen and cover every pixel of the screen, or you
can move particular windows to other workspaces. This last option will
automatically resize windows so that they occupy the maximum space
available.&lt;/p&gt;
&lt;p&gt;Besides the default layout, you can also &lt;em&gt;stack&lt;/em&gt; and &lt;em&gt;tab&lt;/em&gt; windows,
depending on how you like to work (it is well worth having a look at the
&lt;a href="https://i3wm.org/docs/userguide.html"&gt;i3 user&amp;rsquo;s guide&lt;/a&gt; to see the many
other features available). Personally, I prefer seeing everything at
once and dividing my work into many workspaces. If you are curious, here
is how I currently have my workspaces set up:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Programming&lt;/strong&gt; — Exclusively for programming purposes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terminals&lt;/strong&gt; — For working in the terminal, opening another
instance of a terminal text editor, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web&lt;/strong&gt; — Just for Internet. Always full screen unless I open
some website that requires to open new windows (like banking), which
conveniently split the windows. The web browser automatically launches
in the background when opening a session in &lt;code&gt;i3&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multimedia&lt;/strong&gt; — Editing photos or watching videos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Music&lt;/strong&gt; — &lt;a href="https://github.com/arybczak/ncmpcpp"&gt;ncmpcpp&lt;/a&gt;
(terminal music player) automatically launches in the background when
opening a session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Experiments&lt;/strong&gt; — I use this workspace when trying to understand
some programming concepts with an interactive IPython console or for
breaking the system in one way or another because I don&amp;rsquo;t know what I&amp;rsquo;m
doing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fix&lt;/strong&gt; — After realizing that sometimes experiments need to be
cleaned up a bit, I now use this workspace exclusively to run tools
in the background, such as &lt;a href="https://www.bleachbit.org"&gt;BleachBit&lt;/a&gt; for
cleaning files or &lt;a href="https://nicolargo.github.io/glances/"&gt;glances&lt;/a&gt;
(similar to the &lt;code&gt;top&lt;/code&gt; command) for watching how the system is doing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Words&lt;/strong&gt; — I use that workspace for reading e-books
or for writing, either in &lt;a href="https://neovim.io/"&gt;Neovim&lt;/a&gt; or
&lt;a href="https://www.libreoffice.org/"&gt;LibreOffice&lt;/a&gt; depending on the task.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools&lt;/strong&gt; — This workspace is reserved for anything that I
might want to have access to once in a while, like a calendar or
&lt;a href="https://keepassxc.org/"&gt;KeepassXC&lt;/a&gt; for accessing a password database.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sg&lt;/strong&gt; — I mainly use that workspace to update this very
website, but I also use it for setting up local web servers for
making personal projects in &lt;a href="http://flask.pocoo.org/"&gt;Flask&lt;/a&gt; and
&lt;a href="https://www.djangoproject.com/"&gt;Django&lt;/a&gt; or even just a temporary server
with &lt;code&gt;python -m http.server&lt;/code&gt; to share files with other devices on the
local network.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Only workspaces that contain windows will appear on the screen at any
given time and are automatically created when you access and use them.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="what-does-it-look-like-in-action"&gt;What does it look like in action?&lt;/h2&gt;
&lt;p&gt;Here is a screenshot* of the workspace where this article is being
written (click to open):&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sglavoie.com/images/posts/0005_using-i3-as-window-manager-for-increased-productivity/i3-example.png"&gt;&lt;img src="https://www.sglavoie.com/images/posts/0005_using-i3-as-window-manager-for-increased-productivity/i3-example.png" alt="i3-example" class="max-size-img-post"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;* &lt;sub&gt;In this particular scenario, the splits on the right side are
intentionally very small as I do not need to read the output, but need
quick access to a terminal to enter commands. Moving back and forth
between windows is a breeze, so that&amp;rsquo;s how I currently handle the
situation.&lt;/sub&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: With &lt;code&gt;Neovim&lt;/code&gt;, &lt;a href="https://www.sglavoie.com/posts/using-embedded-terminals-inside-neovim/"&gt;there is an embedded
terminal&lt;/a&gt;,
which makes things very easy to handle by avoiding splits altogether.
In that case, it is also possible to divide a workflow with tabs inside
&lt;code&gt;Neovim&lt;/code&gt; instead of physically splitting windows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Alternatively&lt;/strong&gt;, instead of splitting windows, a more convenient
solution on smaller screens might be to use &lt;strong&gt;stacking&lt;/strong&gt; windows with
the shortcut &lt;code&gt;$mod + s&lt;/code&gt; in each workspace or, to provide that behavior
by default, the following can be added to i3&amp;rsquo;s configuration file
(defaults in &lt;code&gt;~/.config/i3/config&lt;/code&gt;):&lt;/p&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__bar" data-pagefind-ignore&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-block__wrap" type="button" aria-pressed="false" hidden&gt;Wrap&lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set default container layout&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;workspace_layout stacking&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am not trying to convince myself anymore: I really prefer this
workflow! If you are looking for a
change and would like to maximize both your productivity and your system
resources, &lt;code&gt;i3&lt;/code&gt; is a great window manager to consider. It doesn&amp;rsquo;t seem
very intuitive at first, but I swear it quickly becomes easy to use and
you also end up learning more about how Linux works and set things up
manually (just once!) to your likings. For example, I use Rofi instead
of dmenu to have a window pop-up to select applications or switch to
any window on any workspace&amp;hellip; which was only one line to modify in the
configuration file.&lt;/p&gt;
&lt;p&gt;I have found the following screencasts on YouTube to be quite useful in
learning how to configure &lt;code&gt;i3&lt;/code&gt; (apart from the official documentation
which is very comprehensive):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=j1I63wGcvU4"&gt;i3wm: Jump Start (1/3)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=8-S0cWnLBKg"&gt;i3wm: Configuration (2/3)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ARKIwOlazKI"&gt;i3wm: How To &amp;ldquo;Rice&amp;rdquo; Your Desktop (3/3)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><dc:creator>Sébastien Lavoie</dc:creator><pubDate>Tue, 08 Jan 2019 11:12:00 -0600</pubDate><guid isPermaLink="false">https://www.sglavoie.com/posts/using-i3-as-a-window-manager-for-increased-productivity/</guid><category>workflow</category><category>i3</category><category>linux</category><category>productivity</category><category>window-manager</category></item></channel></rss>