## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Rules

##-- Workspace Rules ------------------------

workspace 1 output HDMI-A-0
workspace 2 output HDMI-A-0
workspace 3 output DisplayPort-0

# workspace 1 output DisplayPort-0
# workspace 2 output DisplayPort-0
# workspace 3 output HDMI-A-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 <criteria> 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 <criteria> [→] [workspace] [number] <workspace>
#assign <criteria> [→] output left|right|up|down|primary|nonprimary|<output>

## 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 <criteria> <command>
##
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
