Как из bash скрипта в KDE активировать окно? (Известны его PID, id и name)

Модератор: Модераторы разделов

green_guy
Сообщения: 48

Как из bash скрипта в KDE активировать окно?

Сообщение green_guy »

Желательно с использованием только PID.
Gentoo, kernel 2.6.11, Gnome, Sawfish, vim
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: Как из bash скрипта в KDE активировать окно?

Сообщение Valerius »

Через dcop
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
Skull
Модератор
Сообщения: 2089
ОС: ALT Linux

Re: Как из bash скрипта в KDE активировать окно?

Сообщение Skull »

Valerius писал(а):
27.01.2006 21:45
Через dcop
Ага. Сам попробуй. Я вот всё переискал - не нашёл лёгкого пути. dcop kwin интерфейса для передачи фокуса и активации окна не имеет.
Skull
Спасибо сказали:
green_guy
Сообщения: 48

Re: Как из bash скрипта в KDE активировать окно?

Сообщение green_guy »

Получилось только отобразить окно. Код ниже. Почему-то не получается передать ему фокус. Наверное поэтому оно появляется позади текушего окна. Если ставлю окну "подержать поверх других", всё выглядит почти как надо.

Код: Выделить всё

/*
 * 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

Re: Как из bash скрипта в KDE активировать окно?

Сообщение Skull »

green_guy писал(а):
28.01.2006 22:17
Ещё немного, и уйду к гномам :(
Никто не держит: ты свободен в своём выборе.
Skull
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: Как из bash скрипта в KDE активировать окно?

Сообщение Valerius »

А зачем это вообще нужно? Я вообще-то не припомню прог, которые бы этим пользовались. Представляешь себе злость и офигевание юзера, которому ни с того ни с сего время от времени активизируют не нужное на данный момент окно? Если уж нужно пользователя о чём-то срочно уведомить, то для этого есть другие методы - стандартные диалоги с мессинжами, мигающая пиктограмма в трее, уведомление в панели задач, osd, звук. Тебе мало?
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
Sparky
Сообщения: 604
Статус: core dumped
ОС: Plan 9

Re: Как из bash скрипта в KDE активировать окно?

Сообщение Sparky »

Skull писал(а):
28.01.2006 23:46
green_guy писал(а):
28.01.2006 22:17
Ещё немного, и уйду к гномам :(
Никто не держит: ты свободен в своём выборе.

+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++
Спасибо сказали:
green_guy
Сообщения: 48

Re: Как из bash скрипта в KDE активировать окно?

Сообщение green_guy »

Наконец, нашёл. Гномы распознали во мне пингвина и послали ловить рыбу. И без очков не обошлось. Пойманный пилорыл разрешил мой сабж так:

Код: Выделить всё

bash-2.05b$ echo "((setq window (get-window-by-id 0x1400033))(show-window window)(raise-window window)(set-input-focus window))" | sawfish-client
Gentoo, kernel 2.6.11, Gnome, Sawfish, vim
Спасибо сказали:
green_guy
Сообщения: 48

Re: Как из bash скрипта в KDE активировать окно?

Сообщение green_guy »

А вот лёгкий путь:
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
Спасибо сказали: