Düzinelerce terminalin açılmasını sevmiyorum. Nautilus kullanırken Terminalde Open yerine geçerli Terminalde Open eklemenin bir yolu var mı ?
Düzinelerce terminalin açılmasını sevmiyorum. Nautilus kullanırken Terminalde Open yerine geçerli Terminalde Open eklemenin bir yolu var mı ?
Yanıtlar:
Kirli ya da değil, aşağıdaki çözüm 30 dakika içinde mükemmel bir şekilde çalıştı. Çözüm, dizinin içindeki bir dosyayı (herhangi birini) sağ tıklayabildiğiniz sürece çalışır:
#!/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)
Senaryo ihtiyaçları wmctrl, xdotoolve xclip:
sudo apt-get install wmctrl xdotool xclip
Komut dosyasını boş bir dosyaya kopyalayın, içine open_in_terminal(uzantı yok) kaydedin ~/.local/share/nautilus/scripts. Gerekirse dizini oluşturun. Komut dosyasını yürütülebilir yapın
Bu kadar. Oturumu kapatıp tekrar açın, betiği görüntüdeki gibi kullanabilirsiniz (2).
"NAUTILUS_SCRIPT_CURRENT_URI".xclip)gnome-terminalpenceresini yükseltir ve komuttan önce yolu yapıştırırcd . Kullandığımız bu yana echopanoya içine bütün çizgi yüklemek için, Returndahildir.gnome-terminalpencereyi seçer .Nautilus betikleri hakkında daha fazla bilgi burada .
Geçerli (nautilus) dizinini hangi terminal penceresinde açacağınızı seçmek istiyorsanız, aşağıdaki komut dosyasını kullanın.
Dizin içindeki (herhangi bir durumda) dosyayı aşağıdaki gibi sağ tıklayın (bu durumda masaüstüm):
Kullanmak istediğiniz terminal penceresine tıklayın (veya başka bir şekilde yükseltin), dizine cd olacaktır:
#!/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)
İlk senaryo gibi.
Komut dosyasının birinciden bir farkı vardır: bulunan ilk terminal penceresini otomatik olarak yükseltmek yerine, ilk terminal penceresinin odaklanmasını bekler. Sonra o pencerenin içindeki dizine cd's.
~/.local/share/nautilus/scriptsoturumu kapatıp tekrar oluşturduktan sonra görünür :)
Noneçünkü böyle bir değişken yoktur (Nautilus dışında).
Eminim bunu yapmanın bir yolu yoktur, ancak sizin için yardımcı olabilecek bir çözümüm var.
Her zaman bir dizini Nautilus'tan bir terminal penceresine sürükleyip bırakabilirsiniz ve Nautilus bu dizini geçirip komut satırına yapıştıracaktır, böylece cdklasörü terminale sürükleyip enter tuşuna basabilirsiniz.
En basit yol şudur:
cdboşluk, ardından Shift+ Insert (or INS)yazın. Vur Enter.Senaryolara veya ekstra çalışmaya gerek yok.
Bence bunu dolaşmadan çözmenin tek zarif yolu, tmux gibi bir terminal çoklayıcı kullanmak ve dosya yöneticinize sahip olmaktır .
Aşağıdaki kabuk betiği bunu başarır:
#!/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_EMULATORyeni terminal pencereleri için istenen terminal emülatörünü (herhangi bir x-terminal-emulatornoktaya ilişkin varsayılanı beğenmezseniz ) ve komutun emülatör içinde yürütmesi için bir komut satırı seçeneğini içerir.
Dosya işleyicinizi, diğer herhangi bir dosya türü ilişkilendirmesi gibi dosya yöneticinize kaydedebilirsiniz.