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 bash
D-Bus プロセスが開始されますが、それ以外はほとんど何も行われません。 を実行するとevince
、オンデマンドの GVfs プロセスも開始されます。