485 lines
14 KiB
INI
485 lines
14 KiB
INI
# 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):
|
|
#
|
|
# <Control> + ... Reserved for in-app shortcuts,
|
|
# <Control><Shift> + ... e.g., `gnome-terminal`
|
|
#
|
|
# <Control><Alt> + ... Primary system layer:
|
|
# media, devices, session, power, and some more
|
|
#
|
|
# <Alt><Shift> + ... Secondary system layer:
|
|
# lights, brightness, and overflow from primary
|
|
#
|
|
# <Super> + ... Navigate windows and workspaces
|
|
# and very few extras
|
|
#
|
|
# <Super><Shift> + ... Move windows within or to another workspace
|
|
#
|
|
# <Super><Control> + ... Swap windows (GNOME/forge only)
|
|
#
|
|
# <Super><Alt> + ... Grow windows
|
|
# <Super><Alt><Shift> + ... Shrink windows
|
|
#
|
|
# F1-F12 Deliberately not bound globally
|
|
# (Exceptions: F11 for fullscreen and <Alt>F4)
|
|
|
|
|
|
|
|
[org/gnome/desktop/wm/keybindings]
|
|
|
|
activate-window-menu=@as []
|
|
|
|
always-on-top=@as []
|
|
|
|
# <Super><Shift>q is i3wm's default
|
|
close=['<Super>q', '<Super><Shift>q', '<Alt>F4']
|
|
|
|
toggle-fullscreen=['<Super>f', 'F11']
|
|
|
|
toggle-maximized=['<Super>m', '<Super><Shift>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=['<Alt>Tab']
|
|
cycle-windows-backward=['<Alt><Shift>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=['<Super>1']
|
|
switch-to-workspace-2=['<Super>2']
|
|
switch-to-workspace-3=['<Super>3']
|
|
switch-to-workspace-4=['<Super>4']
|
|
switch-to-workspace-5=['<Super>5']
|
|
switch-to-workspace-6=['<Super>6']
|
|
switch-to-workspace-7=['<Super>7']
|
|
switch-to-workspace-8=['<Super>8']
|
|
switch-to-workspace-9=['<Super>9']
|
|
switch-to-workspace-10=['<Super>0']
|
|
|
|
switch-to-workspace-last=@as []
|
|
|
|
switch-to-workspace-up=@as []
|
|
switch-to-workspace-down=@as []
|
|
switch-to-workspace-left=['<Super>comma']
|
|
# In [org/freedesktop/ibus/panel/emoji], "hotkey" must be "@as []"
|
|
# to turn GNOME's Emoji picker off, which also uses <Super>period
|
|
switch-to-workspace-right=['<Super>period']
|
|
|
|
# The following could also be populated automatically
|
|
# in [org/gnome/shell/extensions/space-bar/shortcuts]
|
|
move-to-workspace-1=['<Super><Shift>1']
|
|
move-to-workspace-2=['<Super><Shift>2']
|
|
move-to-workspace-3=['<Super><Shift>3']
|
|
move-to-workspace-4=['<Super><Shift>4']
|
|
move-to-workspace-5=['<Super><Shift>5']
|
|
move-to-workspace-6=['<Super><Shift>6']
|
|
move-to-workspace-7=['<Super><Shift>7']
|
|
move-to-workspace-8=['<Super><Shift>8']
|
|
move-to-workspace-9=['<Super><Shift>9']
|
|
move-to-workspace-10=['<Super><Shift>0']
|
|
|
|
move-to-workspace-last=@as []
|
|
|
|
move-to-workspace-up=@as []
|
|
move-to-workspace-down=@as []
|
|
move-to-workspace-left=['<Super><Shift>comma']
|
|
move-to-workspace-right=['<Super><Shift>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 <Super>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=['<Super>slash']
|
|
|
|
calculator=@as []
|
|
control-center=@as []
|
|
email=@as []
|
|
help=@as []
|
|
home=@as []
|
|
media=@as []
|
|
www=@as []
|
|
|
|
|
|
# Session & Power related
|
|
|
|
screensaver=['<Control><Alt>l']
|
|
logout=['<Control><Alt>BackSpace', '<Control><Alt>Delete']
|
|
suspend=['<Control><Alt>Escape']
|
|
hibernate=@as []
|
|
reboot=['<Control><Alt>Home']
|
|
power=@as []
|
|
shutdown=['<Control><Alt>End']
|
|
|
|
|
|
# Devices
|
|
|
|
battery-status=['<Control><Alt>e']
|
|
|
|
touchpad-toggle=['<Control><Alt>i']
|
|
touchpad-on=@as []
|
|
touchpad-off=@as []
|
|
|
|
# "Airplane mode"
|
|
rfkill=['<Control><Alt>w']
|
|
rfkill-bluetooth=['<Control><Alt>b']
|
|
|
|
|
|
# Audio related
|
|
|
|
play=['<Control><Alt>space']
|
|
pause=@as []
|
|
stop=@as []
|
|
|
|
eject=@as []
|
|
|
|
next=['<Control><Alt>Right']
|
|
previous=['<Control><Alt>Left']
|
|
|
|
playback-forward=['<Control><Alt>period']
|
|
playback-rewind=['<Control><Alt>comma']
|
|
|
|
playback-random=@as []
|
|
playback-repeat=@as []
|
|
|
|
volume-up=['<Control><Alt>Up']
|
|
volume-up-precise=@as []
|
|
volume-up-quiet=@as []
|
|
volume-down=['<Control><Alt>Down']
|
|
volume-down-precise=@as []
|
|
volume-down-quiet=@as []
|
|
volume-mute=['<Control><Alt>m']
|
|
volume-mute-quiet=@as []
|
|
|
|
mic-mute=['<Alt><Shift>m']
|
|
|
|
|
|
# Screen and light related
|
|
|
|
# "Auto rotate"
|
|
rotate-video-lock=@as []
|
|
|
|
toggle-contrast=@as []
|
|
|
|
screen-brightness-up=['<Alt><Shift>Up']
|
|
screen-brightness-down=['<Alt><Shift>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=['<Alt><Shift>bracketright']
|
|
keyboard-brightness-down=['<Alt><Shift>bracketleft']
|
|
keyboard-brightness-toggle=['<Alt><Shift>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='<Super>Tab'
|
|
command='rofi -show window'
|
|
name='Windows'
|
|
|
|
|
|
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_1]
|
|
binding='<Super>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='<Super>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='<Super>Return'
|
|
command='/usr/bin/alacritty'
|
|
name='Alacritty [1/2]'
|
|
|
|
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_2]
|
|
binding='<Control><Alt>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='<Super>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='<Control><Alt>t'
|
|
command='/usr/bin/gnome-terminal'
|
|
name='GNOME Terminal [2/2]'
|
|
|
|
|
|
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/dark_theme_toggle]
|
|
binding='<Control><Alt>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='<Control><Alt>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='<Alt><Shift>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='<Alt><Shift>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='<Alt><Shift>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='<Alt><Shift>b'
|
|
command='/home/user/.local/bin/randomize-background'
|
|
name='Background: Pick a random wallpaper from the cloud'
|
|
|
|
|
|
|
|
[org/gnome/shell/keybindings]
|
|
|
|
toggle-application-view=['<Control><Alt>a']
|
|
toggle-message-tray=['<Control><Alt>slash']
|
|
toggle-overview=@as []
|
|
toggle-quick-settings=['<Control><Alt>backslash']
|
|
|
|
# To take fast screenshots without manual selection first
|
|
# as opposed to the simple 'Print' below
|
|
screenshot=['<Shift>Print']
|
|
screenshot-window=['<Alt>Print']
|
|
|
|
# Manually select what to screenshot ...
|
|
show-screenshot-ui=['Print', '<Control><Alt>p', '<Control><Alt>s']
|
|
# ... or what to record
|
|
show-screen-recording-ui=['<Control><Alt>r']
|
|
|
|
focus-active-notification=@as []
|
|
|
|
# The defaults would collide with forge's "window-resize-*" on <Super><Alt> + Up/Down
|
|
shift-overview-up=@as []
|
|
shift-overview-down=@as []
|
|
|
|
# Disable GNOME's default behavior of opening "favorite" apps
|
|
# with <Super>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=['<Super><Shift>y']
|
|
|
|
window-toggle-float=['<Super><Shift>space']
|
|
window-toggle-always-float=@as []
|
|
|
|
window-focus-up=['<Super>k', '<Super>Up']
|
|
window-focus-down=['<Super>j', '<Super>Down']
|
|
window-focus-left=['<Super>h', '<Super>Left']
|
|
window-focus-right=['<Super>l', '<Super>Right']
|
|
|
|
window-move-up=['<Super><Shift>k', '<Super><Shift>Up']
|
|
window-move-down=['<Super><Shift>j', '<Super><Shift>Down']
|
|
window-move-left=['<Super><Shift>h', '<Super><Shift>Left']
|
|
window-move-right=['<Super><Shift>l', '<Super><Shift>Right']
|
|
|
|
window-swap-up=['<Super><Control>k', '<Super><Control>Up']
|
|
window-swap-down=['<Super><Control>j', '<Super><Control>Down']
|
|
window-swap-left=['<Super><Control>h', '<Super><Control>Left']
|
|
window-swap-right=['<Super><Control>l', '<Super><Control>Right']
|
|
|
|
window-swap-last-active=['<Super><Control>Return']
|
|
|
|
# <Super><Alt> + hjkl pushes an edge outward (i.e., "grow")
|
|
# while <Super><Alt><Shift> + hjkl pulls the opposite edge inward (i.e., "shrink")
|
|
window-resize-top-increase=['<Super><Alt>k', '<Super><Alt>Up']
|
|
window-resize-top-decrease=['<Super><Alt><Shift>j', '<Super><Alt><Shift>Down']
|
|
window-resize-bottom-increase=['<Super><Alt>j', '<Super><Alt>Down']
|
|
window-resize-bottom-decrease=['<Super><Alt><Shift>k', '<Super><Alt><Shift>Up']
|
|
window-resize-left-increase=['<Super><Alt>h', '<Super><Alt>Left']
|
|
window-resize-left-decrease=['<Super><Alt><Shift>l', '<Super><Alt><Shift>Right']
|
|
window-resize-right-increase=['<Super><Alt>l', '<Super><Alt>Right']
|
|
window-resize-right-decrease=['<Super><Alt><Shift>h', '<Super><Alt><Shift>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=['<Super>b']
|
|
con-split-vertical=['<Super>v']
|
|
|
|
con-split-layout-toggle=['<Super>e']
|
|
|
|
con-stacked-layout-toggle=['<Super>s']
|
|
|
|
con-tabbed-layout-toggle=['<Super>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=['<Control><Alt>d']
|
|
|
|
|
|
|
|
[org/gnome/shell/extensions/project-hamster]
|
|
# This extension is not in use any more and its config kept as archive
|
|
|
|
# show-hamster-dropdown=['<Control><Alt>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=['<Super>grave']
|
|
|
|
# Jump to the next empty workspace
|
|
activate-empty-key=['<Super>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='<Control>w'
|
|
close-window='<Control>q'
|
|
|
|
find='<Control>f'
|
|
find-clear='<Control><Shift>f'
|
|
find-next='<Control>g'
|
|
find-previous='<Control><Shift>g'
|
|
|
|
new-tab='<Control>t'
|
|
new-window='<Control>n'
|
|
|
|
# "equal" because it is below "plus" on a US keyboard
|
|
zoom-in='<Control>equal'
|
|
zoom-out='<Control>minus'
|
|
|
|
|
|
|
|
# To avoid conflict with "switch-to-workspace-right" in [org/gnome/desktop/wm/keybindings]
|
|
[org/freedesktop/ibus/panel/emoji]
|
|
hotkey=@as []
|