WSL2 の Evince は最後にアクセスしたページを記憶しません

WSL2 の Evince は最後にアクセスしたページを記憶しません

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 Virtual File System) を使用するというのはまったくその通りです。

WSL でこれが (デフォルトでは) 機能しない理由はいくつかあります。

  • GVfs は、ほとんどの WSL ディストリビューションではデフォルトでインストールされません。

  • GVfsはユーザーセッションD-Busインスタンスを必要とします。D-Busは、より複雑なページ:

    アプリケーション同士が通信するための簡単な方法

    「単一インスタンス」アプリケーションまたはデーモンをコーディングし、サービスが必要なときにオンデマンドでアプリケーションとデーモンを起動することが簡単かつ信頼性が高くなる

    したがって、Evince は D-Bus を使用して GVfs デーモンの単一インスタンスを起動または接続し、次に GVfs を使用してブックマークを保存します。

  • ただし、その D-Bus インスタンスは通常、ログイン時に Systemd (および/または PAM) によって設定されます。

  • そしてWSLには「ログイン」という概念はありません(通常、WSLを起動するときにパスワードを入力する必要はありません)。WSLはまたSystemdをそのままではサポートしていない

これらすべてを組み合わせると、(デフォルトの WSL インストールでは) Evince は最後の場所/ブックマークを追跡しないことになります。

GVfs をインストールすることが最初のステップです。

その場合、2 つのオプションがあります。

  • dbus-launch evince上記の例のように、起動するたびに実行されます。

  • または、WSL を起動するときに次のコマンドを使用します。

    wsl ~ -e dbus-launch bash # Or your preferred shell
    

    これにより、D-Bus ユーザー セッションで Bash シェルが起動し、実行するとevince <file.pdf>最後の場所が開きます。

ps -efH各コマンドの間に を実行すると、何が起こっているかがわかります。dbus-launch bashD-Bus プロセスが開始されますが、それ以外はほとんど何も行われません。 を実行するとevince、オンデマンドの GVfs プロセスも開始されます。

関連情報