Skip to content

Instantly share code, notes, and snippets.

@Mehanik
Last active February 8, 2026 11:09
Show Gist options
  • Select an option

  • Save Mehanik/8f3820b73b410c29769321f179fbd5e8 to your computer and use it in GitHub Desktop.

Select an option

Save Mehanik/8f3820b73b410c29769321f179fbd5e8 to your computer and use it in GitHub Desktop.
# ~/.config/xremap/config.yml
# Mac-like keybindings for Debian + Wayland + GNOME
#
# Physical key positions (PC → Mac equivalent):
# Ctrl → Ctrl (leftmost modifier)
# Super → Option (middle modifier)
# Alt → Command (next to spacebar)
#
# ⚠️ Run the gsettings commands at the bottom of this file once.
# ⚠️ Ctrl+Arrow is reassigned to workspace switching (Mac-like).
# Word-by-word navigation moves to Super+Arrow (physical Option key).
#
# Already works with no remapping needed:
# Alt+Tab → app switcher (same as Mac Cmd+Tab)
# Alt+` → same-app windows (same as Mac Cmd+`)
keymap:
#────────────────────────────────────────────
# 1. WINDOW MANAGEMENT — global
# Works in every app including terminals.
#────────────────────────────────────────────
- name: Window Management (Mac-like)
remap:
# ── Switch workspace (Mac: Ctrl+←/→) ──
Ctrl-Left: Super-Pageup
Ctrl-Right: Super-Pagedown
# ── Move focused window to workspace (Mac: Ctrl+Shift+←/→) ──
Ctrl-Shift-Left: Super-Shift-Pageup
Ctrl-Shift-Right: Super-Shift-Pagedown
# ── Minimize / hide window (Mac: Cmd+H, Cmd+M) ──
Alt-h: Super-h
Alt-m: Super-h
# ── Toggle fullscreen (Mac: Cmd+Ctrl+F) ──
Ctrl-Alt-f: F11
# ── Lock screen (Mac: Ctrl+Cmd+Q) ──
Ctrl-Alt-q: Super-l
# ── Screenshots (Mac: Cmd+Shift+3/4/5) ──
Alt-Shift-3: Shift-Print # full screen to file
Alt-Shift-4: Print # interactive screenshot UI
Alt-Shift-5: Print # interactive screenshot UI
# ── Force Quit (Mac: Cmd+Option+Esc) ──
Alt-Super-Esc: Ctrl-Alt-Delete
#────────────────────────────────────────────
# 2. TERMINAL APPS
# Alt+key → terminal copy/paste/tabs
# Ctrl stays raw for SIGINT, Vim, etc.
#────────────────────────────────────────────
- name: Terminal (Mac Command shortcuts)
application:
only:
- Gnome-terminal
- kitty
- Alacritty
- foot
- org.wezfurlong.wezterm
- tilix
- terminator
- com.raggesilver.BlackBox
remap:
# Copy / Paste (terminals use Ctrl+Shift+C/V)
Alt-c: Ctrl-Shift-c
Alt-v: Ctrl-Shift-v
# Tab / window management
Alt-t: Ctrl-Shift-t
Alt-w: Ctrl-Shift-w
Alt-n: Ctrl-Shift-n
# Find
Alt-f: Ctrl-Shift-f
# Tab navigation (Cmd+1-9)
Alt-1: Alt-1
Alt-2: Alt-2
Alt-3: Alt-3
Alt-4: Alt-4
Alt-5: Alt-5
# ── Line navigation (Mac: Cmd+←/→ = Home/End) ──
Alt-Left: Home
Alt-Right: End
#────────────────────────────────────────────
# 3. GUI APPS — everything except terminals
# Alt+key → Ctrl+key (standard shortcuts)
#────────────────────────────────────────────
- name: GUI apps (Mac Command shortcuts)
application:
not:
- Gnome-terminal
- kitty
- Alacritty
- foot
- org.wezfurlong.wezterm
- tilix
- terminator
- com.raggesilver.BlackBox
remap:
# Essential
Alt-c: Ctrl-c
Alt-v: Ctrl-v
Alt-x: Ctrl-x
Alt-z: Ctrl-z
Alt-Shift-z: Ctrl-Shift-z
Alt-a: Ctrl-a
Alt-s: Ctrl-s
Alt-Shift-s: Ctrl-Shift-s
# Tabs & windows
Alt-t: Ctrl-t
Alt-w: Ctrl-w
Alt-Shift-t: Ctrl-Shift-t
Alt-n: Ctrl-n
Alt-Shift-n: Ctrl-Shift-n
# Navigation
Alt-f: Ctrl-f
Alt-g: Ctrl-g
Alt-l: Ctrl-l
Alt-r: Ctrl-r
Alt-Shift-r: Ctrl-Shift-r
# Editing
Alt-b: Ctrl-b
Alt-i: Ctrl-i
Alt-u: Ctrl-u
Alt-k: Ctrl-k
# Other common
Alt-p: Ctrl-p
Alt-o: Ctrl-o
Alt-d: Ctrl-d
Alt-e: Ctrl-e
Alt-Shift-i: Ctrl-Shift-i
Alt-q: Ctrl-q
# Tab switching (Cmd+1-9)
Alt-1: Ctrl-1
Alt-2: Ctrl-2
Alt-3: Ctrl-3
Alt-4: Ctrl-4
Alt-5: Ctrl-5
Alt-6: Ctrl-6
Alt-7: Ctrl-7
Alt-8: Ctrl-8
Alt-9: Ctrl-9
# Zoom
Alt-equal: Ctrl-equal
Alt-minus: Ctrl-minus
Alt-0: Ctrl-0
# ── Text navigation (Mac-like) ──
# Cmd+Arrow = line / doc boundaries
Alt-Left: Home
Alt-Right: End
Alt-Up: Ctrl-Home
Alt-Down: Ctrl-End
# Cmd+Shift+Arrow = select to boundary
Alt-Shift-Left: Shift-Home
Alt-Shift-Right: Shift-End
Alt-Shift-Up: Ctrl-Shift-Home
Alt-Shift-Down: Ctrl-Shift-End
# Option+Arrow = word-by-word (Option = physical Super key)
Super-Left: Ctrl-Left
Super-Right: Ctrl-Right
Super-Shift-Left: Ctrl-Shift-Left
Super-Shift-Right: Ctrl-Shift-Right
# Option+Backspace = delete word back
Super-Backspace: Ctrl-Backspace
# ═══════════════════════════════════════════════
# GNOME gsettings — run once after fresh install
# ═══════════════════════════════════════════════
#
# ── Free bare F-keys from GNOME defaults ──
# Default: toggle-overview includes F3 → removed, keeps Ctrl+Up & Alt+Space
# Default: toggle-application-view includes F4 → removed, keeps Super+A
# Default: show-desktop includes F11 → removed (frees F11 for fullscreen)
# Default: help is Super+F1 → removed
#
# gsettings set org.gnome.shell.keybindings toggle-overview "['<Ctrl>Up', '<Alt>space']"
# gsettings set org.gnome.shell.keybindings toggle-application-view "['<Super>a']"
# gsettings set org.gnome.desktop.wm.keybindings show-desktop "[]"
# gsettings set org.gnome.settings-daemon.plugins.media-keys help "['']"
#
# ── Cmd+Space → Spotlight-like search ──
# Default: Alt+Space opens both window menu AND overview, causing conflicts.
# Remove window menu so Alt+Space (physical Cmd+Space) reliably opens overview.
#
# gsettings set org.gnome.desktop.wm.keybindings activate-window-menu "[]"
#
# ── Disable Super+Left/Right tiling ──
# Frees these keys for Option+Arrow word navigation (physical Super = Option).
#
# gsettings set org.gnome.mutter.keybindings toggle-tiled-left "[]"
# gsettings set org.gnome.mutter.keybindings toggle-tiled-right "[]"
#
# ── Optional: direct workspace numbers (Mac: Ctrl+1/2/3/4) ──
#
# gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-1 "['<Ctrl>1']"
# gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-2 "['<Ctrl>2']"
# gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-3 "['<Ctrl>3']"
# gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-4 "['<Ctrl>4']"
#
# ── Optional: move window to workspace by number ──
#
# gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-1 "['<Ctrl><Shift>1']"
# gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-2 "['<Ctrl><Shift>2']"
# gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-3 "['<Ctrl><Shift>3']"
# gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-4 "['<Ctrl><Shift>4']"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment