dotfiles/config/i3/config.d/02_keybindings.conf

251 lines
9.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>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 dont switch layouts, and want a clean and simple config file, use keysyms.
##
## Available Modifiers: Mod1-Mod5, Shift, Control
##
## Syntax:
# bindsym [--release] [<Group>+][<Modifiers>+]<keysym> command
# bindcode [--release] [<Group>+][<Modifiers>+]<keycode> 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 $MOD+Shift+Return exec --no-startup-id "$terminal --float -e tmux new-session nvim"
# bindsym $MOD+Control+h exec --no-startup-id "$terminal -e tmux new-session htop"
## -- 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
bindsym $MOD+a focus left
bindsym $MOD+d 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"