revert(niri): restore pyclipsync for QQ's X11 clipboard

Reverts 9152e829: QQ's Wayland window still copies through the X11 CLIPBOARD, which xwayland-satellite cannot bridge, so QQ copies never reached Wayland apps.

Assisted-by: DeepSeek Harness (claude-opus-5-5)
This commit is contained in:
Ryan Yin committed 2026-11-06 18:30:56 +08:00
1 parent 34e984fb92
commit ba149b5edf
4 files changed
+40 -3

No files matched your search

+3 -3
View File
@@ -140,9 +140,9 @@ repository, and cross-link them — no need to be told.
change. change.
- `~/codes/nix-secrets` — the private agenix store behind `secrets/` and the `mysecrets` input: - `~/codes/nix-secrets` — the private agenix store behind `secrets/` and the `mysecrets` input:
ciphertext and recipient rules for the secrets declared here. ciphertext and recipient rules for the secrets declared here.
- `wallpapers`, `nur-ryan4yin`, `nu_scripts`, `mattpocock-skills`, `i-have-adhd` — flake inputs from - `wallpapers`, `nur-ryan4yin`, `pyclipsync`, `nu_scripts`, `mattpocock-skills`, `i-have-adhd` —
the user's own repositories; bump with `just upp <input>` after their source changes, do not edit flake inputs from the user's own repositories; bump with `just upp <input>` after their source
them from here. changes, do not edit them from here.
## Further Context ## Further Context
Generated
+21
View File
@@ -851,6 +851,26 @@
"type": "github" "type": "github"
} }
}, },
"pyclipsync": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1793503810,
"narHash": "sha256-qh3Wjb1gV9FO01vUTGMNcWRwwQ9iUH0tkzVjObEn5J4=",
"owner": "ryan4yin",
"repo": "pyclipsync",
"rev": "080fbb7a21f4afe298d4eaa400645388ec000231",
"type": "github"
},
"original": {
"owner": "ryan4yin",
"repo": "pyclipsync",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"agenix": "agenix", "agenix": "agenix",
@@ -884,6 +904,7 @@
"ponytail": "ponytail", "ponytail": "ponytail",
"pre-commit-hooks": "pre-commit-hooks", "pre-commit-hooks": "pre-commit-hooks",
"preservation": "preservation", "preservation": "preservation",
"pyclipsync": "pyclipsync",
"wallpapers": "wallpapers" "wallpapers": "wallpapers"
} }
}, },
+6
View File
@@ -203,5 +203,11 @@
url = "github:ryan4yin/nur-packages"; url = "github:ryan4yin/nur-packages";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
# Wayland <-> X11 clipboard sync for xwayland-satellite (niri).
pyclipsync = {
url = "github:ryan4yin/pyclipsync";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
} }
+10
View File
@@ -2,12 +2,18 @@
pkgs, pkgs,
config, config,
lib, lib,
pyclipsync,
... ...
}@args: }@args:
let let
cfg = config.modules.desktop.niri; cfg = config.modules.desktop.niri;
in in
{ {
imports = [
# provides `services.pyclipsync.enable`
pyclipsync.homeModules.default
];
options.modules.desktop.niri = { options.modules.desktop.niri = {
enable = lib.mkEnableOption "niri compositor"; enable = lib.mkEnableOption "niri compositor";
}; };
@@ -51,6 +57,10 @@ in
}; };
}; };
# QQ draws a Wayland window but copies through the X11 CLIPBOARD, which
# xwayland-satellite bridges only while an X11 window has focus.
services.pyclipsync.enable = true;
# NOTE: this executable is used by greetd to start a wayland session when system boot up # NOTE: this executable is used by greetd to start a wayland session when system boot up
# with such a vendor-no-locking script, we can switch to another wayland compositor without modifying greetd's config in NixOS module # with such a vendor-no-locking script, we can switch to another wayland compositor without modifying greetd's config in NixOS module
home.file.".wayland-session" = { home.file.".wayland-session" = {