So it’s been about two weeks now since I switched to Fvwm. I love it so far. I find one thing extreemly strange though: It apears that you have to manually configure the miniicon for most windows.
From what I understand, if the application has a EWMH about a MiniIcon, then fvwm can use this as the miniicon. If the application does not have this EWMH, then tough. You get no MiniIcon, unless you manually configure one using the Style command.
The reason I find this unusual is because a lot of applications (like xdvi for instance) have a EWM hint about an Icon, but no hint about a miniIcon. Wouldn’t it be natural if Fvwm used this icon (maybe resized) as the applications MiniIcon if a miniicon is not provided?
Do you know if this can be done somehow? If I knew some X programing, I could probably use FvwmEvent and a cleverly written C program to accomplish the above. But is there an easier way …
Hello again Thomas. Looks like you’ve all the answers to my questions. Maybe in a few hundered years I’ll be able to answer one of yours
Maybe I dont’ understand this fully though. I’m OK with the fact that EWMH icons are changed dynamically etc. I notice that when I have NO styles whatsoever defined, and I ask to Iconify a window (say xdvi), then the window get’s iconified with a Nifty xdvi Icon. Does the application create (or specify) this icon only when it recieves the “Iconify” request? If yes, all hope is lost. If no, maybe we can do something about it?
For instance, when I run xdvi in openbox (where I recently switched from), openbox is aware of the applications Icon (and shows me the icon when I alt-tab, which is really where it is most hepfull). I think it’s because (and correct me if I’m wrong) openbox is a NETWM, and fwvm is an EWM, and maybe xdvi has a NETWM icon hint, but not an EWM icon hint? Now xprop shows that xdvi has
WM_HINTS(WM_HINTS):
Client accepts input or input focus: True
Initial state is Normal State.
bitmap id # to use for icon: 0x1400001
Now if I could understand what this, then I’d konw how to get the Icon for xdvi! I could ofcourse read the openbox source and see how it gets the application icon, and try porting part of it to fvwm? But I’m an X programmer n00b and was hopign to get my “thesis” done instead …
If you think I should be posting this on the dev list instead of cluttering up the forrum, let me know
Maybe. At the moment, I rarely post questions, I just post many answers, but I like it that way.
I’m not sure – it shouldn’t be application dependant. The icon is always there – but only shows (usually) when iconified.
Use xprop again – and look for _NET_WM_ICON – this ought to (IIRC) hold an array of ARGB values that define the icon.
This is an array of 32bit packed CARDINAL ARGB with high byte being A, low byte being B. The first two cardinals are width, height. Data is in rows, left to right and top to bottom.
Thanks a ton. Always good to have a friendly helpfull linux guru. Well, atleast the UGH claims that’s the only way to understand Unix …
That was the first thing I looked for. None. The full output of xprop is
_KDE_NET_WM_FRAME_STRUT(CARDINAL) = 1, 1, 19, 3
_NET_WM_STATE(ATOM) =
WM_STATE(WM_STATE):
window state: Normal
icon window: 0x0
_NET_WM_VISIBLE_ICON_NAME(UTF8_STRING) = 0x6d, 0x69, 0x64, 0x74, 0x65, 0x72, 0x6d, 0x31
_NET_WM_VISIBLE_NAME(UTF8_STRING) = 0x58, 0x64, 0x76, 0x69, 0x3a, 0x20, 0x20, 0x6d, 0x69, 0x64, 0x74, 0x65, 0x72, 0x6d, 0x31
_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_DESKTOP(CARDINAL) = 1
WM_CLIENT_LEADER(WINDOW): window id # 0x1600035
WM_LOCALE_NAME(STRING) = "C"
WM_CLASS(STRING) = "xdvi", "XDvi"
WM_HINTS(WM_HINTS):
Client accepts input or input focus: True
Initial state is Normal State.
bitmap id # to use for icon: 0x1600001
WM_NORMAL_HINTS(WM_SIZE_HINTS):
user specified location: 0, 0
user specified size: 1148 by 800
window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "jimmie.uchicago.edu"
WM_COMMAND(STRING) = { "xdvi.bin.orig", "-name", "xdvi", "teaching/midterm1.dvi" }
WM_ICON_NAME(STRING) = "midterm1"
WM_NAME(STRING) = "Xdvi: midterm1"
I started reading a little about the EWMH specification online, and grepping the openbox source code when your message arrived. No luck . Maybe in a few years I’ll know this junk and write something to fix it.
It looks like this would be a usefull thing to have, so I’m not sure why the fvwm devs did not impliment it by default anyway
It varies greatly from person to person, of course as to how one learns. Even the “gurus” (an attribution I have always disagreed with) learn…
But EWMH’s are implemented – but only for those applications which support them (so things like GNOME and KDE apps). Xdvi (as an example) doesn’t support EWMH and hence doesn’t have a miniicon associated with it in that way. But what it will have is the Xatom which specifies the Icon ID – something which is irrelevant here, I’m sorry to say. Xdvi gets it’s icon in one of the standard locations in /usr/share/icons, or somesuch.
It doesn’t work like that, I’m afraid. For miniicons to work, the application itself has to understand them (to set the Xatom in the first place). I doubt very much that you can use xprop to -set the desired Xatom.
Yep, that’s true. Most reasonable applications (like atleast the gnome / kde ones) set the icon and miniicon corretcly. And the Icon ID is possibly irrelevent here, however a google search turned up the following:
I guess that some applications following the above specification will put the icon pixmap in the WM_HINTS Xatom, and that could possibly be where xdvi and others put the icon. (I searched the entire installed latex package files for the xdvi icon file, and never found one!). If applications put the icon here, there might be hope.
Now as you point out, I probably won’t be able to use xset to do anything about the miniicon. However I defenately can use FvwmCommand . I’ll play around a little, and revive my C skills. If nothing else I’ll post back and say “you were right, and there’s nothing i can do about the MiniIcon”. I’m hoping otherwise though …