Last active
February 8, 2026 11:09
-
-
Save Mehanik/8f3820b73b410c29769321f179fbd5e8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # ~/.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