Как из bash скрипта в KDE активировать окно? (Известны его PID, id и name)
Модератор: Модераторы разделов
-
green_guy
- Сообщения: 48
Как из bash скрипта в KDE активировать окно?
Желательно с использованием только PID.
Gentoo, kernel 2.6.11, Gnome, Sawfish, vim
-
Valerius
- Бывший модератор
- Сообщения: 1469
- Статус: Отпетый КДЕ'шник
Re: Как из bash скрипта в KDE активировать окно?
Через dcop
Свобода есть тонкая полоска между диктатурой и анархией.
---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
-
Skull
- Модератор
- Сообщения: 2089
- ОС: ALT Linux
Re: Как из bash скрипта в KDE активировать окно?
Ага. Сам попробуй. Я вот всё переискал - не нашёл лёгкого пути. dcop kwin интерфейса для передачи фокуса и активации окна не имеет.
Skull
-
green_guy
- Сообщения: 48
Re: Как из bash скрипта в KDE активировать окно?
Получилось только отобразить окно. Код ниже. Почему-то не получается передать ему фокус. Наверное поэтому оно появляется позади текушего окна. Если ставлю окну "подержать поверх других", всё выглядит почти как надо.
Ещё немного, и уйду к гномам
Код: Выделить всё
/*
* Raise any window in X. <X11/Xlib.h> - cool!
* To build executable try: $ gcc xraise.c -o xraise -lX11.
* Original from: http://groups.google.com/group/comp.windows.x/browse_frm/thread/12b5f86b9dfeafbd/c8b92e3b0e2a3ad9?lnk=st&q=xwininfo+%22raise+window%22&rnum=1#c8b92e3b0e2a3ad9
* Syntax: xraise <WINDOWID> , to find <WINDOWID> try xwininfo
*/
#include <X11/Xlib.h>
#include <stdio.h>
int main (int argc, char **argv )
{
Display *display;
Window window;
char *fmt = sizeof ( Window ) == sizeof ( long ) ? "%li" : "%i";
if ( argc < 2 ) {
printf ( "syntax: xraise <WINDOWID>\n" );
goto error;
}
if ( sscanf ( argv[1], fmt, &window ) != 1 ) {
printf ( "invalid value for window ID: %s\n", argv[1] );
goto error;
}
display = XOpenDisplay ( NULL );
XMapRaised( display, window );
int result = XSetInputFocus( display, window, RevertToParent, CurrentTime );
//XClearWindow( display, window );
//XRaiseWindow ( display, window ); //only 'blink', not 'raise' ( at least in kde )
//XMapWindow( display, window );
XCloseDisplay ( display );
return 0;
error:
return 1;
}Ещё немного, и уйду к гномам
Gentoo, kernel 2.6.11, Gnome, Sawfish, vim
-
Skull
- Модератор
- Сообщения: 2089
- ОС: ALT Linux
-
Valerius
- Бывший модератор
- Сообщения: 1469
- Статус: Отпетый КДЕ'шник
Re: Как из bash скрипта в KDE активировать окно?
А зачем это вообще нужно? Я вообще-то не припомню прог, которые бы этим пользовались. Представляешь себе злость и офигевание юзера, которому ни с того ни с сего время от времени активизируют не нужное на данный момент окно? Если уж нужно пользователя о чём-то срочно уведомить, то для этого есть другие методы - стандартные диалоги с мессинжами, мигающая пиктограмма в трее, уведомление в панели задач, osd, звук. Тебе мало?
Свобода есть тонкая полоска между диктатурой и анархией.
---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
-
Sparky
- Сообщения: 604
- Статус: core dumped
- ОС: Plan 9
Re: Как из bash скрипта в KDE активировать окно?
+1
Блог
--------------------
GCS/M/MU/P/IT/E d- s: a- C++(+++) UBL++ P->-- L+++$ E- W+++$ N* o? K? w>--
O M-@ V- PS@ PE+ Y+ PGP+ t 5 X R* tv-->- b++ DI? D>+ G e+(++) h--- r+ y++
--------------------
GCS/M/MU/P/IT/E d- s: a- C++(+++) UBL++ P->-- L+++$ E- W+++$ N* o? K? w>--
O M-@ V- PS@ PE+ Y+ PGP+ t 5 X R* tv-->- b++ DI? D>+ G e+(++) h--- r+ y++
-
green_guy
- Сообщения: 48
Re: Как из bash скрипта в KDE активировать окно?
Наконец, нашёл. Гномы распознали во мне пингвина и послали ловить рыбу. И без очков не обошлось. Пойманный пилорыл разрешил мой сабж так:
Код: Выделить всё
bash-2.05b$ echo "((setq window (get-window-by-id 0x1400033))(show-window window)(raise-window window)(set-input-focus window))" | sawfish-clientGentoo, kernel 2.6.11, Gnome, Sawfish, vim
-
green_guy
- Сообщения: 48
Re: Как из bash скрипта в KDE активировать окно?
А вот лёгкий путь:
bash-2.05b$ wmctrl -ia 0x2e03513
Где wmctrl - "A command line tool to interact with an EWMH/NetWM compatible X Window Manager".
bash-2.05b$ wmctrl -ia 0x2e03513
Где wmctrl - "A command line tool to interact with an EWMH/NetWM compatible X Window Manager".
Gentoo, kernel 2.6.11, Gnome, Sawfish, vim