How to permanently swap caps and escape in Manjaro Cinnamon with Xorg?

I’m running Manjaro Cinnamon with an Xorg session:

System:
  Kernel: 6.12.62‑1‑MANJARO arch: x86_64 bits: 64 compiler: gcc v: 15.2.1
  Distro: Manjaro Linux 25.1.0 Anh‑Linh
  Desktop: Cinnamon 6.6.0 (Xorg session)
  Display Manager: LightDM 1.32.0
  Session Type: x11

I used to swap Caps Lock and Escape permanently by doing:

dconf write /org/gnome/libgnomekbd/keyboard/options "['caps\tcaps:swapescape']"

but this no longer works. I also used to be able to do this via the Cinnamon Keyboard settings GUI, where tutorials show:

Open the Application Menu / use the Super key → search for Keyboard → click on Layouts → click on the Options button, then select Caps Lock behaviorSwap Esc and Caps Lock(Medium)

However, in Cinnamon 6.6 that Options button no longer appears in the Layouts section, so that GUI method is no longer available.

The following works but isn’t permanent:

❯ setxkbmap -option caps:swapescape

I’ve also tried several other methods, but none of them persist after login:

  1. Xorg config:
❯ cat /etc/X11/xorg.conf.d/10-swap-escape-caps.conf
Section "InputClass"
    Identifier "Swap CapsLock and Escape"
    MatchIsKeyboard "on"
    Option "XkbOptions" "caps:swapescape"
EndSection
  1. ~/.xinitrc:
setxkbmap -option caps:swapescape
  1. localectl method:
❯ localectl --no-convert set-x11-keymap us pc104 "" caps:swapescape
❯ cat /etc/X11/xorg.conf.d/00-keyboard.conf
# Written by systemd-localed(8), read by systemd-localed and Xorg. It's
# probably wise not to edit this file manually. Use localectl(1) to
# update this file.
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us"
        Option "XkbModel" "pc104"
        Option "XkbOptions" "caps:swapescape"
EndSection

Despite all this, ❯ setxkbmap -print -verbose 10 | grep xkb_options shows nothing, and the swap doesn’t take effect on login.

❯ inxi --filter --verbosity=8
System:
  Kernel: 6.12.62-1-MANJARO arch: x86_64 bits: 64
    compiler: gcc v: 15.2.1 clocksource: tsc
    avail: hpet,acpi_pm
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-6.12-x86_64
    root=UUID=ccb03787-acc9-4013-be82-5792a0d5f65a rw
    rootflags=subvol=@ quiet apparmor=1
    security=apparmor
    resume=UUID=7b15e779-e83d-494e-9e90-4a711f30e94c
    udev.log_priority=3
  Desktop: Cinnamon v: 6.6.0 tk: GTK v: 3.24.51
    wm: Muffin v: 6.6.0 tools: avail: cinnamon-screensaver
    vt: 7 dm: LightDM v: 1.32.0 Distro: Manjaro
    base: Arch Linux
Machine:
  Type: Desktop System: Gigabyte product: B450 AORUS PRO
    v: N/A serial: <superuser required>
  Mobo: Gigabyte model: B450 AORUS PRO-CF
    serial: <superuser required> uuid: <superuser required>
    Firmware: UEFI vendor: American Megatrends LLC.
    v: F63d date: 07/20/2022
Battery:
  Message: No system battery data found. Is one present?
Memory:
  System RAM: total: 16 GiB available: 15 GiB
    used: 5.71 GiB (38.1%)
  Message: For most reliable report, use superuser +
    dmidecode.
  Array-1: capacity: 128 GiB slots: 4 modules: 2
    EC: None max-module-size: 32 GiB note: est.
  Device-1: Channel-A DIMM 0 type: no module installed
  Device-2: Channel-A DIMM 1 type: DDR4
    detail: synchronous unbuffered (unregistered)
    size: 8 GiB speed: 2133 MT/s volts: note: check
    curr: 1 min: 1 max: 1 width (bits): data: 64
    total: 64 manufacturer: G.Skill
    part-no: F4-3200C16-8GVK serial: N/A
  Device-3: Channel-B DIMM 0 type: no module installed
  Device-4: Channel-B DIMM 1 type: DDR4
    detail: synchronous unbuffered (unregistered)
    size: 8 GiB speed: 2133 MT/s volts: note: check
    curr: 1 min: 1 max: 1 width (bits): data: 64
    total: 64 manufacturer: G.Skill
    part-no: F4-3200C16-8GVK serial: N/A
PCI Slots:
  Permissions: Unable to run dmidecode. Root privileges
    required.
CPU:
  Info: model: AMD Ryzen 5 5600G with Radeon Graphics
    bits: 64 type: MT MCP arch: Zen 3 gen: 3 level: v3
    note: check built: 2021-22 process: TSMC n7 (7nm)
    family: 0x19 (25) model-id: 0x50 (80) stepping: 0
    microcode: 0xA500012
  Topology: cpus: 1x dies: 1 clusters: 1 cores: 6
    threads: 12 tpc: 2 smt: enabled cache: L1: 384 KiB
    desc: d-6x32 KiB; i-6x32 KiB L2: 3 MiB
    desc: 6x512 KiB L3: 16 MiB desc: 1x16 MiB
  Speed (MHz): avg: 3318 min/max: 400/4464
    boost: enabled scaling: driver: amd-pstate-epp
    governor: powersave cores: 1: 3318 2: 3318 3: 3318
    4: 3318 5: 3318 6: 3318 7: 3318 8: 3318 9: 3318
    10: 3318 11: 3318 12: 3318 bogomips: 93464
  Flags: 3dnowprefetch abm adx aes aperfmperf apic
    arat avic avx avx2 bmi1 bmi2 bpext cat_l3 cdp_l3
    clflush clflushopt clwb clzero cmov cmp_legacy
    constant_tsc cpb cppc cpuid cqm cqm_llc
    cqm_mbm_local cqm_mbm_total cqm_occup_llc cr8_legacy
    cx16 cx8 de debug_swap decodeassists erms extapic
    extd_apicid f16c flushbyasid fma fpu fsgsbase fsrm
    fxsr fxsr_opt ht hw_pstate ibpb ibrs ibs invpcid
    irperf lahf_lm lbrv lm mba mca mce misalignsse mmx
    mmxext monitor movbe msr mtrr mwaitx nonstop_tsc
    nopl npt nrip_save nx ospke osvw overflow_recov pae
    pat pausefilter pclmulqdq pdpe1gb perfctr_core
    perfctr_llc perfctr_nb pfthreshold pge pku pni
    popcnt pse pse36 rapl rdpid rdpru rdrand rdseed
    rdt_a rdtscp rep_good sep sha_ni skinit smap smca
    smep ssbd sse sse2 sse4_1 sse4_2 sse4a ssse3 stibp
    succor svm_lock syscall tce topoext tsc tsc_scale
    umip user_shstk v_spec_ctrl v_vmsave_vmload vaes
    vgif vmcb_clean vme vmmcall vpclmulqdq wbnoinvd wdt
    x2apic xgetbv1 xsave xsavec xsaveerptr xsaveopt
    xsaves xtopology
  Vulnerabilities:
  Type: gather_data_sampling status: Not affected
  Type: indirect_target_selection status: Not affected
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: reg_file_data_sampling status: Not affected
  Type: retbleed status: Not affected
  Type: spec_rstack_overflow mitigation: Safe RET
  Type: spec_store_bypass mitigation: Speculative
    Store Bypass disabled via prctl
  Type: spectre_v1 mitigation: usercopy/swapgs
    barriers and __user pointer sanitization
  Type: spectre_v2 mitigation: Retpolines; IBPB:
    conditional; IBRS_FW; STIBP: always-on; RSB filling;
    PBRSB-eIBRS: Not affected; BHI: Not affected
  Type: srbds status: Not affected
  Type: tsa mitigation: Clear CPU buffers
  Type: tsx_async_abort status: Not affected
  Type: vmscape mitigation: IBPB before exit to
    userspace
Graphics:
  Device-1: Advanced Micro Devices [AMD/ATI] Cezanne
    [Radeon Vega Series / Radeon Mobile Series]
    vendor: Gigabyte driver: amdgpu v: kernel arch: GCN-5
    code: Vega process: GF 14nm built: 2017-20 pcie:
    gen: 3 speed: 8 GT/s lanes: 16 ports:
    active: HDMI-A-1 empty: DVI-D-1 bus-ID: 09:00.0
    chip-ID: 1002:1638 class-ID: 0300 temp: 25.0 C
  Display: x11 server: X.org v: 1.21.1.21
    with: Xwayland v: 24.1.9 driver: X: loaded: amdgpu
    unloaded: modesetting alternate: fbdev,vesa
    dri: radeonsi gpu: amdgpu display-ID: :0 screens: 1
  Screen-1: 0 s-res: 1920x1080
    s-size: <missing: xdpyinfo>
  Monitor-1: HDMI-A-1 mapped: HDMI-A-0
    model: BenQ GC2870 serial: <filter> built: 2017 res:
    mode: 1920x1080 hz: 60 scale: 100% (1) dpi: 79
    gamma: 1.2 chroma: red: x: 0.686 y: 0.310 green:
    x: 0.263 y: 0.690 blue: x: 0.153 y: 0.051 white:
    x: 0.314 y: 0.329 size: 621x341mm (24.45x13.43")
    diag: 708mm (27.9") ratio: 16:9 modes: 1920x1080,
    1680x1050, 1600x900, 1280x1024, 1440x900, 1280x800,
    1280x720, 1024x768, 832x624, 800x600, 720x576,
    720x480, 640x480, 720x400
  API: EGL v: 1.5 hw: drv: amd radeonsi platforms:
    device: 0 drv: radeonsi device: 1 drv: swrast gbm:
    drv: kms_swrast surfaceless: drv: radeonsi x11:
    drv: radeonsi inactive: wayland
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa
    v: 25.3.1-arch1.2 glx-v: 1.4 direct-render: yes
    renderer: AMD Radeon Graphics (radeonsi renoir ACO
    DRM 3.61 6.12.62-1-MANJARO) device-ID: 1002:1638
    memory: 500 MiB unified: no
  Info: Tools: api: eglinfo,glxinfo x11: xprop,xrandr
Audio:
  Device-1: Advanced Micro Devices [AMD/ATI]
    Renoir/Cezanne HDMI/DP Audio driver: snd_hda_intel
    v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16
    bus-ID: 09:00.1 chip-ID: 1002:1637 class-ID: 0403
  Device-2: Advanced Micro Devices [AMD] Ryzen HD Audio
    vendor: Gigabyte driver: snd_hda_intel v: kernel pcie:
    gen: 3 speed: 8 GT/s lanes: 16 bus-ID: 09:00.6
    chip-ID: 1022:15e3 class-ID: 0403
  API: ALSA v: k6.12.62-1-MANJARO status: kernel-api
    with: aoss type: oss-emulator
    tools: alsactl,alsamixer,amixer
  Server-1: sndiod v: N/A status: off
    tools: aucat,midicat,sndioctl
  Server-2: JACK v: 1.9.22 status: off tools: N/A
  Server-3: PipeWire v: 1.4.9 status: active with:
    1: pipewire-pulse status: active 2: wireplumber
    status: active 3: pipewire-alsa type: plugin
    tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Intel I211 Gigabit Network vendor: Gigabyte
    driver: igb v: kernel pcie: gen: 1 speed: 2.5 GT/s
    lanes: 1 port: f000 bus-ID: 03:00.0
    chip-ID: 8086:1539 class-ID: 0200
  IF: eno1 state: up speed: 1000 Mbps duplex: full
    mac: <filter>
  IP v4: <filter> type: dynamic noprefixroute
    scope: global broadcast: <filter>
  IP v6: <filter> type: noprefixroute scope: link
  Info: services: NetworkManager, sshd,
    systemd-timesyncd
  WAN IP: <filter>
Bluetooth:
  Message: No bluetooth data found.
Logical:
  Message: No logical block device data found.
RAID:
  Message: No RAID data found.
Drives:
  Local Storage: total: 131.88 TiB
    used: 111.11 TiB (84.2%)
  SMART Message: Unable to run smartctl. Root
    privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: SanDisk
    model: Extreme 1TB X3N size: 931.51 GiB block-size:
    physical: 512 B logical: 512 B speed: 63.2 Gb/s
    lanes: 4 tech: SSD serial: <filter> fw-rev: 731100WD
    temp: 36.9 C scheme: GPT
  ID-2: /dev/sda maj-min: 8:0 vendor: Seagate
    model: ST18000NM000J-2TV103 size: 16.37 TiB block-size:
    physical: 4096 B logical: 512 B speed: 6.0 Gb/s
    tech: HDD rpm: 7200 serial: <filter> fw-rev: SN02
    scheme: GPT
  ID-3: /dev/sdb maj-min: 8:16 vendor: Seagate
    model: ST16000NM001G-2KK103 size: 14.55 TiB block-size:
    physical: 4096 B logical: 512 B speed: 6.0 Gb/s
    tech: HDD rpm: 7200 serial: <filter> fw-rev: SN03
    scheme: GPT
  ID-4: /dev/sdc maj-min: 8:32 vendor: Toshiba
    model: MG08ACA16TE size: 14.55 TiB block-size:
    physical: 4096 B logical: 512 B speed: 6.0 Gb/s
    tech: HDD rpm: 7200 serial: <filter> fw-rev: 4303
    scheme: GPT
  ID-5: /dev/sdd maj-min: 8:48 vendor: Toshiba
    model: MG09ACA18TE size: 16.37 TiB block-size:
    physical: 4096 B logical: 512 B speed: 6.0 Gb/s
    tech: HDD rpm: 7200 serial: <filter> fw-rev: 0104
    scheme: GPT
  ID-6: /dev/sde maj-min: 8:64 vendor: Seagate
    model: ST16000NM001G-2KK103 size: 14.55 TiB block-size:
    physical: 4096 B logical: 512 B speed: 6.0 Gb/s
    tech: HDD rpm: 7200 serial: <filter> fw-rev: SN03
    scheme: GPT
  ID-7: /dev/sdf maj-min: 8:80 vendor: Seagate
    model: ST18000NM000J-2TV103 size: 16.37 TiB block-size:
    physical: 4096 B logical: 512 B speed: 6.0 Gb/s
    tech: HDD rpm: 7200 serial: <filter> fw-rev: SN02
    scheme: GPT
  ID-8: /dev/sdg maj-min: 8:96 vendor: Toshiba
    model: MG08ACA16TE size: 14.55 TiB block-size:
    physical: 4096 B logical: 512 B speed: 6.0 Gb/s
    tech: HDD rpm: 7200 serial: <filter> fw-rev: 0102
    scheme: GPT
  ID-9: /dev/sdh maj-min: 8:112 vendor: Seagate
    model: ST16000NM001G-2KK103 size: 14.55 TiB block-size:
    physical: 4096 B logical: 512 B speed: 6.0 Gb/s
    tech: HDD rpm: 7200 serial: <filter> fw-rev: SB30
    scheme: GPT
  ID-10: /dev/sdi maj-min: 8:128 vendor: Seagate
    model: Expansion size: 4.55 TiB block-size:
    physical: 4096 B logical: 512 B type: USB rev: 3.0
    spd: 5 Gb/s lanes: 1 mode: 3.2 gen-1x1 tech: N/A
    serial: <filter> fw-rev: 0712 scheme: GPT
  ID-11: /dev/sdj maj-min: 8:144 vendor: Seagate
    model: Portable size: 4.55 TiB block-size:
    physical: 4096 B logical: 512 B type: USB rev: 3.0
    spd: 5 Gb/s lanes: 1 mode: 3.2 gen-1x1 tech: N/A
    serial: <filter> fw-rev: 0712 scheme: GPT
  Message: No optical or floppy data found.
Partition:
  ID-1: / raw-size: 914.72 GiB size: 914.72 GiB (100.00%)
    used: 34.19 GiB (3.7%) fs: btrfs dev: /dev/nvme0n1p2
    maj-min: 259:2 label: N/A
    uuid: ccb03787-acc9-4013-be82-5792a0d5f65a
  ID-2: /boot/efi raw-size: 300 MiB
    size: 299.4 MiB (99.80%) used: 640 KiB (0.2%) fs: vfat
    dev: /dev/nvme0n1p1 maj-min: 259:1 label: N/A
    uuid: DDD2-171A
  ID-3: /home raw-size: 914.72 GiB
    size: 914.72 GiB (100.00%) used: 34.19 GiB (3.7%)
    fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
    label: N/A uuid: ccb03787-acc9-4013-be82-5792a0d5f65a
  ID-4: /media raw-size: N/A size: 130.12 TiB
    used: 111.08 TiB (85.4%) fs: fuse.mergerfs
    logical: mnt/S/personal:mnt/T/personal:mnt/hdd5/personal:mnt/hdd8/personal:mnt/S/public:mnt/T/public:mnt/hdd1/public:mnt/hdd2/public:mnt/hdd3/public:mnt/hdd4/public:mnt/hdd5/public:mnt/hdd6/public:mnt/hdd7/public:mnt/hdd8/public:run/media/user/*/personal:run/media/user/*/public
  ID-5: /mnt/S raw-size: 4.55 TiB
    size: 4.51 TiB (99.19%) used: 4.16 TiB (92.3%) fs: ext4
    dev: /dev/sdj1 maj-min: 8:145 label: S
    uuid: d3a73702-a997-4fe4-b864-6713675b9c3e
  ID-6: /mnt/T raw-size: 4.55 TiB
    size: 4.51 TiB (99.19%) used: 2.97 TiB (65.8%) fs: ext4
    dev: /dev/sdi1 maj-min: 8:129 label: T
    uuid: 47faf9ab-da11-4b66-849a-5313fa1d1912
  ID-7: /mnt/hdd1 raw-size: 16.37 TiB
    size: 16.3 TiB (99.60%) used: 14.08 TiB (86.4%)
    fs: ext4 dev: /dev/sda1 maj-min: 8:1 label: hdd1
    uuid: 70d5adcb-a0c6-4a73-9854-7e0e5e783d5a
  ID-8: /mnt/hdd2 raw-size: 16.37 TiB
    size: 16.3 TiB (99.60%) used: 14.08 TiB (86.4%)
    fs: ext4 dev: /dev/sdf1 maj-min: 8:81 label: hdd2
    uuid: a9745a20-6b6b-4399-84b1-c9be7976fb7b
  ID-9: /mnt/hdd3 raw-size: 16.37 TiB
    size: 16.3 TiB (99.60%) used: 14.08 TiB (86.4%)
    fs: ext4 dev: /dev/sdd1 maj-min: 8:49 label: hdd3
    uuid: f5d058f9-19ed-4e10-9c56-3aef33fcacd8
  ID-10: /mnt/hdd4 raw-size: 14.55 TiB
    size: 14.44 TiB (99.20%) used: 12.3 TiB (85.2%)
    fs: ext4 dev: /dev/sdb1 maj-min: 8:17 label: hdd4
    uuid: 56d2b87f-9c26-4214-9c29-b909e2cecc94
  ID-11: /mnt/hdd5 raw-size: 14.55 TiB
    size: 14.44 TiB (99.20%) used: 12.39 TiB (85.8%)
    fs: ext4 dev: /dev/sde1 maj-min: 8:65 label: hdd5
    uuid: 09c5a056-b616-4b20-a054-d045fa916465
  ID-12: /mnt/hdd6 raw-size: 14.55 TiB
    size: 14.44 TiB (99.20%) used: 12.31 TiB (85.2%)
    fs: ext4 dev: /dev/sdg1 maj-min: 8:97 label: hdd6
    uuid: f5441299-8485-47c6-bb96-a4f6d103fff5
  ID-13: /mnt/hdd7 raw-size: 14.55 TiB
    size: 14.44 TiB (99.20%) used: 12.3 TiB (85.2%)
    fs: ext4 dev: /dev/sdc1 maj-min: 8:33 label: hdd7
    uuid: 2d67063b-e066-4337-8907-784e6d574881
  ID-14: /mnt/hdd8 raw-size: 14.55 TiB
    size: 14.44 TiB (99.20%) used: 12.39 TiB (85.8%)
    fs: ext4 dev: /dev/sdh1 maj-min: 8:113 label: hdd8
    uuid: b12efb92-a6ee-443f-92e2-d74c0c6e6c53
  ID-15: /personal raw-size: N/A size: 37.9 TiB
    used: 31.91 TiB (84.2%) fs: fuse.mergerfs
    logical: mnt/S/personal:mnt/T/personal:mnt/hdd5/personal:mnt/hdd8/personal:run/media/user/*/personal
  ID-16: /public raw-size: N/A size: 130.12 TiB
    used: 111.08 TiB (85.4%) fs: fuse.mergerfs
    logical: mnt/S/public:mnt/T/public:mnt/hdd1/public:mnt/hdd2/public:mnt/hdd3/public:mnt/hdd4/public:mnt/hdd5/public:mnt/hdd6/public:mnt/hdd7/public:mnt/hdd8/public:run/media/user/*/public
  ID-17: /var/cache raw-size: 914.72 GiB
    size: 914.72 GiB (100.00%) used: 34.19 GiB (3.7%)
    fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
    label: N/A uuid: ccb03787-acc9-4013-be82-5792a0d5f65a
  ID-18: /var/log raw-size: 914.72 GiB
    size: 914.72 GiB (100.00%) used: 34.19 GiB (3.7%)
    fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
    label: N/A uuid: ccb03787-acc9-4013-be82-5792a0d5f65a
Swap:
  Kernel: swappiness: 60 (default)
    cache-pressure: 100 (default) zswap: no
  ID-1: swap-1 type: partition size: 16.5 GiB
    used: 0 KiB (0.0%) priority: -2 dev: /dev/nvme0n1p3
    maj-min: 259:3 label: swap
    uuid: 7b15e779-e83d-494e-9e90-4a711f30e94c
Unmounted:
  Message: No unmounted partitions found.
USB:
  Hub-1: 1-0:1 info: hi-speed hub with single TT
    ports: 10 rev: 2.0 speed: 480 Mb/s (57.2 MiB/s)
    lanes: 1 mode: 2.0 chip-ID: 1d6b:0002 class-ID: 0900
  Hub-2: 2-0:1 info: super-speed hub ports: 4 rev: 3.1
    speed: 10 Gb/s (1.16 GiB/s) lanes: 1 mode: 3.2 gen-2x1
    chip-ID: 1d6b:0003 class-ID: 0900
  Hub-3: 3-0:1 info: hi-speed hub with single TT
    ports: 4 rev: 2.0 speed: 480 Mb/s (57.2 MiB/s) lanes: 1
    mode: 2.0 chip-ID: 1d6b:0002 class-ID: 0900
  Hub-4: 3-2:2 info: Genesys Logic Hub ports: 4
    rev: 2.1 speed: 480 Mb/s (57.2 MiB/s) lanes: 1
    mode: 2.0 power: 100mA chip-ID: 05e3:0610
    class-ID: 0900
  Device-1: 3-2.1:3 info: Razer USA RZ01-0321 Gaming
    Mouse [DeathAdder V2] type: mouse,keyboard
    driver: hid-generic,usbhid interfaces: 4 rev: 2.0
    speed: 12 Mb/s (1.4 MiB/s) lanes: 1 mode: 1.1
    power: 500mA chip-ID: 1532:0084 class-ID: 0300
  Device-2: 3-2.2:4 info: SONiX USB Keyboard
    type: keyboard driver: hid-generic,usbhid interfaces: 1
    rev: 2.0 speed: 12 Mb/s (1.4 MiB/s) lanes: 1
    mode: 1.1 power: 500mA chip-ID: 2efd:7812
    class-ID: 0301
  Hub-5: 4-0:1 info: super-speed hub ports: 2 rev: 3.1
    speed: 10 Gb/s (1.16 GiB/s) lanes: 1 mode: 3.2 gen-2x1
    chip-ID: 1d6b:0003 class-ID: 0900
  Device-1: 4-1:2 info: Seagate RSS LLC Expansion
    type: mass storage driver: uas interfaces: 1 rev: 3.0
    speed: 5 Gb/s (596.0 MiB/s) lanes: 1
    mode: 3.2 gen-1x1 power: 896mA chip-ID: 0bc2:2343
    class-ID: 0806 serial: <filter>
  Hub-6: 4-2:3 info: Genesys Logic Hub ports: 4
    rev: 3.1 speed: 5 Gb/s (596.0 MiB/s) lanes: 1
    mode: 3.2 gen-1x1 chip-ID: 05e3:0612 class-ID: 0900
  Hub-7: 5-0:1 info: hi-speed hub with single TT
    ports: 4 rev: 2.0 speed: 480 Mb/s (57.2 MiB/s) lanes: 1
    mode: 2.0 chip-ID: 1d6b:0002 class-ID: 0900
  Hub-8: 6-0:1 info: super-speed hub ports: 2 rev: 3.1
    speed: 10 Gb/s (1.16 GiB/s) lanes: 1 mode: 3.2 gen-2x1
    chip-ID: 1d6b:0003 class-ID: 0900
  Device-1: 6-1:2 info: Seagate RSS LLC Portable
    type: mass storage driver: uas interfaces: 1 rev: 3.0
    speed: 5 Gb/s (596.0 MiB/s) lanes: 1
    mode: 3.2 gen-1x1 power: 896mA chip-ID: 0bc2:2344
    class-ID: 0806 serial: <filter>
Sensors:
  System Temperatures: cpu: 34.1 C mobo: N/A gpu: amdgpu
    temp: 26.0 C
  Fan Speeds (rpm): N/A
Repos:
  Packages: 1671 pm: pacman pkgs: 1658 libs: 395
    tools: pamac,yay pm: flatpak pkgs: 13
  Active pacman repo servers in: /etc/pacman.d/mirrorlist
    1: https://mirror.raiolanetworks.com/manjaro/unstable/$repo/$arch
    2: https://mirrors.ft.uam.es/manjaro/unstable/$repo/$arch
    3: https://ftp.caliu.cat/pub/distribucions/manjaro/unstable/$repo/$arch
Processes:
  CPU top: 5 of 549
  1: cpu: 22.8% command: exe pid: 47406
    mem: 583.3 MiB (3.7%)
  2: cpu: 6.0% command: firefox pid: 10654
    mem: 859.8 MiB (5.5%)
  3: cpu: 5.0% command: Discord pid: 47315
    mem: 159.9 MiB (1.0%)
  4: cpu: 2.9% command: Discord pid: 47248
    mem: 207.2 MiB (1.3%)
  5: cpu: 1.7% command: calibre pid: 21093
    mem: 1562.6 MiB (10.1%)
  Memory top: 5 of 549
  1: mem: 1562.6 MiB (10.1%) command: calibre
    pid: 21093 cpu: 1.7%
  2: mem: 859.8 MiB (5.5%) command: firefox pid: 10654
    cpu: 6.0%
  3: mem: 583.3 MiB (3.7%) command: exe pid: 47406
    cpu: 22.8%
  4: mem: 450.3 MiB (2.9%) command: firefox pid: 11578
    cpu: 0.3%
  5: mem: 409.6 MiB (2.6%) command: firefox pid: 11283
    cpu: 0.8%
Info:
  Processes: 549 Power: uptime: 1h 5m
    states: freeze,mem,disk suspend: deep avail: s2idle
    wakeups: 0 hibernate: platform avail: shutdown,
    reboot, suspend, test_resume image: 5.98 GiB
    services: csd-power,upowerd Init: systemd v: 258
    default: graphical tool: systemctl
  Compilers: gcc: 15.2.1 Shell: Zsh v: 5.9
    running-in: tmux: inxi: 3.3.40

Cinnamon is based upon Gnome - that is where it comes from.

It might be affected by the recent change/decision that X11 will not be supported anymore.

That is just conjecture - I do not positively know.

The answer to this thread also seems outdated just a couple of months after it was posted. There are probably many similar configurations broken by the new changes, but I can’t find what the alternative is.

KDE changed the name to “Key Bindings”, so maybe something similar happened. :man_shrugging:

As you mentioned xorg config files not working, I’m not :100:% sure this will work but I think it’s worth testing. There’s localectl which should make it permanent via xorg config. :crossed_fingers:

You’ll need to log out and back in for it to take effect - or you can use setxkbmap to set it for the current session.

# US English
localectl --no-convert set-x11-keymap us pc104 "" caps:swapescape

# UK English
localectl --no-convert set-x11-keymap gb pc105 "" caps:swapescape

Modify the layout (us), model (pc104) and variant ("") as needed.


Alternatively, you can run the setxkbmap command via autostart or systemd. Though you may also want a udev rule to apply it again if the keyboard reconnects.

1 Like

I ended up pasting this in the ~/.initrc file

setxkbmap -option caps:swapescape