at master 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 programs.thunar.plugins = [ pkgs.xfce.thunar-archive-plugin ]; 24 }; 25 26 enableOCR = true; 27 28 testScript = 29 { nodes, ... }: 30 let 31 user = nodes.machine.users.users.alice; 32 bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${toString user.uid}/bus"; 33 in 34 '' 35 with subtest("Wait for login"): 36 machine.wait_for_x() 37 machine.wait_for_file("${user.home}/.Xauthority") 38 machine.succeed("xauth merge ${user.home}/.Xauthority") 39 40 with subtest("Check that logging in has given the user ownership of devices"): 41 machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}") 42 43 with subtest("Check if Xfce components actually start"): 44 machine.wait_for_window("xfce4-panel") 45 machine.wait_for_window("Desktop") 46 for i in ["xfwm4", "xfsettingsd", "xfdesktop", "xfce4-screensaver", "xfce4-notifyd", "xfconfd"]: 47 machine.wait_until_succeeds(f"pgrep -f {i}") 48 49 with subtest("Open whiskermenu"): 50 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfconf-query -c xfce4-panel -p /plugins/plugin-1 -t string -s whiskermenu -n >&2 &'") 51 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 &'") 52 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfce4-panel -r >&2 &'") 53 machine.wait_until_succeeds("journalctl -b --grep 'xfce4-panel: Restarting' -t xsession") 54 machine.sleep(5) 55 machine.wait_until_succeeds("pgrep -f libwhiskermenu") 56 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfce4-popup-whiskermenu >&2 &'") 57 machine.wait_for_text('Mail Reader') 58 # Close the menu. 59 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfce4-popup-whiskermenu >&2 &'") 60 61 with subtest("Open Xfce terminal"): 62 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 xfce4-terminal >&2 &'") 63 machine.wait_for_window("Terminal") 64 65 with subtest("Open Thunar"): 66 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 thunar >&2 &'") 67 machine.wait_for_window("Thunar") 68 machine.wait_for_text('(Pictures|Public|Templates|Videos)') 69 70 with subtest("Check if any coredumps are found"): 71 machine.succeed("(coredumpctl --json=short 2>&1 || true) | grep 'No coredumps found'") 72 machine.sleep(10) 73 machine.screenshot("screen") 74 ''; 75}