LINUX.ORG.RU

Редактируемые горячие клавиши пунктов меню gtk приложений как встарь?

 , ,


0

2

Может, всё-таки и сейчас есть возможность редактировать shortcuts (accelerators) любого произвольного пункта меню gtk-приложения, не редактируя его код? Гуру говорят, что в старые добрые прежние времена было проще: можно было навести мышь на любой пункт меню, нажать желаемое сочетание клавиш, и всё - можно пользоваться.

Я тут поправил исходный код файлового менеджера mate caja, в частности, файл caja-1.26.1/src/file-manager/fm-directory-view.c, а также иные файлы, где поменял NULL на «<control>F5» и «<control>F6». И т.п.

static const GtkActionEntry directory_view_entries[] = {
....
   /* name, icon name, label */ {FM_ACTION_COPY_TO_NEXT_PANE, NULL, N_("_Other pane"),
				"<control>F5", N_("Copy the current selection to the other pane in the window"),
				G_CALLBACK (action_copy_to_next_pane_callback) },
  /* name, icon name, label */ {FM_ACTION_MOVE_TO_NEXT_PANE, NULL, N_("_Other pane"),
				"<control>F6", N_("Move the current selection to the other pane in the window"),
...
};

Скомпилировал (debuild -b -uc -us), поставил (dpkg -i *.deb). Хорошо,
только вопрос остаётся быть.
Я на debian bookworm.

★★

Последнее исправление: novus (всего исправлений: 5)

Шорткаты это что-то такое, что запоминается на уровне мышечной памяти. Значит можно прошить и в код, ничего страшного, ведь настраивается оно один раз.

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

если в программе нет кода для смены шоткатов, то поможет только правка кода.

Чтобы не править код каждой программы, возможно, имеет смысл поправить код gtk.
Что там такого наделали в этом gtk, может, можно чуток вернуться в прошлое?

novus ★★
() автор топика
Последнее исправление: novus (всего исправлений: 1)
Ответ на: комментарий от novus

Вряд ли такая функциональность была на уровне GTK, для этого библиотеке понадобится хранить индивидуальные настройки для приложения. Это не сложно в реализации, но, как мне кажется, библиотека не должна этим заниматься.

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

Было что-то подобное в первой версии Gtk. Это было так давно, что я не помню, как оно работало, лишь смутно помню, что действительно было.

Это было где-то около 22-23 лет назад, уже целое поколение успело вырасти. Зачем из Gtk это выпилили, не знаю, давно потерял веру в проекты, связанные с Gnome. Поначалу казалось, что люди делают хорошие вещи, но они давно свернули куда-то не туда.

emorozov
()

в старые добрые прежние времена было проще: можно было навести мышь на любой пункт меню, нажать желаемое сочетание клавиш

В SpaceFM есть такая фишка, «ПКМ по пункту меню - Клавиатурное сочетание». Это лишь часть возможностей режима дизайна.

Правда этот ФМ уже заброшен автором, но есть активные форки, например zzzfm или spacefm по ссылке с арчвики.

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

Прикол в том, что если можно поменять горячие клавиши тупо наводясь на пункт меню, то как восстановить значение по умолчанию? Где сохранять значения, как, в каком виде? Это же надо целую базу данных организовать для каждого приложения, окна и пункта меню...

Проще эту возможность вынести в отдельный плагин для GTK/WM, а по хорошему разработчик должен сам организовать в своей программе диалог с настройками для клавиш. GTK лишь должен предоставлять удобный инструментарий для организации таких настроек.

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

Давно уже есть такая возможность.

https://developer-old.gnome.org/gtk2/stable/gtk-migrating-GtkBuilder.html

Since version 2.12, GTK+ provides GtkBuilder to construct user interfaces from XML descriptions, similar to the functionality provided by GladeXML in the libglade library.

Например, первый пункт в gtk3-demo «Application Class». В файле с описанием меню https://gitlab.gnome.org/GNOME/gtk/-/blob/3.24.34/demos/gtk-demo/menus.ui есть строчка: <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;b</attribute>, что означает Ctrl+Shift+b.

Пример для GTK4: https://developer.gnome.org/documentation/tutorials/beginners/getting_started/opening_files.html#add-the-open-shortcut-to-the-keyboard-shortcuts-help.

gag ★★★★★
()