From 8aa6f5b2b03f69bfe8d5ff5111e168c6f94c4c33 Mon Sep 17 00:00:00 2001 From: matt1432 Date: Sun, 4 Aug 2024 18:44:53 -0400 Subject: [PATCH] fix(bbsteamie): use plasma wayland without annoying popups --- devices/bbsteamie/modules/desktop/default.nix | 3 +- .../modules/desktop/session-switching.nix | 30 ++++++---- flake.in.nix | 2 + flake/lib.nix | 16 ++++-- overlays/default.nix | 3 + overlays/xdg-desktop-portal-kde/default.nix | 57 +++++++++++++++++++ 6 files changed, 92 insertions(+), 19 deletions(-) create mode 100644 overlays/default.nix create mode 100644 overlays/xdg-desktop-portal-kde/default.nix diff --git a/devices/bbsteamie/modules/desktop/default.nix b/devices/bbsteamie/modules/desktop/default.nix index 04cc7561..11e7ba92 100644 --- a/devices/bbsteamie/modules/desktop/default.nix +++ b/devices/bbsteamie/modules/desktop/default.nix @@ -1,6 +1,6 @@ {pkgs, ...}: let # switch to wayland when possible - defaultSession = "plasmax11"; + defaultSession = "plasma"; in { imports = [ (import ./session-switching.nix defaultSession) @@ -22,6 +22,7 @@ in { # Misc Apps firefox kdePackages.discover + kdePackages.krfb # Libs wl-clipboard diff --git a/devices/bbsteamie/modules/desktop/session-switching.nix b/devices/bbsteamie/modules/desktop/session-switching.nix index ca3e4d17..8c191783 100644 --- a/devices/bbsteamie/modules/desktop/session-switching.nix +++ b/devices/bbsteamie/modules/desktop/session-switching.nix @@ -27,20 +27,14 @@ defaultSession: { sudo ${pkgs.systemd}/bin/systemctl start to-gaming-mode.service ''; in { - services = { - displayManager = { - sddm = { - enable = true; - autoLogin.relogin = true; + services.displayManager.sddm = { + enable = true; + autoLogin.relogin = true; - wayland = { - enable = true; - compositorCommand = "kwin"; - }; - }; + wayland = { + enable = true; + compositorCommand = "kwin"; }; - - xserver.enable = true; }; # Sets the default session at launch @@ -100,5 +94,17 @@ in { config.home-manager.users.mariah.home.packages ) + "/share/applications/Gaming Mode.desktop"; + + # Fix remote control prompt showing up everytime + xdg.configFile = let + mkAutostart = name: flags: { + "autostart/${name}.desktop".text = "[Desktop Entry]\nType=Application\nExec=${name} ${flags}"; + }; + in ( + # Needs xdg-desktop-portal-kde patch provided by `self.overlays.xdg-desktop-portal-kde` + {"plasmaremotedesktoprc".text = "[Sharing]\nUnattended=true";} + // (mkAutostart "krfb" "--nodialog %c") + // (mkAutostart "steam" "-silent %U") + ); }; } diff --git a/flake.in.nix b/flake.in.nix index cac3adb4..2bdaff56 100644 --- a/flake.in.nix +++ b/flake.in.nix @@ -114,6 +114,8 @@ perSystem (pkgs: import ./packages {inherit self pkgs mkVersion inputs;}); + overlays = import ./overlays {}; + apps = perSystem (pkgs: import ./apps {inherit inputs pkgs;}); diff --git a/flake/lib.nix b/flake/lib.nix index 3cdeb500..b3764d88 100644 --- a/flake/lib.nix +++ b/flake/lib.nix @@ -12,12 +12,16 @@ import input { inherit system; config.allowUnfree = true; - overlays = map (i: inputs.${i}.overlays.default) [ - "discord-overlay" - "grim-hyprland" - "jovian" - "nixpkgs-wayland" - ]; + overlays = + (map (i: inputs.${i}.overlays.default) [ + "discord-overlay" + "grim-hyprland" + "jovian" + "nixpkgs-wayland" + ]) + ++ [ + inputs.self.overlays.xdg-desktop-portal-kde + ]; }; # Function that makes the attrs that make up the specialArgs diff --git a/overlays/default.nix b/overlays/default.nix new file mode 100644 index 00000000..ac9abc78 --- /dev/null +++ b/overlays/default.nix @@ -0,0 +1,3 @@ +{...}: { + xdg-desktop-portal-kde = import ./xdg-desktop-portal-kde; +} diff --git a/overlays/xdg-desktop-portal-kde/default.nix b/overlays/xdg-desktop-portal-kde/default.nix new file mode 100644 index 00000000..54586411 --- /dev/null +++ b/overlays/xdg-desktop-portal-kde/default.nix @@ -0,0 +1,57 @@ +(final: prev: { + kdePackages = prev.kdePackages.overrideScope (kfinal: kprev: { + xdg-desktop-portal-kde = kprev.xdg-desktop-portal-kde.overrideAttrs (o: { + patches = + (o.patches or []) + ++ [ + # https://invent.kde.org/plasma/xdg-desktop-portal-kde/-/issues/15#note_906047 + (builtins.toFile + "rdp.patch" + # cpp + '' + diff --git a/src/remotedesktop.cpp b/src/remotedesktop.cpp + index 99ce57f..af64eff 100644 + --- a/src/remotedesktop.cpp + +++ b/src/remotedesktop.cpp + @@ -19,6 +19,8 @@ + #include + #include + #include + +#include + +#include + #include + + RemoteDesktopPortal::RemoteDesktopPortal(QObject *parent) + @@ -152,14 +154,19 @@ uint RemoteDesktopPortal::Start(const QDBusObjectPath &handle, + notification->setIconName(QStringLiteral("krfb")); + notification->sendEvent(); + } else { + - QScopedPointer remoteDesktopDialog( + - new RemoteDesktopDialog(app_id, session->deviceTypes(), session->screenSharingEnabled())); + - Utils::setParentWindow(remoteDesktopDialog->windowHandle(), parent_window); + - Request::makeClosableDialogRequest(handle, remoteDesktopDialog.get()); + - connect(session, &Session::closed, remoteDesktopDialog.data(), &RemoteDesktopDialog::reject); + - + - if (!remoteDesktopDialog->exec()) { + - return 1; + + auto cfg = KSharedConfig::openConfig(QStringLiteral("plasmaremotedesktoprc")); + + const auto unattendedAccess = cfg->group("Sharing").readEntry("Unattended", false); + + if (!unattendedAccess) + + { + + QScopedPointer remoteDesktopDialog( + + new RemoteDesktopDialog(app_id, session->deviceTypes(), session->screenSharingEnabled())); + + Utils::setParentWindow(remoteDesktopDialog->windowHandle(), parent_window); + + Request::makeClosableDialogRequest(handle, remoteDesktopDialog.get()); + + connect(session, &Session::closed, remoteDesktopDialog.data(), &RemoteDesktopDialog::reject); + + + + if (!remoteDesktopDialog->exec()) { + + return 1; + + } + } + } + + '') + ]; + }); + }); +})