æè¿ Kubuntu ã使ãå§ãã¦å²ã¨ããæããªãã ãã©ãã¢ã¯ãã£ãã¦ã£ã³ãã¦ã®ä¸ã«ããã¦ã£ã³ãã¦ã ããåéæåãããã¨ãã§ããªãã£ãã
è¨å®ã§ã¢ã¯ãã£ãã¦ã£ã³ãã¦ä»¥å¤ãåéæåãããã¨ã¯ã§ãããã ãã©ãªã¼ã
ã¨ããããCompiz 以å¤ã§ããããæ©è½ãæã£ã¦ãã®ã¯è¦ããã¨ãªããã§ãããã¾ãéè¦ã¯ãªãã®ãããããªããããããã¢ã¯ãã£ãã¦ã£ã³ãã¦ãæåé¢ã«ããªãè¨å®ã§ä½¿ã£ã¦ã人èªä½å°æ°æ´¾ãªæ°ããããä»æ¹ãªãã便å©ãªãã ãã©ãªã
ChatGPT ã«èãã¦ã¿ããã¦ã£ã³ãã¦ããã¼ã¸ã£ã¼ã®å¤ããã§ãå¶å¾¡ã§ããããªã®ã§ä½ã£ã¦ã¿ãã
å¿ è¦ãããªæè¡è¦ç´
ã¦ã£ã³ãã¦ãéæ度ãæå®
次ã®ã³ãã³ããå®è¡ããã¨ãã¦ã¹ã«ã¼ã½ã«ã â¼ ã«ãªãã®ã§ã¦ã£ã³ãã¦ãã¯ãªãã¯ããã¨ããã®ã¦ã£ã³ãã¦ãéæ度50%ã«ãªãã
% xprop -f _NET_WM_WINDOW_OPACITY 32c -set _NET_WM_WINDOW_OPACITY 0x80000000
C ã ã¨ãããªæãã
unsigned long opacity = 0x80000000; XChangeProperty(display, window, XInternAtom(display, "_NET_WM_WINDOW_OPACITY", False), XA_CARDINAL, 32, PropModeReplace, &opacity, 1);
ã¦ã£ã³ãã¦ã®æ·±ãé ãå¾ã
% xwininfo -root -tree
ã§æµ ãé ã«è¡¨ç¤ºãããã
C ã§ã¯ XQueryTree()
ã使ãã¨æ·±ãé ã®ã¦ã£ã³ãã¦ãªã¹ããè¿ãããã
ã¦ã£ã³ãã¦ãéãªã£ã¦ãããã©ããã調ã¹ã
xwininfo ã® geometry ã§ã¦ã£ã³ãã¦ã®ä½ç½®ã¨å¹ ã¨é«ãããããã®ã§ãè¨ç®ããã°éãªã£ã¦ããã©ãããããã ãã ããxwininfo ã® â¼ ã§é¸æããã¨ãã®ã¦ã£ã³ãã¦ã§ã¯ãã¡ã§ãroot ç´ä¸ã®ã¦ã£ã³ãã¦ãããªãã¨ãã£ã¹ãã¬ã¤ä¸ã®ä½ç½®ãã¡ããã¨åããªãã£ã½ãã
xwininfo -tree
ã® Parent window id
ã root window
ã«ãªãã¾ã§è¦ªã辿ãæãã§ã
% xwininfo -tree -id 0x63ae7b | grep 'Parent window' Parent window id: 0x137b273 (has no name) % xwininfo -tree -id 0x137b273 | grep 'Parent window' Parent window id: 0x137b272 (has no name) % xwininfo -tree -id 0x137b272 | grep 'Parent window' Parent window id: 0x5e3 (the root window) (has no name)
ãã®å ´å㯠0x137b272 ã® geometry ãåãã°ããã£ã½ãã
% xwininfo -id 0x137b272 | grep geometry -geometry 582x438+2799+1344
C ã§ã¯ XGetGeometry()
ã§åå¾ã§ããã
Window root; int x, y; unsigned int width, height, border_width, depth; XGetGeometry(display, window, &root, &x, &y, &width, &height, &border_width, &depth);
ã¢ã¯ãã£ãã¦ã£ã³ãã¦ãå¾ã
% xprop -root _NET_ACTIVE_WINDOW _NET_ACTIVE_WINDOW(WINDOW): window id # 0x63ae7b
C ã ã¨ãããªæãã
unsigned long type; int format; unsigned long nitems; unsigned long bytes; unsigned long *win; XGetWindowProperty(display, window, XInternAtom(@display, '_NET_ACTIVE_WINDOW', False), 0, ~0, 0, AnyPropertyType, &type, &format, &nitems, &bytes, &win); // win ãã¦ã£ã³ãã¦ID
ã¢ã¯ãã£ãã¦ã£ã³ãã¦ãå¤ãã£ããã¨ãç¥ã
_NET_ACTIVE_WINDOW
ã¤ãã³ããç£è¦ããã°ãããããã
xprop -spy
ãå®è¡ããã¨ã¢ã¯ãã£ãã¦ã£ã³ãã¦ãåãæ¿ãããã¨ã«éç¥ãããã
% xprop -spy -root _NET_ACTIVE_WINDOW _NET_ACTIVE_WINDOW(WINDOW): window id # 0x4a000b0 _NET_ACTIVE_WINDOW(WINDOW): window id # 0x4a000b0 _NET_ACTIVE_WINDOW(WINDOW): window id # 0x4c0002c _NET_ACTIVE_WINDOW(WINDOW): window id # 0x4c0002c _NET_ACTIVE_WINDOW(WINDOW): window id # 0x6000e0 _NET_ACTIVE_WINDOW(WINDOW): window id # 0x6000e0 _NET_ACTIVE_WINDOW(WINDOW): window id # 0x63ae7b _NET_ACTIVE_WINDOW(WINDOW): window id # 0x63ae7b ^C
ä½æ ã2è¡ãã¤åºããã©çç±ã¯ç¥ããªãã
C ã 㨠XSelectInput()
㧠PropertyChangeMask
ãæå®ãã¦ãXNextEvnet()
ãå¼ã¶ã¨ PropertyNotify
ã¤ãã³ããçºçããã¨å¾©å¸°ããã
Ruby ã§ä½ã£ã
C ã§ä½ãã®ãã¢ã¬ã ããã³ãã³ããããã®ã§ã·ã§ã«ã§ãä½ããããªãã ãã©ãRuby 好ããªã®ã§ Ruby ã§ä½ã£ã¦ã¿ãã
Ruby ãã X ã使ãããã®ã©ã¤ãã©ãªãæ¢ãã¦ã¿ããã©è¯ããããªã®ãè¦ã¤ãããªãã£ãã®ã§ãã¾ã㯠Fiddle ã使ã£ã¦å¿ è¦ãªé¢æ°ã®ã©ããã¼ãä½ã£ã¦ãããã使ãæãã§ä½ã£ãã
https://gitlab.com/tmtms/wmadd/
ãããªãã«åãããã«ãªã£ãã®ã§ Gem ã«ãããgem install wmadd
ã§ã¤ã³ã¹ãã¼ã«ã§ãããwmadd
ã§èµ·åã§ããã