fix(bbsteamie): use plasma wayland without annoying popups
All checks were successful
Discord / discord commits (push) Has been skipped
All checks were successful
Discord / discord commits (push) Has been skipped
This commit is contained in:
parent
d8ef7d99ed
commit
8aa6f5b2b0
6 changed files with 92 additions and 19 deletions
|
@ -1,6 +1,6 @@
|
||||||
{pkgs, ...}: let
|
{pkgs, ...}: let
|
||||||
# switch to wayland when possible
|
# switch to wayland when possible
|
||||||
defaultSession = "plasmax11";
|
defaultSession = "plasma";
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
(import ./session-switching.nix defaultSession)
|
(import ./session-switching.nix defaultSession)
|
||||||
|
@ -22,6 +22,7 @@ in {
|
||||||
# Misc Apps
|
# Misc Apps
|
||||||
firefox
|
firefox
|
||||||
kdePackages.discover
|
kdePackages.discover
|
||||||
|
kdePackages.krfb
|
||||||
|
|
||||||
# Libs
|
# Libs
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
|
|
|
@ -27,20 +27,14 @@ defaultSession: {
|
||||||
sudo ${pkgs.systemd}/bin/systemctl start to-gaming-mode.service
|
sudo ${pkgs.systemd}/bin/systemctl start to-gaming-mode.service
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
services = {
|
services.displayManager.sddm = {
|
||||||
displayManager = {
|
enable = true;
|
||||||
sddm = {
|
autoLogin.relogin = true;
|
||||||
enable = true;
|
|
||||||
autoLogin.relogin = true;
|
|
||||||
|
|
||||||
wayland = {
|
wayland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
compositorCommand = "kwin";
|
compositorCommand = "kwin";
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
xserver.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Sets the default session at launch
|
# Sets the default session at launch
|
||||||
|
@ -100,5 +94,17 @@ in {
|
||||||
config.home-manager.users.mariah.home.packages
|
config.home-manager.users.mariah.home.packages
|
||||||
)
|
)
|
||||||
+ "/share/applications/Gaming Mode.desktop";
|
+ "/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")
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,6 +114,8 @@
|
||||||
perSystem (pkgs:
|
perSystem (pkgs:
|
||||||
import ./packages {inherit self pkgs mkVersion inputs;});
|
import ./packages {inherit self pkgs mkVersion inputs;});
|
||||||
|
|
||||||
|
overlays = import ./overlays {};
|
||||||
|
|
||||||
apps =
|
apps =
|
||||||
perSystem (pkgs:
|
perSystem (pkgs:
|
||||||
import ./apps {inherit inputs pkgs;});
|
import ./apps {inherit inputs pkgs;});
|
||||||
|
|
|
@ -12,12 +12,16 @@
|
||||||
import input {
|
import input {
|
||||||
inherit system;
|
inherit system;
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
overlays = map (i: inputs.${i}.overlays.default) [
|
overlays =
|
||||||
"discord-overlay"
|
(map (i: inputs.${i}.overlays.default) [
|
||||||
"grim-hyprland"
|
"discord-overlay"
|
||||||
"jovian"
|
"grim-hyprland"
|
||||||
"nixpkgs-wayland"
|
"jovian"
|
||||||
];
|
"nixpkgs-wayland"
|
||||||
|
])
|
||||||
|
++ [
|
||||||
|
inputs.self.overlays.xdg-desktop-portal-kde
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Function that makes the attrs that make up the specialArgs
|
# Function that makes the attrs that make up the specialArgs
|
||||||
|
|
3
overlays/default.nix
Normal file
3
overlays/default.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{...}: {
|
||||||
|
xdg-desktop-portal-kde = import ./xdg-desktop-portal-kde;
|
||||||
|
}
|
57
overlays/xdg-desktop-portal-kde/default.nix
Normal file
57
overlays/xdg-desktop-portal-kde/default.nix
Normal file
|
@ -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 <KNotification>
|
||||||
|
#include <QGuiApplication>
|
||||||
|
#include <QRegion>
|
||||||
|
+#include <KSharedConfig>
|
||||||
|
+#include <KConfigGroup>
|
||||||
|
#include <QScreen>
|
||||||
|
|
||||||
|
RemoteDesktopPortal::RemoteDesktopPortal(QObject *parent)
|
||||||
|
@@ -152,14 +154,19 @@ uint RemoteDesktopPortal::Start(const QDBusObjectPath &handle,
|
||||||
|
notification->setIconName(QStringLiteral("krfb"));
|
||||||
|
notification->sendEvent();
|
||||||
|
} else {
|
||||||
|
- QScopedPointer<RemoteDesktopDialog, QScopedPointerDeleteLater> 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, QScopedPointerDeleteLater> 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;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
Loading…
Reference in a new issue