Nautilusで選択されたファイル名を受け取るカスタムアクションをgnome/ubuntu/nautilusに登録するにはどうすればよいですか?
〜/ .local/share/nautilus/scriptsにスクリプトを書くと、コンテキストメニューに新しいエントリが表示されます。このスクリプトをショートカット経由で呼び出す方法は?
これは Nautilus:ディレクトリ内のファイルをお気に入りとしてマークするための追加質問です
Ubuntu 16.04を使用します
以下の答えは、最初にあなたの質問に文字通り答えます。
スクリプトを呼び出し、現在選択されているファイルを引数として使用する方法
[1]
。
ただし、リンクされた質問で受け入れられた回答は、nautilusスクリプトを使用します。これは、nautilusから引数としてファイルを受け取ります。 これはショートカットからは機能しません。右クリックinnautilusの場合のみです。したがって、[2]
では、リンクされた質問から回答へのスクリプトの機能を追加したため、ショートカットから([2]
で)いずれか1つを実行するだけで済みます。
[1]
16.04以降*では、選択したファイルを引数として使用してスクリプトを実行します以下の短いスクリプトを使用するだけです。現在選択されているファイルを「読み取り」、ファイルを引数としてスクリプトを実行します。
#!/usr/bin/env python3
import subprocess
import pyperclip
import time
time.sleep(1)
subprocess.call(["xdotool", "key", "Control_L+c"])
for item in pyperclip.paste().splitlines():
subprocess.Popen(["/path/to/script", item])
python3-pyperclip
およびxdotool
をインストールします。
Sudo apt install python3-pyperclip xdotool
上記のスクリプトを空のファイルにコピーし、run_withselected.py
としてスクリプトに保存します
"/path/to/script"
実行するスクリプトへの実際のパスによって。 絶対パスを使用、引用符で囲みます。
ショートカットキーに追加します。[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]を選択します。 「+」をクリックして、コマンドを追加します。
python3 /path/to/run_withselected.py
[2]
ただしただし、別の方法で引数を取得するため、他の回答からリンクされたnautilusスクリプトは実行されないことに注意してくださいからnautilusに直接。したがって、リンクされた質問のスクリプトの機能を、上記のものと組み合わせてしました。
その場合、他の回答からの他のスクリプトはもう必要ありません。
ファイルを選択
ファイルをマーク(トグル)するショートカットを押します
#!/usr/bin/env python3
import subprocess
import pyperclip
import shutil
import os
import time
time.sleep(1)
def npath(p, f):
return os.path.join(p, f)
subprocess.call(["xdotool", "key", "Control_L+c"])
for item in pyperclip.paste().splitlines():
data = item.rsplit("/", 1); path = data[0]; name = data[1]
newname = name[2:] if name.startswith("*0") else "*0"+name
shutil.move(npath(path, name), npath(path, newname))
ファイルを選択
ショートカットを押して「My_Favorites」にリンクを作成(トグル)します
#!/usr/bin/env python3
import subprocess
import pyperclip
import shutil
import os
import time
fav = os.path.join(os.environ["HOME"], "My_Favorites")
try:
os.mkdir(fav)
except FileExistsError:
pass
time.sleep(1)
subprocess.call(["xdotool", "key", "Control_L+c"])
for item in pyperclip.paste().splitlines():
name = item.rsplit("/", 1)[-1]
link = os.path.join(fav, name)
try:
os.symlink(item, link)
except FileExistsError:
os.remove(link)
スクリプトにはpython3-pyperclip
およびxdotool
が必要です。
Sudo apt install python3-pyperclip xdotool
上記のスクリプトを空のファイルにコピーし、toggle_selected.py
として保存します
ショートカットキーの追加:[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]を選択します。 「+」をクリックして、コマンドを追加します。
python3 /path/to/toggle_selected.py
xdotool
を使用して仮想的に押します Ctrl+Cその後、スクリプトは(内部で)選択したファイルのリストを作成します。
pyperclip.paste().splitlines()
これらのファイルは、その後、ファイルの名前を変更するための引数として使用されます。
for item in pyperclip.paste().splitlines():
data = item.rsplit("/", 1); path = data[0]; name = data[1]
newname = name[2:] if name.startswith("*0") else "*0"+name
shutil.move(npath(path, name), npath(path, newname))
またはシンボリックリンクを作成します:
for item in pyperclip.paste().splitlines():
name = item.rsplit("/", 1)[-1]
try:
os.symlink(item, os.path.join(fav, name))
except FileExistsError:
os.remove(link)
最後にtime.sleep(1)
は、xdotool
による「実際の」キーの押下がシミュレートされたキー押下と干渉しないようにすることです。
... pyperclipをインストールするための別の手順が必要になります。
Sudo apt-get install python3-pip xdotool
Sudo pip3 install pyperclip