From 046f2c3e950a3b4ad42996d14dbb485f41fef84a Mon Sep 17 00:00:00 2001 From: Mathias Scheider Date: Sat, 28 Feb 2026 23:09:29 +0100 Subject: [PATCH] feat: add portal host override script and update portal configuration --- hypr/.config/hypr/hyprland.conf | 6 ++-- .../hypr/scripts/portal-host-override.sh | 8 +++++ hypr/.config/xdg-desktop-portal/portals.conf | 8 ++--- hypr/README.md | 30 +++++++++++++++++++ 4 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 hypr/.config/hypr/scripts/portal-host-override.sh create mode 100644 hypr/README.md diff --git a/hypr/.config/hypr/hyprland.conf b/hypr/.config/hypr/hyprland.conf index 0043870..af5fff7 100755 --- a/hypr/.config/hypr/hyprland.conf +++ b/hypr/.config/hypr/hyprland.conf @@ -59,8 +59,9 @@ exec-once = waybar & exec-once = wpaperd & exec-once = swaync & exec-once = hypridle & -exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE XDG_MENU_PREFIX -exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE XDG_MENU_PREFIX +exec-once = sh ~/.config/hypr/scripts/portal-host-override.sh +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE +exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE # exec = gsettings set org.gnome.desktop.interface gtk-theme "Breeze-Dark" # for GTK3 apps # exec = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" # for GTK4 apps @@ -79,7 +80,6 @@ env = HYPRCURSOR_SIZE,24 env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_DESKTOP,Hyprland env = XDG_SESSION_TYPE,wayland -env = XDG_MENU_PREFIX,plasma- env = GTK_USE_PORTAL,1 env = GTK_THEME,Adwaita:dark env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 diff --git a/hypr/.config/hypr/scripts/portal-host-override.sh b/hypr/.config/hypr/scripts/portal-host-override.sh new file mode 100644 index 0000000..ac85dca --- /dev/null +++ b/hypr/.config/hypr/scripts/portal-host-override.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +if [ -f /etc/xdg/menus/plasma-applications.menu ] && command -v xdg-desktop-portal-kde >/dev/null 2>&1; then + dbus-update-activation-environment --systemd XDG_MENU_PREFIX=plasma- >/dev/null 2>&1 || true + systemctl --user set-environment XDG_MENU_PREFIX=plasma- +else + systemctl --user unset-environment XDG_MENU_PREFIX >/dev/null 2>&1 || true +fi diff --git a/hypr/.config/xdg-desktop-portal/portals.conf b/hypr/.config/xdg-desktop-portal/portals.conf index 6bcecd4..9417e12 100644 --- a/hypr/.config/xdg-desktop-portal/portals.conf +++ b/hypr/.config/xdg-desktop-portal/portals.conf @@ -1,5 +1,5 @@ [preferred] -default=hyprland;kde; -org.freedesktop.impl.portal.OpenURI=kde; -org.freedesktop.impl.portal.FileChooser=kde; -org.freedesktop.impl.portal.Settings=kde; +default=hyprland;gtk;kde; +org.freedesktop.impl.portal.OpenURI=gtk;kde; +org.freedesktop.impl.portal.FileChooser=gtk;kde; +org.freedesktop.impl.portal.Settings=gtk;kde; diff --git a/hypr/README.md b/hypr/README.md new file mode 100644 index 0000000..7e698c2 --- /dev/null +++ b/hypr/README.md @@ -0,0 +1,30 @@ +# Hyprland Dotfiles (portable portal setup) + +Diese Konfiguration ist für den Einsatz via `stow` auf unterschiedlichen Systemen vorbereitet. + +## Portal-Backends + +Die Portal-Priorität steht in `.config/xdg-desktop-portal/portals.conf` auf: + +- `hyprland` für Hyprland-spezifische Portale +- `gtk` als primärer, host-unabhängiger Backend für OpenURI/FileChooser/Settings +- `kde` als Fallback + +Damit funktioniert der Dateizuordnungs-Dialog auch ohne komplette GNOME- oder KDE-Session. + +## Host-Override + +`.config/hypr/scripts/portal-host-override.sh` setzt `XDG_MENU_PREFIX=plasma-` nur dann, +wenn KDE-Portal + Plasma-Menüdatei vorhanden sind. Ohne diese Voraussetzungen wird nichts erzwungen. + +## Pakete auf Zielsystemen + +Empfohlen (mindestens): + +- `xdg-desktop-portal` +- `xdg-desktop-portal-hyprland` +- `xdg-desktop-portal-gtk` + +Optional (Fallback): + +- `xdg-desktop-portal-kde`