使用启动器中的动态快速列表从 LibreOffice 访问最近使用的文档将是一个很棒的功能。关于如何创建自定义静态快速列表有相当多的经验。
但是,有没有人可以就如何为lo 中最近使用的文档构建动态快速列表提供一些建设性的指导?
Ubuntu wiki对如何使用 python 或 vala 创建快速列表有一个非常简短的描述。我对这两种方法都没有经验,也没有找到用于动态快速列表的综合示例脚本。因此,我正在寻找一些更简单的方法来实现它或已经完成/看过它的人。
使用启动器中的动态快速列表从 LibreOffice 访问最近使用的文档将是一个很棒的功能。关于如何创建自定义静态快速列表有相当多的经验。
但是,有没有人可以就如何为lo 中最近使用的文档构建动态快速列表提供一些建设性的指导?
Ubuntu wiki对如何使用 python 或 vala 创建快速列表有一个非常简短的描述。我对这两种方法都没有经验,也没有找到用于动态快速列表的综合示例脚本。因此,我正在寻找一些更简单的方法来实现它或已经完成/看过它的人。
将动态“最近使用”部分添加到应用程序的启动器
应用程序与上述动态快速列表条目的完全集成很可能需要从应用程序内部完成。毕竟,关于已用文件的最直接信息来自应用程序本身。
但是,由于编辑源代码超出了我们的工作范围,所以这不是我们要走的路。
然后呢?
这并不意味着我们不能从“外部”获得几乎完全相同的结果,甚至可能以更灵活和通用的方式。我们需要的所有信息都在动态更新的文件中:
~/.local/share/recently-used.xbel
,我们可以从中检索打开文件的完整历史记录、相应的日期和时间信息以及使用的应用程序。此外,将动态更新的部分添加到启动器中可以很好地作为“传统”(静态)部分的一部分来完成。解决方案的关键是创建一个处理上述操作的进程,而不会给您的系统增加明显的负担。
如问题链接中所述,无论如何都需要一些后台进程来跟踪更改并传递说明。
下面的脚本几乎就是这样做的。
解决方案; 后台脚本
下面脚本中的值是专门为
LibreOffice
它的文档设置的。无需任何编辑,它可用于将最近使用的 - 部分添加到LibreOffice-Writer
启动器。它将显示由任何LibreOffice
-modules 打开的最后 10 个使用的文档。但是,该解决方案可用于将“最近使用”部分添加到许多应用程序中,其中
.desktop
包含/usr/share/applications
. 由于文件~/.local/share/recently-used.xbel
是Gtk
相关的,因此带有Gtk
窗口的应用程序很可能是我们的潜在候选者(即,如果应用程序打开并编辑文件)。此外,要显示的文件数量是任意的。它看起来如何
该解决方案在 Unity 启动器的目标启动器中添加一个部分,显示任意数量的最近使用的文件,例如:
显示最后七个文件:
或最后十个文件:
然而,同样容易,我们可以给
gedit
启动器一个动态部分,显示最后七个文件,打开gedit
(见下图)如何使用
假设您预装了 LibreOffice(下载的版本没有脚本需要的引用
.desktop
文件/usr/share/applications
,但在其他地方,如果您需要设置单独下载的 LO 版本,请提及)将下面的脚本复制到一个空文件中,另存为
dynamic_recent.py
ForLibreOffice
,进程名称为soffice
,脚本中已经设置正确。在脚本的 head 部分,您可以设置许多选项:
大多数选项不言自明,如果您想将动态部分添加到
LO-Writer
启动器,请保持原样。如果没有,请设置适当的启动器。通过从终端运行来测试运行脚本:
该脚本将全局
.desktop
文件复制到~/.local/share/applications
(在本例中~/.local/share/applications/libreoffice-writer.desktop
)。将本地副本拖到启动器(否则您需要注销/登录)。如果一切正常,请将其添加到启动应用程序:Dash > Startup Applications > Add。添加命令:
在其他应用程序上使用它
如前所述,您可以轻松地使用脚本将动态“最近使用”部分添加到其他应用程序的启动器。为此,请参阅
gedit
脚本 head 部分的示例设置:这个怎么运作
该脚本定期查看文件
~/.local/share/recently-used.xbel
以查找匹配的文件,使用LibreOffice
(processname:soffice
)打开它使用一种非常快速的算法来执行此操作,一次通过文件“拍摄”,以检索所需的行(每个“记录”两个)。结果是脚本的果汁非常低。
一旦从文件中检索到相关行,这些行就会按日期/时间排序,从而创建相应应用程序最近使用的文件的“前十名”(或任何其他数量)。
.desktop
文件才会更新。在后台运行脚本时,我无法注意到或测量系统的任何额外负载。
在 14.04 / 15.10 测试
如何恢复原始启动器
只需删除启动器的本地副本
~/.local/share/applications
笔记
如果您使用Unity Quicklist Editor编辑启动器(快速列表),则应避免使用此答案中动态更新的“上次使用”部分编辑启动器。您使用快速列表编辑器所做的编辑将立即被脚本覆盖。
您可以手动编辑您的快速列表,但请确保在- 行之前(左侧)添加新项目
divider1
Actions=
Actions=Window;Document;
分频器1;aap.sh;Todo;pscript_2.py;currdate;bulkmail_llJacob;verhaal;test doc;
右侧的所有项目都
divider1
属于动态更新的部分。主要编辑
刚刚进行了一些重大改进:
.xbel
文件(因为如果应用程序未运行,则最近使用的列表不会发生更改)。该脚本的果汁已经很低,但现在,只关注应用程序是否运行,对您的系统意味着更少。.xbel
文件两次提到了新文件;一个有扩展名,一个没有扩展名。现在已经消除了这种影响。