16
Oktober
2024
12:03

Warum brauchen Sie ein Paket XDG-Desktop-Portal, wie man es benutzt?

16 Oktober 2024 12:03

Linux verfügt über mehrere Softwaremedien auf der Grundlage von Linux Systemd- und D -BUS -Diensten, dritten -party flatpak und snap.

Wahrscheinlich weiß jeder, dass die Verteilungssysteme von Flatpak und Snap Applications den Sandbox -Mechanismus verwenden, in dem Anwendungen in einer sicheren Umgebung eingeführt werden.

Damit die in den „Sandboxen“ auf den Markt kommen Programme auf Computerressourcen wie Dateisystem, Kamera, Soundserver - eine „Back -basiertes“ Komponente (Backend) zwischen Snap/Flatpak und dem Betriebssystem erhalten können. Diese Komponente wird als "XDG Desktop -Portal" bezeichnet. Aus Flatpak -Dokumentation:

"Portale sind Frameworks für einen sicheren Zugriff auf Ressourcen aufgrund der Grenzen einer isolierten Software -Umgebung. Sie liefern Anwendungen mit einer Reihe allgemeiner Funktionen, darunter: Ermittlung des Status des Netzwerks, das Öffnen der Datei mithilfe des Dateiauswahl -Tools, das Öffnen des URI, das Erstellen von Bildschirmbildern und Ausführen der Bildschirmsendungen [...]"

Portale wurden für die Verwendung mit Anwendungen entwickelt, die über Flatpak isoliert wurden. Jede Anwendung kann jedoch mit Portalen einen einzigen Zugriff auf Funktionen unabhängig von Desktop und Tools bieten. Dies wird normalerweise verwendet, um den Gesamtzugriff auf den Bildschirm in Wayland über PipeWire zu beheben oder die Öffnungs- und Speichern von Dateien in Firefox zu verwenden, die dieselben Tools wie Ihre aktuelle Desktop -Umgebung verwenden. ”

Wann benötigen Sie eine Komponente von XDG-Desktop-Portal?

  • Es ist erforderlich, wenn Flatpak und Snap verwendet werden

Wie installiere ich XDG-Desktop-Portal?

sudo apt update
sudo apt install xdg-desktop-portal xdg-desktop-portal-gtk

Wie starten Sie den XDG-Desktop-Portal.Service-Service?

Dieser Dienst wird automatisch gestartet und vom Benutzer umgeben, wenn Sie an Schnittstellen kontaktieren, die mit dem Betriebssystem interagieren. Auf Wunsch kann es manuell gestartet werden, um die Arbeit (Bedingung, Status, Fehler) zu überprüfen, aber nur vom aktuellen Benutzer umgeben. Command:

systemctl --user start xdg-desktop-portal.service

Überprüfen des Dienstzustands:

systemctl --user status xdg-desktop-portal.service

Der Dienststatus xdg-desktop-portal.service sollte grün sein: "aktiv (wird ausgeführt)". Warnungen vom Typ "Fehler beim Laden der RealtimeKit-Eigenschaft: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: Der Name org.freedesktop.RealtimeKit1 wurde von keiner .service-Datei bereitgestellt" und "Kein Skelett zum Exportieren" beeinträchtigen den Betrieb des Dienstes xdg-desktop-portal.service nicht; diese Meldungen können ignoriert werden.

Was ist das Operationsprinzip XDG-Desktop-Portal.Service?

Die Komponente interagiert mit dem System und Flatpak/SNAP unter Verwendung des DBUS -Protokolls.

Wie lösche ich XDG-Desktop-portal.service?

Wenn die Interaktion mit dem Betriebssystem aus den Snap -Paketen nicht erforderlich ist, ist Flatpak nicht erforderlich. Sie können diese Pakete entfernen

sudo apt purge xdg-desktop-portal xdg-desktop-portal-gtk

Wo

  • XDG-DESKTOP-PORTAL - Das Main-Paket
  • XDG-DESKTOP-PORTAL-GTK - Standard-Expansionspaket für die meisten mit Betriebssystem verbundenen Funktionen (Startanwendungen, Dateiauswahl, Druckeinstellungen, OS-Einstellungen, Haufen von Gnome-Keyring-Schlüssel usw.)

In der Dokumentation auf wiki.archlinux.org/title/xdg_desktop_portal es heißt, jede Desktop-Umgebung habe ihre eigenen Pakete. Zum Beispiel:

  • Umgebung GNOME-> Paket XDG-DESKTOP-PORTAL-GNOME
  • Umgebung KDE-> Paket XDG-DESKTOP-PORTAL-KDE
  • Umgebung LXQT-> Paket XDG-DESKTOP-PORTAL-LXQTE

Wie kann ich die Arbeit von XDG-Desktop-portal.service sicherstellen?

Die XDG-Desktop-Portal-Komponente benötigt Variablen

Überprüfen Sie das aktuelle Gefolge des Desktops und anderer Variablen des XDG:

env | grep XDG

XDG-DESKTOP-PORTAL-Konfigurationsdateien befinden sich im Ordner /usr/share/xdg-desktop-portal/. Sie sollten nicht geändert werden.

Außerdem benötigt die Komponente die Namen der in der Datei aufgeführten Ordner:
~/.config/user-dirs.dirs

Beispiel - Anzeigen der Ordnerliste des Benutzers:

cat ~/.config/user-dirs.dirs

Ergebnis:
# Diese Datei wurde von XDG-User-Dirs-Update geschrieben
# Wenn Sie Direktoren ändern oder hinzufügen möchten, bearbeiten Sie einfach die Zeile, die Sie sind
# interessiert in. Alle lokalen Änderungen werden beim nächsten Lauf beibehalten.
# Format ist xdg_xxx_dir = "$ home/yjy", was yyy ist ein Shell-uscaped
# Homedir-relatives Pfad oder xdg_xxx_dir = " /yyy", was /yyy ist
# Absoluter Weg. Es wird kein anderes Format unterstützt.
#
XDG_DESKTOP_DIR = "$home/desktop"
XDG_DOWNLOAD_DIR = "$home/loading"
XDG_TEMPLATES_DIR = "$home/templates"
XDG_PULICHIRARE_DIR = "$home/public"
XDG_DOCUMENTS_DIR = "$home/documents"
XDG_MUSIC_DIR = "$home/music"
XDG_PICTURES_DIR = "$home/images"
XDG_VIDEOS_DIR = "$home/video"

Diese Datei wird bei der Ausführung eines Befehls erstellt

xdg-user-dirs-update

Die Benutzerordner im Betriebssystem werden unter Berücksichtigung der aktuellen regionalen Spracheinstellungen im Benutzerprofil aufgerufen. Die Lokalisierung von Sprachparametern bestimmt auch die Variablen der Umgebung, die mit dem Befehl betrachtet werden könnenlocale:

locale

Auf Russisch installieren:

sudo update-locale LANG=ru_RU.UTF-8

Wenn bei der Installation des Betriebssystems die russische Sprache ausgewählt wird, ist die Konfiguration nicht erforderlich.

Zusatz von 2026: Falls FlatPak installiert ist, bearbeiten Sie Ihre ~/.bashrc-Datei.
Zum Beispiel mit dem Texteditor nano:

nano ~/.bashrc

Fügen Sie die folgende Zeile am Ende hinzu:

export XDG_DATA_DIRS="/usr/local/share/:/usr/share/:/var/lib/flatpak/exports/share:/home/vladimir/.local/share/flatpak/exports/share"

Speichern Sie die Datei und beenden Sie nano:
Strg+S, Strg+X

Wie kann ich den Betrieb des XDG-Desktop-Portal-Portals sicherstellen, wenn es nicht startet?

Verwenden des Imports einer vom Benutzer umgebenen Systemvariablen:

Die meisten Betriebssysteme haben genug Folgendes:

systemctl --user import-environment XDG_CURRENT_DESKTOP

In Wayland:

systemctl --user import-environment WAYLAND_DISPLAY  XDG_CURRENT_DESKTOP

Re -launch und überprüfen Sie, ob das Portal funktioniert:

systemctl --user start xdg-desktop-portal.service
systemctl --user status xdg-desktop-portal.service

Wie überprüfe ich die Arbeit des XDG-Desktop-Portal.Service-Dienstes?

1) Sie müssen die Flatpak -Anwendung installieren und eine andere Anwendung darin installieren, z. B. den Chrombrowser wie geschrieben In einem früheren Artikel.

2) Überprüfen Sie zunächst, dass der Browser in der Liste der installierten Flatpak -Anwendungen vorhanden ist.

flatpak list

3) Start

flatpak run org.chromium.Chromium

4) Wählen Sie das Element "Die Datei öffnen" - durch Drücken der Taste Strg+O . Es sollte ein Systemdialog angezeigt werden, der den Inhalt des Home -Ordners anzeigt. Dies bedeutet, dass das Portal funktioniert.

Debuggen

dbus-monitor --session

und Starten einer Anwendung in einem anderen Fenster

flatpak run org.chromium.Chromium

Und drücken Ctrl+O:

Im Fenster dbus-monitor будет выведено много текста:
String "org.freedesktop.impl.portal.Request"
Fehlerzeit = 1729.
string "Объект по пути «/org/freedesktop/portal/desktop/request/1_88/handle_0» не существует"
Methode Call Time = 1729069549.931375 Absender =: 1.46 -> Ziel =: 1.49 Serial = 164 Path =/org/freedesktop/portal/desktop; interface = org.freedesktop.impl.portal.filechooser; Mitglied = OpenFile
object path "/org/freedesktop/portal/desktop/request/1_88/handle_0"
string "org.chromium.Chromium"
string "x11:0x3a00019"
string "Открытие файла"
array [
dict entry(
string "modal"
variant boolean true
)
dict entry(
string "filters"
variant array [
]
)
]

Starten Sie die Anzeige der URL oder des Dokuments mit XDG-Open

Anstatt eine Anwendung zu starten und ein Dokument daraus zu öffnen, können Sie einen einfachen Befehl verwenden xdg-open "имя файла" или URL.

Zum Beispiel:

xdg-open https://bfm.ru

oder

xdg-open 388643rus.pdf

PDF -Datei zum Testen - "Nachricht des CEO von UNESCO*Odre Azule по случаю Всемирного дня радио 13 февраля 2024 года": 388643Rus.pdf

  • UNESCO - Vereinte Nationen für Bildung, Wissenschaften und Kultur.

Das XDG-Open-Dienstprogramm ist im XDG-UTILS-Paket enthalten, das standardmäßig unter Linux installiert ist. Die Prozesse, die von ihren Arbeiten innerhalb des Flatpak -Containers gestartet wurden. Es gibt auch ein Paket flatpak-xdg-utils, в котором есть особая версия xdg-open, и приложение flatpak-spawn, которое позволяет действия в системе за пределами контейнера. Эта специальная версия xdg-open устанавливается по другому пути: /usr/libexec/flatpak-xdg-utils/ вместо /usr/bin/xdg-open. Установка пакета flatpak-xdg-utils, in der Regel nicht erforderlich.

Um die Rechte (Genehmigungen) von Containeranwendungen Flatpak zu verwalten, gibt es eine grafische Anwendung FlatSeal (com.github.tchx84.flatseal).

sudo flatpak install com.github.tchx84.Flatseal
flatpak run com.github.tchx84.Flatseal

FlatSeal Ermöglicht die Beschränkung der Anwendungsgenehmigung wie die Android -Einstellungen "Anwendungen und Benachrichtigungen" - "Bewerbungserlaubnis":

Zum Beispiel, Auflösungen DL -Browserchrom von flatpak:

  • Netzwerk - Ja
  • Interprozesente Kommunikation - ja
  • Fenstersystem X11 - Ja.
  • Soundserver Pulseaudio - Ja
  • Drucksystem - ja
  • GPU -Beschleunigung (Device = DRI) - Standardmäßig kann -> in Ja geändert werden
  • Alle Geräte (Webcam) - Ja
  • Alle Benutzerdateien (Dateisystem = Home) - Ja
  • Hintergrund (kann im Hintergrund funktionieren) - Nein
  • Benachrichtigungen (kann Benachrichtigungen senden) - Nein

Links zur Dokumentation:

Flatpak Desktop -Integration
XDG Desktop -Portal
*Flatpak-xdg-utils



Verwandte Veröffentlichungen