I use the Evince pdf reader on WSL2, but it isn't remembering the last visited page. Every time I open a pdf file, it starts from the first page in a small window with the message:
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
I read a post saying that evince should store reading histories in ~/.local/share/gvfs-metadata/home
, but I don't see folder gvfs-metadata
in WSL2.
Then another comment says:
If evince is compiled without gvfs-support it does not remembers the history or last opened page.
So how can I get gvfs-support for WSL2 and make Evince remember reading history?
ps my system inforation
All my system seems to have the newest version:
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+/-.
Best Answer
Short answer:
Assuming that you are using Ubuntu:
Scroll to a location in the PDF, then exit Evince and:
It should now open to the previous location.
More detail:
You are absolutely right that Evince uses GVfs (the Gnome Virtual File System) to store its bookmarks.
There are a few reasons why this doesn't work (by default) on WSL:
GVfs isn't installed by default on most WSL distributions.
GVfs requires a user-session D-Bus instance. D-Bus is, to take the simple definition from a much more complicated page:
So Evince uses D-Bus to launch-or-attach-to a single instance of the GVfs daemon, and then uses GVfs to store the bookmark.
But that D-Bus instance is normally set up for you by Systemd (and/or PAM) on login.
And WSL doesn't really have the concept of a "login" (you typically never need to enter a password when starting WSL). WSL also doesn't support Systemd out of the box.
All of this combines to mean that (in a default WSL installation) Evince isn't going to keep track of your last location/bookmark.
Installing GVfs is the first step.
Then, you have two options:
dbus-launch evince
each time you start, as in the example above.Or, when you start WSL, use:
That will start your Bash shell in a D-Bus user session, and then simply doing
evince <file.pdf>
will open to the last location.You can see some of what is happening by running
ps -efH
between each command. You'll see thatdbus-launch bash
will start a D-Bus process, but not much else. Then runningevince
will also start up on-demand GVfs processes.