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
, xdotool
ve 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-terminal
penceresini yükseltir ve komuttan önce yolu yapıştırırcd
. Kullandığımız bu yana echo
panoya içine bütün çizgi yüklemek için, Returndahildir.gnome-terminal
pencereyi 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/scripts
oturumu 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 cd
klasörü terminale sürükleyip enter tuşuna basabilirsiniz.
En basit yol şudur:
cd
boş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_EMULATOR
yeni terminal pencereleri için istenen terminal emülatörünü (herhangi bir x-terminal-emulator
noktaya 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.