bbidulock / icewm

A window manager designed for speed, usability, and consistency
Other
577 stars 98 forks source link

[Feature Suggestion] Show tooltips or pop-up widgets to explain icewm preferences to the user while running icewm #615

Closed rubyFeedback closed 1 year ago

rubyFeedback commented 2 years ago

Hey there gijsbers and any icewm folks out there,

This is a small usability improvement (I think).

I would like to propose that:

(and similar settings)

Would have a slight "tooltip widget" shown, that briefly explains what these options do.

I refer to entries such as:

"EdgeWitch"

or

"LimitPosition"


Rationale:


Counter-Suggestion against the Proposal:

But!

I am more of the www-era people. We www-era folks rarely read man-pages even (and if so only via the www + browser, anyway), but even more importantly than that, some of us like to "explore-via-discovery", so a tooltip widget may be useful to have in this case. That way we can instantly read what this option is all about. Right now I do not know what "EdgeWitch" does. I could google and read the manpages but I am also lazy, and perhaps more people are lazy so ... an in-icewm widget may be helpful in this case.

Additionally, one benefit of this would be that we could instantly read the description of that particular entry as it is, without needing to search specifically on a man-page for it (some man-pages keep the same word several times, so you may have to do a repeated search to find the specific entry that is relevant).

Implementation suggestion:

Ok ... I do not know C/C++ and I do not want to propose anything that leads to a lot of code to maintain. So this is just an idea really - please disregard if not applicable.

I am thinking that rather than a "tooltip" as such, perhaps we could simply open another "right-side widget" after x seconds, say, after 3 seconds with the mouse on-hover over e. g. "LimitPosition". Or 5 seconds or 10 seconds - any number is fine IMO. It should not be too short, so that older users that expected the old behaviour are not surprised. Hence something sensible ... like in most tooltips. Perhaps 3 or 5 seconds would appear to make sense.

So, what I mean in this case is ... if the mouse cursor is over the "LimitPosition" entry for 3 seconds (use any other n seconds value here, this is just a suggestion), without any click-action (e. g. no left-click event of the mouse), then perhaps the user is unsure what to do and may expect more information. So, in this event, open another widget-panel that only shows the CONTENT for that particular entry.

For example, over "EdgeWitch":

"This is an old witch that lives on the edge of the map. You can drag here into the middle of the screen if you place a frog in the central panel".

Ok ok... the above should be replaced with the real description; I just got distracted by the name "witch" there.

I believe these individual entries, such as EdgeWitch and the other entries, are probably already described somewhere, so it should be possible to obtain these entries as-is.

In ruby I would use a yaml file, with key-value pairs, and then e. g. fetch the content of the "LimitPosition" key. I don't know how to do so in C/C++ but perhaps there are simple ways how to do this in C/C++ too. (Ruby and Python kind of spoiled me by being so easy. Evidently C/C++ dominate by speed and efficiency.)

IF the description is already available then this may simplify the implementation (if the suggestion is considered an ok-suggestion).

The suggestion above, about a widget that pops-up to the right side of the widget, is only one suggestion. There are many other ideas how to solve this of course.

You could also use a smaller icewm-specific pop-up widget too, of course. Ideally this small pop-up would be auto-closed the moment the mouse cursor/pointer is moved. That way we do not even have to click on any close-window button.

The reason I suggested the above implementation, about simply a right-roll-out pane, was in that I am trying to think about how to enable this in a very simple manner, to simplify the code and shorten the implementation time - so to me the idea was to simply re-use the already "right unfold the panel" option that icewm uses right now if you click on Settings via the mouse cursor.

If you click on Settings via the mouse cursor, then to the right side that pane shows up; and if you then select something there on that pane, another next next pane shows up to the right side. May be helpful to simply show an image, so that people don't have to click on the settings button frantically right now: :D

https://i.imgur.com/qy6sKrA.png

See what I mean? You click on Settings, then the first pane shows up to the right; you then click on "Preferences" and the next pane shows up right and so forth. So we could just expand to the right one more time, in regards to showing these "tooltips" (or pop-up messages).

So I was thinking we could just re-use that, in the event we don't have a specific pop-up widget for icewm. (I guess it calls some xorg specific code for that part anyway. I haven't looked at the code because I won't really easily understand the C++ code.)

At any rate, thank you for reading and please feel free to disregard if not applicable or useful enough - I completely understand time constraints given and that the time investment may have to be worthwhile the implementation, e. g. if several users may benefit from a suggestion or not (feature-wise that is; bugs may be different of course, but this here is clearly not a bug but a feature-suggestion).

rubyFeedback commented 2 years ago

Oops slighty markdown formatting issue above ... I wrote this first in my editor so excuse the formatting problems.

gijsbers commented 2 years ago

I looked into adding tooltips to menu entries a long time ago. The problem then and now is that menus are popped up with a grab, i.e. they are modal. This precludes the use of tooltips, unfortunately.

We can make an elaborate preferences dialog, like most do, but that is much more work. Also, if you can see from this video, some users who are not lazy but who do manage to read the manpages can do amazing this with the current menu preferences:

Manjaro IceWM

Does your previous issue still need to be open?