Skip to content

Commit 12f3cc6

Browse files
committed
feat(gui): 为 GNOME Wayland 添加 gsconnect 配置持久化支持
添加了 gsconnect dconf 配置文件的持久化机制,确保在 tmpfs 根目录环境下配置不会丢失。同时在 custom.nix 中添加条件判断,避免在 GNOME Wayland 环境下启用 kdeconnect 服务冲突。 添加了 dconf-editor 工具支持,并配置了 systemd 用户服务来管理 gsconnect 的配置导入导出。
1 parent f2efcec commit 12f3cc6

3 files changed

Lines changed: 46 additions & 4 deletions

File tree

home/linux/gui/custom/custom.nix

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
config,
3+
lib,
34
pkgs,
45
pkgs-latest,
56
pkgs-stable,
@@ -12,6 +13,9 @@
1213
hyprland,
1314
...
1415
}:
16+
let
17+
cfgGnomeWayland = config.modules.desktop.gnome-wayland;
18+
in
1519
{
1620
home.packages =
1721
(
@@ -180,8 +184,10 @@
180184
]);
181185

182186
services = {
183-
kdeconnect.enable = true;
184-
kdeconnect.indicator = true;
185-
# kdeconnect.package = pkgs.kdePackages.kdeconnect-kde;
187+
kdeconnect = lib.mkIf (!cfgGnomeWayland.enable) {
188+
enable = true;
189+
indicator = true;
190+
# kdeconnect.package = pkgs.kdePackages.kdeconnect-kde;
191+
};
186192
};
187193
}

home/linux/gui/gnome-wayland/values/gnome.nix

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
pkgs,
33
lib,
4+
config,
45
nur-ryan4yin,
56
...
67
}:
@@ -13,6 +14,9 @@ in
1314
gsconnect
1415
kimpanel
1516
clipboard-indicator
17+
18+
# dconf-editor
19+
pkgs.dconf-editor
1620
];
1721
dconf = {
1822
enable = true;
@@ -121,4 +125,35 @@ in
121125
binding = "<Ctrl><Shift>Escape";
122126
};
123127
};
128+
# https://github.com/jz8132543/flakes/blob/3225d8f726da9a8980a7becc949f3f634927f926/home-manager/modules/desktop/gnome.nix#L293-L321
129+
# NOTE: make sure dumpped gsconnect.dconf is persistent if you are using tmpfs as root
130+
systemd.user.services.gsconnect-dconf = {
131+
Unit = {
132+
Description = "gsconnect-dconf";
133+
Wants = [ "graphical-session.target" ];
134+
After = [ "graphical-session.target" ];
135+
};
136+
Install = {
137+
WantedBy = [ "graphical-session.target" ];
138+
};
139+
Service = {
140+
Type = "simple";
141+
ExecStart = toString (
142+
pkgs.writeScript "gsconnect-dconf-start" ''
143+
#! ${pkgs.runtimeShell} -el
144+
${pkgs.dconf}/bin/dconf load /org/gnome/shell/extensions/gsconnect/ < ${config.home.homeDirectory}/.config/gsconnect/gsconnect.dconf || true
145+
''
146+
);
147+
ExecStop = toString (
148+
pkgs.writeScript "gsconnect-dconf-stop" ''
149+
#! ${pkgs.runtimeShell} -el
150+
${pkgs.dconf}/bin/dconf dump /org/gnome/shell/extensions/gsconnect/ > ${config.home.homeDirectory}/.config/gsconnect/gsconnect.dconf
151+
''
152+
);
153+
Restart = "on-failure";
154+
RestartSec = 1;
155+
TimeoutStopSec = 10;
156+
RemainAfterExit = "yes";
157+
};
158+
};
124159
}

hosts/idols-ai/preservation.nix

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,8 @@ in
402402
".cache/clipboard-indicator@tudmotu.com"
403403

404404
# persist paired device data for gsconnect
405-
".cache/gsconnect"
405+
# cert and key
406+
".config/gsconnect"
406407

407408
# nix-index
408409
".cache/nix-index"

0 commit comments

Comments
 (0)