Nautilusファイルマネージャに開いているタブを記憶させるにはどうすればよいですか?


10

Nautilusファイルマネージャを閉じてから開くまで、開いているタブを保持することはできますか?

できれば、異なるログアウトと再起動の間でも。



1
1つのセッションで、または再起動/ログアウト後?
Jacob Vlijm 2016

@JacobVlijmは、再起動/ログアウト後も永続的です。
orschiro 2016

Partoのリンクが解決策を提供しない限り、nautilusのコマンドラインオプション/統合はかなり制限されています。現在開いているディレクトリを読み取るオプションも、コマンドラインから変更するオプションもありません。見えないものを思い出すことは私には不可能に思えます。1つのセッション内では、トリック&チートオプションも可能です。
Jacob Vlijm 2016

@JacobVlijm 1つのセッション内で記憶を実現する方法を説明しますか?そもそもそれは素晴らしいことです。:)
orschiro 2016

回答:


7

(非常に)nautilusの限られたコマンドラインオプション

残念ながら、nautilusは、開いているウィンドウのディレクトリを読み取るコマンドラインオプションを提供していません。また、既存のウィンドウを別のディレクトリに送信するオプションもありません。見えないものは思い出せないので、一目で選択肢が不足しています。

しかしながら

私たちにはxdotool、しないことをするのでnautilusはなく、少なくともあなたが説明する動作を偽ることがあります。それがどのように行われるかを知らなかった場合、「あなたはそれを信じる」ような方法でそれを行うことができます。

以下の解決策は再起動後も存続しませんが、「記憶」(場合によってはタブ付き)ウィンドウと開いているすべてのディレクトリは1つのセッション内で十分に可能です。「第2の選択」としてそれに興味があると述べたので、ここにあります。

使い方; プロセス

ウィンドウを閉じてタブと開いたディレクトリを保持することはできませんが、を使用して、既存のウィンドウを一見(そして完全に)見えなくすることができますxdotool

その後、マップされていない可能性のあるウィンドウ最初に検索して再マップnautilusするようにランチャーの動作を変更すると、新しいウィンドウを開く前に、最後に使用されたウィンドウを覚えている場合とまったく同じ動作になります。nautilus

設定方法

  1. 以下のスクリプトを空のファイルにコピーし、名前を付けて保存します 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)
  2. スクリプトには、wmctrlとの両方が必要xdotoolです。

    sudo apt-get install wmctrl xdotool
    
  3. 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
    
  4. ローカルコピーをgeditで開きます。

    gedit ~/.local/share/applications/org.gnome.Nautilus.desktop
    

    (の場合15.04 +

    で始まる最初の行を探しますExec=。それを次のように変更します。

    Exec=python3 /path/to/remember.py
    

    ファイルを保存して閉じます。

  5. 同じコマンドでキーボードショートカットを作成します。[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]を選択します。「+」をクリックして、コマンドを追加します。

    python3 /path/to/remember.py
    
  6. ログアウトしてからログインし直してください

使い方

使い方はとても簡単です:

  • ウィンドウを開くには、通常どおり、nautilusランチャーをクリックします。ウィンドウを好きなようにタブで移動します。

    ここに画像の説明を入力してください

  • ウィンドウを完全に閉じるには、ウィンドウの「閉じる」(x)ボックスをクリックしてウィンドウを閉じます。

  • ウィンドウとそのすべてのタブを保持するには
    、ショートカットキーを押します。ウィンドウが消えます(一見閉じます)。

    ここに画像の説明を入力してください

  • 次にランチャーをクリックすると、nautilusウィンドウは前回とまったく同じように表示され、ウィンドウの位置も保持されます。

    ここに画像の説明を入力してください

それでおしまい

注意

  • 私が実行したテストでは、マイナス面は見つかりませんでした(14.04)。あなたが何かに遭遇したかもしれないなら、言及してください!
  • 使用方法」セクションで、私はnautilusアイコンをクリックして、マップされていない可能性のあるウィンドウを再マップすることを提案しました。ただし、ショートカットキーでも同じことができるので、最も便利な方法を確認できます。また、1 つ以上のフォルダのマッピングを解除した後でダブルクリックしてフォルダを開いた場合、マッピングされていないフォルダはショートカットによって再マッピングされます。

編集:

Nemoユーザー

Nemoユーザーも上記のソリューションを同様に使用できますが、

  • スクリプトのヘッドセクションで、次のように変更します。

    app = "nautilus"
    

    に:

    app = "nemo"
    
  • ポイント3では、以下を使用します。

    cp /usr/share/applications/nemo.desktop ~/.local/share/applications
    
  • ポイント4では、以下を使用します。

    gedit ~/.local/share/applications/nemo.desktop
    

テスト済み、nemoで動作することが判明


優れた作業ソリューションであり、十分に文書化されています。どうもありがとうございました!
orschiro 2016

@orschiroがうまくいけばいつも楽しいです:)どういたしまして!
Jacob Vlijm 2016

5

Nautilusにはその機能がないため、問題がなければ、代わりに他のファイルマネージャを使用することをお勧めします

これは、トリックを実行する1つの代替アプリです。SpaceFM

インストール方法は次のとおりです。

もちろん、最後のタブを再び開くなどの豊富な機能があります

これをデフォルトのファイルマネージャにするには:

xdg-mime default spacefm.desktop inode/directory



0

フォルダにアクセスする最も簡単な方法はブックマークです。タブを開いたままにすることはありませんが、少なくとも目的のフォルダーをすばやく表示できます(考えれば、ブックマークはタブとして機能します)。

Nautilusでフォルダーを開き、ブックマークメニューに移動してブックマークを追加するだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.