How to set the wallpaper on lxqt when pcmanfm-qt isn't installed

I’ve tried using feh to set the wallpaper, and the services.xserver.desktopManager.wallpaper.mode ~/.background-image as well, but as soon as I login a black screen gets placed over top of the wallpaper.
Any ideas?

Here’s a slow motion video of the issue https://www.youtube.com/watch?v=rBAsr8vG8PA

Thanks

I’ve never used lxqt, but given the symptoms I’d assume it’s a DE that renders its own desktop background over the X server one. This has advantages like better control over cursors, wallpaper scaling, special animations and other effects. Plasma and GNOME do the same thing. feh is mostly for window managers.

It might also just set again it after lxqt starts, overriding the background set by feh. Can you try manually setting the background using feh in a terminal once lxqt is already running?

If that doesn’t solve it, using feh won’t work with these DEs, use their native features for changing the wallpaper.

I’ve tried setting the wallpaper with feh in the terminal, but the black screen still remains, I posted the same question on reddit, and someone said they don’t experience this on fedora lxqt, so I guessed it might be something different that nixos does.

I downloaded a fedora 39 lxqt ISO and ran that, I then uninstalled pcmanfm-qt, logged out, then logged in, and setting the wallpaper worked just fine using feh, so it must be a nixos issue.

What does your lxqt config look like, and specifically, how did you uninstall pcmanfm-lxqt (on NixOS)?

Do you mean the lxqt part in my configuration.nix? there appears to be no way of excluding pcmanfm-qt when you enable lxqt, so I created a custom session and just listed all the lxqt parts that I wanted under system packages, this is my custom session

services.xserver.displayManager.session = [
{
manage = “desktop”;
name = “mylxqt”;
start = “startlxqt”;
}
];

Well, that’s probably why your background is black then; pcmanfm-qt is still being rendered as a window on top of the Xorg backdrop and has no background set. It’s like you’re running fedora and not uninstalling pcmanfm-qt. Maybe you can confirm this with ps aux.

If you built the lxqt env yourself, your env is broken, not the NixOS module.

There is environment.lxqt.excludePackages, but it seems to only work on optional packages, and this one is in the “core” ones: https://github.com/NixOS/nixpkgs/blob/0b3d618173114c64ab666f557504d6982665d328/pkgs/desktops/lxqt/default.nix#L85

You’d probably need to remove this with an overlay somehow, maybe something like this:

nixpkgs.overlays = [(final: prev: {
  lxqt = lxqt.overrideAttrs (old: {
    passthru = old.passthru // {
      corePackages = pkgs.utils.removePackagesByName [old.corePackages.pcmanfm-qt] old.passthru.corePackages;
    };
  });
})];

That said, I have no idea how the lxqt package/modules work beyond some superficial reading into it, so that likely won’t work. Afaict this simply is not a supported workflow currently. You can try to hack around it after reading through the code yourself (probably need to start by finding out what pkgs.lxqt refers to in all-packages.nix), or just use an lxqt theme to set your background instead.

ps aux doesn’t appear to show pcmanfm-qt, I also experimented by using ~/.xsession where the only apps I executed on login were lxqt-panel and kwin_x11, and I still got the black screen, I then opened a terminal and killed lxqt-panel but the black screen was still there, so it doesn’t seem to be lxqt related as far as I can tell.

Thanks

    1 root      0:01 /run/current-system/systemd/lib/systemd/systemd
    2 root      0:00 [kthreadd]
    3 root      0:00 [pool_workqueue_]
    4 root      0:00 [kworker/R-rcu_g]
    5 root      0:00 [kworker/R-rcu_p]
    6 root      0:00 [kworker/R-slub_]
    7 root      0:00 [kworker/R-netns]
   12 root      0:00 [kworker/R-mm_pe]
   13 root      0:00 [rcu_tasks_kthre]
   14 root      0:00 [rcu_tasks_rude_]
   15 root      0:00 [rcu_tasks_trace]
   16 root      0:00 [ksoftirqd/0]
   17 root      0:12 [rcu_preempt]
   18 root      0:00 [migration/0]
   19 root      0:00 [idle_inject/0]
   20 root      0:00 [cpuhp/0]
   21 root      0:00 [cpuhp/1]
   22 root      0:00 [idle_inject/1]
   23 root      0:00 [migration/1]
   24 root      0:00 [ksoftirqd/1]
   27 root      0:00 [cpuhp/2]
   28 root      0:00 [idle_inject/2]
   29 root      0:00 [migration/2]
   30 root      0:00 [ksoftirqd/2]
   33 root      0:00 [cpuhp/3]
   34 root      0:00 [idle_inject/3]
   35 root      0:00 [migration/3]
   36 root      0:00 [ksoftirqd/3]
   39 root      0:00 [cpuhp/4]
   40 root      0:00 [idle_inject/4]
   41 root      0:00 [migration/4]
   42 root      0:00 [ksoftirqd/4]
   44 root      0:00 [kworker/4:0H-bc]
   45 root      0:00 [cpuhp/5]
   46 root      0:00 [idle_inject/5]
   47 root      0:00 [migration/5]
   48 root      0:00 [ksoftirqd/5]
   50 root      0:00 [kworker/5:0H-bc]
   51 root      0:00 [cpuhp/6]
   52 root      0:00 [idle_inject/6]
   53 root      0:00 [migration/6]
   54 root      0:00 [ksoftirqd/6]
   57 root      0:00 [cpuhp/7]
   58 root      0:00 [idle_inject/7]
   59 root      0:00 [migration/7]
   60 root      0:00 [ksoftirqd/7]
   62 root      0:00 [kworker/7:0H-tt]
   63 root      0:00 [cpuhp/8]
   64 root      0:00 [idle_inject/8]
   65 root      0:00 [migration/8]
   66 root      0:00 [ksoftirqd/8]
   69 root      0:00 [cpuhp/9]
   70 root      0:00 [idle_inject/9]
   71 root      0:00 [migration/9]
   72 root      0:00 [ksoftirqd/9]
   75 root      0:00 [cpuhp/10]
   76 root      0:00 [idle_inject/10]
   77 root      0:00 [migration/10]
   78 root      0:00 [ksoftirqd/10]
   80 root      0:00 [kworker/10:0H-t]
   81 root      0:00 [cpuhp/11]
   82 root      0:00 [idle_inject/11]
   83 root      0:00 [migration/11]
   84 root      0:00 [ksoftirqd/11]
   87 root      0:00 [kdevtmpfs]
   88 root      0:00 [kworker/R-inet_]
   90 root      0:00 [kauditd]
   92 root      0:00 [khungtaskd]
   93 root      0:00 [oom_reaper]
   95 root      0:00 [kworker/R-write]
   96 root      0:00 [kcompactd0]
   97 root      0:00 [ksmd]
  100 root      0:00 [khugepaged]
  101 root      0:00 [kworker/R-kinte]
  102 root      0:00 [kworker/R-kbloc]
  103 root      0:00 [kworker/R-blkcg]
  105 root      0:00 [kworker/2:1-eve]
  107 root      0:00 [kworker/R-devfr]
  110 root      0:00 [irq/25-AMD-Vi0-]
  111 root      0:00 [irq/26-AMD-Vi0-]
  112 root      0:00 [irq/27-AMD-Vi0-]
  113 root      0:00 [kswapd0]
  114 root      0:00 [kworker/R-kthro]
  121 root      0:00 [kworker/R-mld]
  122 root      0:00 [kworker/R-ipv6_]
  129 root      0:00 [kworker/R-kstrp]
  181 root      0:00 [kworker/9:1H-tt]
  206 root      0:00 [kworker/10:1H-b]
  214 root      0:00 [kworker/R-nvme-]
  215 root      0:00 [kworker/R-nvme-]
  216 root      0:00 [kworker/R-nvme-]
  217 root      0:00 [kworker/R-ata_s]
  219 root      0:00 [kworker/5:1H-tt]
  220 root      0:00 [scsi_eh_0]
  221 root      0:00 [kworker/R-scsi_]
  222 root      0:00 [scsi_eh_1]
  223 root      0:00 [kworker/R-scsi_]
  224 root      0:00 [scsi_eh_2]
  225 root      0:00 [kworker/R-scsi_]
  226 root      0:00 [scsi_eh_3]
  227 root      0:00 [kworker/R-scsi_]
  228 root      0:00 [scsi_eh_4]
  229 root      0:00 [kworker/R-scsi_]
  230 root      0:00 [scsi_eh_5]
  231 root      0:00 [kworker/R-scsi_]
  232 root      0:00 [scsi_eh_6]
  233 root      0:00 [kworker/R-scsi_]
  234 root      0:00 [scsi_eh_7]
  235 root      0:00 [kworker/R-scsi_]
  243 root      0:00 [scsi_eh_8]
  244 root      0:00 [kworker/R-scsi_]
  246 root      0:00 [scsi_eh_9]
  247 root      0:00 [kworker/R-scsi_]
  255 root      0:00 [kworker/10:2-ev]
  270 root      0:00 [kworker/11:1H-b]
  310 root      0:00 [kworker/R-bcach]
  311 root      0:00 [kworker/R-bcach]
  312 root      0:00 [kworker/R-bcach]
  313 root      0:00 [kworker/R-bcach]
  314 root      0:00 [kworker/R-btree]
  315 root      0:00 [bch-reclaim/nvm]
  316 root      0:00 [bch-gc/nvme0n1p]
  317 root      0:00 [bch-copygc/nvme]
  318 root      0:00 [bch-rebalance/n]
  585 root      0:00 [kworker/R-tpm_d]
  601 root      0:00 [kworker/11:2-ev]
  612 root      0:00 [kworker/9:2-eve]
  614 root      0:00 /nix/store/iidxwcyp8pqhrq3iji17shs4m6gin0kv-systemd-254.6/lib/systemd/systemd-journald
  739 root      0:00 /nix/store/iidxwcyp8pqhrq3iji17shs4m6gin0kv-systemd-254.6/lib/systemd/systemd-udevd
  740 root      0:00 [psimon]
  789 root      0:00 [watchdogd]
  794 root      0:00 [kworker/R-crypt]
  834 root      0:00 [kworker/R-cfg80]
  837 root      0:00 [kworker/R-edac-]
  860 root      0:37 [irq/90-iwlwifi]
  867 root      0:00 [kworker/R-bcach]
  868 root      0:00 [kworker/R-bcach]
  869 root      0:00 [kworker/R-bcach]
  870 root      0:00 [kworker/R-bcach]
  871 root      0:00 [kworker/R-btree]
  872 root      0:04 [bch-reclaim/nvm]
  877 root      0:00 [bch-gc/nvme0n1p]
  879 root      0:00 [bch-copygc/nvme]
  880 root      0:00 [bch-rebalance/n]
  997 root      0:00 [kworker/R-amdgp]
  998 root      0:00 [kworker/7:3-eve]
 1011 root      0:00 [kworker/R-bcach]
 1012 root      0:00 [kworker/R-bcach]
 1013 root      0:00 [kworker/R-bcach]
 1014 root      0:00 [kworker/R-bcach]
 1015 root      0:00 [kworker/R-btree]
 1016 root      0:00 [bch-reclaim/sda]
 1017 root      0:00 [kworker/R-ttm]
 1018 root      0:00 [bch-gc/sda]
 1019 root      0:00 [bch-copygc/sda]
 1020 root      0:00 [bch-rebalance/s]
 1030 systemd-  0:00 /nix/store/iidxwcyp8pqhrq3iji17shs4m6gin0kv-systemd-254.6/lib/systemd/systemd-timesyncd
 1033 root      0:00 /nix/store/6dln0pmd1zb9xg4c81l3k08igxh98j0w-bluez-5.70/libexec/bluetooth/bluetoothd -f /etc/bluetooth/main.conf
 1034 messageb  0:00 /nix/store/yj1vp6pcb4izg73p4007ckyhak5icxbp-dbus-1.14.10/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
 1063 root      0:00 /nix/store/iidxwcyp8pqhrq3iji17shs4m6gin0kv-systemd-254.6/lib/systemd/systemd-logind
 1109 root      0:00 /nix/store/y9ns0k3rs1zm16nqxp9n93hs8z8m6bx1-networkmanager-1.44.2/sbin/NetworkManager --no-daemon
 1120 root      0:00 [kworker/3:3-eve]
 1167 root      0:00 [kworker/R-amdgp]
 1168 root      0:00 [kworker/R-amdgp]
 1169 root      0:00 [kworker/R-amdgp]
 1170 root      0:00 [kworker/R-dm_vb]
 1171 root      0:00 [card0-crtc0]
 1172 root      0:00 [card0-crtc1]
 1173 root      0:00 [card0-crtc2]
 1174 root      0:00 [card0-crtc3]
 1175 root      1:41 [gfx_low]
 1176 root      0:00 [gfx_high]
 1177 root      0:00 [comp_1.0.0]
 1178 root      0:00 [comp_1.1.0]
 1179 root      0:00 [comp_1.2.0]
 1180 root      0:00 [comp_1.3.0]
 1181 root      0:00 [comp_1.0.1]
 1182 root      0:00 [comp_1.1.1]
 1183 root      0:00 [comp_1.2.1]
 1184 root      0:00 [comp_1.3.1]
 1185 root      0:00 [sdma0]
 1186 root      0:04 [vcn_dec]
 1187 root      0:00 [vcn_enc0]
 1188 root      0:00 [vcn_enc1]
 1189 root      0:00 [jpeg_dec]
 1190 root      0:00 /nix/store/m7h86xdbc2frxjx97qir0rzyz3dx1y5r-wpa_supplicant-2.10/sbin/wpa_supplicant -u
 1197 root      0:00 [kworker/4:2-bca]
 1203 root      0:00 agetty --login-program /nix/store/3qkckv4scqwzf36nl8dy8rhx0j9mhh3d-shadow-4.14.2/bin/login --noclear --keep-baud tty1 115200,38400,9600 linux
 1206 root      0:00 /nix/store/2y5n6s5mwg93x2h3zsx9y5v17lg42c1q-lightdm-1.32.0/sbin/lightdm
 1213 root      8:21 /nix/store/x8h842gd095a9p72y5zzhs384hxpf7ly-xorg-server-21.1.9/bin/X -config /nix/store/zq8xbzbymvd95n1x2j51ynmsnsffd7sf-xserver.conf -xkbdir /nix/store/vrybs7z641yn0qkk4g9h8q5waxa9ljl
 1252 root      0:00 [psimon]
 1303 root      0:00 lightdm --session-child 15 22
 1351 gareth    0:00 /nix/store/iidxwcyp8pqhrq3iji17shs4m6gin0kv-systemd-254.6/lib/systemd/systemd --user
 1373 gareth    0:00 (sd-pam)
 1400 gareth    0:00 {6qb6lsgy1mbam7n} /nix/store/q8qq40xg2grfh9ry1d9x4g7lq4ra7n81-bash-5.2-p21/bin/bash /nix/store/6qb6lsgy1mbam7n0y4kj5753md29nbys-xsession
 1409 gareth    0:00 {.lxqt-session-w} lxqt-session
 1413 gareth    0:00 /nix/store/yj1vp6pcb4izg73p4007ckyhak5icxbp-dbus-1.14.10/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
 1418 polkitus  0:00 /nix/store/xjdgbspp576w02sfdbdy3y19pp64kjin-polkit-123/lib/polkit-1/polkitd --no-debug
 1430 gareth   11:32 {.kwin_x11-wrapp} /run/current-system/sw/bin/kwin_x11
 1440 gareth    0:00 {.kglobalaccel5-} /nix/store/8644rwxl0ccp0bcg4xx4lv5dclywqc2f-kglobalaccel-5.112.0/bin/kglobalaccel5
 1453 gareth    0:00 {.lxqt-globalkey} /run/current-system/sw/bin/lxqt-globalkeysd
 1454 gareth    0:00 {.lxqt-notificat} /run/current-system/sw/bin/lxqt-notificationd
 1455 gareth    0:13 {.lxqt-panel-wra} /run/current-system/sw/bin/lxqt-panel
 1456 gareth    0:00 {.lxqt-policykit} /run/current-system/sw/bin/lxqt-policykit-agent
 1457 gareth    0:00 {.lxqt-runner-wr} /run/current-system/sw/bin/lxqt-runner
 1489 gareth    0:00 {.kmix-wrapped} /run/current-system/sw/bin/kmix --keepvisibility
 1493 gareth    0:00 {.nm-tray-wrappe} /run/current-system/sw/bin/nm-tray
 1498 gareth    0:06 /nix/store/bla6xasykwb1x9s13s4pqw4w9jmklkx2-pipewire-1.0.0/bin/pipewire
 1499 gareth    0:16 /nix/store/bla6xasykwb1x9s13s4pqw4w9jmklkx2-pipewire-1.0.0/bin/pipewire-pulse
 1500 gareth    0:40 /nix/store/bpgfpzsjzpisk3farkbfa2vyaw7jc1zf-wireplumber-0.4.17/bin/wireplumber
 1549 root      0:00 [krfcommd]
 1720 gareth    0:00 {.gvfsd-wrapped} /nix/store/bph21sqbf4iwr0wyxciv4wvi2z84rwp6-gvfs-1.52.1/libexec/gvfsd
 1726 gareth    0:00 {.gvfsd-fuse-wra} /nix/store/bph21sqbf4iwr0wyxciv4wvi2z84rwp6-gvfs-1.52.1/libexec/gvfsd-fuse /run/user/1000/gvfs -f
 2981 root      0:00 /nix/store/lrh0gnmp6kdv9s252zw3an8lsidy1hrm-udisks-2.10.1/libexec/udisks2/udisksd
 3234 gareth    0:00 {.kiod5-wrapped} /nix/store/12gjb32lgxvmfqgf916zpfrdzybn5vsi-kio-5.112.0/libexec/kf5/kiod5
 5811 root      0:00 [kworker/3:2H-tt]
41691 root      0:00 [kworker/9:2H-tt]
47977 root      0:00 [kworker/6:9H-tt]
124974 root      0:00 [kworker/4:2H-tt]
168788 root      0:00 [kworker/6:2-mm_]
171908 root      0:00 [kworker/7:6H-bc]
171973 root      0:00 [kworker/8:5H-tt]
172034 root      0:00 [kworker/1:4H-bc]
176410 root      0:00 [kworker/2:0H-tt]
176477 root      0:00 [kworker/0:3H-bc]
177018 root      0:00 [kworker/3:1H-kb]
177172 root      0:00 [kworker/0:4H-tt]
177790 root      0:00 [kworker/6:0H-bc]
179420 root      0:00 [kworker/8:0H-tt]
182441 root      0:00 [kworker/1:1-eve]
183145 root      0:00 [kworker/1:0H-tt]
183907 root      0:00 [kworker/2:2H-tt]
184427 root      0:00 [kworker/11:2H-t]
204623 root      0:00 [kworker/u65:0-r]
219736 root      0:00 [kworker/u65:2-r]
222035 root      0:00 [kworker/1:2-cgr]
222054 root      0:00 [kworker/5:1-rcu]
222055 root      0:00 [kworker/5:3-mm_]
222057 root      0:00 [kworker/4:1-cgr]
222058 root      0:00 [kworker/2:0-rcu]
222061 root      0:00 [kworker/3:1-rcu]
222108 root      0:00 [kworker/8:0-ine]
222109 root      0:00 [kworker/8:1-rcu]
222111 root      0:00 [kworker/11:0-rc]
222135 root      0:00 [kworker/u64:16-]
222151 root      0:00 [kworker/9:1-rcu]
222152 root      0:00 [kworker/6:0-rcu]
222153 root      0:00 [kworker/7:1-rcu]
222154 root      0:00 [kworker/10:1-rc]
222171 root      0:00 [kworker/u64:48-]
222198 gareth    0:00 {.kscreen_backen} /nix/store/ml8l1xsv2wlv7k1yx3wv4sp1pcf6sg49-libkscreen-5.27.10/libexec/kf5/kscreen_backend_launcher
222255 gareth    0:00 {.lxqt-config-mo} /run/current-system/sw/bin/lxqt-config-monitor -l
222365 nscd      0:00 /nix/store/xv2lsfl4f74w2kfmbfyy9nkhpymn8gc1-nsncd-unstable-2023-10-26/bin/nsncd
222594 gareth    0:00 {.lxqt-config-mo} /run/current-system/sw/bin/lxqt-config-monitor -l
228357 root      0:00 [kworker/0:0-eve]
240473 root      0:00 [kworker/u64:0-e]
244854 root      0:00 [kworker/0:2-eve]
248608 root      0:00 [kworker/u64:1]
248925 root      0:00 [kworker/10:2H]
249983 root      0:00 [kworker/0:0H]
250050 root      0:00 [kworker/2:1H-tt]
250051 root      0:00 [kworker/2:3H]
250419 root      0:00 [kworker/8:1H-tt]
250420 root      0:00 [kworker/8:2-eve]
250474 gareth    0:00 {.konsole-wrappe} /run/current-system/sw/bin/konsole
250482 gareth    0:00 /run/current-system/sw/bin/bash
250539 root      0:00 [kworker/9:0H]
250540 gareth    0:00 ps aux


I figured out where the black screen is coming from, its coming from kwin_x11, I tried openbox and there was no black screen, the problem is I like kwin, I guess it appears to be related to kscreen_backend

1 Like

I’ve found out what the issue was, running kwin with compositing enabled seems to create a black screen, disabling compositing fixes it, but you obviously don’t have compositing, so as a work around I’ve installed picom-next.

1 Like