
我在 WSL2 上使用 Evince pdf 閱讀器,但它不記得上次造訪的頁面。每次我打開 pdf 文件時,它都會從小視窗中的第一頁開始,並顯示以下訊息:
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
我讀了一篇郵政說 evince 應該將閱讀歷史儲存在 中,但我在 WSL2 中~/.local/share/gvfs-metadata/home
沒有看到資料夾。gvfs-metadata
然後另一則評論說:
如果 evince 是在沒有 gvfs 支援的情況下編譯的,它不會記住歷史記錄或上次開啟的頁面。
那麼我怎麼才能獲得 WSL2 的 gvfs 支援並讓 Evince 記住閱讀歷史呢?
附註我的系統訊息
我的所有系統似乎都有最新版本:
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+/-.
答案1
簡短回答:
假設您使用的是 Ubuntu:
sudo apt install gvfs
dbus-launch evince <file.pdf>
捲動到 PDF 中的某個位置,然後退出 Evince 並:
dbus-launch evince <file.pdf>
現在它應該打開到以前的位置。
更多詳情:
您說 Evince 使用 GVfs(Gnome 虛擬檔案系統)來儲存其書籤,這是完全正確的。
這在 WSL 上不起作用(預設)有幾個原因:
大多數 WSL 發行版上預設不安裝 GVfs。
GVfs 需要使用者會話 D-Bus 實例。 D-Bus 的簡單定義是更複雜的頁面:
應用程式之間相互溝通的簡單方法
使得編寫「單一實例」應用程式或守護程式變得簡單可靠,並在需要服務時按需啟動應用程式和守護程式
因此,Evince 使用 D-Bus 來啟動或附加到 GVfs 守護程式的單一實例,然後使用 GVfs 來儲存書籤。
但該 D-Bus 實例通常由 Systemd(和/或 PAM)在登入時為您設定。
而且 WSL 並不真正具有「登入」的概念(啟動 WSL 時通常不需要輸入密碼)。 WSL也不支援開箱即用的 Systemd。
所有這些結合起來意味著(在預設的 WSL 安裝中)Evince 不會追蹤您的最後位置/書籤。
安裝 GVfs 是第一步。
然後,您有兩個選擇:
dbus-launch evince
每次啟動時,如上例所示。或者,當您啟動 WSL 時,請使用:
wsl ~ -e dbus-launch bash # Or your preferred shell
這將在 D-Bus 使用者會話中啟動 Bash shell,然後簡單地
evince <file.pdf>
打開到最後一個位置。
ps -efH
您可以透過在每個命令之間運行來查看正在發生的一些情況。您將看到這dbus-launch bash
將啟動 D-Bus 進程,但除此之外就沒有什麼其他的了。然後運行evince
也會啟動按需的GVfs進程。