--- title: "pi3-smart-workspace" description: "A small i3 helper that makes $mod+1 the first workspace on the screen your mouse is on, instead of workspace 1 somewhere else entirely." date: 2020-09-04 updated: 2026-09-30 extra: lang: en repo: pi3-smart-workspace sprog: Python licens: Apache-2.0 platforme: [Linux (i3)] aur: [pi3-smart-workspace] tags: [i3, linux, python] alternates: [{lang: da, path: /projekter/pi3-smart-workspace}, {lang: en, path: /en/projects/pi3-smart-workspace}] --- With several monitors in i3, workspaces are numbered globally. Press `$mod+1` and you jump to workspace 1, even if it lives on the left screen and you're working on the right one. `pi3-smart-workspace` turns that around: the key picks the N-th workspace on the screen your mouse is on. `$mod+1` is always the first workspace wherever the mouse is, and a multi-monitor setup feels a lot more coherent. It reads your running i3 config and uses three things from it: output names (`set $ `), workspace names, and the lines that bind a workspace to an output. The order of those lines decides which workspace is number 1, 2 and 3 on each screen. It can also move the focused window there, and follow it if you like. The first version is from 2020. ## Install From the AUR or PyPI: ```bash yay -S pi3-smart-workspace pip install pi3-smart-workspace ``` It needs Python 3.14 and a running i3 session. ## Setup The easy way is to let it write the config itself: ```bash pi3-smart-workspace init ``` It finds every active monitor through i3 and writes a folder with a `workspaces.conf` per output and a `bindings.conf` with `$mod+N`, `$mod+Shift+N` and `$mod+Ctrl+N`. Each output gets its own contiguous range of global numbers, and the index after the colon (for example `9:1`) means "first workspace on this monitor". Add the include lines `init` prints to your i3 config and reload with `$mod+Shift+r`. If you'd rather bind the keys yourself, it looks like this: ``` bindsym $mod+1 exec --no-startup-id pi3-smart-workspace -i 1 bindsym $mod+Shift+1 exec --no-startup-id pi3-smart-workspace -i 1 -s bindsym $mod+Ctrl+1 exec --no-startup-id pi3-smart-workspace -i 1 -s -k ```