Cassia Window List

UUID: CassiaWindowList@klangman
Last edited:
12 hours ago 2024-11-20, 17:00
Last commit: [5ffdbda9] Add/update Finnish translations (#6598)

A window list/panel launchers based on CobiWindowList with some additional features

README

Close

This is a Cinnamon window list and panel launcher applet based on CobiWindowList with a number of additional features designed to give you more control over how your window-list operates.

Recent new features (Aug 2023 - Oct 2024):

  • Added scroll-wheel options, cycle all window-list windows and cycle group/pool windows
  • Added context menu options to close all/other windows for the buttons application
  • Saves new default thumbnail window sizes (adjusted using the mouse scroll-wheel) across cinnamon restarts
  • Now uses application specific thumbnail windows sizes across all workspaces
  • Changing the "Default thumbnail window size" setting will now reset all scroll-wheel set thumbnail sizes
  • Add "Always on top" item to the button context menu as well as "Always on top" mouse actions (Cinnamon 5.4+)
  • Allow rearranging Thumbnail menu items using drag-and-drop, also allow dropping on the desktop
  • Add options for hiding button labels when the windows workspace/monitor is not the current workspace/monitor
  • Added an option to sort the Thumbnail menu for grouped buttons based on the Workspace & Monitor index
  • Added 4 scroll-wheel actions options which applies when the scroll-wheel is used on a window-list button
  • Added "Restore/Minimize 1st window in group" option to the "Left button action for grouped buttons" option list
  • Support "drag-&-drop to desktop" which will move a window to the workspace & monitor it's dropped on
  • "Move window here" context menu/mouse action options to move a window to the current monitor/workspace
  • Thumbnail menu items will now show the windows workspace/monitor number(s) when appropriate
  • Added an option to configure the "number label" contents (added workspace and monitor number options)
  • Added an optional vertical ellipsis character to indicate a window-list button is grouped
  • Added 4 new mouse action options that will activate windows 1-4 of a grouped button
  • Added a configuration option to set the delay length before showing full size preview windows
  • Mouse action options for window tiling, untiling and moving window to current workspace
  • Hover peek: Option to show a full size preview when hovering buttons/thumbnails
  • No Click activate: Option to automatically switch focus to the button/Thumbnail last hovered
  • Adjustable spacing between window-list buttons
  • Ability to disable the new window animation
  • Ability to change the icon saturation from grayscale (0%) to vivid (200%)
  • Ability to show windows from other workspaces
  • Restores custom group/ungroup application setting after reboot/cinnamon-restart
  • Hotkey option to assign a set of 1-9 hotkeys to all window-list buttons
  • Hotkey hints using the (`) grave key with any registered hotkey modifiers
  • Added a Left-Click option to start new application windows in Launcher mode
  • Ability to show a common set of pinned buttons on all workspaces
  • Smart numeric hotkeys to assign a set of 1-9 hotkeys to a specific application
  • A bunch of fixes

The design goals are to:

  1. Allow you to declutter your window list when running many windows without having to do without button labels
  2. Keyboard hot-keys to switch to specific windows so you don't have to reach for the mouse so often
  3. Allow you to make full use of your mouse buttons to interact with the window list
  4. A panel launcher that can activate existing windows rather then unconditionally launching new ones

Requirements

This applet requires at least Cinnamon 4.0 but Cinnamon 6.0 is recommended

Installation

  1. Right click on the cinnamon panel that you wish to add the CassiaWindowList to and click "Applets"
  2. Click on the "Download" tab and select "Cassia Window List" and then click the install button on the right
  3. Click on the "Manage Tab"
  4. You most likely will want to disable the existing window-list applet you are using
  5. Select the "Cassia Window List" entry and then click the "+" button at the bottom of the Applet window
  6. The CassiaWindowList Basic Setup Wizard window will appear, follow the instructions to configure to your liking
  7. Right click on the cinnamon panel and use "Panel edit mode" to enable moving the window-list within the panel
  8. More configuration options: Right-click on any window-list button, "Applet Preferences" -> "Configure..."

Features

In addition to the features of the CobiWindowList...

  • Hotkeys: Assign hotkeys to windows and applications so you can switch-to/minimize/start application windows using the keyboard
  • Application pooling: Keeps all window list buttons from the same application together side by side
  • On demand application grouping: Allows for Group/Ungroup application windows on the fly
  • Label pooling: Show only one label when adjacent windows are for the same application
  • Automatic grouping/ungrouping: Group/ungroup windows for an application based on available space in the window list
  • Zoomable thumbnail windows: Thumbnail windows can be zoomed in or out using the mouse scroll wheel
  • Configurable mouse button actions for the middle, forward and back mouse buttons
  • Configurable Ctrl/Shift + mouse button actions for all 5 mouse buttons
  • One character unicode indicators characters to indicate group window count, minimized status and pinned status
  • Total control over which window-list buttons have labels, and what the label contents are
  • Automatic configuration backup so you can restore your configuration after adding the applet to a panel again

Feedback

You can leave a comment here on cinnamon-spices.linuxmint.com or you can create an issue on my CassiaWindowList development GitHub repository:

https://github.com/klangman/CassiaWindowList

This is where I develop new features and test out any new ideas I have before pushing to cinnamon-spices.

If you use this applet please let me know by liking it here and on my Github repository, that way I will be encouraged to continue working on the project.

CHANGELOG

Open

Log In To Comment!

62 Comments

spaceghost24
spaceghost24-1 day ago
Is it possible to add the option to disable the scroll-to-the-left animation when you close a window from the list of thumbnails, or at least to make it faster? (Unless I've simply missed such an option in the settings?)
Kevin Langman
Kevin Langman-10 hours ago
How are you closing the window? Clicking on the red "X" button on the thumbnail menu item or using a mouse action like setting up the middle button to close a window when clinking on thumbnail menu item? I tried both on my machine but in both cases the thumbnail menu closes after closing the window, so I don't think I am fully understanding the issue you are reporting here. If possible maybe you can screen-record the issue that you are talking about?
spaceghost24
spaceghost24-6 hours ago
Sorry that I was unclear! The thumbnail is disappearing just fine when I close the window (regardless of whether I'm using the x button or the middle click). However, if there are still other open thumbnails in the list, there's a little animation where the thumbnail collapses from the right to the left before disappearing. Here's an demonstration of what I mean: https://imgur.com/a/AAYwvXd I like being able to pick and choose which windows to close from the thumbnail list when I have a lot of windows open, but I'd really like to be able to speed up or disable that animation, if that's at all possible. No worries if not. :)
Kevin Langman
Kevin Langman-2 weeks ago
Looking to get people opinion on a small thing. The "down-arrow" currently used to indicate a window is "minimized". When the window-list is on the top panel should the minimized arrow be an "up-arrow" or is it best to always indicate a window is minimized using a "down-arrow" no matter what panel the window-list is on?
Francesco Petri
Francesco Petri-2 weeks ago
I think it'd be more intuitive if the arrow pointed "away" from the main workspace. So up for the top panel, down for the bottom panel, ...
binarynoise
binarynoise-1 month ago
Does an option for the "pooled" mode exist to close all instances of an application? If not, would it be possible to add one?
Kevin Langman
Kevin Langman-1 month ago
The new options where added in version 2.3.6.
binarynoise
binarynoise-4 weeks ago
Thank you very much!
Kevin Langman
Kevin Langman-1 month ago
I added the feature to my github version, but I will wait for more testing time before I push to cinnamon-spices. If you really what the feature now you can install my github version for now.
Kevin Langman
Kevin Langman-1 month ago
No, that option does not exist, but it's a good idea. It exists when you right-click on a "grouped" button, but not when you right-click on a button in a "pool". I'll add that feature in, but I am really busy for the next 3 weeks so it might be later in the month when it gets done. You can open an issue in my github if you what to make sure it doesn't get forgotten! Thanks for the suggestion!!
superian
superian-2 months ago
Thank you again for having added the 'always on top' option. The one issue I have been having is that the list of open windows in the workspace and the launchers for browser / terminal / file manager are fixed to the right hand side (on my panel, where the workspace switcher is) rather than on the left (where the menu is). Am I missing something in the options? Trying to use Cinnamon's move applet doesn't work.
Kevin Langman
Kevin Langman-2 months ago
If I am understanding your description correctly, the window-list and the pinned applications in the window-list are on the right side of the panel rather then the left side of the panel where you what them to be be? If that's the case then you simply need to right-click on some empty section of the panel and turn on the "Panel edit mode". Now the left side of the panel will be red, the centre will be green and the right will be blue. At this point you can left-click (and hold) on the window-list to drag it to into one of the red coloured area on the left (make sure the mouse cursor is in the red zone and not just the window-list shadow) then drop in the location you like within the left red zone. Be sure to drop it on the right of the menu applet. Once you have all the elements of the panel in the place you want then you can right-click on a empty section of the panel again and disable the "Panel edit mode". Now you can interact with the panel applets as normal again and all the applets should be where you placed them when in edit-mode. Let me know if I got your meaning right and this is the right solution for your problem.
superian
superian-2 months ago
Ahhh - I was dropping next to the red area (between the red and green bits) and it wasn't sticking to that. Dropping in the red area has worked, thank you. It's an example of the way Cinnamon works slightly differently to MATE / Gnome2.. without that necessarily being documented in something easy to find :)
Kevin Langman
Kevin Langman-2 months ago
Glad I could help.
superian
superian-2 months ago
('right side' of the space between the menu and workplace switcher!)
Paul Birkholtz
Paul Birkholtz-3 months ago
Do you know how I get the "add to panel" option in the menu to add a shortcut to your applet instead of just creating a default panel launcher? Also when starting up your applets setup it asks if I want a launcher or grouped window list.... Is this both or do I need 2 of them per panel? Thank you for your work!!!
Kevin Langman
Kevin Langman-3 months ago
A Cassia instance can be a panel launcher (showing only pinned buttons) or a window list (showing both pinned buttons and any running application). Since the window-list behaviour (i.e. "Window list behaviour style" set to something other than "launcher") shows running applications and pinned buttons, a single instance can be a panel launcher and a window-list at the same time. But if you wanted to have pinned (launcher) buttons on a separate panel or in a different location on the same panel (i.e. a window-list in the middle and launcher/pinned buttons on the right) then two different instances is the way to go, with one instance set as a panel launcher. In the window-list button context menu there will be two options (if pinning was not disabled in the config, and a panel launcher of any kind exists on a panel); one option called "Pin to panel" and another called "Pin to launcher". The "pin to panel" option will pin the selected button to the current window-list applet instance. The "Pin to launcher" option will added a button to the launcher applet for the application of the selected window-list button. I think this answer to your 1st question also clears up the 2nd question. Let me know if you need more clarification.
spaceghost24
spaceghost24-3 months ago
I believe their first question was referring to the context menu in the start menu applet, which has an "add to panel" option that only seems to work for the default window list and doesn't affect this one. I actually just came here to ask about it, because as far as I can tell there isn't any other way to pin applications to this applet besides using the context menu beside an open window (although please correct me if I missed some other way). This is a problem for me because I have several "orphaned" launchers, which can never show up in the window list because the applications they open are associated with some other launcher. They do show up in the start menu, so I'm able to pin them to the default window list using the context menu there, but I wasn't able to find a way to pin them to this applet. Integrating it with the start menu the way the default window list does would be ideal, but any way to pin an application without requiring the icon to already be in the window list would be great really. (By the way, I just switched over to this applet for the ability to pin different apps to each desktop, but I really like how clean it looks!)
Kevin Langman
Kevin Langman-3 months ago
Oh.. I see, yes, I miss read Paul's message.. Sorry Paul. The menu's "Add to panel" option is associated with the "panellauncher" role. If you look at your ~/.xsession-errors file, during Cinnamon startup you will see messages like this: Gjs-Message: 23:07:57.583: JS LOG: [LookingGlass/info] Role locked: panellauncher Gjs-Message: 23:07:58.055: JS LOG: [LookingGlass/info] Loaded applet CassiaWindowList@klangman in 529 ms In my case, because the "Loaded applet" message for CassiaWindowList is right after the "Role locked: panellauncher" message, it means the Cassia got this role. Since this role locking is based on the order Applets are loaded, I have added code in Cassia to forward the pin actions to a PanelLaunchers applet if one is found. First it looks for a Cassia instance set to Launcher mode, then it looks for a Cinnamon PannelLaunchers applet instance. If one is found it calls the API to pin to that applet instead. The idea being, if you have a launcher applet instance, you likely want that applet to have the new pinned app. If no suitable applet instance is found then it will pin to Cassia window-list that has the role lock. So maybe all you need to do is remove the PanelLaunchers applet instance and restart Cinnamon? Another way you can pin an app to the Cassia window list is to use drag&drop. Simply open the Cinnamon menu, navigate to the app you want to pin, then drag it into the window-list and drop. Hope this helps. And I hope I got it right this time :-)
spaceghost24
spaceghost24-3 months ago
Thanks, this does help. I thought I'd tried drag-and-drop already, but I must have done it wrong, because it worked just fine this time. :)
nil
nil-3 months ago
Thanks again for your work :-) sorry for my English I noticed this feature with icons larger than 24px - they appear slightly blurry on the panel. I don’t know how correct this is, but I solved this problem for myself by changing the line this.iconSize = this._applet.getPanelIconSize(St.IconType.FULLCOLOR) -2; By removing the "-2" - and the icons on the panel became clear.
Kevin Langman
Kevin Langman-3 months ago
That "-2" was also a bit of a mystery to me, it was part of the CobiWindowList base that I forked my window list from. I think I removed it once as a test and thought it caused the icon to overlap the "active" highlight at the bottom on the buttons under some panel/icon configurations, but that might have been just my perception at the time. I'll try playing with removing the "-2" again to see if I can find any negative effects this time, i'll let you know what I find..... I believe the blurriness is caused by the icon not being a perfect match with the source icon pixel size causing the image to be expanded or shrunk from a smaller/larger icon file. Its my guess that you have the cinnamon panel setting for "Colored icon size" set to "Scale to panel size exactly". You might be better off to use a specific size that gives you the best results for your panel height. Personally I am using a panel height of "35" with a colored icon size of "32px".
nil
nil-3 months ago
I don't know how to attach images here. Icons size 32px. As an example: default, "-2" https://i.postimg.cc/8zpDw7Nc/2.png and "0" https://i.postimg.cc/g22F81H6/0.png in the latter case the icons are clear
Kevin Langman
Kevin Langman-3 months ago
Ya, I can see the blurriness. You set "Colored icon size" in the panel setting (under the 'Panel appearance section' for the appropriate 'Zone') to 32px? And what is the "Panel Height" you have set?
nil
nil-3 months ago
Colored icon size = 32 Panel Height = 40
Kevin Langman
Kevin Langman-3 months ago
Actually that "-2" was not part of the CobiWindowList I forked from. It was my stupid idea after all. I was hoping to prevent the icon from overlapping the active highlight in some cases, but the end result is that it forces icon scaling and fails to follow the users panel settings. The best way to handle the issue I was worried about is to use better panel settings that do not cause the overlapping. I'll revert that in a few days. Thanks for reporting the problem!!
nil
nil-3 months ago
Thanks for developing and supporting the applet.
Kevin Langman
Kevin Langman-3 months ago
I pushed version 2.3.2 to Cinnamon Spices. The -2 should be gone now!
Fot0n
Fot0n-4 months ago
The most important applet in the catalog (IMHO). It would be great if the Mint team included it as a default feature. Thank you for what you do.
Kevin Langman
Kevin Langman-4 months ago
Thanks for the comments. I am so glad you like my applet. Since this applet has a ton of options and it is targeted at power users, it might be best for the default window list to remain as something far less complicated for new users. But who knows, maybe some day the most popular features might get ported to the default window-list... Lastly, If you happen to see any bugs or have some improvement suggestions feel free to open an issue. Thanks!
elemmaiii
elemmaiii-6 months ago
Ever thought about having an option to only have the current displayed window shown as an icon and/or label while other window icons are hidden?
Kevin Langman
Kevin Langman-6 months ago
So you would like to see just one window-list button, a button for the window that currently has the focus? That would mean you could not use the window-list to change focus to any other window. Maybe I am not fully understanding what your suggestion is?
elemmaiii
elemmaiii-6 months ago
You have it right. In one panel there would be all the windows and the ability to switch windows via cursor as it's currently configured (auto-hiding like a dock), but in another panel (for me the top panel) I'd just have the one window highlighted that's the focused window. Similar to Gnome's application identifier thingy, but it would be cooler than Gnome's because it's Cinnamon. Maybe an option for symbolic icons as well. Just throwing out ideas. Thanks for the response.
Kevin Langman
Kevin Langman-6 months ago
I see.. You are looking for an applet that will just show the window that currently has the focus (mostly information only, not much in the way of interactive features) and use a separate applet instance for the full window-list applet. Honestly, I think it would be best to have that as a completely different applet. The large amount of code for a full window-list is not needed for something like that. I'll think on it for a bit. Thanks for the suggestion!
Ded4lus
Ded4lus-9 months ago
Excellent work, getting very mature, features and customizations well thought, best window manager out there (other DE included). Please keep going. Cheers.
Kevin Langman
Kevin Langman-9 months ago
Thanks for the comment, nice to know my design decisions are are good ones.
nehaaso
nehaaso-9 months ago
An excellent extension, in my opinion much better than the built-in one by default. Just what I was looking for. Author, thank you very much for your work.
Kevin Langman
Kevin Langman-9 months ago
Glad you like the applet. It's nice to know that people are finding it useful.
DjinnDjab
DjinnDjab-11 months ago
sadly this doesnt seem to play with will multiple monitors (i have 4). i cant seem to make it only show the buttons for only the windows on the corresponding monitor. i have tried all of the options
Kevin Langman
Kevin Langman-11 months ago
I would also point out that the "Only show windows on the same monitor" option needs to be independently set on all monitors. Since the only way to have a window-list on each monitor is to add an applet instance to a panel on each monitor. Therefore the CassiaWindowList setting is also unique for each monitor. In your 4-monitor setup you would have 4 independent window-list instances running and you would have to set the "Only show windows on the same monitor" option 4 times to get the behaviour I believe you are looking for. I hope this helps!
Kevin Langman
Kevin Langman-11 months ago
I didn't have to find an old monitor after all, I just needed to enable my laptop screen. Once I enabled the "Only show windows on the same monitor" option the window-list buttons for windows that I moved between monitors appear and disappear depend on which monitor the window is moved to. So the feature seems to be working as intended for me anyhow. Please verify that you have the "Only show windows on the same monitor" option enabled. If you still have the problem then maybe the issue only occurs under some specific configuration of the applet. Maybe I could take a look at your json config file and see if I can duplicate your setup??
Kevin Langman
Kevin Langman-11 months ago
I assume you have enabled the "Only show windows on the same monitor" option on the General tab in the configuration dialog? I don't use that option much myself, so I will have to hook-up a 2nd monitor and give it a test. I use two monitors at the office but I am working from home this week so it might take a day or two to dig out my old monitor for testing. I'll let you know if I can recreate your issue.
fr4g3
fr4g3-1 year ago
Great Work Man, This applet is exactly what i was looking for.
Kevin Langman
Kevin Langman-1 year ago
I am glad you like the applet.
Nay
Nay-1 year ago
Amazing work man. Can you please implement the Super+<number> shortcut to switch/open apps? Maybe allow it to be set automatically on the "Description" field when setting the shortcuts. At the moment this functionality has to be manually set for each app in each workspace.
Kevin Langman
Kevin Langman-1 year ago
I just implemented a feature that might be more like what you are asking for. With this update you can add an hotkey for <Super>+1 and set the description to "All Buttons" which will cause <Super>+1 through <Super>+9 to be mapped to the first 9 windows on the window-list. As the description implies, this "All Window" hotkey is not limited to window for a single application. Also, you don't have to use the <Super> key, any combination of the modifier keys will work as long as you set the key sequence to be your desired modifier(s) with the "1" key. In addition you can use the <modifier(s)>+` key to show hint bubbles over all the window-list buttons.
Kevin Langman
Kevin Langman-1 year ago
The changes have been pushed to my github repo, I'll push to cinnamon spices next week after some additional testing.
Kevin Langman
Kevin Langman-1 year ago
In my below suggestion, I meant to say that the hotkey+1-9 would switch to *application* window 1-9 as ordered on the WindowList.. Hope that's more clear regarding my proposing here.
Kevin Langman
Kevin Langman-1 year ago
Thanks for the suggestion. I had briefly considered how to implement such a feature before. Here is my idea now after thinking a bit more about it... If a hotkey sequence ends with "1" (i.e. Alt+1 or Super+1) and the "Description" can be matched with an application (i.e. App name, or desktop file name) then <Modifier_Key(s)>1-9 will switch to window 1-9 as ordered on the WindowList. Does that satisfy your feature request or did I misunderstand your meaning? "for each app in each workspace" -- The configuration of an applet is common across workspaces because applet instances persists across workspaces, but you do have to add new applet instances to different monitors which will not share a configuration. Is that what you were referring to?
alberbrando
alberbrando-1 year ago
Wooow...amazing how customizable is this applet.And the size of thumbnails is incredible.The best one.Keep on this way.Congrats.
Kevin Langman
Kevin Langman-1 year ago
I am glad you like it.
m-musikhin
m-musikhin-1 year ago
Amazing! Thank you! Please return showing only one thumbnail above the cursor instead of all thumbnails in the pool.
Kevin Langman
Kevin Langman-1 year ago
I can add an option for that. Personally I find it handy to see all the application thumbnails for a pool but I can see how some might not like that.
m-musikhin
m-musikhin-1 year ago
It would be great! Thank you
Kevin Langman
Kevin Langman-1 year ago
Already pushed the change to my github repository (along with a bunch of other fixes and features). I'll push all the changes to cinnamon-spices in a few days after running it for several workdays and testing in some different Mint version VMs.
m-musikhin
m-musikhin-1 year ago
Thanks a lot. I usually have about 20 windows with chrome open, each with 20 tabs :). This setting helped me a lot. Another note, when you start chrome or other applications, regardless of the settings, the windows in the pool are added to the head. However, switching to launcher mode and back to the pool restores the correct window sequence.
Kevin Langman
Kevin Langman-1 year ago
Glad you like the applet. Adding new windows the the left of the pool was a decision I made to avoid odd label behaviour. If it was added to the right then the trailing button would have its label removed and the new window would have the label for the pool. This would result in and animated label removal and, at the same time, an animated label addition for the new button (assuming the default "one label for a pool configuration). I decided (with some reluctance) to add new pool windows to the left as a rule. Another option I had considered was to detach the label from the right most pool button for "one label" setting. This would leave a number of interesting other decisions like if the label should be set active (be underlined in Mint-Z/Y theme) and what should happen when you click the label. Another option was to add a new button to the left of the labelled button and swap the attached window for the new & labelled buttons, but I thought this might be confusing for users. I am open to other suggestions, but I thought adding to the left of pools was the least problematic solution. As for why changing the mode reorders the pool. When you change back to pooled mode all the windows are removed from window-list and re-added so that will change the order.
m-musikhin
m-musikhin-1 year ago
it seems logical to me that a new window appears on the right in the pool, then the same sequence of windows is preserved when restoring chrome, vs code, etc. I saw similar behavior in KDE for me, window order is more important than animation and icon highlighting now I restore the order at startup and transfer the icon to the tail manually
Kevin Langman
Kevin Langman-1 year ago
OK.. I'll consider going back to adding new pooled app windows to the right of the pool.
m-musikhin
m-musikhin-1 year ago
Can be in the form of an option like "add new window buttons ahead of trailing pinned buttons" Thank you! Your window list is the best!
Kevin Langman
Kevin Langman-1 year ago
I pushed the changes to my github repository. I'll push to cinnamon-spices after some testing. I fixed the animation a bit so it's less jarring when new pooled buttons are added to the right, so I decided against adding a new option and just have it hard-coded to add new pooled buttons to the right. If I get people telling me they liked it as it was before then I will add an option I suppose.
m-musikhin
m-musikhin-1 year ago
Thanks a lot!!! Very comfortably!