MIME Problem in Dolphin: Lösungsansätze
This commit is contained in:
@@ -66,8 +66,9 @@ exec-once = swaync &
|
||||
exec-once = hypridle &
|
||||
exec-once = nextcloud &
|
||||
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-once = sh ~/.config/hypr/scripts/ensure-mime-defaults.sh
|
||||
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 color-scheme "prefer-dark" # for GTK4 apps
|
||||
@@ -86,6 +87,7 @@ 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
|
||||
|
||||
@@ -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
@@ -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
|
||||
- `gtk` als primärer, host-unabhängiger Backend für OpenURI/FileChooser/Settings
|
||||
- `kde` als Fallback
|
||||
- https://github.com/n4zz/Fix-Dolphin-File-Associations
|
||||
|
||||
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,
|
||||
wenn KDE-Portal + Plasma-Menüdatei vorhanden sind. Ohne diese Voraussetzungen wird nichts erzwungen.
|
||||
## Aktiver Stand
|
||||
|
||||
## 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-hyprland`
|
||||
- `xdg-desktop-portal-gtk`
|
||||
|
||||
Optional (Fallback):
|
||||
Optional (Fallback, aktuell genutzt):
|
||||
|
||||
- `xdg-desktop-portal-kde`
|
||||
|
||||
Reference in New Issue
Block a user