Command-line untuk berganti profil di gnome-terminal

20

Saya membuat profil baru untuk gnome-terminal dan saya dapat beralih antara profil "Tersirat" dan profil yang baru dibuat seperti yang Anda lihat pada gambar di bawah:

Beralih di antara profil di terminal gnome

Sekarang saya bertanya-tanya bagaimana saya bisa beralih antara profil menggunakan command-line / script atau mungkin menggunakan jalan pintas untuk ini.

Catatan: Solusi seperti:

gnome-terminal --tab-with-profile=Implicit && exit 

dikecualikan karena saya lebih suka untuk tidak menutup dan membuka terminal lain atau mendapatkan jendela terminal lain dalam proses mengubah profil.

Radu Rădeanu
sumber
1
Dengan gconftool-2 Anda dapat mengatur profil yang perubahannya langsung. Sudahkah Anda memeriksanya -> stackoverflow.com/questions/660442/…
Stormvirux
@Stormvirux Tidak ... Jadi bisakah Anda menjelaskan cara menggunakan gconftool atau gconftool-2 untuk mengganti profil? Saya tidak melihat jawaban / penjelasan yang bagus di sana.
Radu Rădeanu
pertanyaan rangkap: askubuntu.com/questions/247041/…
Jakob

Jawaban:

9

Untuk beralih ke profil "implisit":

xdotool key Alt+t p Return

Untuk beralih ke profil kedua:

xdotool key Alt+t p Down Return

xdotool Instal xdotool tidak diinstal secara default di Ubuntu, jadi harus diinstal terlebih dahulu.

Tentu saja, untuk perintah ini dapat ditambahkan pintasan keyboard khusus .

Radu Rădeanu
sumber
Itu bukan jalan pintas. Anda hanya mensimulasikan penekanan tombol, hanya mnemonik aplikasi.
Braiam
1
@Braiam Ya, ini bukan jalan pintas, saya bisa melihat. Ini adalah baris perintah (lihat man xdotoolinfo lebih lanjut) seperti yang saya tanyakan, yang berfungsi persis seperti yang saya inginkan dan saya senang dengan jawaban ini sampai sesuatu yang lebih baik akan muncul. ;)
Radu Rădeanu
Anda serius harus mempertimbangkan menyarankan bahwa di bugtracker ...
Braiam
@Braiam Seperti yang saya katakan, saya baik-baik saja dengan solusi ini, ini bekerja seperti pesona. Mengenai saran Anda, ada satu dalam pengertian ini dari tahun 2002 (dimodifikasi pada tahun 2010: " Akan lebih baik jika saya dapat menggunakan tepat dua penekanan tombol untuk membuka profil pilihan saya. " - lihat komentar ini ). Jadi, mengapa Anda berpikir bahwa saya harus menambahkan yang baru? Apakah Anda suka duplikat?
Radu Rădeanu
Tidak lagi berfungsi dengan tidak baik
RobAu
5

Sudah banyak jawaban bagus tetapi saya ingin menambahkan satu lagi variasi menggunakan xdotool yang tidak memerlukan bilah menu agar terlihat ...

Pergeseran kombo kunci + F10 akan membuka menu pop-up (setara dengan mengklik kanan pada terminal) dan dari sana profil dapat diubah.

misalnya xdotool key shift+F10 r 3untuk sampai ke profil ketiga

Saya juga menemukan bahwa metode ini tidak memerlukan pengaturan penundaan untuk xdotool (yang menurut saya perlu untuk metode menu bar) jadi karena itu sedikit lebih cepat.

Saya cenderung banyak mengubah profil, jadi saya membungkusnya menjadi fungsi:

function chp(){
      xdotool --clearmodifiers key Shift+F10 r $1
}

jadi saya bisa menelepon chp Nuntuk beralih ke profil Nth.

Beberapa tips dan keistimewaan lain dari pengaturan saya:

  • Dengan menambahkan chpperintah ke .bashrc saya, saya dapat memaksa tab baru untuk selalu beralih ke profil default

  • Saya mewarnai kode sesi ssh saya berdasarkan host tetapi saya tidak suka alias ssh saya untuk membuka tab atau windows baru DAN saya ingin profil berubah kembali ke default ketika saya keluar dari ssh. Solusi saya: alias somehost="chp 2; ssh user@somehost; chp 1"

  • Saya memberi xdotool bendera --clearmodifierssehingga jika saya kebetulan memegang kunci pengubah (saat membuka tab / jendela, keluar ssh, dll.), Itu tidak akan mengganggu xdotool.

  • Saya menambahkan nama profil saya dengan angka sehingga jika saya menambahkan yang baru, itu tidak menggeser yang lain karena pengabdian dari menu profil

brotherJ4mes
sumber
... hanya sebuah catatan bahwa metode ini memerlukan kunci menu akselerator untuk diaktifkan di pengaturan terminal> umum
brotherJ4mes
FYI untuk xdotool saya --clearmodifiersperlu dicari key.
lilydjwg
4

Tidak ada jalan pintas yang memungkinkan Anda untuk mengubah profil di dalam terminal (tanpa menavigasi menu seperti yang Anda katakan dalam komentar), tanpa menggunakan GUI. Mengutip manual ( stabil , pengembangan 3.9 ):

Anda dapat mengubah profil di tab atau jendela Terminal Anda saat ini dengan memilih profil dari Terminal ▸ Ubah Profil.

(Anda dapat mengusulkan ini sebagai saran di pelacak bug )

Braiam
sumber
Sebenarnya, ada jalan pintas: Alt + T diikuti oleh P , Panah Atas atau Panah Bawah dan Enter . Tapi ini agak lama ...
Radu Rădeanu
@ RaduRădeanu Alt + T tidak berfungsi di terminal saya 3.8.3: /
Braiam
1
@ RaduRădeanu Saya menebak alt + t adalah pada kenyataannya menggunakan GUI, hanya saja tidak menggunakan mouse.
moon.musick
@Braiam Jika Anda menggunakan versi non-Inggris gnome-terminal, tekan altdan lihat huruf apa yang sedang disorot untuk versi bahasa Anda 'Terminal' (item ke-5 dalam versi Polandia saya, di sebelah kiri 'Bantuan'), kemudian gunakan huruf itu dengan alt.
moon.musick
@ moon.musick Saya menggunakan versi Debian dari gnome-terminal 3.8.3, dan sepertinya tidak memiliki pengubah Alt untuk mengakses menu.
Braiam
3

Saya ingin melakukan hal yang sama dan akhirnya membuat skrip berfungsi, saya memasangnya di GitHub saya .

Seperti yang saya jelaskan di README.md, itu tidak benar-benar beralih, tetapi memuat konfigurasi profil ke profil Default. Untuk melakukan ini, konfigurasi masing-masing profil disimpan ke file di jalankan pertama skrip. Script membuatnya tampak seperti Anda beralih di antara profil, yang cukup bagus untuk saya. Semoga ini bisa membantu siapa pun ...

SigiSang
sumber
2

Bergantung pada tujuan Anda, Anda mungkin menemukan skrip ini berguna: https://github.com/xyrix/gnome-terminal-profile-switcher

Itu melakukan semacam patch monyet dan menghasilkan profil baru untuk setiap terminal, kemudian menetapkan beberapa variabel lingkungan untuk mengekspos program untuk beralih tema profil untuk terminal Anda saat ini.

Semoga contoh script safe_ssh akan memperjelas :-). Saya telah menggunakannya selama lebih dari satu tahun sekarang dan itu membantu saya untuk tidak menghancurkan database langsung perusahaan ^ _ ^

xyrix
sumber
2

Jika Anda memiliki daftar server yang sering Anda akses, saya percaya solusi termudah adalah dengan memanggil jendela kedua hanya untuk sesi kotak itu.

Pertama, buat profil terminal gnome-terpisah untuk setiap lokasi jarak jauh yang sering Anda gunakan. Kemudian, di setiap profil, tentukan bahwa terminal harus menjalankan perintah login SSH untuk kotak itu, dan bukan shell biasa.

ssh alice@athena

Terakhir, tulis skrip pendek untuk memulai jendela jarak jauh baru yang diberi ID profil.

#!/bin/bash
if [[ $# -ne 1 ]] ; then
  echo "Give me a server/profile name!"
  exit 1
fi
gnome-terminal --window-with-profile=$1
exit 0

Dengan menggunakan strategi ini, Anda dapat "secara tak terbatas" memvariasikan tampilan jendela terminal setiap kotak, dan menendang mereka dari satu terminal "kontrol". Misalnya, jika kita menyebut skrip ini "rlv", maka kita dapat menelurkan jendela jarak jauh dengan hanya memanggil skrip dengan nama profil.

>> rlv athena

Jika Anda pernah membobol nama host, atau lalai membuat profil untuk host itu, maka Anda hanya akan mendapatkan jendela profil default lain di kotak lokal. Ada cara untuk kode skrip untuk menghindari ini, dengan memasukkan login ke skrip itu sendiri, daripada di terminal gnome:

#!/bin/bash
if [[ $# -ne 1 ]] ; then
  echo "Give me a server/profile name!"
  exit 1
fi
gnome-terminal --window-with-profile=$1 -e "ssh $1"
exit 0

... tetapi kemudian Anda kehilangan fleksibilitas dalam menentukan nama pengguna login Anda untuk kotak itu. Fitur tambahan dari skrip yang saya tinggalkan sebagai latihan untuk pembaca.

zerobandwidth
sumber
Terima kasih telah memberikan saya ide itu. :-) Saya ingin menambahkan bahwa Anda dapat dengan mudah menulis file .desktop yang akan membuka lokasi favorit Anda dengan (double) -klik seperti itu.
Hinz
1

Saya baru saja memperhatikan bahwa solusi asli saya telah ditolak dalam pertanyaan. Meskipun sepertinya tidak ada cara sederhana untuk mengubah profil, Anda dapat mengubah warna latar / latar depan dengan menggunakan settermperintah.

Jadi, ini setterm -term linux -background black -foreground greenakan memberi Anda latar belakang hitam dengan teks hijau. Satu-satunya masalah adalah bahwa ls memiliki keluaran berwarna, jadi Anda mungkin ingin mematikan ls. Kalau tidak, pengaturan ulang ke skema warna sebelumnya

Posting asli : Ada semacam jalan memutar. Dari man gnome-terminal:

--window-with-profile = PROFILENAME

             Open a new window containing a  tab  with  the
             given profile.  More than one of these options
             can be provided.

Ini contoh dari mesin saya. Saya memiliki tiga profil: B&G (hitam pada hijau), ForPrinting (font hitam, latar belakang putih), dan Default. Jadi yang saya lakukan adalah dalam tipe jendela saat ini gnome-terminal --window-with-profile=ForPrinting. Kemudian saya bisa membunuh jendela lama dari baris perintah atau beralih dan tutup secara grafis.

Profil B&G tidak berfungsi. Mungkin karena & bukan karakter yang valid, jadi ingatlah saat memberi nama profil.

Sergiy Kolodyazhnyy
sumber
0

Solusi yang sangat jelek yang akhirnya saya gunakan adalah

unset x y
eval $(xwininfo -id $(xdotool getactivewindow) |
       sed -n -e 's/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p' \
              -e 's/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p')
xdotool mousemove $(($x + 50)) $(($y + 50))
xdotool click 3; xdotool key --repeat 3 Up; xdotool key Right; xdotool key --delay 50 Down; xdotool key --delay 50 Return

(Ini memilih profil kedua, tetapi Anda dapat mengubahnya untuk mengatakan profil htir dengan mengubah perintah "key Down" kedua menjadi xdotool key --delay 50 --repeat 2 Down.

Apa yang sedang dilakukan ini:

  1. temukan koordinat kiri atas dari jendela saat ini (mis. terminal gnome digunakan).
  2. gerakkan mouse untuk melewati terminal itu
  3. klik kanan dan navigasi menu konteks untuk memilih profil kedua.

Anda perlu menginstal xdotool sudo apt install xdotool.

Agak luar biasa bahwa terminal itu sendiri tidak memungkinkan konfigurasi melalui terminal!

SColvin
sumber
0

Akan lebih baik jika gnome-terminal menawarkan perintah dan pintasan "profil berikutnya"; sayangnya tidak.

Solusi bagi mereka yang Alt+Tcacat (Edit> Preferences> Enable mnemonics - unchecked) adalah: F10 left left down rightdan pilih profil. Aduh.

Mario
sumber
Perlu dicatat bahwa ini membutuhkan bilah menu agar terlihat.
Gauthier
0

Ini adalah posting yang agak lama, tetapi karena terus muncul ketika saya sedang mencari untuk menyelesaikan masalah yang sama ini, saya pikir saya akan memposting solusi saya.

Ini melibatkan skrip python kecil dan memetakan kembali tombol CTRL + ALT + T untuk menjalankan skrip alih-alih hanya meluncurkan terminal.

Buat file teks, saya beri nama mine terminal.py dan pastikan itu dapat dieksekusi. Tempatkan kode berikut di dalamnya. Ini akan membuka jendela terminal menggunakan semua profil yang tersedia secara berurutan untuk memastikan bahwa yang bertanda "default" adalah yang pertama dalam daftar.

#!/usr/bin/python
#
# Launch a gnome-terminal window trying to assign each new window 
# to a different profile.
# 
import json
import os
import commands

profiles=[]

try:
    profileList = commands.getoutput("gsettings get org.gnome.Terminal.ProfilesList list").replace("'",'"')
    profileDefault = commands.getoutput("gsettings get org.gnome.Terminal.ProfilesList default").replace("'",'"')

    profiles.append(json.loads(profileDefault))
    ls = json.loads(profileList)
    ls.remove(profiles[0])
    profiles+=ls

    # find the next available terminal number
    # when terminals are closed, gaps in the numbers can happen
    # terminals are numeric and the lowest slot is filled first
    terminals = commands.getoutput("ls /dev/pts/  | grep -E '^[0-9]+$'").split("\n")
    next = 0
    try:
        while terminals.index(str(next))>=0:
            next += 1
    except:
        pass

    # determine the profile to use
    prof = next % len(profiles)

    # launch the terminal with the specific profile
    cmd="gnome-terminal --window-with-profile='%s'" % (profiles[prof])
    os.system(cmd)
except:
    # if anything fails, launch a default terminal
    print("error")
    os.system("gnome-terminal")

Gunakan utilitas pengaturan keyboard untuk menetapkan pintasan baru ke skrip ini. Bagi saya, saya menugaskan kembali CTRL + ALT + T karena itu adalah jalan pintas yang saya gunakan untuk membuka jendela terminal.

Pastikan untuk membuat beberapa profil di terminal Anda. Script ini akan menggunakan semua profil Anda. Jadi, semakin banyak yang Anda buat, semakin banyak variasi di windows yang bisa Anda akses juga. Saya memiliki beberapa yang semuanya identik kecuali untuk warna latar belakang. Ini membantu saya mengenali mereka ketika saya alt-tab melalui mereka.

Contoh Jendela Terminal

schworak
sumber