Evince в WSL2 не запоминает последнюю посещенную страницу

Evince в WSL2 не запоминает последнюю посещенную страницу

Я использую 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 по требованию.

Связанный контент