![oxalica](/assets/img/avatar_default.png)
`fcitx5` and `service.earlyoom` rely on use XDG autostart files to start. But for X session with only window manager and no desktop manager (`none` is used), no one can start them. This options is added to run these autostart files for sessions without desktop manager to make other services just work.
47 lines
1.6 KiB
Nix
47 lines
1.6 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
with lib;
|
|
let
|
|
runXdgAutostart = config.services.xserver.desktopManager.runXdgAutostartIfNone;
|
|
in
|
|
{
|
|
options = {
|
|
services.xserver.desktopManager.runXdgAutostartIfNone = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = ''
|
|
Whether to run XDG autostart files for sessions without a desktop manager
|
|
(with only a window manager), these sessions usually don't handle XDG
|
|
autostart files by default.
|
|
|
|
Some services like <option>i18n.inputMethod</option> and
|
|
<option>service.earlyoom</option> use XDG autostart files to start.
|
|
If this option is not set to <literal>true</literal> and you are using
|
|
a window manager without a desktop manager, you need to manually start
|
|
them or running <package>dex</package> somewhere.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = mkMerge [
|
|
{
|
|
services.xserver.desktopManager.session = [
|
|
{
|
|
name = "none";
|
|
start = optionalString runXdgAutostart ''
|
|
/run/current-system/systemd/bin/systemctl --user start xdg-autostart-if-no-desktop-manager.target
|
|
'';
|
|
}
|
|
];
|
|
}
|
|
(mkIf runXdgAutostart {
|
|
systemd.user.targets.xdg-autostart-if-no-desktop-manager = {
|
|
description = "Run XDG autostart files";
|
|
# From `plasma-workspace`, `share/systemd/user/plasma-workspace@.target`.
|
|
requires = [ "xdg-desktop-autostart.target" "graphical-session.target" ];
|
|
before = [ "xdg-desktop-autostart.target" "graphical-session.target" ];
|
|
bindsTo = [ "graphical-session.target" ];
|
|
};
|
|
})
|
|
];
|
|
}
|