1{ lib, ... }:
2{
3 name = "herbstluftwm";
4
5 meta = {
6 maintainers = with lib.maintainers; [ thibautmarty ];
7 };
8
9 nodes.machine =
10 { pkgs, lib, ... }:
11 {
12 imports = [
13 ./common/x11.nix
14 ./common/user-account.nix
15 ];
16 test-support.displayManager.auto.user = "alice";
17 services.displayManager.defaultSession = lib.mkForce "none+herbstluftwm";
18 services.xserver.windowManager.herbstluftwm.enable = true;
19 environment.systemPackages = [ pkgs.dzen2 ]; # needed for upstream provided panel
20 };
21
22 testScript = ''
23 with subtest("ensure x starts"):
24 machine.wait_for_x()
25 machine.wait_for_file("/home/alice/.Xauthority")
26 machine.succeed("xauth merge ~alice/.Xauthority")
27
28 with subtest("ensure client is available"):
29 machine.succeed("herbstclient --version")
30
31 with subtest("ensure keybindings are set"):
32 machine.wait_until_succeeds("herbstclient list_keybinds | grep xterm")
33
34 with subtest("ensure panel starts"):
35 machine.wait_for_window("dzen title")
36
37 with subtest("ensure we can open a new terminal"):
38 machine.send_key("alt-ret")
39 machine.wait_for_window(r"alice.*?machine")
40 machine.sleep(2)
41 machine.screenshot("terminal")
42 '';
43}