
Ich verwende den Evince-PDF-Reader auf WSL2, aber er merkt sich nicht die zuletzt besuchte Seite. Jedes Mal, wenn ich eine PDF-Datei öffne, beginnt sie auf der ersten Seite in einem kleinen Fenster mit der Meldung:
chen@4-726:~/Documents/latex/notes/physics/tokamak$ Gdk-Message: 11:43:25.750: Unable to load hand2 from the cursor theme
Gdk-Message: 11:43:25.925: Unable to load hand2 from the cursor theme
Gdk-Message: 11:43:26.153: Unable to load hand2 from the cursor theme
ich lese einPostsagt, dass Evince Leseverläufe in speichern sollte ~/.local/share/gvfs-metadata/home
, aber ich sehe keinen Ordner gvfs-metadata
in WSL2.
Dannein weiterer Kommentarsagt:
Wenn Evince ohne GVFS-Unterstützung kompiliert wird, merkt es sich weder den Verlauf noch die zuletzt geöffnete Seite.
Wie kann ich also GVFS-Unterstützung für WSL2 erhalten und dafür sorgen, dass Evince sich den Leseverlauf merkt?
psmeine Systeminformationen
Alle meine Systeme scheinen die neueste Version zu haben:
Device name 1-039-11
Processor AMD Ryzen 9 5900X 12-Core Processor 3.70 GHz
Installed RAM 32.0 GB
Device ID D3418E8A-2C8C-4EC2-A836-7ABF7E5D9D51
Product ID 00330-71450-76029-AAOEM
System type 64-bit operating system, x64-based processor
Pen and touch No pen or touch input is available for this display
Edition Windows 11 Pro
Version 21H2
Installed on 1/11/2022
OS build 22000.708
Experience Windows Feature Experience Pack 1000.22000.708.0
Linux 1-039-11 5.10.102.1-microsoft-standard-WSL2 #1 SMP Wed Mar 2 00:30:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
.-/+oossssoo+/-. chen@1-039-11
`:+ssssssssssssssssss+:` -------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 22.04 LTS on Windows 10 x86_64
.ossssssssssssssssssdMMMNysssso. Kernel: 5.10.102.1-microsoft-standard-WSL2
/ssssssssssshdmmNNmmyNMMMMhssssss/ Uptime: 20 hours, 28 mins
+ssssssssshmydMMMMMMMNddddyssssssss+ Packages: 1922 (dpkg)
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Shell: bash 5.1.16
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Theme: Adwaita [GTK3]
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Icons: Adwaita [GTK3]
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Terminal: terminator
ossyNMMMNyMMhsssssssssssssshmmmhssssssso CPU: AMD Ryzen 9 5900X (24) @ 3.700GHz
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ GPU: 3448:00:00.0 Microsoft Corporation Device 008e
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Memory: 529MiB / 15952MiB
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
+sssssssssdmydMMMMMMMMddddyssssssss+
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
-+sssssssssssssssssyyyssss+-
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.
Antwort1
Kurze Antwort:
Angenommen, Sie verwenden Ubuntu:
sudo apt install gvfs
dbus-launch evince <file.pdf>
Scrollen Sie zu einer Stelle im PDF, beenden Sie Evince und:
dbus-launch evince <file.pdf>
Es sollte jetzt zum vorherigen Standort geöffnet werden.
Mehr Details:
Sie haben absolut Recht, dass Evince GVfs (das Gnome Virtual File System) zum Speichern seiner Lesezeichen verwendet.
Es gibt einige Gründe, warum dies unter WSL (standardmäßig) nicht funktioniert:
GVfs ist auf den meisten WSL-Distributionen nicht standardmäßig installiert.
GVfs erfordert eine D-Bus-Instanz für die Benutzersitzung. D-Bus ist, um die einfache Definition einesviel kompliziertere Seite:
eine einfache Möglichkeit für Anwendungen, miteinander zu kommunizieren
macht es einfach und zuverlässig, eine „Einzelinstanz“-Anwendung oder einen Daemon zu codieren und Anwendungen und Daemons bei Bedarf zu starten, wenn ihre Dienste benötigt werden
Daher verwendet Evince D-Bus, um eine einzelne Instanz des GVfs-Daemons zu starten oder sich daran zu verbinden, und verwendet dann GVfs, um das Lesezeichen zu speichern.
Aber diese D-Bus-Instanz wird normalerweise von Systemd (und/oder PAM) beim Anmelden für Sie eingerichtet.
Und WSL hat nicht wirklich das Konzept eines „Logins“ (normalerweise müssen Sie beim Starten von WSL nie ein Passwort eingeben). WSL bietet auchunterstützt Systemd nicht standardmäßig.
All dies zusammen bedeutet, dass Evince (bei einer Standard-WSL-Installation) Ihren letzten Standort/Ihr letztes Lesezeichen nicht verfolgt.
Die Installation von GVfs ist der erste Schritt.
Dann haben Sie zwei Möglichkeiten:
dbus-launch evince
bei jedem Start, wie im obigen Beispiel.Oder verwenden Sie beim Starten von WSL:
wsl ~ -e dbus-launch bash # Or your preferred shell
Dadurch wird Ihre Bash-Shell in einer D-Bus-Benutzersitzung gestartet und anschließend durch einfaches Ausführen
evince <file.pdf>
der letzte Speicherort geöffnet.
Sie können einige der Vorgänge sehen, indem Sie ps -efH
zwischen den einzelnen Befehlen ausführen. Sie werden sehen, dass dbus-launch bash
ein D-Bus-Prozess gestartet wird, aber sonst nicht viel. Beim Ausführen evince
werden außerdem GVfs-Prozesse auf Anforderung gestartet.