
Я использую Evince pdf reader на WSL2, но он не запоминает последнюю посещенную страницу. Каждый раз, когда я открываю файл 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 должен хранить историю чтения в ~/.local/share/gvfs-metadata/home
, но я не вижу папку gvfs-metadata
в WSL2.
Затемеще один комментарийговорит:
Если evince скомпилирован без поддержки gvfs, он не запоминает историю или последнюю открытую страницу.
Так как же мне получить поддержку gvfs для WSL2 и заставить 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:
GVfs не установлен по умолчанию в большинстве дистрибутивов WSL.
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
Это запустит оболочку Bash в сеансе пользователя D-Bus, а затем простое выполнение
evince <file.pdf>
откроет последнее местоположение.
Вы можете увидеть часть того, что происходит, запуская ps -efH
между каждой командой. Вы увидите, что это dbus-launch bash
запустит процесс D-Bus, но не более того. Затем запуск evince
также запустит процессы GVfs по требованию.