是否可以在关闭和打开Nautilus文件管理器之间保留打开的选项卡?
最好甚至跨不同的注销和重新启动。
是否可以在关闭和打开Nautilus文件管理器之间保留打开的选项卡?
最好甚至跨不同的注销和重新启动。
Answers:
不幸的是,鹦鹉螺没有提供命令行选项来读取其窗口的打开目录,也没有任何选项可将现有窗口发送到另一个目录。由于您不记得自己看不到的内容,因此我们一目了然。
然而
我们确实有xdotool
,不是做不做的事情nautilus
,而是至少要假冒您描述的行为。如果您不知道如何完成,我们可以以“您会相信”的方式进行操作。
尽管以下解决方案无法在重新启动后继续存在,但在一个会话中很可能会“记住”(可能带有选项卡)窗口和所有打开的目录。由于您提到对此感兴趣,因此它是“第二选择”。
尽管我们无法关闭窗口并保留其选项卡和打开的目录,但在的帮助下,我们可以使现有的窗口看似(完全)消失xdotool
。
如果我们随后nautilus
以某种方式更改启动器的行为,使其首先查找可能的未映射窗口以进行重新映射,则在打开新窗口之前,实际上,我们具有与记住上次使用的窗口完全相同的行为nautilus
。
将以下脚本复制到一个空文件中,另存为 remember.py
#!/usr/bin/env python3
import subprocess
import os
app = "nautilus"
wfile = os.environ["HOME"]+"/.unmapped_"+app
def get(cmd):
# simply a helper function
return subprocess.check_output(cmd).decode("utf-8").strip()
def check_windowtype(w_id):
# check the type of window; only unmap "NORMAL" windows
return "_NET_WM_WINDOW_TYPE_NORMAL" in get(["xprop", "-id", w_id])
def get_pid(app):
# (try to) get the pid of the application
try:
return get(["pgrep", app])
except subprocess.CalledProcessError:
pass
def get_matches(pid):
# get the window list, select the valid (real) app's windows
ws = get(["wmctrl", "-lpG"]).splitlines()
matches = [w.split() for w in ws if pid in w]
return [w for w in matches if check_windowtype(w[0]) == True]
try:
# try to read the file with unmapped windows
wininf = [l.split() for l in open(wfile).readlines()]
except FileNotFoundError:
# if there are no, unmap the current app's windows
filebrowserwins = get_matches(get_pid(app))
if filebrowserwins:
open(wfile, "wt").write(("\n").join((" ").join(l) for l in filebrowserwins))
for w in [w[0] for w in filebrowserwins]:
subprocess.Popen(["xdotool", "windowunmap", w])
else:
arg = "--new-window" if app == "nautilus" else ""
subprocess.Popen([app, arg])
else:
# re- map unmapped windows
for w in wininf:
wid = w[0]; geo = w[3:7]
subprocess.call(["xdotool", "windowmap", wid])
subprocess.Popen(["wmctrl", "-ir", wid, "-e", "0,"+(",").join(geo)])
os.remove(wfile)
该脚本同时需要wmctrl
和xdotool
:
sudo apt-get install wmctrl xdotool
将nautilus
启动器从复制/usr/share/applications
到~/.local/share/applications
对于15.04及更高版本:
cp /usr/share/applications/org.gnome.Nautilus.desktop ~/.local/share/applications
对于较早的Ubuntu版本:
cp /usr/share/applications/nautilus.desktop ~/.local/share/applications
使用gedit打开本地副本:
gedit ~/.local/share/applications/org.gnome.Nautilus.desktop
(如果是15.04 +
)
并寻找以开头的第一行Exec=
。将其更改为:
Exec=python3 /path/to/remember.py
保存并关闭文件。
使用相同的命令创建键盘快捷方式:选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。单击“ +”并添加命令:
python3 /path/to/remember.py
现在注销并重新登录
使用非常简单:
要打开一个窗口,请照常进行:单击nautilus启动器。随意选择窗口选项卡:
要关闭窗口明确通过点击窗口的“关闭”(靠近它X)框。
要保留窗口及其所有选项卡:
按快捷键。窗口将消失(似乎关闭)。
下次单击启动器时,鹦鹉螺窗口将与上次完全相同,甚至保留窗口位置。
而已
Nemo用户可以同样使用上述解决方案,但是:
在脚本的开头部分,更改:
app = "nautilus"
变成:
app = "nemo"
在第3点中,使用:
cp /usr/share/applications/nemo.desktop ~/.local/share/applications
在第4点中,使用:
gedit ~/.local/share/applications/nemo.desktop
经过测试,证明与nemo合作
试用这些脚本来保存和恢复nautilus文件管理器的选项卡。 https://github.com/susurri/nautilus_save_tabs/