at 25.11-pre 2.9 kB view raw
1{ 2 name = "xfce"; 3 4 nodes.machine = 5 { pkgs, ... }: 6 7 { 8 imports = [ 9 ./common/user-account.nix 10 ]; 11 12 services.xserver.enable = true; 13 services.xserver.displayManager.lightdm.enable = true; 14 15 services.displayManager.autoLogin = { 16 enable = true; 17 user = "alice"; 18 }; 19 20 services.xserver.desktopManager.xfce.enable = true; 21 environment.systemPackages = [ pkgs.xfce.xfce4-whiskermenu-plugin ]; 22 }; 23 24 enableOCR = true; 25 26 testScript = 27 { nodes, ... }: 28 let 29 user = nodes.machine.users.users.alice; 30 bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${toString user.uid}/bus"; 31 in 32 '' 33 with subtest("Wait for login"): 34 machine.wait_for_x() 35 machine.wait_for_file("${user.home}/.Xauthority") 36 machine.succeed("xauth merge ${user.home}/.Xauthority") 37 38 with subtest("Check that logging in has given the user ownership of devices"): 39 machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}") 40 41 with subtest("Check if Xfce components actually start"): 42 machine.wait_for_window("xfce4-panel") 43 machine.wait_for_window("Desktop") 44 for i in ["xfwm4", "xfsettingsd", "xfdesktop", "xfce4-screensaver", "xfce4-notifyd", "xfconfd"]: 45 machine.wait_until_succeeds(f"pgrep -f {i}") 46 47 with subtest("Open whiskermenu"): 48 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfconf-query -c xfce4-panel -p /plugins/plugin-1 -t string -s whiskermenu -n >&2 &'") 49 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfconf-query -c xfce4-panel -p /plugins/plugin-1/stay-on-focus-out -t bool -s true -n >&2 &'") 50 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfce4-panel -r >&2 &'") 51 machine.wait_until_succeeds("journalctl -b --grep 'xfce4-panel: Restarting' -t xsession") 52 machine.sleep(5) 53 machine.wait_until_succeeds("pgrep -f libwhiskermenu") 54 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfce4-popup-whiskermenu >&2 &'") 55 machine.wait_for_text('Mail Reader') 56 # Close the menu. 57 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfce4-popup-whiskermenu >&2 &'") 58 59 with subtest("Open Xfce terminal"): 60 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 xfce4-terminal >&2 &'") 61 machine.wait_for_window("Terminal") 62 63 with subtest("Open Thunar"): 64 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 thunar >&2 &'") 65 machine.wait_for_window("Thunar") 66 machine.wait_for_text('(Pictures|Public|Templates|Videos)') 67 68 with subtest("Check if any coredumps are found"): 69 machine.succeed("(coredumpctl --json=short 2>&1 || true) | grep 'No coredumps found'") 70 machine.sleep(10) 71 machine.screenshot("screen") 72 ''; 73}