## Copyright (C) 2020-2023 Aditya Shakya ## ## Rules ##-- Workspace Rules ------------------------ workspace 1 output HDMI-A-0 workspace 2 output HDMI-A-0 workspace 3 output DisplayPort-0 ## Automatically putting clients on specific workspaces ## ## To automatically make a specific window show up on a specific workspace, ## you can use an 'assignment'. You can match windows by using any criteria. ## The difference between assign and `for_window move to workspace` is that ## the former will only be executed when the application maps the window ## (mapping means actually displaying it on the screen) but the latter will be executed ## whenever a window changes its properties to something that matches the specified criteria. ## ## Thus, it is recommended that you match on window classes (and instances, when appropriate) ## instead of window titles whenever possible because some applications first create ## their window, and then worry about setting the correct title. Firefox with Vimperator ## comes to mind. The window starts up being named Firefox, and only when Vimperator is ## loaded does the title change. As i3 will get the title as soon as the application ## maps the window, you’d need to have to match on Firefox in this case. Another known ## issue is with Spotify, which doesn’t set the class hints when mapping the window, ## meaning you’ll have to use a for_window rule to assign Spotify to a specific workspace. ## Finally, using assign [tiling] and assign [floating] is not supported. ## ## You can also assign a window to show up on a specific output. You can use RandR ## names such as 'VGA1' or names relative to the output with the currently focused ## workspace such as 'left' and 'down'. ## ## Assignments are processed by i3 in the order in which they appear in the config file. ## The first one which matches the window wins and later assignments are not considered. ## ## Syntax: #assign [→] [workspace] [number] #assign [→] output left|right|up|down|primary|nonprimary| ## Also, the arrow is not required, it just looks good :-). If you decide to use it, ## it has to be a UTF-8 encoded arrow, not -> or something like that. ## ## To get the class and instance, you can use `xprop`. After clicking on the window, ## you will see the following output: WM_CLASS(STRING) = "irssi", "URxvt" ## The first part of the WM_CLASS is the instance ("irssi" in this example), ## the second part is the class ("URxvt" in this example). ## assign [class="Lxappearance|Nitrogen"] 6 assign [class="Pavucontrol|Xfce4-power-manager-settings"] 6 ##-- Window Rules --------------------------- ## Arbitrary commands for specific windows (for_window) ## ## With the `for_window` directive, you can let i3 execute any command when it encounters ## a specific window. This can be used to set windows to floating or to change their ## border style, for example. ## ## Syntax: for_window ## for_window [window_role="pop-up"] floating enable for_window [window_role="task_dialog"] floating enable for_window [class="alacritty-float|Music"] floating enable for_window [class="Pcmanfm|Onboard|Yad"] floating enable for_window [class="Lxappearance|Nitrogen"] floating enable for_window [class="Pavucontrol|Xfce4-power-manager-settings|Nm-connection-editor"] floating enable for_window [class="feh|Viewnior|Gpicview|Gimp|MPlayer"] floating enable for_window [class="Kvantum Manager|qt5ct"] floating enable for_window [class="VirtualBox Manager|qemu|Qemu-system-x86_64"] floating enable