Почалося все з банального. Користуюсь операційною системою Linux, робоче оточення GNOME, менеджер вікон – compiz в режимі псевдо-tile. Одна з незручностей супроводжувала вже давно: полюбив pidgin як ІМ-клієнт, там і аська, і жабер, і контакт з фейсбуком через jabber-транспорт… Плагіни от. Вікно контактів окремо від вікна переписки, і треба перекляцувати, щоб добратись до одного вікна або другого. Такого моя мишевозна натура винести не змогла, і полізла в гугл. Гарно вийшов із подібної проблеми із skype наш співвітчизник, створивши тулзу skypetab.
Наперед скажу, вийшло все не зовсім так, як би хотілось, але негативний результат – теж результат. Може, комусь буде цікаво.
На офіційному сайті створено кілька закликів про хелп в контексті сабжа, а згодом прохачі були м’яко послані розробниками на три букви (тиць, тиць і тиць).
Потрібний режим має схожий месенджер – gajim. Gajim не підтримував різні протоколи, транспорти не хотілось використовувати, і страждання від юзабіліті продовжились.
Робити форк піджина було би безумством, та й не спец я в c++/GTK. Плагін скапарити не годен. На подвиг надихнула робота китайських колег, котрі подібні маніпуляції зробили з GIMP, а саме, відомий крипт gimpbox. Написаний на python. Свій шедевр при відсутності оригінальності обізвав pidginbox.
В gimpbox створюється батьківське вікно, яке через GTK-сокети інтегрує в себе дочірні вікна. Допомагає в цьому бібліотека wnck (window navigator construction kit ), яка потрібна для роботи.
Подібним дещо ректальним способом вирішив зробити добро, але не зовсім склалось. Проблема виникла в неможливості передачі через такий механізм global app menu (поширена практика для нових дистрибів). Костиль існує в вигляді задання префіксу при запуску скрипта:
UBUNTU_MENUPROXY=0 ./pidginbox.py |
Друга, і більш істотна проблема в багу перехоплення клавіатурного фокусу. Просто не працює ввід з клавіатури, що для месенджера досить критично. “Вирішення” існує, коли затиснути [Tab] і мишою клацати на дочірнє вікно. Причому курсора миші так і не буде видно.
Усі костилі були нагуглені в найнесподіваніших місцях, такі ж недоліки має gimpbox, і на форумах розробників написано, що нормального вирішення поки що не знайдено.
З того всього таки перейшов на gajim. ICQ через транспорт.
Викладаю скрипт, раптом знадобиться. Щоправда, він схожий на решето від довгого колупання, але немає змісту його впорядковувати поки що.
Pidgin buddy list and conversation in single window, like Gajim: pidginbox.py