Sida 1 av 1

Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 11:54
av dmz
Hur kan jag tilldela ett fönster en användarspecifik fönstertitel när jag startar det?
Ungefär som urxvt -T "blabla" -e irssi, men även för icke-terminal-program?

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 12:28
av Urban Anjar

Kod: Markera allt

xclock -title Klocka
funkar till exempel, men alla X-klienter tar inte lika snällt emot standardflaggor som -title >:(

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 12:38
av dmz
Det fungerar tyvärr inte med de program jag avser.
Kanske att det finns något lite mer sofistikerat sätt att lösa det på?

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 14:56
av Konservburk
Du kan använda kommandot xprop för att byta namn på fönster:

Kod: Markera allt

xprop -root _NET_CLIENT_LIST |
sed 's/.*# //;s/, /\n/g' |
xargs -n1 xprop -set WM_NAME pilutta -id

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 15:45
av dmz
Egentligen vill jag inte byta namn på ett fönster, utan tilldela det ett namn innan det ens startas. Det där såg nästan lite för avancerat ut.

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 15:56
av Konservburk
Du kan inte tilldela ett namn till ett fönster som inte finns. Och vill du sätta namnet direkt när fönstret skapas så blir det till att ändra i källkoden för programmet som skapar fönstret i fråga. Annars får du vackert först starta programmet, och sedan byta namn på fönstret. Eller kanske knåpa ihop ett skript som gör båda sakerna efter varandra.

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 16:04
av dmz
Konservburk skrev:Du kan inte tilldela ett namn till ett fönster som inte finns. Och vill du sätta namnet direkt när fönstret skapas så blir det till att ändra i källkoden för programmet som skapar fönstret i fråga. Annars får du vackert först starta programmet, och sedan byta namn på fönstret. Eller kanske knåpa ihop ett skript som gör båda sakerna efter varandra.
Vad jag tänkte på var ju att skicka med ett argument till programmet, precis som man kan köra i terminalen. Jag förstår ärligt talat inte hur jag ska få ut någonting specifikt från koden ovan; Om jag t.ex vill byta namn på pidgin, hur gör jag då?
Om du har lust att förklara lite mer i detalj skulle det vara uppskattat.

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 16:31
av Konservburk
dmz skrev:Vad jag tänkte på var ju att skicka med ett argument till programmet, precis som man kan köra i terminalen.
Då måste du ändra i programmets källkod så att programmet kan förstå ett sådant argument.
dmz skrev:Jag förstår ärligt talat inte hur jag ska få ut någonting specifikt från koden ovan;
Det var bara ett exempel på hur man kan använda xprop för att byta namn på fönster.
dmz skrev:Om jag t.ex vill byta namn på pidgin, hur gör jag då?
Jag har för mig att just pidgin (såväl som firefox) är ett elakt program som sätter tillbaka fönsternamnet till vad den själv vill så fort man ändrar på det.
dmz skrev:Om du har lust att förklara lite mer i detalj skulle det vara uppskattat.
Detaljer och detaljer... du kan ju börja med att kolla i manualbladet till xprop och se om du fattar något. Den enklaste varianten för att byta namn på ett fönster är annars:

Kod: Markera allt

xprop -set WM_NAME hejsan
... och sedan klicka på fönstret du vill ska heta "hejsan".

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 16:41
av dmz
Har experimenterat lite.

Har ändrat 2 attribut:

xprop -name "VLC media player" -set WM_NAME "test"
xprop -name "test" -set WM_ICON_NAME "test"




Vilket även ser bra ut här:

Kod: Markera allt

dmz@fnx:~$ xprop -name "test"
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
_NET_WM_DESKTOP(CARDINAL) = 0
_KDE_NET_WM_FRAME_STRUT(CARDINAL) = 1, 1, 18, 1
_NET_FRAME_EXTENTS(CARDINAL) = 1, 1, 18, 1
_NET_WM_STATE(ATOM) = 
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_MOVE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW, _OB_WM_ACTION_UNDECORATE
_NET_WM_VISIBLE_ICON_NAME(UTF8_STRING) = 0x56, 0x4c, 0x43, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x20, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72
_NET_WM_VISIBLE_NAME(UTF8_STRING) = 0x56, 0x4c, 0x43, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x20, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: True
		Initial state is Normal State.
		bitmap id # to use for icon: 0x22000ea
		bitmap id # of mask for icon: 0x22000ec
		window id # of group leader: 0x2200001
XdndAware(ATOM) = BITMAP
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
_NET_WM_ICON(CARDINAL) = 32, 32, 13074544, 32670, 963392, 0, 13738592, 0, 963392, 0, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4290929154, 4290929154, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16777215, 16777215, 16315890, 16315890, 16315890, 4290929154, 4294343170, 4294870530, 4290929154, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4292767234, 4294343170, 4294345218, 4292766210, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4293554690, 4294078978, 4294606338, 4293815810, 16315890, 16777215, 16777215, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4293554690, 4293567070, 4293567070, 4293567070, 4293567070, 4293554690, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4290429638, 4293323502, 4292009698, 4293323502, 4291483358, 4291481298, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16777215, 16777215, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4292533982, 4292008666, 4293323498, 4292008666, 4293060326, 4290166466, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4292270810, 4291481298, 4293323498, 4292007642, 4293323498, 4291744470, 4293323498, 4291481298, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16777215, 16777215, 16315890, 16315890, 16315890, 4292533982, 4293060326, 4292008666, 4293323498, 4292008666, 4293060326, 4292533982, 4293060326, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4292533982, 4291745494, 4293323498, 4292009698, 4293323502, 4291745502, 4292796130, 4291745494, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4291978758, 4293036586, 4293301830, 4293302866, 4293567058, 4293566022, 4293297702, 4291712514, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4290662914, 4292503042, 4293555714, 4294077954, 4294077954, 4294343170, 4294345218, 4294081026, 4292237826, 4290662914, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4290662914, 4292766210, 4293556738, 4293815810, 4294078978, 4294343170, 4294345218, 4294082050, 4292502018, 4290662914, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16777215, 16777215, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4291189250, 4292766210, 4293555714, 4293815810, 4294078978, 4294343170, 4294345218, 4294082050, 4292765186, 4291189250, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4291713538, 4291713538, 4292767234, 4293555714, 4293815810, 4294078978, 4294081026, 4294083074, 4294083074, 4293028354, 4291713538, 4291713538, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16777215, 16777215, 16315890, 16315890, 16315890, 4291979798, 4291979798, 4293028354, 4293815810, 4293813762, 4294077954, 4294080002, 4294343170, 4294343170, 4293290498, 4291979798, 4291979798, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4289375918, 4292532954, 4291736210, 4292518510, 4292776530, 4293300810, 4293301830, 4293041746, 4292519530, 4291472018, 4290164406, 4291481298, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4289375918, 4292007638, 4290692810, 4292798182, 4291483358, 4292798186, 4291745502, 4293060330, 4291483358, 4292798182, 4290693838, 4292270810, 4289375918, 4290428610, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4291218122, 4290165438, 4292533982, 4291481294, 4293060326, 4291482322, 4293060326, 4291744466, 4293060326, 4291481294, 4292533982, 4290428606, 4291744466, 4288323234, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4288850610, 4292270810, 4290954950, 4292797154, 4291481298, 4292797154, 4291744466, 4293060326, 4291481298, 4292797154, 4290954950, 4292270810, 4289639094, 4291218126, 16315890, 16315890, 16777215, 16777215, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4289347078, 4289629814, 4290429638, 4292533986, 4291481298, 4292797154, 4291481298, 4293060326, 4291744466, 4292797154, 4291218126, 4292533982, 4290429638, 4292007642, 4288313958, 4288297486, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4291975682, 4289083906, 4290924034, 4291197502, 4291474078, 4292795098, 4291481294, 4292797154, 4291482330, 4292797158, 4291482326, 4292533982, 4291216058, 4292528830, 4290671162, 4290135554, 4288295426, 4290134530, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16777215, 16777215, 16315890, 4293817858, 4291187202, 4289083906, 4291187202, 4291974658, 4292764162, 4293030414, 4292770342, 4292772410, 4292775494, 4292775494, 4293037626, 4293297702, 4293556750, 4293290498, 4291973634, 4290660866, 4288558594, 4290135554, 4292236802, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4294082050, 4293818882, 4292502018, 4290134530, 4291187202, 4292238850, 4292765186, 4293028354, 4293287426, 4293287426, 4293813762, 4293813762, 4293815810, 4294078978, 4293816834, 4293290498, 4292237826, 4290660866, 4289609218, 4292238850, 4293291522, 4294082050, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4294611458, 4294346242, 4294083074, 4294083074, 4293027330, 4291711490, 4291974658, 4292502018, 4293027330, 4293026306, 4293288450, 4293551618, 4293552642, 4293815810, 4293815810, 4293553666, 4293289474, 4292499970, 4291973634, 4293028354, 4294346242, 4294347266, 4294611458, 4294611458, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4294616578, 4294616578, 4294611458, 4294348290, 4294348290, 4294346242, 4294343170, 4293815810, 4293288450, 4293288450, 4293287426, 4293288450, 4293288450, 4293551618, 4293552642, 4293815810, 4293816834, 4294080002, 4294082050, 4294345218, 4294609410, 4294611458, 4294611458, 4294613506, 4294616578, 4294616586, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4294886986, 4294886986, 4294885962, 4294885962, 4294886986, 4294886986, 4294886986, 4294885962, 4294884938, 4294884938, 4294884938, 4294884938, 4294884938, 4294884938, 4294884938, 4294884938, 4294884938, 4294885962, 4294885962, 4294888010, 4294888010, 4294888010, 4294888010, 4294888010, 4294888010, 4294888010, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 4291189250, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16777215, 16777215, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890, 16315890
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x3e, 0x7e, 0x0, 0x0
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 35651814
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_NET_WM_USER_TIME(CARDINAL) = 71418521
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x22000e5
WM_CLIENT_LEADER(WINDOW): window id # 0x2200001
_NET_WM_PID(CARDINAL) = 5512
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLIENT_MACHINE(STRING) = "fnx"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		program specified location: 0, 0
		program specified minimum size: 435 by 86
		window gravity: NorthWest
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "frame", "frame"
WM_ICON_NAME(STRING) = "test"
_NET_WM_ICON_NAME(UTF8_STRING) = 0x56, 0x4c, 0x43, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x20, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72
WM_NAME(STRING) = "test"
_NET_WM_NAME(UTF8_STRING) = 0x56, 0x4c, 0x43, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x20, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72
dmz@fnx:~$ 
Själva titeln är dock oförändrad på fönstret, vad beror det på?

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 16:49
av Konservburk
dmz skrev:Själva titeln är dock oförändrad på fönstret, vad beror det på?
Är det samma problem med okomplicerade program, t.ex. xclock?

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 16:53
av dmz
Nae, med xclock fungerar det fint. Jag ser inga andra variabler som skulle kunna påverka titeln, vad kan det i så fall bero på?

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 17:03
av Konservburk
dmz skrev:Nae, med xclock fungerar det fint. Jag ser inga andra variabler som skulle kunna påverka titeln, vad kan det i så fall bero på?
Det kanske är fel fönster du har försökt byta namn på? Du kan ju försöka med klickmetoden för att se om du har fått tag i rätt fönster. Kör helt enkelt xprop och klicka sedan på det fönster du är intresserad av.

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 17:05
av dmz
Mjo jag testade det också, och det är rätt fönster.

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 05 aug 2008, 17:28
av Konservburk
Så du menar att WM_NAME faktiskt inte är samma sak som visas i fönstertiteln? Jag kan tänka mig två möjligheter... antingen har du en kass fönsterhanterare som inte uppdaterar fönstertiteln som den borde... eller så är det trots allt inte rätt fönster. Det kan nämligen finnas konstiga lösningar med fönster-i-fönster som är lika stora och heter samma sak, men ändå inte är exakt samma fönster. Isf skulle det kunna vara så att du har ändrat på det ena av dessa, men inte på det andra. Kolla upp vad fönstrets förälder och eventuella barn heter.

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 06 aug 2008, 06:26
av dmz
Konservburk skrev:Så du menar att WM_NAME faktiskt inte är samma sak som visas i fönstertiteln? Jag kan tänka mig två möjligheter... antingen har du en kass fönsterhanterare som inte uppdaterar fönstertiteln som den borde... eller så är det trots allt inte rätt fönster. Det kan nämligen finnas konstiga lösningar med fönster-i-fönster som är lika stora och heter samma sak, men ändå inte är exakt samma fönster. Isf skulle det kunna vara så att du har ändrat på det ena av dessa, men inte på det andra. Kolla upp vad fönstrets förälder och eventuella barn heter.
Min kassa fönsterhanterare är openbox. Ska kika lite mer på detta under dagen.

Re: Hur tilldela ett fönster en custom windowtitle?

Postat: 06 aug 2008, 10:13
av Konservburk
Jag tvivlar på att openbox är en kass fönsterhanterare, men du skulle ju kunna prova om det är samma problem med någon annan så att vi kan utesluta fönsterhanteraren iaf.