Терминал Sakura: настраиваем под себя

Некоторое время назад я писал о терминальном приложении Sakura — отличном легковесном аналоге аналогичных программ, поставляемых по умолчанию с Gnome, KDE и Xfce. С тех пор им и пользуюсь, причем подправил исходный код для собственного удобства, о чем и хочу поведать.



На картинке видно, что Sakura имеет вкладки. Обычно я открываю их примерно одинаковое количество для типичных целей — парочку для работы над текущими проектами (Projects-1 и Projects-2), одну для создания собственных модулей (Reusable), одну для управления шлюзом (Gate shell) и т.д. Довольно быстро пришел в мысли, что эти вкладки нужно назвать соответствующими словами, чтобы они располагались в привычном порядке (по умолчанию они называются «Терминал 1», «Терминал 2»...«Терминал n»).

Открыть сразу необходимое количество вкладок можно запуская программу с ключами:

sakura -n 8 -t "3f-lab ;)" --geometry 81x24


Попутно здесь указан заголовок окна (-t) и количество строк-колонок в терминале (--geometry). Изменить названия вкладок можно подправив исходный код, который заключен практически в единственном файле — /usr/src/sakura-2.3.8/src/sakura.c. Перемещаемся к строке 2093 и пишем там вместо:

term->label_text=g_strdup_printf(_("Terminal %d"), sakura.label_count++);



/* Create label (and optional close button) for tabs */
if(sakura.label_count == 1)      term->label_text=g_strdup_printf(_("Projects-1  "), sakura.label_count++);
else if(sakura.label_count == 2) term->label_text=g_strdup_printf(_("Projects-2  "), sakura.label_count++);
else if(sakura.label_count == 3) term->label_text=g_strdup_printf(_("Reusable    "), sakura.label_count++);
else if(sakura.label_count == 4) term->label_text=g_strdup_printf(_("Felix OSGi  "), sakura.label_count++);
else if(sakura.label_count == 5) term->label_text=g_strdup_printf(_("Gate shell  "), sakura.label_count++);
else if(sakura.label_count == 6) term->label_text=g_strdup_printf(_("Remote shell"), sakura.label_count++);
else if(sakura.label_count == 7) term->label_text=g_strdup_printf(_("Root shell  "), sakura.label_count++);
else term->label_text=g_strdup_printf(_("Terminal %d"), (sakura.label_count++) - 7);


Индусский код, конечно, но в данном случае он более чем уместен: работает и ладно. У меня нет существенной практики написания сколь-нибудь сложных программ на языке C, но в данном случае почему-то получилось. Всё это хозяйство откомпилировалось, установилось и работает уже много месяцев, экономя немало времени и нервов.

З.Ы. Одно из величайших удобств Sakura в том, что перемещаться по вкладкам можно не снимая рук с клавиатуры, горячими клавишами Alt+стрелки.
  • +10
  • 08 декабря 2010, 22:16
  • yababay

Комментарии (10)

RSS свернуть / развернуть
+
0
ээх… одного не пойму.
мне понравился данный терминал) только хотелось бы что бы название вкладки считывалось из первой команды вбиваемой в этой вкладе (в основном к куче разных терминалов подключаюсь, очень было бы удобно) такая реализация возможна?
avatar

ksandras

  • 11 января 2011, 21:37
+
0
Midnight Commander каким-то образом прописывает себя в название вкладки. Приходится даже снимать галочку «Заголовок xterm» в его настройках. А вот как это делается — не знаю, надо сильно заморачиваться, чтобы разобраться.
avatar

yababay

  • 11 января 2011, 21:57
+
0
во-во…
avatar

ksandras

  • 11 января 2011, 22:11
+
0
а вы не вкурсе как для каждой вкладки поставить разную кодировку и можно ли это в сакуре?
вот к примеру мне очень нравится yakuake/guake но там нельзя так сделать. приходится пользоватся Konsole
ЗЫ. привык к centerim и приходится юзать термирал с KOI8
avatar

jerr

  • 01 апреля 2011, 16:52
+
0
как вариант создать пользователя и ему настроить локаль
avatar

durman

  • 01 апреля 2011, 18:02
+
0
это не практично и неуниверсально.
avatar

jerr

  • 01 апреля 2011, 18:31
+
0
Ну это же опенсорц, добавь такую фичу =)
avatar

durman

  • 01 апреля 2011, 20:44
+
0
если я правильно понял то как запускать вкладку от имени другого пользователя?
локаль в любой вкладке я могу и еспортом поменять, на это уже есть алиасы. Но вот нужно установить кодировку отображения терминала в каждой вкладке разную. вот в konsole можно такое сделать.
avatar

jerr

  • 01 апреля 2011, 18:45
+
0
Sakura — очень простой терминал. Фактически это обертка вокруг виджета vte (входит в состав проекта Gnome). Так что ожидать от нее каких-то чудес не приходится. Durman посоветовал неплохое решение: завести особого пользователя, настроить ему специфическую локаль и на одной из вкладок входить в его аккаунт типа

sudo su koiuser


Я с какими-то кодировками кроме UTF-8 уже несколько лет не встречался, поэтому Sakura меня полностью устраивает.
avatar

yababay

  • 01 апреля 2011, 19:30
+
0
наверное мы о разном с вами) есть локаль а есть кодировка отображения терминала. если они совпадают то все отображается окей. а если у вас профиль терминала настроен отображать все как utf8 и експортируете LANG=ru_RU.koi8r то русские буквы будут видны некоректно. и точно так же и с другим пользователем.
я понял вопрос пионерский) забудем)
avatar

jerr

  • 01 апреля 2011, 22:21

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.