joewing / jwm

Joe's Window Manager
http://joewing.net/projects/jwm
MIT License
519 stars 84 forks source link

Group common windows in Tasklist and no mousescroll #183

Closed ghost closed 9 years ago

ghost commented 9 years ago

Hi, would it be possible to add an option to group common windows in the tasklist? It would also be nice to be able to prohibit scrolling through open windows on the task list.

I have really been enjoying using JWM as my daily driver! It is fantasic!! Thanks for all your hard work!!

joewing commented 9 years ago

It shouldn’t take too much effort to add the ability to group common windows. I’m thinking something along the lines of grouping multiple windows by WM_HINT name and/or class into a button and then having a menu for each window with submenus for window actions. Scrolling through open windows probably wound’t make much sense if the windows were grouped. Of course, in general I think all mouse bindings should be customizable.

technosaurus commented 9 years ago

As part of this, would it be possible to have ICONS_ONLY (default if grouped), TEXT_ONLY(default if icons are disabled) and ICONS_AND_TEXT (default if !grouped and icons enabled), but should it come up on a click event or more like a tooltip?

I wonder if the root menu code could be reused/refactored to display the individual window names?

joewing commented 9 years ago

I have this partially implemented now as of commit f1dcc5e (the window-groups branch). It should work should anyone want to give it a try, but there are still things to be implemented. For example, right now it only shows icons. I would like to display the class name too (making this configurable, of course).

joewing commented 9 years ago

This is implemented as of snapshot 1121 (I finally decided to call v2.3.0 done). There is only grouping now, I think it works much better that way.

As far as only showing an icon, you can set maxwidth to the height of the tray to remove the text. Of course, that means you can't get text-only if icons are enabled, but I'm not sure that's worth implementing.

aleksandr-samusenko commented 9 years ago

All fine with groups, only a small request: could add "global" setting (not for specific classes of windows, but for all) to disable the grouping of windows and restore the old behavior? I believe many people do not use the group as I do.

joewing commented 9 years ago

Unless there's significant demand for it, I'd rather not support both because doing so would mean more code to support and would make JWM ever-so-slightly less lightweight. Having used it like this for a couple of days, I really think this works better. The taskbar was essentially useless to me before. My only concern is the labels for the groups. JWM takes them from the class name in WM_CLASS, but that probably won't be localized and may not be meaningful.

yetanothergeek commented 9 years ago

Unless I'm missing something, I don't like this new behavior.

Before, if I had five terminals open on a desktop (each with a different title) it was easy enough to glance up at the taskbar, find the one I wanted, and activate it with a single click. But now, I have to right-click the terminal button, find the item I want in the menu, move the mouse to that item, and click it. So for me it feels like it takes something that was simple and makes it more complicated.

I understand how people who have more windows open than the old taskbar could comfortably hold would appreciate the new behavior, but for people with only a few windows open (often of the same class) it makes things a lot less handy.

jdoe0154 commented 9 years ago

Because Joe wants to see significant demand: I too would appreciate a way to disable the grouping of windows, for the exact reasons that yetanothergeek has described so well.

joewing commented 9 years ago

The change to make this optional was actually pretty simple, so it's available as of commit c772690e3eb43d6ebbe97cec8c88fc9c093a79e8.

yetanothergeek commented 9 years ago

Excellent - thank you, Joe!

yetanothergeek commented 9 years ago

A couple of very minor issues...

joewing commented 9 years ago

The setting would make more sense under TaskListStyle. The reason it's under TrayStyle is because I'm in the process of removing TaskListStyle, which I think is unnecessary (I haven't decided for sure yet).

aleksandr-samusenko commented 9 years ago

Awesome! A small suggestion: maybe need to check settings.groupTasks at the end of CreateWindowMenu(in winmenu.c) - prevent adding to the top of the window(and "taskbar") menu "separator" and the instanceName?

Upd: This is fixed, thanks.

ghost commented 9 years ago

Thanks @joewing , this is working great I have been using it for quite a while now. The one minor issue that I have noticed is that there is no visual indication if I have multiple windows open (unless of course I left click... which I really like the way you implemented that).

Could you add some sort of number for the total windows? So it could be something like [ Firefox (2) ] [ Geany ] [ X-terminal-emulator (2) ] where firefox and x-terminal-emulator both have 2 open windows thanks again for this, it makes my tasklist much more manageable!!

joewing commented 9 years ago

I like the idea of having the number of open windows. So now (as of snapshot 1180) it shows that.

ghost commented 9 years ago

Thanks that does exactly what I wanted you are amazing!! I really appreciate your quick response!!!

ghost commented 9 years ago

ok, another thing I have noticed recently, my Pager uses a black font, though the tasklist/Tray/Buttons use a white font (my Tray is a dark color) Since you talked about merging Tray/Clock/TaskList/etc styles, could the Pager font color be dependant on that, or is there a new configuration option I am unaware of?

joewing commented 9 years ago

PagerStyle is still separate. Within the PagerStyle, the "Text" tag determines the color of the desktop name.

ghost commented 9 years ago

Thanks Joe, it wasn't in the docs (at least under http://www.joewing.net/projects/jwm/config.shtml#pager )... I figured it had to be something like this though.. thanks again!

joewing commented 9 years ago

This should be in the docs not (both online and the man page).