# Unify all key bindings to conveniently keep them consistent # Target: `i3wm` defaults are the spec # => We make GNOME/forge bend to match # Modifier layers (with exceptions): # # + ... Reserved for in-app shortcuts, # + ... e.g., `gnome-terminal` # # + ... Primary system layer: # media, devices, session, power, and some more # # + ... Secondary system layer: # lights, brightness, and overflow from primary # # + ... Navigate windows and workspaces # and very few extras # # + ... Move windows within or to another workspace # # + ... Swap windows (GNOME/forge only) # # + ... Grow windows # + ... Shrink windows # # F1-F12 Deliberately not bound globally # (Exceptions: F11 for fullscreen and F4) [org/gnome/desktop/wm/keybindings] activate-window-menu=@as [] always-on-top=@as [] # q is i3wm's default close=['q', 'q', 'F4'] toggle-fullscreen=['f', 'F11'] toggle-maximized=['m', 'f'] maximize=@as [] unmaximize=@as [] minimize=@as [] switch-applications=@as [] switch-applications-backward=@as [] switch-input-source=@as [] switch-input-source-backward=@as [] switch-group=@as [] switch-group-backward=@as [] switch-panels=@as [] switch-panels-backward=@as [] cycle-group=@as [] cycle-group-backward=@as [] cycle-panels=@as [] cycle-panels-backward=@as [] cycle-windows=['Tab'] cycle-windows-backward=['Tab'] begin-move=@as [] begin-resize=@as [] # The following could also be populated automatically # in [org/gnome/shell/extensions/space-bar/shortcuts] switch-to-workspace-1=['1'] switch-to-workspace-2=['2'] switch-to-workspace-3=['3'] switch-to-workspace-4=['4'] switch-to-workspace-5=['5'] switch-to-workspace-6=['6'] switch-to-workspace-7=['7'] switch-to-workspace-8=['8'] switch-to-workspace-9=['9'] switch-to-workspace-10=['0'] switch-to-workspace-last=@as [] switch-to-workspace-up=@as [] switch-to-workspace-down=@as [] switch-to-workspace-left=['comma'] # In [org/freedesktop/ibus/panel/emoji], "hotkey" # must be changed from its default, which is also period switch-to-workspace-right=['period'] # The following could also be populated automatically # in [org/gnome/shell/extensions/space-bar/shortcuts] move-to-workspace-1=['1'] move-to-workspace-2=['2'] move-to-workspace-3=['3'] move-to-workspace-4=['4'] move-to-workspace-5=['5'] move-to-workspace-6=['6'] move-to-workspace-7=['7'] move-to-workspace-8=['8'] move-to-workspace-9=['9'] move-to-workspace-10=['0'] move-to-workspace-last=@as [] move-to-workspace-up=@as [] move-to-workspace-down=@as [] move-to-workspace-left=['comma'] move-to-workspace-right=['period'] move-to-monitor-up=@as [] move-to-monitor-down=@as [] move-to-monitor-left=@as [] move-to-monitor-right=@as [] [org/gnome/mutter/keybindings] cancel-input-capture=@as [] # We must set the XF86 key here explicitly # because by default p is also bound with it # and we want to disable this switch-monitor=['XF86Display'] toggle-tiled-left=@as [] toggle-tiled-right=@as [] [org/gnome/settings-daemon/plugins/media-keys] search=['slash'] calculator=@as [] control-center=@as [] email=@as [] help=@as [] home=@as [] media=@as [] www=@as [] # Session & Power related screensaver=['l'] logout=['BackSpace', 'Delete'] suspend=['Escape'] hibernate=@as [] reboot=['Home'] power=@as [] shutdown=['End'] # Devices battery-status=['e'] touchpad-toggle=['i'] touchpad-on=@as [] touchpad-off=@as [] # "Airplane mode" rfkill=['w'] rfkill-bluetooth=['b'] # Audio related play=['space'] pause=@as [] stop=@as [] eject=@as [] next=['Right'] previous=['Left'] playback-forward=['bracketright'] playback-rewind=['bracketleft'] playback-random=@as [] playback-repeat=@as [] volume-up=['Up'] volume-up-precise=@as [] volume-up-quiet=@as [] volume-down=['Down'] volume-down-precise=@as [] volume-down-quiet=@as [] volume-mute=['m'] volume-mute-quiet=@as [] mic-mute=['m'] # Screen and light related # "Auto rotate" rotate-video-lock=@as [] toggle-contrast=@as [] screen-brightness-up=['Up'] screen-brightness-down=['Down'] screen-brightness-cycle=@as [] magnifier=@as [] magnifier-zoom-in=@as [] magnifier-zoom-out=@as [] decrease-text-size=@as [] increase-text-size=@as [] screenreader=@as [] on-screen-keyboard=@as [] keyboard-brightness-up=['bracketright'] keyboard-brightness-down=['bracketleft'] keyboard-brightness-toggle=['backslash'] # Non-default GNOME bindings custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/list_windows/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_secondary_terminal_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_secondary_terminal_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/dark_theme_toggle/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_force/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_toggle/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_make_warmer/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_make_cooler/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/randomize_background/'] [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/list_windows] binding='Tab' command='rofi -show window' name='Windows' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_1] binding='space' command='rofi -show drun' name='Launcher [1/2]' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_2] # i3wm's default binding='d' command='rofi -show drun' name='Launcher [2/2]' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_1] # i3wm's default, used for our primary terminal with `zsh` binding='Return' command='/usr/bin/alacritty' name='Alacritty [1/2]' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_2] binding='Return' command='/usr/bin/alacritty' name='Alacritty [2/2]' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_secondary_terminal_1] # Our secondary terminal with `bash` binding='t' command='/usr/bin/gnome-terminal' name='GNOME Terminal [1/2]' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_secondary_terminal_2] # GNOME's actual default, used for our secondary terminal with `bash` binding='t' command='/usr/bin/gnome-terminal' name='GNOME Terminal [2/2]' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/dark_theme_toggle] binding='d' command='/home/user/.local/bin/dark-theme-toggle' name='Color Scheme: Toggle dark vs. light' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_force] binding='n' command='/home/user/.local/bin/night-light-toggle-schedule' name='Night Light: Force the feature on right now, or back to automatic schedule' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_toggle] binding='n' command='/home/user/.local/bin/night-light-toggle-enabled' name='Night Light: Enable the feature, or disable it' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_make_warmer] binding='Right' command='/home/user/.local/bin/night-light-make-warmer' name='Night Light: Make screen warmer' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_make_cooler] binding='Left' command='/home/user/.local/bin/night-light-make-cooler' name='Night Light: Make screen cooler' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/randomize_background] binding='b' command='/home/user/.local/bin/randomize-background' name='Background: Pick a random wallpaper from the cloud' [org/gnome/shell/keybindings] toggle-application-view=['a'] toggle-message-tray=['slash'] toggle-overview=@as [] toggle-quick-settings=['backslash'] # To take fast screenshots without manual selection first # as opposed to the simple 'Print' below screenshot=['Print'] screenshot-window=['Print'] # Manually select what to screenshot ... show-screenshot-ui=['Print', 'p', 's'] # ... or what to record show-screen-recording-ui=['r'] focus-active-notification=@as [] # The defaults would collide with forge's "window-resize-*" on + Up/Down shift-overview-up=@as [] shift-overview-down=@as [] # Disable GNOME's default behavior of opening "favorite" apps # with 1-10 and instead switch workspaces switch-to-application-1=@as [] switch-to-application-2=@as [] switch-to-application-3=@as [] switch-to-application-4=@as [] switch-to-application-5=@as [] switch-to-application-6=@as [] switch-to-application-7=@as [] switch-to-application-8=@as [] switch-to-application-9=@as [] # `switch-to-application-10=@as []` does not exist by default open-new-window-application-1=@as [] open-new-window-application-2=@as [] open-new-window-application-3=@as [] open-new-window-application-4=@as [] open-new-window-application-5=@as [] open-new-window-application-6=@as [] open-new-window-application-7=@as [] open-new-window-application-8=@as [] open-new-window-application-9=@as [] [org/gnome/shell/extensions/forge/keybindings] prefs-open=@as [] # Allow tiling via drag-and-drop with the mouse mod-mask-mouse-tile='None' focus-border-toggle=@as [] prefs-tiling-toggle=@as [] window-gap-size-decrease=@as [] window-gap-size-increase=@as [] workspace-active-tile-toggle=['y'] window-toggle-float=['space'] window-toggle-always-float=@as [] window-focus-up=['k', 'Up'] window-focus-down=['j', 'Down'] window-focus-left=['h', 'Left'] window-focus-right=['l', 'Right'] window-move-up=['k', 'Up'] window-move-down=['j', 'Down'] window-move-left=['h', 'Left'] window-move-right=['l', 'Right'] window-swap-up=['k', 'Up'] window-swap-down=['j', 'Down'] window-swap-left=['h', 'Left'] window-swap-right=['l', 'Right'] window-swap-last-active=['Return'] # + hjkl pushes an edge outward (i.e., "grow") # while + hjkl pulls the opposite edge inward (i.e., "shrink") window-resize-top-increase=['k', 'Up'] window-resize-top-decrease=['j', 'Down'] window-resize-bottom-increase=['j', 'Down'] window-resize-bottom-decrease=['k', 'Up'] window-resize-left-increase=['h', 'Left'] window-resize-left-decrease=['l', 'Right'] window-resize-right-increase=['l', 'Right'] window-resize-right-decrease=['h', 'Left'] window-snap-center=@as [] window-snap-one-third-left=@as [] window-snap-one-third-right=@as [] window-snap-two-third-left=@as [] window-snap-two-third-right=@as [] # Split direction is the container's axis, not the divider drawn # - b => "beside"/"horizontal" => new window opens "beside", to the right # - v => "vertical" => new window opens below con-split-horizontal=['b'] con-split-vertical=['v'] con-split-layout-toggle=['e'] con-stacked-layout-toggle=['s'] con-tabbed-layout-toggle=['w'] con-tabbed-showtab-decoration-toggle=@as [] [org/gnome/shell/extensions/nightthemeswitcher/time] # This extension is not in use any more and its config kept as archive # nightthemeswitcher-ondemand-keybinding=['d'] [org/gnome/shell/extensions/project-hamster] # This extension is not in use any more and its config kept as archive # show-hamster-dropdown=['h'] [org/gnome/shell/extensions/space-bar/shortcuts] # We use the `switch-to-workspace-N`s in [org/gnome/desktop/wm/keybindings] enable-activate-workspace-shortcuts=false # We use the `move-to-workspace-N`s in [org/gnome/desktop/wm/keybindings] enable-move-to-workspace-shortcuts=false # Jump back to the previous workspace, # also allowing toggling between two workspaces # (Note that "grave" is the formal word for "backtick") activate-previous-key=['grave'] # Jump to the next empty workspace activate-empty-key=['n'] # Use the mouse to move to the previous workspace # by clicking on the current one (again) back-and-forth=false move-workspace-left=@as [] move-workspace-right=@as [] # Preferences window open-menu=@as [] [org/gnome/terminal/legacy/keybindings] close-tab='w' close-window='q' find='f' find-clear='f' find-next='g' find-previous='g' new-tab='t' new-window='n' # "equal" because it is below "plus" on a US keyboard zoom-in='equal' zoom-out='minus' # To avoid conflict with "switch-to-workspace-right" in [org/gnome/desktop/wm/keybindings] [org/freedesktop/ibus/panel/emoji] hotkey=['period']