Pyprland won't run on garuda hyprland

System:
  Kernel: 6.6.1-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
    clocksource: tsc available: hpet,acpi_pm
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=b885927a-d504-47a0-85f0-6c4abb2ecb37 rw rootflags=subvol=@
    quiet loglevel=3 ibt=off
  Desktop: Hyprland info: waybar vt: 1 dm: SDDM Distro: Garuda Linux
    base: Arch Linux
Machine:
  Type: Desktop Mobo: ASRock model: B550 Phantom Gaming 4
    serial: <superuser required> UEFI: American Megatrends v: P1.20
    date: 08/13/2020
CPU:
  Info: model: AMD Ryzen 7 3800X bits: 64 type: MT MCP arch: Zen 2 gen: 3
    level: v3 note: check built: 2020-22 process: TSMC n7 (7nm)
    family: 0x17 (23) model-id: 0x71 (113) stepping: 0 microcode: 0x8701021
  Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache:
    L1: 512 KiB desc: d-8x32 KiB; i-8x32 KiB L2: 4 MiB desc: 8x512 KiB
    L3: 32 MiB desc: 2x16 MiB
  Speed (MHz): avg: 3812 high: 4079 min/max: 2200/4559 boost: enabled
    scaling: driver: acpi-cpufreq governor: performance cores: 1: 3900
    2: 3900 3: 3900 4: 3900 5: 3900 6: 3900 7: 3727 8: 3900 9: 4079
    10: 3595 11: 3592 12: 3766 13: 3612 14: 3685 15: 3900 16: 3746
    bogomips: 124567
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3
    svm
  Vulnerabilities: <filter>
Graphics:
  Device-1: AMD Navi 23 [Radeon RX 6600/6600 XT/6600M] vendor: ASRock
    driver: amdgpu v: kernel arch: RDNA-2 code: Navi-2x
    process: TSMC n7 (7nm) built: 2020-22 pcie: gen: 4 speed: 16 GT/s
    lanes: 16 ports: active: HDMI-A-1 empty: DP-1,DP-2,DP-3 bus-ID: 0b:00.0
    chip-ID: 1002:73ff class-ID: 0300
  Device-2: Microdia USB Live camera driver: snd-usb-audio,uvcvideo
    type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 3-2:3
    chip-ID: 0c45:6537 class-ID: 0102 serial: <filter>
  Display: wayland server: X.org v: 1.21.1.9 with: Xwayland v: 23.2.2
    compositor: Hyprland driver: X: loaded: amdgpu
    unloaded: modesetting,radeon alternate: fbdev,vesa dri: radeonsi
    gpu: amdgpu display-ID: 1
  Monitor-1: HDMI-A-1 model: LG (GoldStar) ULTRAWIDE serial: <filter>
    built: 2016 res: 2560x1080 hz: 60 dpi: 81 gamma: 1.2 scale: 1
    size: 798x334mm (31.42x13.15") diag: 869mm (34.2") modes:
    max: 2560x1080 min: 720x400
  API: Vulkan v: 1.3.269 layers: 9 device: 0 type: discrete-gpu name: AMD
    Radeon RX 6600 XT (RADV NAVI23) driver: mesa radv v: 23.2.1-arch1.2
    device-ID: 1002:73ff surfaces: xcb,xlib,wayland device: 1 type: cpu
    name: llvmpipe (LLVM 16.0.6 256 bits) driver: mesa llvmpipe
    v: 23.2.1-arch1.2 (LLVM 16.0.6) device-ID: 10005:0000
    surfaces: xcb,xlib,wayland
  API: EGL Message: EGL data requires eglinfo. Check --recommends.
Audio:
  Device-1: AMD Navi 21/23 HDMI/DP Audio driver: snd_hda_intel v: kernel
    pcie: gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 0b:00.1 chip-ID: 1002:ab28
    class-ID: 0403
  Device-2: AMD Starship/Matisse HD Audio vendor: ASRock
    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16
    bus-ID: 0d:00.4 chip-ID: 1022:1487 class-ID: 0403
  Device-3: Oculus VR Rift S
    driver: cdc_acm,hid-generic,snd-usb-audio,usbhid type: USB rev: 2.0
    speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-1.2:4 chip-ID: 2833:0051
    class-ID: 0300 serial: <filter>
  Device-4: Kingston HyperX 7.1 Audio
    driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 2.0
    speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-4:5 chip-ID: 0951:16a4
    class-ID: 0300 serial: <filter>
  Device-5: C-Media Blue Snowball
    driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 1.1
    speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-1:2 chip-ID: 0d8c:0005
    class-ID: 0300 serial: <filter>
  Device-6: Microdia USB Live camera driver: snd-usb-audio,uvcvideo
    type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 3-2:3
    chip-ID: 0c45:6537 class-ID: 0102 serial: <filter>
  API: ALSA v: k6.6.1-zen1-1-zen status: kernel-api with: aoss
    type: oss-emulator tools: N/A
  Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
  Server-2: PipeWire v: 0.3.85 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
Network:
  Device-1: Intel Wireless 8265 / 8275 driver: iwlwifi v: kernel pcie:
    gen: 1 speed: 2.5 GT/s lanes: 1 bus-ID: 05:00.0 chip-ID: 8086:24fd
    class-ID: 0280
  IF: wlp5s0 state: up mac: <filter>
  Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
    vendor: ASRock driver: r8169 v: kernel pcie: gen: 1 speed: 2.5 GT/s
    lanes: 1 port: f000 bus-ID: 07:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: enp7s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Bluetooth:
  Device-1: Intel Bluetooth wireless interface driver: btusb v: 0.8
    type: USB rev: 2.0 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-7:7
    chip-ID: 8087:0a2b class-ID: e001
  Report: btmgmt ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 4.2
    lmp-v: 8 status: discoverable: no pairing: no class-ID: 6c0104
Drives:
  Local Storage: total: 4.09 TiB used: 3.24 TiB (79.1%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Gigabyte
    model: GP-ASM2NE6100TTTD 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: EGFM13.0 temp: 38.9 C scheme: GPT
  ID-2: /dev/sda maj-min: 8:0 vendor: Seagate model: ST2000DM006-2DM164
    size: 1.82 TiB block-size: physical: 4096 B logical: 512 B
    speed: 6.0 Gb/s tech: HDD rpm: 7200 serial: <filter> fw-rev: CC26
    scheme: MBR
  ID-3: /dev/sdb maj-min: 8:16 vendor: Western Digital
    model: WDS100T2B0A-00SM50 size: 931.51 GiB block-size: physical: 512 B
    logical: 512 B speed: 6.0 Gb/s tech: SSD serial: <filter> fw-rev: 00WD
    scheme: MBR
  ID-4: /dev/sdc maj-min: 8:32 vendor: Samsung model: SSD 850 EVO 250GB
    size: 232.89 GiB block-size: physical: 512 B logical: 512 B
    speed: 6.0 Gb/s tech: SSD serial: <filter> fw-rev: 1B6Q scheme: GPT
  ID-5: /dev/sdd maj-min: 8:48 vendor: Samsung model: SSD 850 EVO 250GB
    size: 232.89 GiB block-size: physical: 512 B logical: 512 B
    speed: 6.0 Gb/s tech: SSD serial: <filter> fw-rev: 1B6Q scheme: GPT
Partition:
  ID-1: / raw-size: 32.23 GiB size: 32.23 GiB (100.00%)
    used: 22.29 GiB (69.2%) fs: btrfs dev: /dev/nvme0n1p3 maj-min: 259:3
  ID-2: /boot/efi raw-size: 800 MiB size: 798.4 MiB (99.80%)
    used: 576 KiB (0.1%) fs: vfat dev: /dev/nvme0n1p5 maj-min: 259:5
  ID-3: /home raw-size: 525.11 GiB size: 515.8 GiB (98.23%)
    used: 473.74 GiB (91.8%) fs: ext4 dev: /dev/nvme0n1p4 maj-min: 259:4
  ID-4: /var/log raw-size: 32.23 GiB size: 32.23 GiB (100.00%)
    used: 22.29 GiB (69.2%) fs: btrfs dev: /dev/nvme0n1p3 maj-min: 259:3
  ID-5: /var/tmp raw-size: 32.23 GiB size: 32.23 GiB (100.00%)
    used: 22.29 GiB (69.2%) fs: btrfs dev: /dev/nvme0n1p3 maj-min: 259:3
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
    zswap: no
  ID-1: swap-1 type: zram size: 15.54 GiB used: 0 KiB (0.0%)
    priority: 100 comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 16
    dev: /dev/zram0
  ID-2: swap-2 type: partition size: 19.61 GiB used: 0 KiB (0.0%)
    priority: -2 dev: /dev/nvme0n1p8 maj-min: 259:8
Sensors:
  System Temperatures: cpu: 55.8 C mobo: N/A gpu: amdgpu temp: 38.0 C
    mem: 36.0 C
  Fan Speeds (rpm): N/A gpu: amdgpu fan: 0
Info:
  Processes: 472 Uptime: 3m wakeups: 0 Memory: total: 16 GiB
  available: 15.54 GiB used: 4.17 GiB (26.8%) Init: systemd v: 254
  default: graphical tool: systemctl Compilers: gcc: 13.2.1 Packages:
  pm: pacman pkgs: 1675 libs: 521 tools: octopi,paru Shell: fish v: 3.6.1
  running-in: foot inxi: 3.3.31
Garuda (2.6.19-2):
  System install date:     2023-11-06
  Last full system update: 2023-11-20
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut
  Windows dual boot:       Probably (Run as root to verify)
  Failed units:            

So, I’ve been fiddling with this for days and I’m getting nowhere. My goal is just stratchpads. My config for pyrpland is as follows -

pyprland.toml

[pyprland]
plugins = ["scratchpads"]

pyprland.json

{
	"pyprland": {
		"plugins": [
		"scratchpads",
		"monitors",
       "workspaces_follow_focus"
				]
	},
	"scratchpads": { 
		"footterm": {
			"command": "footclient --class scratchpad",
			"margin": 50,
			"animation": "fromTop",
			"unfocus": "hide"
			},
			
		  "volume": {
    "command": "pavucontrol",
    "animation": "fromRight"
  },
  
  "monitors": {
    "placement": {
      "LG-ULTRAWIDE": {
        "topOf": "HDMI-A-1"
      }
    },
    "unknown": "wlrlui"
  }
}
}

hyprland.conf

exec-once = pypr

$scratchpad = class:^(scratchpad)$
windowrulev2 = float, $scratchpad
windowrulev2 = workspace special silent, $scratchpad

bind = $mainMod, Y, exec, pypr toggle term
bind = $mainMod, S, exec, pypr toggle volume

windowrule = float,^(pavucontrol)$
windowrule = size 40% 90%,^(pavucontrol)$
windowrule = move 200% 5%,^(pavucontrol)$
windowrule = workspace special:scratch_volume silent,^(pavucontrol)$

And finally, the issue currently is that the pypr command promptly crashes, with this error -

 [🔴] × pypr
Error initializing plugin scratchpads:
Traceback (most recent call last):
  File "/home/scrubby/.local/pipx/venvs/pyprland/lib/python3.11/site-packages/pyprland/command.py", line 61, in load_config
    await self.plugins[name].load_config(self.config)
  File "/home/scrubby/.local/pipx/venvs/pyprland/lib/python3.11/site-packages/pyprland/plugins/scratchpads.py", line 335, in load_config
    if await self.ensure_alive(name):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/scrubby/.local/pipx/venvs/pyprland/lib/python3.11/site-packages/pyprland/plugins/scratchpads.py", line 350, in ensure_alive
    await self.start_scratch_command(uid)
  File "/home/scrubby/.local/pipx/venvs/pyprland/lib/python3.11/site-packages/pyprland/plugins/scratchpads.py", line 371, in start_scratch_command
    scratch.conf["command"],
    ~~~~~~~~~~~~^^^^^^^^^^^
KeyError: 'command'
Exception ignored in: <function StreamWriter.__del__ at 0x7fbe1aa18ae0>
Traceback (most recent call last):
  File "/usr/lib/python3.11/asyncio/streams.py", line 396, in __del__
    self.close()
  File "/usr/lib/python3.11/asyncio/streams.py", line 344, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed

I feel like I’m missing something with the config here, but I dunno what. Sorry if my formatting with this post is a mess.

Please, open issue on

1 Like

You must use either the TOML configuration file or the JSON one.
I recommend TOML, then remove the JSON and it should work.

TOML have higher priority.

2 Likes