Мне не нравится открывать десятки терминалов. Существует ли способ добавить Открытый в текущем Терминале вместо Открытого в Терминале при использовании Наутилуса?
Грязный или нет, решение ниже обработанного отлично за эти 30 минут я часто тестировал его. Решение работает, пока можно щелкнуть правой кнопкой по файлу (любая) внутренняя часть каталог:
#!/usr/bin/env python3
import subprocess
import os
import time
def replace(path):
for c in [("%23", "#"), ("%5D", "]"), ("%5E", "^"),
("file://", ""), ("%20", " ")]:
path = path.replace(c[0], c[1])
return path
def get(command):
try:
return subprocess.check_output(command).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
t = get(["pgrep", "gnome-terminal"])
if t:
w = [l.split()[0] for l in get(["wmctrl", "-lp"]).splitlines() if t in l][0]
# get the current path
current = replace(os.getenv("NAUTILUS_SCRIPT_CURRENT_URI"))
dr = os.path.realpath(current)
# raise the found terminal window
subprocess.call(["wmctrl", "-ia", w])
time.sleep(0.3)
# copy the cd command to clipboard
c1 = "printf 'cd ' | xclip -in -selection c"
c2 = 'echo "'+"'"+dr+"'"+'" | xclip -in -selection c'
# paste & run it
for c in [c1, c2]:
subprocess.call(["/bin/bash", "-c", c])
subprocess.call(["xdotool", "key", "Control_L+Shift+v"])
time.sleep(0.05)
Потребности сценария wmctrl
, xdotool
и xclip:
sudo apt-get install wmctrl xdotool xclip
Скопируйте сценарий в пустой файл, сохраните его как open_in_terminal
(никакое расширение) в ~/.local/share/nautilus/scripts
. Создайте каталог в случае необходимости. Сделайте исполняемый файл сценария
Именно. Выйдите из системы и въезжайте задним ходом, и Вы будете иметь сценарий в наличии как в изображении (2).
"NAUTILUS_SCRIPT_CURRENT_URI"
.xclip
)gnome-terminal
окно и вставки путь, которому предшествуют cd
команда. Так как мы использовали echo
для загрузки целой строки в буфер обмена Возврат включен.gnome-terminal
окно.Больше информации о сценариях наутилуса здесь.
Если бы Вы хотите смочь выбрать, в котором окне терминала Вы открыли бы ток (наутилус) каталог, использовать сценарий ниже.
Щелкните правой кнопкой по (любому) файлу в каталоге (в этом случае мой рабочий стол) как ниже:
Нажмите (или повысьте иначе), окно терминала, которое требуется использовать, и оно будет CD к каталогу:
#!/usr/bin/env python3
import subprocess
import os
import time
def replace(path):
for c in [("%23", "#"), ("%5D", "]"), ("%5E", "^"),
("file://", ""), ("%20", " ")]:
path = path.replace(c[0], c[1])
return path
def get(command):
try:
return subprocess.check_output(command).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
# check if gnome-terminal runs
pid = get(["pgrep", "gnome-terminal"])
if pid:
t = 0
while t < 30:
# see if the frontmost window is a terminam window
active = get(["xdotool", "getactivewindow"])
if pid in get(["xprop", "-id", active]):
# get the current path
current = replace(os.getenv("NAUTILUS_SCRIPT_CURRENT_URI"))
dr = os.path.realpath(current)
# copy the cd command to clipboard
c1 = "printf 'cd ' | xclip -in -selection c"
c2 = 'echo "'+"'"+dr+"'"+'" | xclip -in -selection c'
# paste & run it
for c in [c1, c2]:
subprocess.call(["/bin/bash", "-c", c])
subprocess.call(["xdotool", "key", "Control_L+Shift+v"])
time.sleep(0.05)
break
else:
t += 1
time.sleep(0.5)
Точно похож на первый сценарий.
Сценарий имеет одно различие от первого: вместо того, чтобы автоматически повысить первое найденное окно терминала, это ожидает первого окна терминала, чтобы сфокусироваться. Затем это CD к каталогу в том окне.
Самый простой путь - это:
cd
, пространство, затем Сдвиг + Вставляют (или INS) для вставки пути. Хит Входит . Никакая потребность в сценариях или дополнительной работе.
По-моему, единственный изящный способ решить это без Фудина вокруг состоит в том, чтобы использовать оконечный мультиплексор как tmux и иметь Ваш файловый менеджер
следующий сценарий оболочки достигает просто что:
#!/bin/sh
set -e
TMUX=tmux
#TERMINAL_EMULATOR='gnome-terminal -x'
cd "$1"
if $TMUX has-session; then
exec $TMUX new-window
else
exec ${TERMINAL_EMULATOR:-x-terminal-emulator -x} $TMUX
fi
TERMINAL_EMULATOR
содержит желаемый эмулятор терминала для новых окон терминала (если Вам не нравится значение по умолчанию любого x-terminal-emulator
точки к) плюс параметр командной строки для команды для выполнения в эмуляторе.
можно зарегистрировать сценарий обработчика файлов как любая другая ассоциация типа файла в файловом менеджере.
Я вполне уверен нет никакого способа сделать это, однако у меня есть обходное решение для Вас, которые могли бы помочь.
Можно всегда перетаскивать каталог от Наутилуса в окно терминала, и Наутилус передаст тот каталог и вставит его в командную строку, таким образом, Вы могли сделать cd
и затем перетащите папку на терминал и совершите нападки, входят.