(Gtk,Xlib) Main프로그램에서 외부 윈도우 접근하는방법.
글쓴이: lowid / 작성시간: 토, 2007/07/28 - 8:57오후
Main 프로그램이 있습니다
이프로그램은 전역단축키로(nabi,scim의 한영키처럼 말이죠)
외부 프로그램을(주어진 옵션에 따라서 띄우고) show/hide합니다
더 간단하게 말하자면, Tilda처럼(터미널 프로그램) 단축키로 프로그램을 보여줬다 감춰줬다하는거죠
다른게 있다면 Tilda는 vte라이브러리로 만든 터미널을 show/hide 하지만
만들려고 하는 Program은 프로그램에서 만들어진게 아니라 외부프로그램(urxvt,stardict등)을 실행시켜서 그 외부윈도우를
조작해야 하는데 어떻게 해야할지 모르겠습니다.
fork해서(?) 하다고 하면 PID,PPID정도만 알수 있을거 같은데..
흠.. 아니면 이러한 역활을 하는 걸 만들려면 윈도우메니저 만드는 수준까지 가야하는건가요..;
(윈도우메니저는 크기조절 같은게 가능하니까요.;;그건좀 복잡한거 같아서........... 싫은데..)
혹시 이런 역활을 하는 프로그램을 아신다면 추천해 주세요.
Forums:
irc에서도
irc에서도 말씀드렸지만...
wnck 라이브러리를 사용해보세요.
참고할 함수목록은 다음과 같습니다.
GList* wnck_screen_get_windows (WnckScreen *screen);
int wnck_window_get_pid (WnckWindow *window);
void wnck_window_minimize (WnckWindow *window);
void wnck_window_unminimize (WnckWindow *window,
guint32 timestamp);
void wnck_window_maximize (WnckWindow *window);
void wnck_window_unmaximize (WnckWindow *window);
void wnck_window_maximize_horizontally (WnckWindow *window);
void wnck_window_unmaximize_horizontally (WnckWindow *window);
void wnck_window_maximize_vertically (WnckWindow *window);
void wnck_window_unmaximize_vertically (WnckWindow *window);
void wnck_window_shade (WnckWindow *window);
void wnck_window_unshade (WnckWindow *window);
기타등등..
한 프로그램에서 여러개의 윈도를 관리하면.. 대략 난감.. 직접 ipc를 만드는 수 밖에는 없을듯합니다.
----
Do not feed troll!
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
좋긴한데,
좋긴한데, 윈도우메니저(데스크톱)에 너무 의존하는거 같군요
Gnome,kde 같은건 될지는 몰라도 다른 작은 윈도우 메니져는 작동이 제대로 하지 않네요
fluxbox같은경우 shade옵션이 아예 안먹히고 dwm같은경우는 그냥 세그멘테이션 오류나면서 꺼져버리고,
데이터(GList?의)도 아예 가지고 오지 못하는듯합니다..
(show/hide,key문제는 딴걸로도 해결할수 있을거 같지만, 이번에는 아예 데이터를 읽지못하니..)
아마도 각 윈메니저에 따라서 해당기능을 처리 안해줘서 그런듯 싶은데..
이방법말고도, 다른방법은 없을까요?
---------------------------------------------
아치리눅스좀 써주세요
-> 아치리눅스 유저 좀 꼬셔오세요. 1인당 10명!
흠.. EWMH 를 지원하지
흠.. EWMH 를 지원하지 윈도우 매니저라면 사용한다면
직접 Top-level 윈도우를 검색하는 방법 밖에 없습니다.
다음 코드는 Toplevel 윈도우와 바로 그 하위의 윈도우를 보여주는 예제입니다.
윈도우 모양을 다루는 것은 윈도우 매니저마다 다르게 구현할 수 있습니다.
아예 구현이 되지 않은 기능 같은 경우는 직접 XMoveWindow, XReiseWindow
XMapWindow, XUnmapWindow 등을 이용할 수 밖에 없습니다.
따라서 ICCCM, EWMH 호환 윈도우 매니저만 고려하시는 게 좋습니다.
$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}
댓글 달기