LINUX.ORG.RU

Переключение закладок с клавиатуры

 , ,


0

1

Здравствуйте.

В программах для Windows есть неписаный (а может, и писаный) стандарт: в окне с закладками можно переключаться между этими закладками с клавиатуры, нажимая Ctrl+Tab. Более того, оказалось, что это работает и в wine!

Есть ли такая же возможность для «нативных» GUI-программ в Linux? Пока я нашёл только обходной путь: если удаётся последовательными нажатиями Tab добраться до закладочника, по закладкам можно ходить стрелками влево-вправо. Но это неудобно: клавишу Tab приходится нажимать несколько раз, причём для разных программ количество нажатий разное, а потом для нормальной работы фокус всё равно приходится убирать, опять хвататься за Tab. И так при каждом переключении. Удобнее тогда уж мышкой ткнуть. :(

Есть ли более естественный способ управления закладками с клавиатуры? Может, это можно где-то настроить? К сожалению, я не понимаю, что отвечает за это поведение: иксы или тулкиты. То, что у виндовых программ даже в wine всё отлично, наводит на мысль, что иксы не виноваты...

Запусти firefox, он на GTK+, открой несколько вкладок, нажми ctrl+tab.

kostik87 ★★★★★
()
Ответ на: комментарий от xcariba

Ctrl + PgUP/PgDown

О, спасибо, не знал про эту комбинацию. В хромиуме работает.

ozz_is_here
()
Ответ на: комментарий от xcariba

Ctrl + PgUP/PgDown

У меня, кстати, эта комбинация в qmmp работает, плейлисты переключает.

Но вообще, во многих современных программах, особенно KDEшных, наблюдается тенденция вместо вкладок делать монстрообразное mouse-only нечто вроде тулбара на стероидах: иногда сверху, иногда сбоку.

Вот моя любимая тема - программы учёта личных финансов. Вот я kmymoney открыл - слева что-то вроде вертикальных закладок: сводка, учреждения. счета, платежи. Места кушает много. С клавиатуры мне его удалось заставить работать только так, как описал ТС: 8 (!) раз нажимаем Tab, и потом стрелки вверх-вниз. На свежезапущенном kmymoney под KDE5 ни Ctrl+PgUP/PgDown, ни Ctrl+Tab не работают. Ну и как быстро добраться до платежей?

В GNU Cash (это уже GTK) есть вроде бы традиционные закладки (правда, применяются они чуть по-другому, например, в закладки открывается новый отчёт). Но... с клавиатуры опять-таки никак не управляются (открывал в Gnome 3).

А теперь сравните это с «Домашней бухгалтерией» Козловского (да-да, запущенной под wine). Открыли программу, один раз нажали Ctrl+Tab - и мы в расходах. (Нажимаем Ins и добавляем записи... Впрочем, тема не об этом.) Второй раз нажали Ctrl+Tab - и мы в доходах.

Так что да. В браузерах действительно Ctrl+Tab работает. А за их пределами всё куда менее однозначно.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)

тут всё просто: если разработчик софтины добавил обработку этих сочетаний клавиш, то это работает, если нет - извиняй. GTK не должен это делать за разработчика. а если в одном окне больше одного виджета с вкладками (да, это плохой дизайн интерфейса, но его возможно создать)? как GTK должен должен поступить в этом случае, если он будет делать это?

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

если разработчик софтины добавил обработку этих сочетаний клавиш, то это работает, если нет - извиняй.

GTK не должен это делать за разработчика

А вот винда почему-то делает! Во всяком случае Ctrl+Tab работает во всех виндовых программах с закладочником, которые я видел, а не только в тех, где разработчик специально упоролся и добавил это вручную.

а если в одном окне больше одного виджета с вкладками

Ну да, во-первых, это плохой дизайн. Во-вторых, для такого дизайна можно предусмотреть поведение по умолчанию (например, пусть GTK по умолчанию перебирает по клавишам только первый/верхний такой виджет, но при необходимости это можно отключить). Это явно не киллер-проблема.

EternalNewbie
() автор топика

В общем посмотрел - да, спасибо, всем за подсказки. В браузерах действительно всё работает. И это неспроста, браузер - наиболее известная программа, в которой пользователь активно работает с разными вкладками, и многие хотят это делать клавиатурой, а не мышью. Т.е. видимо, авторы фаерфокса и хрома специально добавляли такое поведение.

А вот, например, в очень хорошем плеере deadbeef закладки есть, под ними прячутся списки воспроизведения. Но ни Ctrl+Tab, ни Ctrl+PgDn на них не действуют. :( Вот тут Хоббит выше подсказал про qmmp, там это, вроде, работает - но этот qmmp винампоподобный, мне deadbeef нравится больше, и вообще он более фичастный.

EternalNewbie
() автор топика

для gtk2 в .gtkrc

binding "notebook"
{
  bind "<ctrl>Tab" { "change-current-page" (1) }
  bind "<ctrl><shft>Tab" { "change-current-page" (-1) }
}
class "GtkNotebook" binding "notebook"

по-идее, и остальные тулкиты подобным образом должны настраиваться

ananas ★★★★★
()
Ответ на: комментарий от ananas

И от меня спасибо. Попробовал этот кусок конфига на gnucash. У меня, кстати, этих rc несколько: просто ~/.gtkrc, ~/.gtkrc-2.0, ~/.config/.gtkrc, ~/.config/.gtkrc-2.0, ещё что-то для 3.0...

В общем, для GnuCash 2.6.15 (зависит от GTK 2.24) сработал ~/.gtkrc-2.0, но как-то нестабильно: Ctrl+Tab срабатывает через раз, Ctrl+Shift+Tab вообще не срабатывает. Правда, запущено это всё под KDE5, :) но вроде бы никаких глобальных клавиш на это не назначено. Проверю и в других DE...

hobbit ★★★★★
()
Ответ на: комментарий от EternalNewbie

EternalNewbie: С DeadBeef я этот кусок конфига тоже пробовал - не работает вообще. Похоже, там виджет закладок какой-то свой, нестандартный, в общем, cast waker. С другой стороны, я этими закладками там не пользуюсь - там есть ещё отдельный виджет со списком плейлистов, включается из режима дизайна. По нему можно перемещаться просто стрелками вверх-вниз, а табом переключаться между ним и выбранным плейлистом. Мне хватает.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

там виджет закладок какой-то свой, нестандартный, в общем

this

waker ★★★★★
()
Ответ на: комментарий от EternalNewbie

А вот винда почему-то делает!

винда этого тоже не делает. все добавляют все это вручную, на всех платформах.

waker ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.