Я создал новый профиль для gnome-terminal и могу переключаться между профилем «Implicit» и новым созданным профилем, как вы можете видеть на изображении ниже:
Теперь мне интересно, как я могу переключаться между профилями, используя командную строку / скрипт или, возможно, использовать ярлык для этого.
Примечание: Решения типа:
gnome-terminal --tab-with-profile=Implicit && exit
исключены, потому что я предпочитаю не закрывать и не открывать другой терминал или получать другое окно терминала в этом процессе изменения профиля .
BLOCKQUOTE>
"იმპირულ" პროფილზე გადასასვლელად:
xdotool key Alt+t p Return
მეორე პროფილი:
xdotool key Alt+t p Down Return
xdotool
ნაგულისხმევად არ არის დაინსტალირებული Ubuntu- ში, ამიტომ ის ჯერ უნდა იყოს დაინსტალირებული.
რა თქმა უნდა, ამ ბრძანებებისათვის შეიძლება დაემატოს კლავიატურის მორგებული მალსახმობები .
Не существует ярлыка, позволяющего изменять профиль в терминале (без навигации по меню, как вы сказали в комментариях) без использования графического интерфейса. Цитата из руководства ( стабильная , разработка 3.9 ):
Вы можете изменить профиль на текущей вкладке или в окне Терминала, выбрав профиль в Терминале ▸ Изменить профиль.
(Вы можете предложить это как предложение в трекере ошибок )
Уже много отличных ответов, но я хотел добавить еще один вариант с использованием xdotool, который не требует, чтобы панель меню была видна ...
Комбинированный сдвиг клавиш + F10 открывает всплывающее меню (эквивалент щелчка правой кнопкой мыши на терминале), и оттуда профиль может быть изменен.
например xdotool key shift + F10 r 3
для перехода к третьему профилю
Я также обнаружил, что этот метод не требует установки задержки для xdotool (что я нашел необходимым для метода строки меню), поэтому поэтому он немного быстрее.
Я часто меняю профили, поэтому я заключил это в функцию:
function chp(){
xdotool key --clearmodifiers Shift+F10 r $1
}
, чтобы я мог просто вызвать chp N
, чтобы переключиться на N-й профиль.
Еще несколько советов и особенностей моей настройки:
Добавив команду chp
в мой .bashrc, я могу заставить новые вкладки всегда переключаться на профиль по умолчанию
Я раскрашиваю свои сеансы ssh на основе host, но мне не нравится, что мой псевдоним ssh открывает новые вкладки или окна, И я хочу, чтобы профиль вернулся к значению по умолчанию, когда я выхожу из ssh. Мое решение:
alias somehost = "chp 2; ssh user @ somehost; chp 1"
Я даю xdotool флаг - clearmodifiers
, чтобы, если я удерживал клавишу-модификатор (при открытии tab / window, выход из ssh и т. д.), это не будет мешать xdotool.
Я добавляю имена своих профилей с числами, чтобы, если я добавлю новый, он не сдвинет все остальные из-за алфавитного расположения меню профиля
Если у вас есть список серверов, к которым вы часто обращаетесь, я считаю, что самым простым решением было бы просто вызвать второе окно только для сеанса этого окна.
Во-первых, создайте отдельный gnome. -терминальный профиль для каждого удаленного местоположения, которое вы часто используете. Затем в каждом профиле укажите, что терминал должен выполнять команду входа в систему SSH для этого окна, а не в простой оболочке.
ssh alice@athena
Наконец, напишите короткий сценарий для запуска нового удаленного окна с заданным идентификатором профиля.
#!/bin/bash
if [[ $# -ne 1 ]] ; then
echo "Give me a server/profile name!"
exit 1
fi
gnome-terminal --window-with-profile=$1
exit 0
Используя эту стратегию, вы можете «бесконечно» изменять внешний вид окон терминала каждого блока и запускать их с одного «контрольного» терминала. Например, если мы назовем этот сценарий «rlv», то мы сможем создать удаленное окно, просто вызвав сценарий с именем профиля.
>> rlv athena
Если вы когда-нибудь нажали жирным пальцем на имя хоста или пренебрегали настройкой профиля для этот хост, тогда вы просто получите еще одно окно профиля по умолчанию на локальном поле. Есть способ закодировать сценарий, чтобы избежать этого, поместив логин в сам скрипт, а не в gnome-terminal:
#!/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
... но тогда вы теряете гибкость определения своего имени пользователя для входа в это поле. Эту дополнительную особенность сценария я оставляю читателю в качестве упражнения.
В зависимости от вашей цели, этот скрипт может оказаться полезным: https://github.com/xyrix/gnome-terminal-profile-switcher
Он делает своего рода monkey patch и генерирует новый профиль для каждого терминала, затем устанавливает некоторые переменные окружения, чтобы выставить программу для переключения темы профиля для вашего текущего терминала.
Надеюсь, пример скрипта safe_ssh все прояснит :-). Я использую его чуть больше года и это помогло мне не уничтожить живую базу данных компании ^_^
Я хотел сделать то же самое и, наконец, получил работающий скрипт, я разместил его на моем GitHub .
Как я объясняю в README.md, он на самом деле не переключается, а загружает конфигурацию профилей в профиль по умолчанию. Для этого конфигурация каждого профиля сохраняется в файл при первом запуске скрипта. Скрипт создает впечатление, что вы переключаетесь между профилями, что для меня достаточно. Надеюсь, это поможет кому-нибудь ...
Было бы будь отличным gnome-terminal, предлагал команду и ярлык "следующий профиль"; К сожалению, это не так.
Обходной путь для тех, у кого Alt + T
отключен (Правка> Настройки> Включить мнемонику - не отмечен): F10 слева слева вниз справа
и выберите профиль. Ой
Очень уродливое решение, которое я в итоге использовал, это
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
(Выбирается второй профиль), но вы можете изменить это, чтобы сказать профиль htir, изменив вторую команду "key Down" на xdotool key --delay 50 --repeat 2 Down
.
Что это делает:
Вам нужно установить xdotool sudo apt install xdotool
.
Необычно, что сам терминал не разрешает конфигурирование через терминал!
Я только что заметил, что мое исходное решение уже отклонено в вопросе. Хотя кажется, что нет простого способа изменить профиль, вы можете изменить цвет фона / переднего плана с помощью команды setterm
.
Итак, этот setterm -term linux -background black -foreground green
даст вам черный фон с зеленым текстом. Единственная проблема заключается в том, что ls имеет раскрашенный вывод, поэтому вы можете отключить ls colouring. В противном случае он сбрасывается на предыдущую цветовую схему
Исходный пост : Есть способ обойтись. Из man gnome-terminal:
- window-with-profile = PROFILENAME
Открыть новое окно, содержащее вкладку с данный профиль. Более одного из этих вариантов могут быть предоставлены.
Вот пример с моей машины. У меня есть три профиля: B&G (черный на зеленом), ForPrinting (черный шрифт, белый фон) и Default. Я делаю это в текущем типе окна gnome-terminal --window-with-profile = ForPrinting
. Затем я могу либо закрыть старое окно из командной строки, либо переключить и закрыть его графически.
Профиль B&G не работает. Вероятно, потому что & не является допустимым символом, поэтому имейте это в виду при именовании профилей.
Это довольно старый пост, но он продолжал появляться, пока я пытался решить эту проблему та же проблема, я думал, что опубликую свое решение.
Это включает в себя небольшой скрипт Python и переназначение кнопки CTRL + ALT + T для запуска скрипта вместо простого запуска терминала.
Создайте текстовый файл, я назвал мой terminal.py и убедитесь, что он исполняемый. Поместите в него следующий код. Это откроет окна терминала с использованием всех доступных профилей в последовательности, убедившись, что тот, который помечен как «по умолчанию», является первым в списке.
#!/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")
Используйте утилиту настройки клавиатуры, чтобы назначить новый ярлык для этого сценария. Для меня я переназначил CTRL + ALT + T, потому что это ярлык, который я использую для открытия окна терминала.
Не забудьте создать несколько профилей в вашем терминале. Этот сценарий будет использовать все ваши профили. Таким образом, чем больше вы создаете, тем к большему количеству вариантов окон вы также можете получить доступ. У меня есть несколько одинаковых, за исключением цвета фона. Это помогает мне распознавать их, когда я просматриваю их с помощью alt-tab.
Принятый ответ с использованием xdotool
работает, но содержит ошибок . Вот более простой способ.
Сначала объяснение, затем код.
Есть способ создать новое окно терминала с указанным профилем, если вы знаете UUID.
gnome-terminal --profile = '7e95bbb3-a584-469d-8ae1-75a08287f55a'
Итак, если мы можем каким-то образом ввести эту команду, все готово. Мы бы хотели, чтобы это происходило во всех этих случаях:
gnome-terminal
находится в / usr / bin / gnome-terminal
и может быть обновлен дистрибутивом.
/ usr / local / bin
предназначен для обычных пользовательских программ , а не , управляемых менеджером пакетов распространения, например локально скомпилированные пакеты. Вы не должны устанавливать их в/ usr / bin
, потому что будущие обновления дистрибутива могут изменить или удалить их без предупреждения.
Источник
$ PATH
проверяет / usr / local / bin
до / usr / local
:
$ echo $ PATH
/ home / generic / miniconda3 / condabin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games : / оснастка / bin
Итак, мы можем создать файл / usr / local / bin / gnome-terminal
, который будет иметь приоритет. Если нам когда-нибудь понадобится обойти нашу версию, нам придется использовать полный путь к исходному / usr / bin / gnome-terminal
.
Создайте этот файл и вставьте приведенный ниже код. Затем сделайте его исполняемым с помощью Я использую некоторые профили из https: //mayccoll.github.io/Gogh/
Возможно, вы также можете использовать update-alternatives в качестве аналогичного альтернативного подхода. Я этого не проверял. sudo chmod + x /usr/local/bin/gnome-terminal[1124507 provided.[12183 sizesCode[12184 providedExample Looks