Nautilusファイルマネージャを閉じてから開くまで、開いているタブを保持することはできますか?
できれば、異なるログアウトと再起動の間でも。
Nautilusファイルマネージャを閉じてから開くまで、開いているタブを保持することはできますか?
できれば、異なるログアウトと再起動の間でも。
回答:
残念ながら、nautilusは、開いているウィンドウのディレクトリを読み取るコマンドラインオプションを提供していません。また、既存のウィンドウを別のディレクトリに送信するオプションもありません。見えないものは思い出せないので、一目で選択肢が不足しています。
しかしながら
私たちにはxdotool
、しないことをするのでnautilus
はなく、少なくともあなたが説明する動作を偽ることがあります。それがどのように行われるかを知らなかった場合、「あなたはそれを信じる」ような方法でそれを行うことができます。
以下の解決策は再起動後も存続しませんが、「記憶」(場合によってはタブ付き)ウィンドウと開いているすべてのディレクトリは1つのセッション内で十分に可能です。「第2の選択」としてそれに興味があると述べたので、ここにあります。
ウィンドウを閉じてタブと開いたディレクトリを保持することはできませんが、を使用して、既存のウィンドウを一見(そして完全に)見えなくすることができます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)ボックスをクリックしてウィンドウを閉じます。
ウィンドウとそのすべてのタブを保持するには
、ショートカットキーを押します。ウィンドウが消えます(一見閉じます)。
次にランチャーをクリックすると、nautilusウィンドウは前回とまったく同じように表示され、ウィンドウの位置も保持されます。
それでおしまい
Nemoユーザーも上記のソリューションを同様に使用できますが、
スクリプトのヘッドセクションで、次のように変更します。
app = "nautilus"
に:
app = "nemo"
ポイント3では、以下を使用します。
cp /usr/share/applications/nemo.desktop ~/.local/share/applications
ポイント4では、以下を使用します。
gedit ~/.local/share/applications/nemo.desktop
テスト済み、nemoで動作することが判明
Nautilusにはその機能がないため、問題がなければ、代わりに他のファイルマネージャを使用することをお勧めします。
これは、トリックを実行する1つの代替アプリです。SpaceFM
もちろん、最後のタブを再び開くなどの豊富な機能があります。
これをデフォルトのファイルマネージャにするには:
xdg-mime default spacefm.desktop inode/directory
これらのスクリプトを試して、nautilusファイルマネージャのタブを保存および復元します。 https://github.com/susurri/nautilus_save_tabs/
フォルダにアクセスする最も簡単な方法はブックマークです。タブを開いたままにすることはありませんが、少なくとも目的のフォルダーをすばやく表示できます(考えれば、ブックマークはタブとして機能します)。
Nautilusでフォルダーを開き、ブックマークメニューに移動してブックマークを追加するだけです。