Want to add EXWM into my list of desktops


I’m new to Garruda (but not to Linux in general) and I have it working wirelessly, the next thing I want to do is to add a window manager into my list of current window manager.

First, though, the basics. I’m using Garuda Linux 6.7.8-zen1-1-zen on an AMD 64 bit, no customizations except to add in my wi-fi adapter and get it working. What I’d like to do know is to add EXWM to XDG’s menu of desktops. I’ve done this with slim-wm, and I did look on the forums (and Arch’s for that matter, and their directions didn’t match what I saw in the directory).

SO what I’m wondering is, how do I add EXWM to my choices of WM on XDG’s login screen. Right now, I’m entering KDE Plasma and running startexwm from konsole to get to EXWM, but I’d like to be able to get to EXWM right from XDG’s opening screen by selecting it. Any ideas?


Please, just post the garuda-inxi.

1 Like

Sorry about that! Yeah, I didn’t see that. Here you go:

  Kernel: 6.7.8-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
    clocksource: tsc avail: hpet,acpi_pm
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=3b420316-a294-4e2e-9b79-e71539a18b71 rw rootflags=subvol=@
    quiet resume=UUID=91dca81e-4269-4d40-a243-8e04c447d26c loglevel=3 ibt=off
  Desktop: KDE Plasma v: 5.27.10 tk: Qt v: 5.15.12 info: frameworks
    v: 5.115.0 with: polybar vt: 2 dm: SDDM Distro: Garuda base: Arch Linux
  Type: Desktop System: Micro-Star product: MS-7B36 v: 1.0
    serial: <superuser required>
  Mobo: Micro-Star model: B350 TOMAHAWK PLUS (MS-7B36) v: 1.0
    serial: <superuser required> uuid: <superuser required>
    UEFI: American Megatrends v: 1.60 date: 03/21/2018
  Device-1: hidpp_battery_0 model: Logitech Wireless Keyboard serial: <filter>
    charge: 55% (should be ignored) rechargeable: yes status: discharging
  Info: model: AMD A8-9600 RADEON R7 10 COMPUTE CORES 4C+6G bits: 64
    type: MT MCP arch: Excavator level: v3 note: check built: 2015
    process: GF 28nm family: 0x15 (21) model-id: 0x65 (101) stepping: 1
    microcode: 0x6006118
  Topology: cpus: 1x cores: 4 smt: enabled cache: L1: 320 KiB
    desc: d-4x32 KiB; i-2x96 KiB L2: 2 MiB desc: 2x1024 KiB
  Speed (MHz): avg: 1441 high: 1567 min/max: 1400/3100 boost: enabled
    scaling: driver: acpi-cpufreq governor: schedutil cores: 1: 1567 2: 1400
    3: 1400 4: 1399 bogomips: 24799
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
  Vulnerabilities: <filter>
  Device-1: AMD Wani [Radeon R5/R6/R7 Graphics] vendor: Micro-Star MSI
    driver: amdgpu v: kernel arch: GCN-3 code: Volcanic Islands
    process: TSMC 28nm built: 2014-19 ports: active: HDMI-A-1
    empty: DP-1,DVI-D-1 bus-ID: 00:01.0 chip-ID: 1002:9874 class-ID: 0300
  Display: x11 server: X.Org v: 21.1.11 with: Xwayland v: 23.2.4 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-dpi: 96 s-size: 508x285mm (20.00x11.22")
    s-diag: 582mm (22.93")
  Monitor-1: HDMI-A-1 mapped: HDMI-A-0 model: Acer K243Y serial: <filter>
    built: 2020 res: 1920x1080 hz: 60 dpi: 93 gamma: 1.2
    size: 527x296mm (20.75x11.65") diag: 604mm (23.8") ratio: 16:9 modes:
    max: 1920x1080 min: 720x400
  API: EGL v: 1.5 hw: drv: amd radeonsi platforms: device: 0 drv: radeonsi
    device: 1 drv: swrast surfaceless: drv: radeonsi x11: drv: radeonsi
    inactive: gbm,wayland
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 24.0.2-arch1.1
    glx-v: 1.4 direct-render: yes renderer: AMD Radeon R7 Graphics (radeonsi
    carrizo LLVM 16.0.6 DRM 3.57 6.7.8-zen1-1-zen) device-ID: 1002:9874
    memory: 250 MiB unified: no
  API: Vulkan v: 1.3.276 layers: 3 device: 0 type: integrated-gpu name: AMD
    Radeon R7 Graphics (RADV CARRIZO) driver: mesa radv v: 24.0.2-arch1.1
    device-ID: 1002:9874 surfaces: xcb,xlib device: 1 type: cpu name: llvmpipe
    (LLVM 16.0.6 256 bits) driver: mesa llvmpipe v: 24.0.2-arch1.1 (LLVM
    16.0.6) device-ID: 10005:0000 surfaces: xcb,xlib
  Device-1: AMD Kabini HDMI/DP Audio vendor: Micro-Star MSI
    driver: snd_hda_intel v: kernel bus-ID: 00:01.1 chip-ID: 1002:9840
    class-ID: 0403
  Device-2: AMD Family 15h Audio vendor: Micro-Star MSI
    driver: snd_hda_intel v: kernel bus-ID: 00:09.2 chip-ID: 1022:157a
    class-ID: 0403
  Device-3: Logitech Logi USB Headset
    driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 2.0 speed: 12 Mb/s
    lanes: 1 mode: 1.1 bus-ID: 4-9:3 chip-ID: 046d:0a65 class-ID: 0300
    serial: <filter>
  API: ALSA v: k6.7.8-zen1-1-zen status: kernel-api tools: N/A
  Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
  Server-2: PipeWire v: 1.0.3 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
  Device-1: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    vendor: Micro-Star MSI RTL8111/8168/8411 driver: r8169 v: kernel pcie:
    gen: 1 speed: 2.5 GT/s lanes: 1 port: d000 bus-ID: 18:00.0
    chip-ID: 10ec:8168 class-ID: 0200
  IF: enp24s0 state: down mac: <filter>
  Device-2: TP-Link 802.11ac WLAN Adapter driver: rtl88XXau type: USB
    rev: 2.1 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 6-2:2 chip-ID: 2357:011f
    class-ID: 0000 serial: <filter>
  IF: wlp28s0u2 state: up mac: <filter>
  Info: services: NetworkManager, systemd-timesyncd, wpa_supplicant
  Local Storage: total: 3.64 TiB used: 8.09 GiB (0.2%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/sda maj-min: 8:0 vendor: Western Digital model: WD10EADS-00L5B1
    size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 3.0 Gb/s
    tech: N/A serial: <filter> fw-rev: 1A01 scheme: GPT
  ID-2: /dev/sdb maj-min: 8:16 vendor: Western Digital
    model: WD20EZRZ-00Z5HB0 size: 1.82 TiB block-size: physical: 4096 B
    logical: 512 B speed: 6.0 Gb/s tech: HDD rpm: 5400 serial: <filter>
    fw-rev: 0A80 scheme: GPT
  ID-3: /dev/sdc maj-min: 8:32 vendor: Western Digital
    model: WD10EADS-00P8B0 size: 931.51 GiB block-size: physical: 512 B
    logical: 512 B speed: 3.0 Gb/s tech: N/A serial: <filter> fw-rev: 0A01
    scheme: MBR
  ID-1: / raw-size: 1.8 TiB size: 1.8 TiB (100.00%) used: 8.09 GiB (0.4%)
    fs: btrfs dev: /dev/sdb2 maj-min: 8:18
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 584 KiB (0.2%) fs: vfat dev: /dev/sdb1 maj-min: 8:17
  ID-3: /home raw-size: 1.8 TiB size: 1.8 TiB (100.00%)
    used: 8.09 GiB (0.4%) fs: btrfs dev: /dev/sdb2 maj-min: 8:18
  ID-4: /var/log raw-size: 1.8 TiB size: 1.8 TiB (100.00%)
    used: 8.09 GiB (0.4%) fs: btrfs dev: /dev/sdb2 maj-min: 8:18
  ID-5: /var/tmp raw-size: 1.8 TiB size: 1.8 TiB (100.00%)
    used: 8.09 GiB (0.4%) fs: btrfs dev: /dev/sdb2 maj-min: 8:18
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
  ID-1: swap-1 type: zram size: 15.32 GiB used: 0 KiB (0.0%) priority: 100
    comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 4 dev: /dev/zram0
  ID-2: swap-2 type: partition size: 16.85 GiB used: 0 KiB (0.0%)
    priority: -2 dev: /dev/sdb3 maj-min: 8:19
  System Temperatures: cpu: 41.4 C mobo: N/A gpu: amdgpu temp: 41.0 C
  Fan Speeds (rpm): N/A
  Memory: total: 16 GiB note: est. available: 15.32 GiB used: 2.96 GiB (19.4%)
  Processes: 238 Power: uptime: 13m states: freeze,mem,disk suspend: deep
    avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
    suspend, test_resume image: 6.12 GiB services: org_kde_powerdevil,
    power-profiles-daemon, upowerd Init: systemd v: 255 default: graphical
    tool: systemctl
  Packages: pm: pacman pkgs: 1251 libs: 377 tools: octopi,paru Compilers:
    gcc: 13.2.1 Shell: garuda-inxi default: fish v: 3.7.0 running-in: konsole
    inxi: 3.3.33
Garuda (2.6.23-1):
  System install date:     2024-03-02
  Last full system update: 2024-03-09
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut
  Windows dual boot:       No/Undetected
  Failed units:          

I’m not sure if this still works but worth trying
Home · emacs-exwm/exwm Wiki · GitHub

to add exwm to the list of available wm or de in your dm (like gdm or slim) create file /usr/share/xsessions/emacs.desktop and put in it something like this

[Desktop Entry]

SDDM - ArchWiki

probably it’s now /usr/share/wayland-sessions/

Thanks @meanruse ! Now I feel a bit dense - that’s the exact proceedure used with Slim-wm (at least in Redcore!) :slight_smile:

Oddly enough that didn’t work. XDG still sees KDE X11 , KDE Wayland and Kodi (which appear in the /usr/share/xsession directory). I did a reboot for this. In a moment, I’ll do a full restart to see if that’s what’s needed (it was when I made this work with my WiFi Adapter :slight_smile: )

Nope. That didn’t work. It still sees KDE Plasma X11, KDE Plasma Wayland and Kodi as the three choices.

Just to confirm, neither xsessions nor wayland-sessions worked, right?
Maybe something in /etc/sddm.conf.d/ … I don’t use SDDM, let me see if I can find what.

Ah: SDDM doesn't appear to be reading the .desktop files in /usr/share/xsessions · Issue #1849 · sddm/sddm · GitHub
and this should be the config
usr/lib/sddm/sddm.conf.d/general.conf · main · Garuda Linux 🦅 / Themes and Settings / Settings / Garuda Dr460nized · GitLab
that is supposed to read those two
but how comes the other ones work then? :thinking:

maybe under /etc/xdg rather than /usr/share ?
now that I think of it, maybe the absolute path to emacs ?

Correct. Neither Xsessions nor Wayland-Session worked. I can confirm XDG is NOT reading that directory as I changed one of my desktops’s name to Cody rather than Kodi and rebooted. It came up still as Kodi. It could be looking elsewhere. I’ll poke around. I can still access EXWM by calling it from KDE Plasma, so that still works.

OK, we can stick a fork in this one. It’s done. First, SDDM IS definitely looking at /usr/share/Xsessions. I found this out by editing the Kodi session it set up on it’s own and changing the parameter Name=Kodi to Name=Codi. On my next login, it displayed a session called “Codi”.

The next thing I discovered was that SDDM refuses to run any desktop that starts with a .sh extension (I have a few programs that start my EXWM session (feh for the background, nm-applet for the wifi connection and polybar ) so I had to remove the .sh extension.

Finally I had to copy that now non “.sh” file into /usr/bin.

I rebooted and now have EXWM as one of my desktop choices. I’ll leave the desktop file code here in case anyone else wants to add a new window manger or two in their Garuda Linux:


[Desktop Entry]
Comment=This session will start the Emacs Window Manager

Adjust this to your specifications , reboot and you should see your desktop waiting for you to work with!

I want to thank @meanruse for pointing me in the right direction!

By the way, just wanted you to see how it looks:

Absolutely banging!

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.