如何在关闭Okular前运行脚本以保存并恢复PDF会话
让Okular自动恢复上次打开的PDF会话
我经常同时打开多个PDF文件阅读,希望能让Okular记住这些已打开的文件,重启后自动重新打开。我已经写了一段脚本,可以将当前打开的文档路径写入文件:
#!/usr/bin/bash file="/home/johndoe/.okular_docs" oku=$(qdbus | grep -i okular) [ -e $file ] && rm $file while read line do echo $(qdbus $oku $line org.kde.okular.currentDocument) >> $file done <<< $(qdbus $oku | grep -E "^/okular[0-9]*$")
现在需要实现关闭Okular前或者每次打开新文档时自动执行这个脚本,以下是具体方案:
方案一:关闭Okular时自动执行脚本
修改Okular的桌面启动文件,让程序退出后自动触发保存脚本:
- 找到Okular的桌面文件,通常路径是
/usr/share/applications/org.kde.okular.desktop(全局生效)或~/.local/share/applications/org.kde.okular.desktop(仅当前用户生效) - 将
Exec行修改为:
把Exec=bash -c "okular %F; /path/to/your/save_script.sh"/path/to/your/save_script.sh替换成你实际的脚本路径 - 给脚本添加执行权限:
chmod +x /path/to/your/save_script.sh
这样每次关闭Okular后,脚本会自动运行,保存当前所有打开的文档路径。
方案二:打开新文档时自动执行脚本
通过监听Okular的DBus信号,实现打开新文档时自动保存会话:
- 编写一个后台监听脚本(命名为
okular_session_monitor.sh):#!/usr/bin/bash dbus-monitor "interface='org.kde.okular',member='documentOpened'" | while read -r line; do if [[ $line == *"documentOpened"* ]]; then /path/to/your/save_script.sh fi done - 给这个监听脚本添加执行权限:
chmod +x okular_session_monitor.sh - 将该脚本加入系统自动启动:在KDE的「系统设置」→「开机和关机」→「自动启动」中添加这个脚本,确保每次登录后自动后台运行。
这样每次Okular打开新文档,都会触发保存脚本,实时更新已打开的文件列表。
恢复会话的方法
将Okular的启动命令修改为:
xargs -rd'\n' okular < ~/.okular_docs
之后启动Okular时,就会自动打开上次保存的所有PDF文件。
内容的提问来源于stack exchange,提问作者jo87casi
相关产品推荐
相关产品推荐

