Как перехватывать вызовы GTK-приложения? (Или узнать, чего и куда оно пишет, делает...)
Модератор: /dev/random
-
ТВЭЛ
- Сообщения: 132
- ОС: основана на SlackWare
Как перехватывать вызовы GTK-приложения?
Есть удобная цветовыбиралка gcolor2, но она, к сожалению, вообще на UNIX-style плевать хотела (не принимает ничего в stdin, ничего в stdout не пишет). Хочу научить её запоминать последний выбранный цвет и при закрытии отправлять #hex в буфер обмена. Но не представляю, откуда брать эту информацию. Оно же как-то взаимодействует с X-сервером?
Время не ждет.
-
ТВЭЛ
- Сообщения: 132
- ОС: основана на SlackWare
Re: Как перехватывать вызовы GTK-приложения?
Кстати! В настройках XFCE или рабочего стала LXDE тот же "виджет" используется, при этом он запускается с нужным цветом (с тем, который был выбран в прошлый раз) и без диалога сохранённых цветов. Как делать то же самое? То есть всё же точно какие-то параметры принимает это штука, но в каком виде?
И оно закрывается при нажатии ОК. Вот бы также.
Очень интересно! Если пакет gcolor2 удалить, выбор цвета в настройке рабочего стола всё равно останется и выглядит в точности также.
Если запустить настройку, вообще никаких процессов не появляется в top.
Ничего не понимаю.
И оно закрывается при нажатии ОК. Вот бы также.
Очень интересно! Если пакет gcolor2 удалить, выбор цвета в настройке рабочего стола всё равно останется и выглядит в точности также.
Если запустить настройку, вообще никаких процессов не появляется в top.
Ничего не понимаю.
Время не ждет.
-
/dev/random
- Администратор
- Сообщения: 5456
- ОС: Gentoo
Re: Как перехватывать вызовы GTK-приложения?
Это стандартный gtk'шный виджет, GtkColorSelection. То, что его использует программа gcolor2 вовсе не мешает и другим программам его использовать.
Если знаете питон, можете за несколько минут написать аналог gcolor2 с использованием PyGtk. А с учётом того, что в VIM есть возможность вызывать питоновые команды, можете сразу в виде VIM-скрипта сделать.
Если знаете питон, можете за несколько минут написать аналог gcolor2 с использованием PyGtk. А с учётом того, что в VIM есть возможность вызывать питоновые команды, можете сразу в виде VIM-скрипта сделать.
-
ТВЭЛ
- Сообщения: 132
- ОС: основана на SlackWare
Re: Как перехватывать вызовы GTK-приложения?
Питон не знаю :( Про виджет уже почитал, даже попытался исходники gcolor2 поправить под себя, но потратил дофига времени и пока никакого результата. Эх.
Да и вообще, надо ведь чтобы такая штучка мгновенно запускалась. Gcolor2 написан на C и работает очень быстро.
А питонский вариант наверняка притормаживать будет.
Да и вообще, надо ведь чтобы такая штучка мгновенно запускалась. Gcolor2 написан на C и работает очень быстро.
А питонский вариант наверняка притормаживать будет.
Время не ждет.
-
deadhead
- Сообщения: 1913
- Статус: zzz..z
Re: Как перехватывать вызовы GTK-приложения?
от того что вы будите дергать виджет силами питона, сам виджет автоматически на питон не перепишеться... так что в скорости вы не проиграете
P.S. SWIG
[x] close
-
/dev/random
- Администратор
- Сообщения: 5456
- ОС: Gentoo
Re: Как перехватывать вызовы GTK-приложения?
Код: Выделить всё
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
w = gtk.ColorSelectionDialog('color')
if w.run() == -5:
c = w.get_color_selection().get_property('current-color')
print '#%02x%02x%02x' % (c.red/256, c.green/256, c.blue/256)
w.destroy()-
ТВЭЛ
- Сообщения: 132
- ОС: основана на SlackWare
Re: Как перехватывать вызовы GTK-приложения?
Там ещё надо модули питоновские GTK устанавливать, они тянут всякие зависимости.
В общем, я уже почти доделал другой вариант с UNIX-конвейерами :)
Кстати, немного оффтопный вопрос: как-то можно из консоли сделать активным окно с запущенным приложением?
В общем, я уже почти доделал другой вариант с UNIX-конвейерами :)
Кстати, немного оффтопный вопрос: как-то можно из консоли сделать активным окно с запущенным приложением?
Время не ждет.
-
ТВЭЛ
- Сообщения: 132
- ОС: основана на SlackWare
Re: Как перехватывать вызовы GTK-приложения?
В общем, пока сделал так:
+ в Vim сочетание на вставку цвета из /tmp/lastColor.
Поскольку Agave не молниеносно запускается (1-2 сек.), то её открываю на сеанс работы с цветами и переключаюсь между окнами.
В будущем подумываю сделать скриптик под Vim, чтобы он сам менял фокус окна.
Код: Выделить всё
colpick() { agave -d | grep current | awk -F# '{print "#"$2}' | tail -1 | > /tmp/lastColor }+ в Vim сочетание на вставку цвета из /tmp/lastColor.
Поскольку Agave не молниеносно запускается (1-2 сек.), то её открываю на сеанс работы с цветами и переключаюсь между окнами.
В будущем подумываю сделать скриптик под Vim, чтобы он сам менял фокус окна.
Время не ждет.