mate-desktop / mate-panel

MATE panel
https://mate-desktop.org
GNU General Public License v2.0
185 stars 118 forks source link

Organize Notification Area Icons in Rows #865

Open rdlf4 opened 6 years ago

rdlf4 commented 6 years ago

Expected behaviour

I'm requesting MATE Notification Area icons to be organized in rows, so that whenever the panel size is increased, it won't change the notification icons size. Rather, depending on how many pixels I set the Mate panel, it will add more rows in order to fit more icons instead of changing the icon size.

Actual behaviour

The more pixels you set Mate panel, the bigger the icons size will be. matepanel

Steps to reproduce the behaviour

Right-click on Mate panel, enter Properties. Change the size to 38 pixels. The panel size will be increased as well as the icons from notification area. I just want the notifications icons size to be untouched. The bigger the panel, the more rows will be added - that or just add an option for the user to set how many rows they want and the panel will organize the icons and place them accordingly.

MATE general version

v1.20.1

Package version

Current master.

Linux Distribution

Linux Mint 19 Tara 64-bit.

bwat47 commented 6 years ago

Agreed, it would be really nice if at the very least there was a way to 'force' a uniform size for tray icons

The scaling of tray icon sizes has always been my biggest pet peave with gnome 2 (and now MATE). Different tray icons do totally different things when the panel size is increased and it just ends up looking horrible at anything over 24-25 pane size.

braikar commented 6 years ago

@bwat47 @rdlf4 I don't know if you're both on mint 19 (or ubuntu 18.04 based, it should work too)? If yes then you can try what I'm working on in https://github.com/mate-desktop/mate-panel/pull/856 @bwat47 haha someone who understands the pain! I've fixed this issue for myself on every single new update of gnome2 then mate since before 2010, but no patches ever made it into the main code... Someone had made patches as early as 2008! http://kojevnikov.com/vertical-panel-in-gnome.html

Anyway: that's a modified 1.20 package: http://braikar.com/stuff/mate-panel_1.20.1-3ubuntu1_amd64.deb (if you're not happy with it you can just re-install the original package from synaptic) Would be good to have some testing feedback, since mate 1.22 will include it. It's fully working, I'm just wondering is there are mini-inconsistencies that someone might notice over 1-2 months of it running. I have it running since a month and couldn't notice anything wrong. :) You basically define the number of rows by setting the minimum icon size, the grid re-arranges automatically based on that. Example, if you use the 24 default, the icons will show up in one line only until the width of the panel can fit 2x24 (so panels of 48 or more width, below that they'll enlarge naturally like before), etc. so if you want 2 rows on a 38px wide panel, you need to set it between 13 and 19. There's one issue that I can't correct easily.. the icons end up clipped here and there if too many size changes occur.. basically, when you set up the applet (next time the panel is loaded it will be fine). Since I' don't expect people to keep changing the sizes once they've figured out what they like, it's not a big issue.

rdlf4 commented 6 years ago

OK, here goes my 2 cents.. So I've tried your modified 1.20 Mate-panel. It doesn't really let the user modify the icon size to a specific one. As long as the minimum icon size is half the panel size, it sets the icon size to the minimum, which is very small. Otherwise, the icon size will be just as big as the panel size. That's fine by me (but could you make the default minimum size a little bigger?). There's just one thing bothering me, and that's the way it's arranging those icons. You see, by default I can tell Mate-panel does support only three icons for each row. If the number of notification icons exceed that, it creates another column and then places the new icon on there. So, by default, because the mathematical relation you set in the code is minimum icon size: Panel size/2 that means Mate-panel can deal with 2 rows max. The more icons you add, the more columns it will create. Again, nothing wrong with that, but I wish i could set How many icons it can handle per row because the more icons it adds, the more it expands to the side. By default, it does this: Fulfilling Mate-panel: 6 icons 1 2 3 4 5 6 Two more icons: 1 2 3 7 4 5 6 8 If I'm given the " Maximum number of icons per row" option and set it to : 5 1 2 3 4 5 6 7 8 Also, how about this: implement an arrow that will show up in case there's more icons but the user does not want the notification area to expand vertically (just one row), so it would look like this: User has 8 notification icons: 1 2 3 4 5 ^ (User clicks on the arrow in order to show more Notification icons, like in Windows).

That option is important if I want my notification area to expand vertically or not. It makes it more manageable. It's also worth noting that it will always be placed on top of the taskbar. Why not in the middle of the taskbar? It doesn't have to be close to the edge if there's just one row full of notification icons. matepanel5

Look at the screenshot attached to this post. My network monitor is right in the middle of the taskbar. Same with my other icons. So Mate-panel could follow, I believe. Anyways, thank you for what you've done. Keep up the great work.

braikar commented 6 years ago

Thanks for the feedback. If I go deep into customization I have to make sure it's suitable for vertical panels too, on the left, on the right, top, bottom. Suitable for people who are sued to text written also right to left, etc. I like the challenge to figure out the best way to reduce the options to the minimum possible, that make also everyone happy. I like the windows like notification icons, and I thought of it already, but that will be long to set, as then I need to put preferences to allow one to decide which icon takes priority on the main tray or to go in the "non displayed category".

I came up with that for the moment. screenshot at 2018-10-05 19-33-27 That would fulfill all your ideas :) Basically the tray margins would allow to center the notification area further from the sides of the panel if one wants, the icon padding is self explanatory. Fill direction would be to decide if icons fill columns, then row, or rows then column, starting from top to bottom, left to right etc. And in fixed layout you'd be able to set the rows/columns as wanted, everything that can't fit woudl end up in the non visible part.

Thanks for your feedback :) I'll have to let that sink in to see if there are better (even simpler) ways to allow for all that in some future. And probably other things people think of I haven't considered..

Btw. the actual simple icon size, allows for 3-4 and more rows, if the icon size is set at 20, if the panel is between 0 and 39 wide, it will display one row, if 40-59, two rows, if 60-79, 3 rows, etc.

rdlf4 commented 6 years ago

I like the windows like notification icons, and I thought of it already, but that will be long to set, as then I need to put preferences to allow one to decide which icon takes priority on the main tray or to go in the "non displayed category".

Well, there is one way that I can think of to handle that one: Have this as an example: User has 8 different notification icons and wants to get rid of the ones from the bottom: 1 2 3 4 5 6 7 8 ^ In order to let Mate-panel know which icons to be tagged as hidden or _notvisible, the user will use the arrow, which is a tool that will display a square area where the icons in question are supposed to be drag&dropped to. If possible, the user could also drag&drop a notification area on to the arrow, and let Mate-panel do the rest (tag the icon as not_visible and hide it). It will only be visible upon clicking on the arrow, which will display the notification icon set/tagged as hidden.

Or it could take this route: User should right-click on the notification area to pop up the Preferences Menu, which will have a tab called 'Hidden Icons'. That screen could look like this: /Hidden Icons/____ _ [] X Icons set as visible above the line 1 2 3 4 5

===================================== <- line (duuh) Icons set as Not_visible below the line 6 7 8 ____.

As for the Main Tab, which will look exactly the way you did, under Layout Style, it could have an option called: [Slider to toggle it ON/OFF] Limit number of icons to: [text field (enter a number)]. In reality, according to the example I've mentioned, it will look like this: ON Limit number of icons to: [ 5 ] What this will do is basically tag all the icons that exceeds the limit as not_visible and hide them. In your code, however, that will be the extra number, because the arrow will also be an icon, so if I want my notification area to store/display at least 5 icons, that'll be six because we're taking into account the arrow, which serves as a show/hide tool.

Last but not least, under Margins and Paddings, we could also have: Horizontal spacing - think of that as the inner spacing management, or the space between each notification icon. Yeah, they're too close. Just have a look at my Mate-panel to have an idea: mate-panel Horizontal spacing and Vertical spacing (for vertical taskbar) are defined in pixels.

alexarnaud commented 5 years ago

Hello guys,

Keep in mind there are elderly people and visual-impaired people like me that use Mate because of it's customization feature. I've all my icons at 64 px size and it makes my life easier to recognized them.

Also please don't change the default minimum size as it is really small.

@braikar if you want to collaborate with me to ensure your new PR fit all need, let me know. I'm teaching Debian GNU/Linux to elderly and visual-impaired people at Hypra for years. We've ship more than 200 users with Debian and Mate and most of the time I need to increase icon size to 48 on the Panel.

Best regards, Alex.

braikar commented 5 years ago

Hi Alex,

I'm all for making it as good as possible for everyone. I'm already working on what @rdlf4 proposed, to have a fixed grid/layout option and hidden icons if there are more than can be displayed on the grid to be visible to be in a additional tooltip that can be opened at will.

Else, the PR for the grid display was already merged, but it doesn't change the ability to resize the icons to 48. Basically if the minimum size is set to 24 pixels, until 47pixels wide for a panel the icons will resize to 47x47, once it hits 2x24 = 48 wide, it will set as 2 icons. But that minimum size can be changed and made higher to keep having the largest icon possible.

However, one thing I noticed when doing the first change, is that the icon sizes can't go above a certain size, even if the changes I made on the grid can allow it, the icons stop growing above 48x48. That's a limit set somewhere else in the code, in a place I didn't touch and I don't really know yet where. If it's important to allow them to be even bigger I can try to figure it out. If that limit weren't there the icons could potentially resize up to 199x199.. But I don't know if that's acceptable to allow, with regards to everything else (in many other panel applets), because many icons on the panel are blocked at a maximum size of 48x48 too..

alexarnaud commented 5 years ago

Le 02/11/2018 à 20:38, Fabien Broquard a écrit > I'm all for making it as good as possible for everyone.

I'm already working on what @rdlf4 https://github.com/rdlf4 proposed, to have a fixed grid/layout option and hidden icons if there are more than can be displayed on the grid to be visible to be in a additional tooltip that can be opened at will.

Great to know.

Else, the PR for the grid display was already merged, but it doesn't change the ability to resize the icons to 48. Basically if the minimum size is set to 24 pixels, until 47pixels wide for a panel the icons will resize to 47x47, once it hits 2x24 = 48 wide, it will set as 2 icons.

I just hope you've made it has an option, not the new default. Otherwise all my users will call me to support and tell me "my current behavior has been broken". Is it the new default or just a new option?

But that minimum size can be changed and made higher to keep having the largest icon possible.

Great to know :).

However, one thing I noticed when doing the first change, is that the icon sizes can't go above a certain size, even if the changes I made on the grid can allow it, the icons stop growing above 48x48. That's a limit set somewhere else in the code, in a place I didn't touch

I assume allowing to let users use 64 pixels size could help in some circumstance. If you could do that I assume some visual-impaired and elderly people I help could like it.

Thanks for your work and time on Mate and sorry to be a little bit late after the merge. I was completely busy last month.

Best regards, Alex.

braikar commented 5 years ago

Sadly for you it's the new default, if their panels are wider than 48 it will resize automatically to 2 icons. I had to, 22-24 is a standard size for many applets that use small icons and it fits the standard size of the panel which is by default at 24.. So, I guess many of your users will call you (sorry!), but its also easy to fix, just go in the preferences and update the size, once they know that it might also be good, so they know they can change it based on their preferences. And you might tell them in advance that in the future (count still 6-12 months minimum) there will probably be some new preferences in there. But the behaviour as it is now should remain the standard in the future. I'll try to find and remove the 48px max limit size, but I don't know if that's possible either. I'll ask others if it makes sense to do that, as a whole since most icons restrict to 48 it's a global issue, making one fit larger while others don't seems kind of wrong too.. Anyway I'll do my best while keeping visual-impairments in mind. :)

Cheers

alexarnaud commented 5 years ago

Sadly for you it's the new default, if their panels are wider than 48 it will resize automatically to 2 icons. I had to, 22-24 is a standard size for many applets that use small icons and it fits the standard size of the panel which is by default at 24..

I understand, could we decide the exact behavior? If the size is 48 that wouldn't change the behavior, the 48 icons will be used, if the size is 49, the two rows will be enabled? Is it what you've done? It's what I understand from your comment.

The behavior I describe above is the one used in the default bottom withe the window list.

Thanks again for your reply :).

FYI, we've shipped more than 200 users.

Best regards, Alex.

rdlf4 commented 5 years ago

Thanks for the feedback. If I go deep into customization I have to make sure it's suitable for vertical panels too, on the left, on the right, top, bottom. Suitable for people who are sued to text written also right to left, etc. I like the challenge to figure out the best way to reduce the options to the minimum possible, that make also everyone happy. I like the windows like notification icons, and I thought of it already, but that will be long to set, as then I need to put preferences to allow one to decide which icon takes priority on the main tray or to go in the "non displayed category".

I came up with that for the moment. screenshot at 2018-10-05 19-33-27 That would fulfill all your ideas :) Basically the tray margins would allow to center the notification area further from the sides of the panel if one wants, the icon padding is self explanatory. Fill direction would be to decide if icons fill columns, then row, or rows then column, starting from top to bottom, left to right etc. And in fixed layout you'd be able to set the rows/columns as wanted, everything that can't fit woudl end up in the non visible part.

Thanks for your feedback :) I'll have to let that sink in to see if there are better (even simpler) ways to allow for all that in some future. And probably other things people think of I haven't considered..

Btw. the actual simple icon size, allows for 3-4 and more rows, if the icon size is set at 20, if the panel is between 0 and 39 wide, it will display one row, if 40-59, two rows, if 60-79, 3 rows, etc.

@braikar I'd like to play around with this build, is it nearly done? I see there's a new release (1.22.0), but there aren't any mentions of what it does or features, so I'm on the fence as to whether I should go for it or not. Does it have anything to do with your application?