Hey, folks! I’m trying to move away from EXWM and onto a different setup on NixOS, but can’t seem to get it to work. There’s a number of different factors here, and there may also well be some understandings going on, so I’m hoping I could get some help clearing it up.
In short
The short version of my question is:
How do I successfully start a graphical session that isn’t run by EXWM? I’ve tried a number of different combinations (by setting xserver.desktopManager
/ windowManager
to gnome, lightdm, pantheon), but nothing ever happens after logging in: it just stays at the login background image.
My goal is: to have an experience that isn’t centered around Emacs running everything. I want a tiling window manager and probably some kind of status bar as a minimum, but don’t really know what past that.
It is also likely that I’m misunderstanding a lot of things here. I’ve run EXWM for 2–3 years now, but haven’t really ever used anything else, so I don’t know when you do and don’t need a desktop manager, for instance. So it’s quite possible that I’m not asking the right questions, but that’s because I don’t know what those questions are.
The longer version
As mentioned above: I’m trying to migrate off EXWM (for a variety of reasons, but that’s for a different time), but haven’t been able to start any other kinds of sessions from the login screen. I tried with a couple different configuration options as mentioned in the manual / configuration options. I tried enabling desktopManager.gnome
, desktopManager.pantheon
, but don’t really know what I need. When at the login screens, the sessions either fail to start or let me log in, but then get stuck after removing the login dialog (using lightdm and the default).
It is possible that home manager is to blame for some of this too, as I use it to initialize EXWM. I tried changing it a bit, but maybe not enough.
I also thought about using Wayland, but couldn’t find any documentation on how you go about doing that. But I think using Sway would be out of the question anyway, though, as I’ve got an nvidia gpu.
Testing
When trying to change this settings, is there a way to check whether they work without logging out and back in? I’ve found that sometimes rebooting is necessary for the changes to work as expected. This makes it very slow and tedious to check. Plus, the added tension of maybe not being able to start a graphical session isn’t great
Ideally: could I start an extra graphical session somehow (with the new settings) and flip between them? Maybe something using build-vm
?
Current setup
In my configuration.nix
file, I’ve got this setup:
services.xserver = {
enable = true;
# ... more unrelated config
windowManager.exwm = {
enable = true;
enableDefaultConfig = false;
extraPackages = epkgs: [
epkgs.emacsql-sqlite
epkgs.vterm
epkgs.magit
epkgs.pdf-tools
pkgs.python3
];
};
displayManager.lightdm = {
enable = true;
greeters.enso = {
enable = true;
blur = true;
};
};
## this doesn't work 👇
# desktopManager.gnome.enable = true;
# windowManager.i3.enable = true;
displayManager.defaultSession = "none+exwm";
};
Home manager
xsession = {
enable = true;
## this didn't seem to make a difference 👇
# windowManager.command = ''test -n "$1" && eval "$@"'';
windowManager.command = ''
${config.programs.emacs.package}/bin/emacs -l "${exwm-load-script}"
'';
initExtra = ''
xset r rate 200 100
'';
};
I tried commenting out the windowManager.command
I’ve got there now, but that didn’t seem to change anything. I’ll try removing it / changing it after posting. Maybe setting windowManager.i3.enable
or something would work instead?
Final comments
Thanks for getting this far and for helping me out. I’m very happy to provide more info if there’s anything you need; I just don’t know what that would be at the moment.
I also got some help in the matrix chatroom yesterday, so thanks to everyone who helped me out there. However, I wasn’t able to make it work in the end, and I think a forum post may be better suited for this.