Gnome-terminalindeki profiller arasında geçiş yapmak için komut satırı


20

Gnome-terminal için yeni bir profil oluşturdum ve aşağıdaki resimde gördüğünüz gibi "Implicit" profili ile yeni oluşturulan profil arasında geçiş yapabilirim:

GNOME terminalinde profiller arasında geçiş yap

Şimdi bir komut satırı / script kullanarak veya belki bunun için bir kısayol kullanarak profiller arasında nasıl geçiş yapabilirim merak ediyorum.

Not: Gibi çözümler:

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

dışlanır çünkü profil değiştirme sürecinde başka bir terminali kapatıp açmamayı veya başka bir terminal penceresi açmamayı tercih ediyorum.


1
Gconftool-2 ile değişiklikleri hemen gerçekleşecek olan profili ayarlayabilirsiniz. Bunu kontrol ettiniz mi -> stackoverflow.com/questions/660442/…
Stormvirux

@Stormvirux Hayır ... Peki, profili değiştirmek için gconftool veya gconftool-2'nin nasıl kullanılacağını açıklayabilir misiniz? Orada iyi bir cevap / açıklama görmüyorum.
Radu Rădeanu

Yanıtlar:


9

"Kapalı" profiline geçmek için:

xdotool key Alt+t p Return

İkinci profile geçmek için:

xdotool key Alt+t p Down Return

xdotool Xdotool yükle Ubuntu'da varsayılan olarak yüklenmediğinden, önce yüklenmesi gerekir.

Tabii ki, bu komutlar için özel klavye kısayolları eklenebilir .


Bu bir kısayol değil. Siz sadece tuşlara benziyorsunuz, sadece uygulamanın anımsatıcıları.
Braiam

1
@Braiam Evet, bir kısayol değil, görebiliyorum. Bu bir var komut satırı (bkz man xdotoolKeşke ben daha iyi görünecektir şey kadar bu cevap mutluyum tam olarak çalışmaktadır İstediğim gibi daha fazla bilgi için). ;)
Radu Rădeanu 14:13


@Braiam Söylediğim gibi, bu çözüm için sorun yok, bir cazibe gibi çalışıyor. Önerinizle ilgili olarak, 2002'den itibaren bu anlamda bir tane var (2010'da değiştirildi: " Seçimim profilini açmak için tam olarak iki tuşa basabilirsem çok iyi olur " - bu yoruma bakınız ). Peki neden yeni bir tane eklemem gerektiğini düşünüyorsun? Kopyaları sever misiniz?
Radu Rădeanu 14:13

Artık talihsiz bir şekilde
çalışmıyor

5

Şimdiden çok büyük cevaplar var, ancak menü çubuğunun görünmesini gerektirmeyen xdotool kullanarak bir tane daha varyasyon eklemek istedim ...

Combo shift + F10 bir açılır menü açar (terminalde sağ tıklanmaya eşdeğer) ve oradan profil değiştirilebilir.

örneğin xdotool key shift+F10 r 3üçüncü profile ulaşmak için

Ayrıca bu yöntemin xdotool için bir gecikme ayarlaması gerektirmediğini de buldum (menü çubuğu yöntemi için gerekli buldum), bu yüzden biraz daha hızlı.

Profilleri çok fazla değiştirme eğilimindeyim, bu yüzden bunu bir işleve dahil ediyorum:

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

bu yüzden sadece chp NNth profile geçmek için arayabilirim .

Kurulumumun bazı ipuçlarını ve diğer özelliklerini:

  • chp.Bashrc komutunu ekleyerek yeni sekmeleri her zaman varsayılan profile geçmeye zorlayabilirim

  • Ssh oturumlarımı ana bilgisayara göre renklendiririm ancak ssh takma adımın yeni sekmeler veya pencereler açmasını sevmiyorum VE ssh'den çıktığımda profilin varsayılana dönmesini istiyorum. Çözümüm: alias somehost="chp 2; ssh user@somehost; chp 1"

  • Xdotool'a bayrağını verdim, --clearmodifiersböylece bir değiştirici tuşa basarsam (bir sekme / pencere açarken, ssh'den çıkarken vb.), Xdotool ile etkileşime girmez.

  • Profil isimlerimi numaralarla hazırlıyorum, böylece yeni bir tane eklersem, profil menüsünün alfabetikleştirilmesi nedeniyle diğerlerini değiştirmez.


... sadece bu yöntemin menü ayarları tuşunun terminal ayarlarında etkin olmasını gerektirdiğine dikkat edin> general
brotherJ4mes

Benim xdotool için FYI --clearmodifierssonra gelmesi gerekiyor key.
lilydjwg

4

GUI kullanmadan, terminal içindeki profili değiştirmenize izin veren herhangi bir kısayol yoktur (yorumlardaki menülerde gezinmeden). El kitabından alıntı ( kararlı , geliştirme 3.9 ):

Terminal ▸ Profili Değiştir arasından bir profil seçerek mevcut Terminal sekmenizdeki veya pencerenizdeki profili değiştirebilirsiniz.

(Bunu hata izleyicide öneri olarak önerebilirsiniz )


Aslında, bir kısayol var: Alt + T ve ardından P , Yukarı Ok veya Aşağı Ok ve Gir . Ama bu biraz uzun ...
Radu Rădeanu

@ RaduRădeanu Alt + T terminalimde çalışmıyor 3.8.3: /
Braiam

1
RaduRădeanu ben tahminim alt + t @ olduğunu GUI kullanarak aslında, sadece fareyi kullanarak değil.
moon.musick

@Braiam Eğer 'in İngilizce olmayan bir versiyonunu kullanıyorsanız gnome-terminal, basın altve' Terminal 'dil sürümünüz için hangi harfin vurgulandığını görün (Polonyaca versiyonumdaki 5. maddeden,' Yardım 'öğesinden hemen sonra çıkın), sonra bu harfi kullanın. ile alt.
moon.musick

@ moon.musick GNOME-terminal 3.8.3'ün Debian versiyonunu kullanıyorum ve menülere erişmek için Alt değiştiricisinin olmadığı görülüyor.
Braiam

3

Ben de aynısını yapmak istiyordum ve nihayet bir senaryo çalışıyordu. GitHub'a .

README.md'de açıkladığım gibi, aslında değişmiyor, ancak bir profil yapılandırmasını Varsayılan profile yükler. Bunu yapmak için, her profilin yapılandırması betiğin ilk çalıştırmasında dosyaya kaydedilir. Senaryo, profiller arasında geçiş yapıyormuş gibi görünmesini sağlıyor, ki bu benim için yeterince iyi. Umarım herkese yardım eder ...


2

Amacınıza bağlı olarak, bu komut dosyasını yararlı bulabilirsiniz: https://github.com/xyrix/gnome-terminal-profile-switcher

Bir tür maymun yaması yapar ve her terminal için yeni bir profil oluşturur, ardından mevcut terminaliniz için profil temasını değiştirmek üzere bir program ortaya çıkarmak için bazı ortam değişkenlerini ayarlar.

Umarım örnek safe_ssh betiği işleri netleştirir :-). Sadece bir yıldan fazla bir süredir kullanıyorum ve şirketin canlı veritabanını imha etmeme yardımcı oldu ^ _ ^


2

Sıklıkla eriştiğiniz sunucuların bir listesi varsa, en kolay çözümün sadece bu kutunun oturumu için ikinci bir pencere çağırmak olduğuna inanıyorum.

İlk önce, sık kullandığınız her uzak konum için ayrı bir gnome-terminal profili oluşturun. Ardından, her profilde, terminalin düz bir kabuk yerine, o kutu için SSH oturum açma komutunu yürütmesi gerektiğini belirtin.

ssh alice@athena

Son olarak, bir profil kimliği verilen yeni bir uzak pencereden atmak için kısa bir senaryo yazın.

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

Bu stratejiyi kullanarak, her kutunun terminal penceresinin görünümünü "sonsuz" olarak değiştirebilir ve tek bir "kontrol" terminalinden başlatabilirsiniz. Örneğin, bu betiği "rlv" olarak adlandırırsak, o zaman betiği bir profil adıyla çağırarak uzak bir pencere açabiliriz.

>> rlv athena

Bir ana bilgisayar adını hiç yağlamazsanız veya o ana bilgisayar için bir profil oluşturmayı ihmal ederseniz, yerel kutuda başka bir varsayılan profil penceresi görürsünüz. Bunu önlemek için betiği kodlamanın bir yolu var, giriş bilgisini gnome-terminaline değil betiğin içine yerleştirerek:

#!/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

... ancak daha sonra bu kutu için giriş kullanıcı adınızı tanımlama esnekliğini kaybedersiniz. Senaryonun bu ek özelliği okuyucuya alıştırma olarak bırakıyorum.


Bana bu fikri verdiğin için teşekkür ederim. :-) En sevdiğiniz yerleri (double) -click ile açacak bir .desktop dosyasını kolayca yazabileceğinizi eklemek isterim.
Hinz

1

Orijinal çözümümün zaten soruda reddedildiğini fark ettim. Profili değiştirmenin basit bir yolu yok gibi görünse de, settermkomutunu kullanarak arka plan / ön plan rengini değiştirebilirsiniz .

Yani, bu setterm -term linux -background black -foreground greensize yeşil yazı ile siyah arka plan verir. Tek sorun şu ki, çıktıları renklendirdi, bu yüzden boyamasını kapatmak isteyebilirsiniz. Aksi takdirde önceki renk şemasına sıfırlanır

Orijinal yazı : Etrafında bir çeşit yol var. Gnome terminalinden:

--window-ile-profil = profilinden

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

İşte benim makinemden örnek. Üç profilim var: B&G (yeşil üzerine siyah), ForPrinting (siyah yazı tipi, beyaz arka plan) ve Varsayılan. Öyleyse yaptığım şey şu anki pencere türünde gnome-terminal --window-with-profile=ForPrinting. Sonra komut satırından eski pencereyi öldürebilir veya grafiksel olarak değiştirebilir ve kapatabilirim.

B&G profili çalışmıyor. Muhtemelen & geçerli bir karakter olmadığı için, bu yüzden profilleri adlandırırken bunu aklınızda bulundurun.


0

Kullandığım en çirkin çözüm

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

(Bu ikinci profili seçer, ancak ikinci "key Down" komutunu değiştirerek htir profilini söylemek için bunu değiştirebilirsiniz xdotool key --delay 50 --repeat 2 Down.

Bu ne yapıyor:

  1. Geçerli pencerenin sol üst koordinatlarını bulun (örn. kullanılan GNOME terminali).
  2. fareyi bu terminalin üzerine getirin
  3. İkinci profili seçmek için sağ tıklayın ve içerik menüsüne gidin.

Yüklü xdotool gerekir sudo apt install xdotool.

Terminalin kendisinin terminal üzerinden konfigürasyona izin vermemesi olağanüstü bir tür!


0

"Gelecekteki profil" komut ve kısayol sunulan gnome-terminal harika olurdu; maalesef öyle değil.

Alt+TEngelli olanlar için bir geçici çözüm (Düzenle> Tercihler> Anımsatıcıları etkinleştir - işaretlenmemiş): F10 left left down rightve profili seçin. Ahh.


Menü çubuğunun görünür olmasını gerektirir.
Gauthier,

0

Bu oldukça eski bir yazı, ancak aynı sorunu çözmek için arama yaparken ortaya çıkmaya devam ettiğim için çözümümü yayınlayacağımı düşündüm.

Bu, küçük bir python betiği içerir ve CTRL + ALT + T düğmesini, sadece terminali başlatmak yerine betiği çalıştırmak için yeniden eşler.

Bir metin dosyası oluşturun, mine terminal.py ismini verdim ve çalıştırılabilir olduğundan emin olun. Aşağıdaki kodu içine yerleştirin. Bu, "varsayılan" işaretli olanın listede ilk olduğundan emin olmak için mevcut tüm profilleri sırayla kullanarak terminal pencerelerini açar.

#!/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")

Bu betiğe yeni bir kısayol atamak için klavye ayarları yardımcı programını kullanın. Benim için bir terminal penceresi açmak için kullandığım kısayol olduğundan CTRL + ALT + T atadım.

Terminalinizde birkaç profil oluşturduğunuzdan emin olun. Bu komut dosyası tüm profillerinizi kullanır. Böylece ne kadar çok yaratırsanız, pencerelerde o kadar fazla varyasyona da erişebilirsiniz. Arka plan rengi dışında hepsi aynı olan birkaç tane var. Bu, onların arasında alt sekme yaparken onları tanımama yardımcı olur.

Terminal Penceresi Örneği

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.