MIME Problem in Dolphin: Lösungsansätze

This commit is contained in:
2026-03-06 09:50:52 +01:00
parent 6dcaeba0ce
commit e8c73617c6
5 changed files with 114 additions and 16 deletions
+4 -2
View File
@@ -66,8 +66,9 @@ exec-once = swaync &
exec-once = hypridle & exec-once = hypridle &
exec-once = nextcloud & exec-once = nextcloud &
exec-once = sh ~/.config/hypr/scripts/portal-host-override.sh 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 = sh ~/.config/hypr/scripts/ensure-mime-defaults.sh
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE 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 = gsettings set org.gnome.desktop.interface gtk-theme "Breeze-Dark" # for GTK3 apps # 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 # exec = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" # for GTK4 apps
@@ -86,6 +87,7 @@ env = HYPRCURSOR_SIZE,24
env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_DESKTOP,Hyprland env = XDG_SESSION_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland env = XDG_SESSION_TYPE,wayland
env = XDG_MENU_PREFIX,plasma-
env = GTK_USE_PORTAL,1 env = GTK_USE_PORTAL,1
env = GTK_THEME,Adwaita:dark env = GTK_THEME,Adwaita:dark
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
@@ -0,0 +1,29 @@
#!/bin/sh
has_desktop() {
[ -f "$HOME/.local/share/applications/$1" ] || [ -f "/usr/share/applications/$1" ]
}
set_default_if_available() {
desktop_id="$1"
mime_type="$2"
if has_desktop "$desktop_id"; then
xdg-mime default "$desktop_id" "$mime_type" >/dev/null 2>&1 || true
fi
}
set_default_if_available org.kde.gwenview.desktop image/jpeg
set_default_if_available org.kde.gwenview.desktop image/png
set_default_if_available org.kde.gwenview.desktop image/webp
set_default_if_available org.kde.gwenview.desktop image/gif
set_default_if_available org.gnome.Papers.desktop application/pdf
set_default_if_available io.github.celluloid_player.Celluloid.desktop video/mp4
set_default_if_available io.github.celluloid_player.Celluloid.desktop video/webm
set_default_if_available io.github.celluloid_player.Celluloid.desktop video/mpeg
set_default_if_available celluloid.desktop video/x-matroska
set_default_if_available userapp-Thunderbird-MTXOJ3.desktop x-scheme-handler/mailto
set_default_if_available userapp-Thunderbird-MTXOJ3.desktop x-scheme-handler/mid
set_default_if_available lmstudio.desktop x-scheme-handler/lmstudio
@@ -0,0 +1,10 @@
[Unit]
Description=Re-apply MIME defaults when mimeapps files change
[Path]
PathChanged=%h/.config/mimeapps.list
PathChanged=%h/.local/share/applications/mimeapps.list
Unit=ensure-mime-defaults.service
[Install]
WantedBy=default.target
@@ -0,0 +1,10 @@
[Unit]
Description=Ensure preferred MIME defaults are set
After=graphical-session.target
[Service]
Type=oneshot
ExecStart=/bin/sh %h/.config/hypr/scripts/ensure-mime-defaults.sh
[Install]
WantedBy=default.target
+61 -14
View File
@@ -1,30 +1,77 @@
# Hyprland Dotfiles (portable portal setup) # Hyprland Dotfiles (Portal + MIME Stabilisierung)
Diese Konfiguration ist für den Einsatz via `stow` auf unterschiedlichen Systemen vorbereitet. Diese Konfiguration ist für Nutzung via `stow` ausgelegt und enthält zusätzliche Stabilisierung für Dateizuordnungen (MIME) unter Hyprland.
## Portal-Backends ## WICHTIG: Primärer Fix für MIME-Probleme
Die Portal-Priorität steht in `.config/xdg-desktop-portal/portals.conf` auf: Wenn Dateizuordnungen in Dolphin verschwinden oder Doppelklicks unzuverlässig sind, ist dies die erste und wichtigste Referenz:
- `hyprland` für Hyprland-spezifische Portale - https://github.com/n4zz/Fix-Dolphin-File-Associations
- `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. Der dort beschriebene Ansatz ist die primäre Lösung.
## Host-Override Die lokalen `ensure-mime-defaults`-Skripte in diesen Dotfiles sind nur als Zusatz/Notfall-Fallback gedacht, falls trotz primärem Fix weiterhin nichts zuverlässig funktioniert.
`.config/hypr/scripts/portal-host-override.sh` setzt `XDG_MENU_PREFIX=plasma-` nur dann, ## Aktiver Stand
wenn KDE-Portal + Plasma-Menüdatei vorhanden sind. Ohne diese Voraussetzungen wird nichts erzwungen.
## Pakete auf Zielsystemen ### Portal-Backends
Empfohlen (mindestens): Die Priorität in `.config/xdg-desktop-portal/portals.conf` ist:
- `hyprland` (Hyprland-spezifische Portale)
- `gtk` (primär für `OpenURI`, `FileChooser`, `Settings`)
- `kde` (Fallback)
### Session-Umgebung
In `.config/hypr/hyprland.conf` werden diese Variablen gesetzt und an systemd/DBus exportiert:
- `XDG_CURRENT_DESKTOP=Hyprland`
- `XDG_SESSION_DESKTOP=Hyprland`
- `XDG_SESSION_TYPE=wayland`
- `XDG_MENU_PREFIX=plasma-`
- `GTK_USE_PORTAL=1`
### MIME-Selbstheilung
Hinweis: Dieser Block ist bewusst nur Fallback und nicht die Hauptlösung.
Dateien:
- `.config/hypr/scripts/ensure-mime-defaults.sh`
- `.config/systemd/user/ensure-mime-defaults.service`
- `.config/systemd/user/ensure-mime-defaults.path`
Verhalten:
- setzt bevorzugte MIME-Defaults beim Login
- setzt sie erneut, wenn `~/.config/mimeapps.list` oder `~/.local/share/applications/mimeapps.list` geändert werden
## Deployment / Reload
Nach Änderungen an den Dotfiles:
1. `stow hypr` (falls Symlinks noch nicht gesetzt sind)
2. `hyprctl reload`
3. `systemctl --user daemon-reload`
4. `systemctl --user restart xdg-desktop-portal.service xdg-desktop-portal-hyprland.service xdg-desktop-portal-gtk.service plasma-xdg-desktop-portal-kde.service`
5. `systemctl --user restart ensure-mime-defaults.service`
## Verifikation
- `xdg-mime query default image/jpeg`
- `xdg-mime query default application/pdf`
- `systemctl --user status ensure-mime-defaults.path ensure-mime-defaults.service`
- `systemctl --user status xdg-desktop-portal.service xdg-desktop-portal-hyprland.service xdg-desktop-portal-gtk.service plasma-xdg-desktop-portal-kde.service`
## Paketvoraussetzungen
Mindestens empfohlen:
- `xdg-desktop-portal` - `xdg-desktop-portal`
- `xdg-desktop-portal-hyprland` - `xdg-desktop-portal-hyprland`
- `xdg-desktop-portal-gtk` - `xdg-desktop-portal-gtk`
Optional (Fallback): Optional (Fallback, aktuell genutzt):
- `xdg-desktop-portal-kde` - `xdg-desktop-portal-kde`