在 Nautilus 中,当我选择几个 PDF 文档并按 时Enter
,它们都会被打开,但顺序显然是随机的。是什么决定了这些文档的打开顺序?有没有办法按照它们在 Nautilus 中出现的顺序打开它们?
文件名列举为 1 到 7,最后更改的日期也遵循该顺序。但是当它们全部打开时,顶部的窗口可能是文件 4,接下来是文件 5,然后是文件 2、文件 7,等等。
答案1
它们是并行打开的。nautilus
将产生尽可能多的进程(这里的顺序并不重要),并且每个进程都将使用其中一个文件作为参数来执行您的 PDF 查看器。
所有这些 PDF 查看器都将独立工作,加载共享库,打开自己的 PDF 文件,连接到 X 服务器,并在某个时候要求 X 服务器显示窗口。哪一个会先做这件事,你无法控制。
为了保证订单,需要Windows管理员的配合。您需要 nautilus 要求窗口管理器告诉它第一个 PDF 查看器的窗口何时弹出,然后再运行下一个。
对于任何应用程序来说,可靠地做到这一点并不容易。nautilus
只知道它生成的用于执行 PDF 查看器的进程的 pid。并非所有应用程序都会告诉窗口管理器它们的 pid,如果它们这样做,它很可能是所生成的进程的子进程的 pid nautilus
(如 shell 脚本的情况),或者它很可能不会创建窗口根本...
答案2
如果不是在 Nautilus 中选择文件的顺序,我认为该顺序可以由目录中条目的物理顺序(使用 进行检查ls -lU
)或文件的日期(ls -lt
)来确定。
但如果顺序不确定(每次尝试都不同),则可能只是查看器进程需要打开、读取和呈现内容的时间,具体取决于进程和 I/O 调度程序。
要强制确定性顺序,您可以更改物理顺序/文件时间(如果这是决定因素)。或者创建一个执行此操作的脚本,从 Nautilus 获取文件列表并使用sort
,for
或许sleep
还有某种等待进程启动机制,并将其添加为 Nautilus 为该 MIME 类型提供的应用程序的替代方案。第二种选择可能更可靠。