MIME Problem in Dolphin: Lösungsansätze
This commit is contained in:
@@ -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
@@ -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`
|
||||||
|
|||||||
Reference in New Issue
Block a user