有没有快捷方式可以重新打开最近关闭的程序?

有没有快捷方式可以重新打开最近关闭的程序?

我找到了这个KDE Open最近关闭的应用程序问题,这正是我想要做的,但是我在 ubuntu 上。该问题的唯一答案是启动器的“最近使用”部分,但最近使用的列表不包括锁定到启动器的应用程序。

通常情况下,我通过终端运行大多数程序,但浏览器之类的程序我会从启动器运行。有时我会不小心关闭它们。

简而言之:我希望大多数浏览器都具有将“ctrl-shift-t”选项卡功能应用于 ubuntu 中的程序。

如果它以脚本的形式出现,那就很好了;我确实没有太多编写 bash 脚本的经验,因此如果能提供解释或文档链接就更好了。

磁盘上是否有存储最近关闭的程序列表?我知道可能是日志,但我想弄清楚如何解析会很麻烦?我想我希望某个地方有一个不错的小日志文件,可以记录关闭/打开的应用程序以及运行/启动它们的程序的路径。另外:如果我想让 ubuntu 创建这样的日志文件,我该怎么做?

答案1

正如评论中所要求的,这是一个概念性的答案,没有可立即使用的脚本。

概念解释;如何记录最近关闭的应用程序


介绍

从进程和 pid 列表中,很难确定哪个属于应用程序或另一个进程。不过,既然您提到了 GUI 应用程序,我们可以记录视窗,它为我们提供了判断最近关闭的申请所需的所有信息。

使用 wmctrl 列出正在运行的 GUI 应用程序

控制端(默认情况下不存在于您的系统中)是一个命令行工具,可以为您提供有关当前现有窗口的信息。命令:

wmctrl -lp

生成一个窗口列表,如下所示:

---
0x02c0000c  0 23772  jacob-System-Product-Name Hud
0x02e0000a -1 23877  jacob-System-Product-Name Desktop
0x0480001d  0 28367  jacob-System-Product-Name Ask Ubuntu General Room | chat.stackexchange.com - Mozilla Firefox
0x05200007  0 26724  jacob-System-Product-Name System Monitor
0x05800084  0 27183  jacob-System-Product-Name *Untitled Document 1 - gedit
---

在列表的第二列中,你可以看到当前打开的窗口的 pid,例如:2387728367

从这些 pid 中,我们可以使用以下命令检索拥有该窗口的进程(应用程序):

ps -o cmd= <pid>

例如:

$ ps -o cmd= 27183
gedit

然后,我们需要做的就是运行一个周期为几秒钟的循环,将拥有窗口(=应用程序)的进程(唯一)列表与几秒钟前的列表进行比较。如果某个进程“离开”了列表,则该进程是最近关闭的窗口。简而言之:

(概念)循环概述(python 风格)

applications1 = get_applications()
while True:
    time.sleep(3)
    applications2 = get_applications()
    closed = [app for app in applications1 if not app in applications2]
    if closed:
        most_recent = closed[0]
        # store the process in a file, to be available to run as most recently closed
        open(f, "wt").write(most_recent)
    application1 = application2

其中 f 是最新应用程序写入的文件的路径。随后让另一个进程/命令启动文件中的应用程序,设置就完成了。

语言?

毫无疑问,几乎所有脚本语言都可以做到这一点。对我来说,python 似乎是轻松生成此类脚本的最佳语言……

笔记

请注意,上面的原理图代码仅用于示例,没有测试过的代码!

相关内容