Secara otomatis mendapatkan warna terminal yang berbeda setiap kali saya membuka terminal

14

Saya sering menemukan diri saya membuka tiga terminal dan saya sangat suka tampilan dan nuansa memiliki palet warna yang berbeda pada masing-masing.

Saya memiliki beberapa palet warna yang disimpan dan saya ingin default untuk maju melalui profil saya yang disimpan setiap kali saya membuka terminal, sehingga jika saya membuka 3 mereka masing-masing warna berbeda tanpa saya harus secara manual mengubah profil pada 2.

Adakah pikiran?

Terima kasih!

kpie
sumber
Cukup edit jawaban saya dengan skrip yang melakukan apa yang Anda inginkan. Itu harus ditambahkan ke file ./bashrc . Semoga sesuai dengan kebutuhan Anda!
IanC

Jawaban:

10

Versi Fungsional

Instruksi:

Script menganggap Anda menggunakan terminal gnome , yang merupakan terminal default Ubuntu.

Sebelum menjalankan skrip, buka terminal gnome dan buat beberapa profil (Edit> Preferensi> Profil) dengan pengaturan berbeda sesuai keinginan (warna latar, warna teks, ..). Anda dapat memberi nama mereka Profile1, Profile2, Profile3 dan sebagainya. Buat Profil yang cukup untuk mencakup jumlah Terminal yang akan dibuka, tetapi jika jumlah terminal yang lebih banyak dibuka, profil default akan digunakan.

Skrip membuat file ~ / .Bash_Color_Changer , yang tergantung padanya, karena akan memberi tahu skrip jika terminal dibuka secara teratur atau setelah panggilan pada .bashrc .

Tambahkan skrip ke akhir file ~ / .bashrc Anda .

Naskah:

Tambahkan ke .bashrc:

#Change color according to the number of Bash shells opened
#Creates the .Bash_Color_Changer file if it's not present
if ! [ -f ~/.Bash_Color_Changer ]; then
    echo ORIGINAL > ~/.Bash_Color_Changer
fi

#Array holding the name of the profiles: Substitute it for the names you're using
Color_counter=(Profile1 Profile2 Profile3)
#Finds out the number of opened bashs counting the lines containing "bash"
#in the pstree function. (-c deactivates compact display to avoid it showing
#lines with "2*[bash]" instead of one for each bash)
Number_of_bashs=$(($(pstree -c | grep "bash" | wc -l)-1))

#Checks if the terminal being opened was opened by the user or by
#the script, and act according to it
if [ $(cat ~/.Bash_Color_Changer) = ORIGINAL ]; then 
    if ((Number_of_bashs < ${#Color_counter[*]})); then
        echo COPY > ~/.Bash_Color_Changer
        gnome-terminal --tab-with-profile-internal-id=${Color_counter[${Number_of_bashs}]} 
        exit
    fi
else 
    echo ORIGINAL > ~/.Bash_Color_Changer
fi

Diuji tetapi tidak luas. Nikmati!

IanC
sumber
Ide untuk besok adalah menambahkan persyaratan untuk exitberdasarkan pada beberapa file seperti ~/bashcolor.txt. Bisa saja ada baris untuk mengatakan jika bash yang dibuka adalah "asli" atau "salinan". Jadi jika cat ~/bashcolor.txtmengembalikan "ASLI" exitperintah dijalankan dan echo COPY > ~/bashcolor.txt. Lain, keluar tidak berjalan tetapi file kembali ke asli ( echo ORIGINAL > ~/bashcolor.txt). Ini akan menyelesaikan masalah terminal yang berkedip.
IanC
Skrip yang menyenangkan untuk dibuat, bahkan mungkin menggunakannya sendiri :) Setiap saran perbaikan dipersilahkan!
IanC
Ini berfungsi di +1 yang dapat dipercaya +1
boomt14
2
Saya membuat 1 perubahan dalam versi saya ... Dengan cara ini terus berputar ketika Anda membuka lebih banyak terminal daripada Anda memiliki profil. Number_of_bashs=$(($(($(pstree -c | grep "bash" | wc -l)-1))%${#Color_counter[@]}))
kpie
Bagus! Tidak terlintas dalam pikiran saya untuk menggunakan modulus untuk menjaga siklus iterasi: p
IanC
9

Satu opsi bisa digunakan xfce4-terminal. Ini sangat mirip dengan terminal Ubuntu default (yang gnome-terminal) dan banyak dari paket dependensi menggunakan komponen gtk, yang menjadikannya alternatif yang cocok.

Pertama instal dengan

sudo apt-get install xfce4-terminal

Kemudian buka, Pergi ke Edit -> Preferences , Pilih Tab Warna dan centang opsi yang mengatakan, Variasikan warna latar belakang untuk setiap Tab , dan sekarang keluar.

Buat terminal default xfce4-terminalatau ubah pintasan Ctrl-Alt-Tuntuk membukanya.

Sekarang, setiap kali Anda membuka, Anda akan disajikan dengan palet warna yang berbeda. terminal berwarna berbeda

Tautan Berguna:

Anwar
sumber
5

Haha, sangat menarik. Saya mungkin mencoba melakukan ini juga. Saya kebanyakan hanya menjalankan beberapa terminal dan browser.

Jadi saya melihat sekeliling dan menemukan ini - https://github.com/sos4nt/dynamic-colors . Proyek kecil yang sangat rapi yang membantu Anda mencapai bagian dari apa yang Anda inginkan.

Sekarang, di direktori colorschemes/proyek itu, Anda akan melihat bahwa saat ini ia memiliki 4 skema warna. Anda dapat menambahkan sebanyak yang Anda butuhkan / inginkan.

Jadi untuk membuat setiap terminal memilih skema warna yang berbeda, saya akan menambahkan fungsi ke saya .bash_profileatau .bashrcatau di mana pun, sehingga fungsi melakukan dua hal:

  1. Mencari tahu berapa banyak terminal yang sedang berjalan
  2. Keluarkan dynamic-colors switch colorscheme-nameperintah berdasarkan (1).

Semoga ini membantu!

PS Aku akan menulis naskah untukmu, tapi aku benci makan sendok dan aku malas af. :)

theabhinavdas
sumber
bagus ... membuat pembungkus / alias untuk perintah terminal akan mencapainya.
Wisnu Kumar
@ Wisnu Kumar, ya, inilah yang pertama kali terlintas dalam pikiran saya meskipun itu mungkin bukan solusi terbaik. senang kamu menyukainya.
theabhinavdas
+1 untuk jawaban yang ok, saya benar-benar tidak ingin berkelahi dengan "bekerja" tetapi jawaban ini mengharuskan saya menggunakan definisi gaya kepemilikan menggunakan proyek warna dinamis saya, tambahan (dan inilah yang benar-benar membuat saya) itu tidak dapat mendukung opacity: (Saya merasa jawabannya harus melibatkan beberapa kombinasignome-terminal --load-config=FILE
kpie
@kpie, haha. Tidak adil, opacity tidak disebutkan dalam pertanyaan. Juga, sulit untuk mengatur opacity dari baris perintah dan sangat tergantung pada banyak hal. Juga, pertanyaan ini dapat dijawab dengan berbagai cara, tetapi saya pikir jawaban saya cukup nyaman (jika hanya untuk saya, haha) :)
theabhinavdas
Saya harap saya dapat mengganti rajutan dengan menyediakan skrip yang diperlukan ... github.com/Krewn/stylingTerminalOnOpen Dan saya harus menentukan itu tidak mendukung opacity variabel, skema warna akan mempertahankan opacity dari profil default Anda.
kpie
1

Konsole sebenarnya mendukung fungsi ini secara asli. Konsole sangat kuat dan sangat dapat disesuaikan.

Jika Anda tidak memiliki Konsole maka cukup sudo apt install konsole

  1. Pergi ke pengaturan
  2. Pengaturan Konsole
  3. Pilih tab Appearance
  4. Pilih skema warna Anda
  5. Pilih "Edit" di sebelah kanan
  6. Ada kotak untuk mengatur "Variasikan warna latar belakang untuk setiap tab"

Selain itu, jika Anda bekerja pada tiga server secara bersamaan, Anda dapat menyertakan beberapa alias bagus yang ditampilkan di sini

Matt O.
sumber
+1 untuk jawaban yang ok tapi saya tidak punya konsole. Jawaban @MemoryAddress> mendukung lebih banyak antarmuka terminal (semua yang mendukung urutan pelarian OSC). Tapi milikmu lebih mudah digunakan. Saya akan memberikan hadiah kepada siapa pun yang memiliki suara terbanyak dalam beberapa hari. Terima kasih atas jawaban anda!
kpie
Anda akan terkejut betapa banyak orang akan berkomentar di sini mengatakan kepada saya bahwa saya perlu memberi tahu Anda cara menginstalnya -_-
Matt O.
Apakah Anda membaca komentar di ans lain?
kpie
Aku melakukannya. Mungkin saya kehilangan sesuatu tetapi Anda mencari opacity variabel dan sesuatu yang tidak memerlukan alias. Konsole mencapai keduanya, tetapi saya tidak yakin tentang urutan pelariannya.
Matt O.
1
haha saya mengerti. Jangan salahkan saya, setelah memiliki cukup banyak orang di sini menyarankan pengeditan saya hanya melakukannya secara otomatis. Saya tidak mencoba untuk menghina kecerdasan Anda.
Matt O.