## Copyright (C) 2020-2023 Aditya Shakya config.d ## ## Keybindings ##-- Key Bindings ------------------------ ## A keysym (key symbol) is a description for a specific symbol, like "a" or "b", ## but also more strange ones like "underscore" instead of "_". ## These are the ones you use in Xmodmap to remap your keys. ## To get the current mapping of your keys, use `xmodmap -pke`. ## To interactively enter a key and see what keysym it is configured to, use `xev`. ## ## Keycodes do not need to have a symbol assigned (handy for custom vendor hotkeys on some notebooks) ## and they will not change their meaning as you switch to a different keyboard layout (when using `xmodmap`). ## ## If you often switch keyboard layouts but you want to keep your bindings in the ## same physical location on the keyboard, use keycodes. ## If you don’t switch layouts, and want a clean and simple config file, use keysyms. ## ## Available Modifiers: Mod1-Mod5, Shift, Control ## ## Syntax: # bindsym [--release] [+][+] command # bindcode [--release] [+][+] command ##-- Variables --------------------------- set $terminal ~/.config/i3/scripts/i3_term set $music_player ~/.config/i3/scripts/i3_music set $color_picker ~/.config/i3/scripts/i3_colorpicker set $brightness ~/.config/i3/scripts/i3_brightness set $volume ~/.config/i3/scripts/i3_volume set $screenshot ~/.config/i3/scripts/i3_screenshot set $alacritty alacritty --config-file ~/.config/i3/alacritty/alacritty.yml set $rofi_applets ~/.config/i3/scripts set $file_manager nemo set $text_editor nvim set $web_browser firefox ## -- Terminal -- bindsym $MOD+Return exec --no-startup-id $terminal bindsym $MOD+Shift+Return exec --no-startup-id $terminal --float bindsym $MOD+$ALT+Return exec --no-startup-id $terminal --full ## -- GUI Apps -- bindsym $MOD+Shift+f exec --no-startup-id $file_manager bindsym $MOD+Shift+e exec --no-startup-id $text_editor bindsym $MOD+Shift+w exec --no-startup-id $web_browser ## -- CLI Apps -- bindsym $ALT+Control+v exec --no-startup-id "$alacritty -e vim" bindsym $ALT+Control+r exec --no-startup-id "$alacritty -e ranger" bindsym $ALT+Control+h exec --no-startup-id "$alacritty -e htop" bindsym $ALT+Control+m exec --no-startup-id $music_player ## -- Rofi Applets -- bindsym $MOD+p exec --no-startup-id $rofi_applets/rofi_launcher -dpi 1 bindsym $MOD+n exec --no-startup-id $rofi_applets/network_menu -dpi 1 bindsym $MOD+r exec --no-startup-id $rofi_applets/rofi_powermenu -dpi 1 bindsym $MOD+q exec --no-startup-id $rofi_applets/rofi_windows -dpi 1 bindsym $MOD+m exec --no-startup-id $rofi_applets/rofi_music -dpi 1 # bindsym $MOD+r exec --no-startup-id $rofi_applets/rofi_asroot # bindsym $MOD+s exec --no-startup-id $rofi_applets/rofi_screenshot bindsym $MOD+t exec --no-startup-id $rofi_applets/rofi_themes -dpi 1 ## -- Function keys -- bindsym XF86MonBrightnessUp exec --no-startup-id "$brightness --inc" bindsym XF86MonBrightnessDown exec --no-startup-id "$brightness --dec" bindsym XF86AudioRaiseVolume exec --no-startup-id "$volume --inc" bindsym XF86AudioLowerVolume exec --no-startup-id "$volume --dec" bindsym XF86AudioMute exec --no-startup-id "$volume --toggle" bindsym XF86AudioMicMute exec --no-startup-id "$volume --toggle-mic" bindsym XF86AudioNext exec --no-startup-id "mpc next" bindsym XF86AudioPrev exec --no-startup-id "mpc prev" bindsym XF86AudioPlay exec --no-startup-id "mpc toggle" bindsym XF86AudioStop exec --no-startup-id "mpc stop" ## -- Screenshots -- bindsym Print exec --no-startup-id "$screenshot --now" bindsym Control+Print exec --no-startup-id "$screenshot --in5" # bindsym Shift+Print exec --no-startup-id "$screenshot --in10" bindsym Shift+Print exec --no-startup-id $rofi_applets/rofi_screenshot bindsym Control+Shift+Print exec --no-startup-id "$screenshot --win" bindsym $MOD+Print exec --no-startup-id "$screenshot --area" ## -- Misc -- # bindsym --release $MOD+p exec --no-startup-id $color_picker bindsym $ALT+Control+l exec --no-startup-id "betterlockscreen --lock" ##-- WM Specific ------------------------- ## Kill focused window ## bindsym $MOD+w kill bindsym $MOD+c kill #------ ## Send Notification ## set $send-notify exec --no-startup-id dunstify -u low -h string:x-dunst-stack-tag:i3config ## Splitting containers ## ## split in horizontal orientation bindsym $MOD+h split horizontal, $send-notify 'Split Horizontally' ## split in vertical orientation bindsym $MOD+v split vertical, $send-notify 'Split Vertically' ## toggle split #bindsym $MOD+g split toggle, $send-notify 'Split Mode' #------ ## Manipulating layout ## ## change container layout (stacked, tabbed, toggle split) ## Set stacking layout bindsym $MOD+Shift+s layout stacking, $send-notify 'Layout - Stacking' ## Set tabbed layout bindsym $MOD+Shift+t layout tabbed, $send-notify 'Layout - Tabbed' ## Set default layout bindsym $MOD+Shift+d layout default, $send-notify 'Layout - Default' ## Toggle between stacking/tabbed/split: bindsym $MOD+Shift+l layout toggle, $send-notify 'Cycling Layouts' ## Toggle between horizontal/vertical: bindsym $MOD+Shift+v layout toggle split, $send-notify 'Layout - Hor/Vert' ## Toggle fullscreen bindsym $MOD+f fullscreen toggle, $send-notify 'Toggled Fullscreen' ## Toggle floating/tiling bindsym $MOD+space floating toggle, $send-notify 'Toggled Floating Mode' #------ ## Focusing containers ## ## Sets focus to the nearest container in the given direction. bindsym $MOD+Left focus left bindsym $MOD+Down focus down bindsym $MOD+Up focus up bindsym $MOD+Right focus right ## Sets focus to the parent container of the current container. bindsym $MOD+a focus parent ## The opposite of `focus parent`, sets the focus to the last focused child container. bindsym $MOD+d focus child ## Automatically sets focus to the adjacent container. bindsym $MOD+Tab focus next ## Toggles focus between floating/tiling containers. bindsym $MOD+Shift+space focus mode_toggle #------ ## Moving containers ## ## move focused window in the given direction. bindsym $MOD+Shift+Left move left bindsym $MOD+Shift+Down move down bindsym $MOD+Shift+Up move up bindsym $MOD+Shift+Right move right ## Move floating container to the center of all outputs (floating only) bindsym $MOD+$ALT+c move absolute position center ## Move container to the current position of the cursor (floating only) bindsym $MOD+$ALT+p move position mouse #------ ## Resizing containers/windows ## bindsym $MOD+$ALT+Left resize shrink width 50 px or 10 ppt bindsym $MOD+$ALT+Down resize grow height 50 px or 10 ppt bindsym $MOD+$ALT+Up resize shrink height 50 px or 10 ppt bindsym $MOD+$ALT+Right resize grow width 50 px or 10 ppt #------ ## Sticky floating windows (floating only) ## bindsym $MOD+Shift+o sticky toggle, $send-notify 'Toggled Sticky' #------ ## Changing border style ## bindsym $MOD+y border toggle, $send-notify 'Toggled Borders' #------ ## Scratchpad ## ## Make the currently focused window a scratchpad bindsym $MOD+Shift+minus move scratchpad, $send-notify 'Scratchpad' ## Show the first scratchpad window bindsym $MOD+minus scratchpad show #------ ## restart i3 inplace (preserves your layout/session, can be used to upgrade i3) bindsym Ctrl+Shift+r restart, $send-notify 'i3wm Restarted!' ## reload the configuration file bindsym $MOD+Shift+c reload, $send-notify 'Configuration Reloaded!' ## quit i3 session bindsym $MOD+Shift+q exit #------ ## Changing (named) workspaces/moving to workspaces ## ## Define names for default workspaces for which we configure key bindings later on. ## We use variables to avoid repeating the names in multiple places. set $ws1 "1" set $ws2 "2" set $ws3 "3" set $ws4 "4" set $ws5 "5" set $ws6 "6" set $ws7 "7" set $ws8 "8" set $ws9 "9" set $ws10 "10" ## switch to workspace bindsym $MOD+1 workspace number $ws1 bindsym $MOD+2 workspace number $ws2 bindsym $MOD+3 workspace number $ws3 bindsym $MOD+4 workspace number $ws4 bindsym $MOD+5 workspace number $ws5 bindsym $MOD+6 workspace number $ws6 bindsym $MOD+7 workspace number $ws7 bindsym $MOD+8 workspace number $ws8 bindsym $MOD+9 workspace number $ws9 bindsym $MOD+0 workspace number $ws10 ## move focused container to workspace bindsym $MOD+Shift+1 move container to workspace number $ws1 bindsym $MOD+Shift+2 move container to workspace number $ws2 bindsym $MOD+Shift+3 move container to workspace number $ws3 bindsym $MOD+Shift+4 move container to workspace number $ws4 bindsym $MOD+Shift+5 move container to workspace number $ws5 bindsym $MOD+Shift+6 move container to workspace number $ws6 bindsym $MOD+Shift+7 move container to workspace number $ws7 bindsym $MOD+Shift+8 move container to workspace number $ws8 bindsym $MOD+Shift+9 move container to workspace number $ws9 bindsym $MOD+Shift+0 move container to workspace number $ws10 ## move a container to the next/previous workspace bindsym $MOD+Control+Right "move container to workspace next, workspace next" bindsym $MOD+Control+Left "move container to workspace prev, workspace prev" ## switch between the current and the previously focused one bindsym $MOD+b workspace back_and_forth bindsym $MOD+Shift+b "move container to workspace back_and_forth, workspace back_and_forth"