You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在关闭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的桌面启动文件,让程序退出后自动触发保存脚本:

  1. 找到Okular的桌面文件,通常路径是/usr/share/applications/org.kde.okular.desktop(全局生效)或~/.local/share/applications/org.kde.okular.desktop(仅当前用户生效)
  2. 将Exec行修改为:
    Exec=bash -c "okular %F; /path/to/your/save_script.sh"
    
    把/path/to/your/save_script.sh替换成你实际的脚本路径
  3. 给脚本添加执行权限:
    chmod +x /path/to/your/save_script.sh
    

这样每次关闭Okular后,脚本会自动运行,保存当前所有打开的文档路径。

方案二:打开新文档时自动执行脚本

通过监听Okular的DBus信号,实现打开新文档时自动保存会话:

  1. 编写一个后台监听脚本(命名为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
    
  2. 给这个监听脚本添加执行权限:
    chmod +x okular_session_monitor.sh
    
  3. 将该脚本加入系统自动启动:在KDE的「系统设置」→「开机和关机」→「自动启动」中添加这个脚本,确保每次登录后自动后台运行。
    这样每次Okular打开新文档,都会触发保存脚本,实时更新已打开的文件列表。

恢复会话的方法

将Okular的启动命令修改为:

xargs -rd'\n' okular < ~/.okular_docs

之后启动Okular时,就会自动打开上次保存的所有PDF文件。

内容的提问来源于stack exchange,提问作者jo87casi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:45:08