The upstream session files display managers use have no concept of sessions being composed from desktop manager and window manager. To be able to set upstream session files as default session, we need a single option. Having two different ways to set default session would be confusing, though, so we decided to deprecate the old method. We also created separate script for each session, just like we already had a separate desktop file for each one, and started using displayManager.sessionPackages mechanism to make the session handling more uniform.
47 lines
1.6 KiB
Nix
47 lines
1.6 KiB
Nix
import ./make-test-python.nix ({ pkgs, ...} : {
|
|
name = "i3wm";
|
|
meta = with pkgs.stdenv.lib.maintainers; {
|
|
maintainers = [ aszlig ];
|
|
};
|
|
|
|
machine = { lib, ... }: {
|
|
imports = [ ./common/x11.nix ./common/user-account.nix ];
|
|
services.xserver.displayManager.auto.user = "alice";
|
|
services.xserver.displayManager.defaultSession = lib.mkForce "none+i3";
|
|
services.xserver.windowManager.i3.enable = true;
|
|
};
|
|
|
|
testScript = { ... }: ''
|
|
with subtest("ensure x starts"):
|
|
machine.wait_for_x()
|
|
machine.wait_for_file("/home/alice/.Xauthority")
|
|
machine.succeed("xauth merge ~alice/.Xauthority")
|
|
|
|
with subtest("ensure we get first configuration window"):
|
|
machine.wait_for_window(r".*?first configuration.*?")
|
|
machine.sleep(2)
|
|
machine.screenshot("started")
|
|
|
|
with subtest("ensure we generate and save a config"):
|
|
# press return to indicate we want to gen a new config
|
|
machine.send_key("\n")
|
|
machine.sleep(2)
|
|
machine.screenshot("preconfig")
|
|
# press alt then return to indicate we want to use alt as our Mod key
|
|
machine.send_key("alt")
|
|
machine.send_key("\n")
|
|
machine.sleep(2)
|
|
# make sure the config file is created before we continue
|
|
machine.wait_for_file("/home/alice/.config/i3/config")
|
|
machine.screenshot("postconfig")
|
|
machine.sleep(2)
|
|
|
|
with subtest("ensure we can open a new terminal"):
|
|
machine.send_key("alt-ret")
|
|
machine.sleep(2)
|
|
machine.wait_for_window(r"alice.*?machine")
|
|
machine.sleep(2)
|
|
machine.screenshot("terminal")
|
|
'';
|
|
})
|