mate-desktop / mate-panel

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

Usable vertical panel? #157

Open Amet13 opened 10 years ago

Amet13 commented 10 years ago

That's my beautiful horizontal MATE panel: screenshot But I have a widescreen monitor and I want use a free place for example on right. That's my vertical panel, how to use this I don't know. screenshot-1

Problems for me:

  1. Gradient
  2. Vertical mintmenu & clock applets
  3. Fixed tray icons
  4. Large windows list's icons

Any ideas? Thanks.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/1825374-usable-vertical-panel?utm_campaign=plugin&utm_content=tracker%2F314880&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F314880&utm_medium=issues&utm_source=github).
dadix commented 10 years ago

I have the same issue in Mate 1.4. http://s18.postimg.org/m5xo48m3t/image.png I would like to see Applications,Places,System one above another not on the same line. and an option to resize those icons because in this configuration there are too big

slacka commented 10 years ago

5-Remove length limit on window list.

The biggest UX issue I have is that the window list can't be expanded. As a result, there is a ton of wasted space on the panel, while the icons in the window list are too small to be usable. panel

glensc commented 10 years ago

here's some more UI horror, the panel flickers because it can't decide whether to paint 3 or 2 or 1 columns. it flickers 3-6 times a second, real horror!, screenshot kind of explains what is going on:

2014-05-21_14 05 14-panel6

synthakai commented 10 years ago

vertical panel can have horizontal text for time/date. it already has textautorotation feature. all you need to do is to insert line breaks into /org/mate/panel/objects/clock/prefs/custom-format variable for example like this: "%Y-%m-%d%n%H:%M" to make width of the string fit your vertical panel size. see attached picture. as for the rest of functionality I think many ideas and a lot of code can be borrowed from much more liberal lxpanel. untitled

slacka commented 10 years ago

@synthakai This would be great if it worked, but with Mint 17 which uses MATE Panel 1.8.0, there is no

/org/mate/panel/objects/clock/prefs/custom-format

Doing a Ctrl-F for custom-format, doesn't turn up anything relevant.

synthakai commented 10 years ago

strangest thing, because I am using Mint 17 and stock mate $ apt-cache policy mate-desktop mate-desktop: Installed: 1.8.1-0 the parameter in question has been around for generations, it was ported from gnome2 where it also worked very well.

fraterlinux commented 10 years ago

I have the following problem. I have installed mate-panel 1.8.0 in PCLinuxOS. Upright, when I open more than 8 windows of different applications. A list of windows come in looping and wnck-applet uses 80% of cpu !!! This occurs when the panel size is between 30 and 77 pixels. Both the panel on the right or left the same problem occurs. captura_de_tela

damarev commented 9 years ago

Bug has been around since 2002: https://bugzilla.gnome.org/show_bug.cgi?id=86382

This is a major UX issue:

slacka commented 9 years ago

@fraterlinux I ran into the exact same issue with Mint 17. In issue #58 stefano-k said:

Because 1.8 uses libwnck, so you need an updated libwnck. The issue is not is mate-panel

I couldn't find any information on what version of libwnck was required or how to fix Mint, so I ended up downgrading to Mint 16.

@stefano-k

Could you provide any more info to help Mint and now PCLinuxOS users? Are you sure it's not a mate-panel issue as symptoms are identical to how the old mate-panel used to behave?

jasonmacduffie commented 8 years ago

Have you considered implementing #144 for this issue? I think it would fix the window list situation.

kafran commented 8 years ago

state_of_the_art = True if mate-panel == xfce-panel + lxpanel else False

Balls0fSteel commented 8 years ago

The bugs related to this on the Gnome tracker had patches in comments, you should check those out. Long time ago I had my Gnome patched and it gave me a very nice vertical window list. (Tint2 is a good example how it could be done. Having the option of picking either horizontal OR vertical list of windows is the best IMO. Some people prefer wider vertical panels, more stuff fits there, the horizontal list works well. Some prefer narrow ones, the vertical window list is handy there.)

enetarch commented 7 years ago

Apparently this issue is not going to go away till someone picks up the code and fixes it. Can someone provide a path to the code that we / I may resolve this issue finally.

jasonmacduffie commented 7 years ago

Now that Ubuntu MATE has a dock applet, I believe the vertical panel is usable. I would say only

  1. Gradient
  2. Vertical mintmenu & clock applets

are outstanding right now.

kafran commented 7 years ago

@jasonmacduffie do not forget about notification area icon size. They get huge as you increase panel size. They should be configurable or at least be fixed at a 22px maximum.

This is the XFCE vertical panel:

screenshot_2016-09-23_13-36-39

jasonmacduffie commented 7 years ago

@kafran You are right, I forgot about the notification area. Good point.

enetarch commented 7 years ago

I noticed that with the last update that came down, the panel doesn't flip back and forth anymore, but I get 16 windows open before it starts a 2nd column. As I am running a 4K monitor at 3840 x 2160, there is still about 1000 pixels remaining before it hits bottom.

mckaygerhard commented 7 years ago

in your version @enetarch the flickr does'n happened due the size fo the monitor.. u'r size its not standar and u must not assume that was fixed the problem..

mckaygerhard commented 7 years ago

I've looked at Lxpanel's tasklist code... They use WnckTasklist as mate-panel does, BUT their when panel are side, buttons hide the text and only show icons.. that's the fuck..g solution..

attila123 commented 7 years ago

@synthakai (or anyone who knows the solution), how could you organize the items in your panel to 4 columns? It's very easy in XFCE panel, but is it possible in Mate panel? I assume your screenshot shows a Mate panel, is it true? I am looking for confiuration options in dconf-editor, but had no success. I am experimenting with Linux Mint Mate 18.2 currently just in virtualbox. If the Mate panel is so limited in vertical mode I will stay with XFCE.

lukefromdc commented 7 years ago

I have never seen any code nor options for dividing a vertical panel itself into multiple columns in MATE nor in GNOME 2 from which it is derived.

enetarch commented 7 years ago

Mate, and GNOME2 does this automagically, due to a bug that causes the task panel to misunderstand how much vertical space it has available to grow into. It's annoying as it kept flipping between single and multiple columns every time a window updated it's header, or a user selected an icon from the task panel. They have since fixed this bug as of Fedora 25.

As for a specific setting, sorry, I did not find one either the last time I looked, while using Fedora 23.

On 8/12/2017 1:02 PM, lukefromdc wrote:

I have never seen any code nor options for dividing a vertical panel itself into multiple columns in MATE nor in GNOME 2 from which it is derived.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mate-desktop/mate-panel/issues/157#issuecomment-322002660, or mute the thread https://github.com/notifications/unsubscribe-auth/AGBEr_5oMOWumCrPS1JmY1CWB3cT4q51ks5sXgTdgaJpZM4Baliq.

lukefromdc commented 7 years ago

I've only seen the window list divide into columns automatically, maybe never notices anything else doing this. On the other hand, I use a single horizonal panel and have only used vertical panels for testing. Not sure there the code for this in in the panel, though if it is limited to the window list it would be in the wnck-applet code, if all applets either panel code or libpanel-applet code, if everything then the panel code would be my guess

synthakai commented 7 years ago

@attila123 sadly, it is impossible to organise the items in mate-panel in 4 columns. the last version I checked is mate 1.18.0 in lmde. actually in 1.18 they screwed things more a little bit, as I understand it's because of the move to gtk3. I am using lxpanel as I mentioned in a comment above. screenshot at 2017-08-13 01 01 58 lxpanel lets you set the geometry, the item order, the icon size, the transparency... what would a man want more of a panel? @attila123, I encourage you to use lxpanel, because it has just a couple of minute dependencies, so it is easy on the hard drive. is it the case with xfce? can you install xfce panel without installing the whole desktop?

braikar commented 6 years ago

screenshot at 2018-01-08 22 02 06 I have these issues fixed since 5-6 years, but every time I have to patch the individual components myself, now I'm stuck at mate 1.12 because I never took the time to modify the new codes for the patches. I guess no developer has a vertical panel, so that's why i tdoesn't get fixed? So I hope my message will help you, mate developers, look in the right places :) I myself don't know enough about gtk to fix the details properly, all my fixes are hard coded! My launchers applet on the top has the icons/apps defined straight in the code, to change them requires a recompile.. It's really simple and works well that way for me, it's just gtktables with fixed column numbers and rows and an array of icon paths and launcher commands... Anyone knowing how to compile can modify it himself easily. But making it user friendly with draggable items/lockable layout, variable grid etc. that's another much harder task. Else for the notification area at the bottom, the fix is always the same replace the NaList widget with a GtkTable in GTk2, in gtk3 sicne I haven't made it yet I can't be sure, but I guess it will be the same, just with a GtkGrid? But when looking at github in the latest version it seems that's been done with GtkBox. Anyway, that solution is easy, it's been fixed since almost 10 years, the patch has just never been applied in the core versions! I applied it manually on each new version it always worked fine since 2012-2013.

For the windows-list applet, that's the tricky part, my solution is hard coded too, but rather simple, since the applet is in a fixed position on my panel, I forced its vertical size with gtk_widget_set_usize(). I know it's deprecated with gtk3 now. But there lies the rather simple solution for those that know a bit more gtk than me. The problem is that by default the windows list applet (and wnck component) always try to take the minimum size possible and on vertical panels that brings the flickering effect because it can't decide on its size.. I know a good fix will take time, because it's a fundamental problem in wnck.. But the simple easy fix, is very easy. I just add gtk_widget_set_usize(tasklist->applet, width, height) with the sizes for my panel (120, 297 if I remember well) in the window_list_applet_fill() function.. And the very important part is that this change has to be made in the libwnck package tasklist.c as well in the size_allocate function too. Libwnck is also very faulty for the problem. That's it for the quick fix solution to look for, instead of letting the code in wncklet/window-list.c trying to fit the smallest size possible, if it's changed to try and fit the largest size possible/available on the panel, the flickering should end. My modifications force a fixed size, but I guess changing the code to let it fill the entire space available shouldn't be that hard.. The only problem there is that adding an applet in the void below the window list won't work because the space is actually filled by the empty window-list.. If anyone needs, let me know I'll send you the diffs for the exact changes I've made to fix these issues, even if i know that a proper fix will require a bit more work, at least you'll know where to look :)

mckaygerhard commented 6 years ago

hi @braikar , can do you send the older patches as unified ? to some distribution of linux in interes, due seems in the mate team nobody cares, what a fuck

i understand you, its a paint in the ass, when got working something and then something "new" with unuseless "features" are "comming"

braikar commented 6 years ago

Hi @mckaygerhard I would like to do that, but where do I send it? I've tried adding the changes in github and all I got is people commenting that it wasn't 100% right, I knew that, but it was just to show where things could be changed.. If you have an idea where to send it, I'd be glad to do it, people on github mate-panel don't seem to care enough :/

mckaygerhard commented 6 years ago

debian seems are welcome, well i think! due in mayority of times i send patches to debian, was acepted!

if you dessire, can send by me! but i prefer do by yourselft i'm a user tht also need those patches merged.. (well my mate version are old.. )

shirishag75 commented 6 years ago

@Amet13 did you send the patches to @mckaygerhard. If yes, then @mckaygerhard were you able to put a merge request on https://salsa.debian.org/debian-mate-team or open a bug against mate-panel and putting a patch against mate-panel using patch.

Right now, mate-panel is 1.20.1-3 in Debian.

$ apt-cache policy mate-panel
mate-panel:
  Installed: 1.20.1-3
  Candidate: 1.20.1-3
  Version table:
 *** 1.20.1-3 500
        500 http://cdn-fastly.deb.debian.org/debian buster/main amd64 Packages
        100 http://cdn-fastly.deb.debian.org/debian unstable/main amd64 Packages
        100 /var/lib/dpkg/status

If the answer to both the above question is yes, please share the bug-report number and the patch. Will definitely try it on both my lappies as well as desktop to see if any improvement can be seen than the existing scenario.

Amet13 commented 6 years ago

No, I didn't. I'm not strong in coding and don't use MATE already so i can't send any patch. Eventually i closed issue because of 4+ year without any actions by this way.

shirishag75 commented 6 years ago

my bad, should have asked @braikar for the info.

mckaygerhard commented 6 years ago

no @shirishag75 i didnt recieve any and will be usefully due i used older versions of mate panel!

and why closed? @Amet13 ? please reopen i'm active monitoring this issue!

mckaygerhard commented 6 years ago

@braikar hi! what happened with you? please can send me those patcheds? you can attach here in the issue!

braikar commented 6 years ago

Hi, I haven't continued on the topic because I was waiting for Mate to get properly switched to gtk 3.22. But I haven't forgotten the topic either! Making these changes for gtk 2 properly just to have them modified again seemed useless. I'm waiting for mint 19 (I know ubuntu 18.04 is out.. but I prefer mint), when I install mint I'll have mate 1.20, and I will need to apply all the same patches (fitted for gtk 3) so that I can have my panel vertically as I like it. I will come back to share the patches I've made. But it also involves a change in libwnck, I had to add functions for orientation, because the original version has none.. But then I don't know if that won't affect other packages I don't know.. Anyway, I'll come back in a couple of months when I have mint19 and will have been forced to make the new patches :) I've attached the patches as your request, but it's for mate 1.12.. I'm still on that version, I was waiting for all the big changes with gtk etc. and switchign distribution to re-update those patches. The tasklist.diff is for libwnck 2.30.7 na_tray-c.patch is for mate 1.12 (I haven't tested it somewhere else) but the problem that needs to be adressed is that my dirty trick won't work for all sizes, in applets/wncklet/window-list.c I actually force the panel size to the specific size of my panel.. I have added gtk_widget_set_usize (GTK_WIDGET(applet), 120, 270); in the window_list_applet_fill(MatePanelApplet* applet) function.. That cannot be used for a proper patch, there's that bug in the window_list panel that still tries to allocate other sizes if it's not forced to a specific height.. I haven't figured out why.

na-tray-c.patch.txt tasklist.diff.txt

mckaygerhard commented 6 years ago

i'm not fan of "updates" and "fashioned version" so i still use gtk2 in many things (more cheap respect memory), and afraik of i'm not a fan of winbuntu, there's no problem for me to try those patches due i not fan of "upgrades"

ok makes sense, we can force a minimun size and maximun size with a flag.. taking in consideration that most screen today are widescren, it's good for me and so for those interesting on (like me)

shirishag75 commented 6 years ago

@braikar in your case, I would wish you could try debian-testing. It has already everything in place.

$ apt-cache policy libwnck-3-0
libwnck-3-0:
  Installed: 3.24.1-2
  Candidate: 3.24.1-2
  Version table:
 *** 3.24.1-2 500
        500 http://cdn-fastly.deb.debian.org/debian buster/main amd64 Packages
        100 http://cdn-fastly.deb.debian.org/debian unstable/main amd64 Packages
        100 /var/lib/dpkg/status

Then -


$ mate-about -v
MATE Desktop Environment 1.20.1

and last but not the least -

$ gtk-launch --version
3.22.29

So any changes done in Debian would automatically get sent to Mint and other debian-derived distros. including Mint . If not comfortable use @mckaygerhard help . I could help you out with any specific installation issue you may have/encounter if you decide to go the Debian way.

braikar commented 6 years ago

@shirishag75 alright, I will give it a try, but it won't be before next month anyway, my schedule is too busy right now.. And by next month I guess mint will be out anyway with exactly the same stable packages. Btw. most of my patches are a follow up on this work: http://kojevnikov.com/vertical-panel-in-gnome-15-months-later.html I had to modify some lines over time to make them match some updates in mates compared to gnome, but most of it is essentially the same. Apart from the ugly fixed widget size in window_list.c, that's what I figured I had to to, else the window_list applet still flickers now and then.

shirishag75 commented 6 years ago

@braikar cool although the binary of libwnck doesn't tell me anything -

$ dpkg -L libwnck-3-0
/.
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libwnck-3.so.0.3.0
/usr/share
/usr/share/doc
/usr/share/doc/libwnck-3-0
/usr/share/doc/libwnck-3-0/AUTHORS
/usr/share/doc/libwnck-3-0/NEWS.gz
/usr/share/doc/libwnck-3-0/README
/usr/share/doc/libwnck-3-0/changelog.Debian.gz
/usr/share/doc/libwnck-3-0/changelog.gz
/usr/share/doc/libwnck-3-0/copyright
/usr/lib/x86_64-linux-gnu/libwnck-3.so.0

Guess would have to download the source package to see if I get something more.

mate-panel though has lot of interesting schema and xml files -

$ dpkg -L mate-panel
/.
/usr
/usr/bin
/usr/bin/mate-desktop-item-edit
/usr/bin/mate-panel
/usr/bin/mate-panel-test-applets
/usr/lib
/usr/lib/mate-panel
/usr/lib/mate-panel/clock-applet
/usr/lib/mate-panel/fish-applet
/usr/lib/mate-panel/notification-area-applet
/usr/lib/mate-panel/wnck-applet
/usr/share
/usr/share/applications
/usr/share/applications/mate-panel.desktop
/usr/share/dbus-1
/usr/share/dbus-1/services
/usr/share/dbus-1/services/org.mate.panel.applet.ClockAppletFactory.service
/usr/share/dbus-1/services/org.mate.panel.applet.FishAppletFactory.service
/usr/share/dbus-1/services/org.mate.panel.applet.NotificationAreaAppletFactory.service
/usr/share/dbus-1/services/org.mate.panel.applet.WnckletFactory.service
/usr/share/doc
/usr/share/doc/mate-panel
/usr/share/doc/mate-panel/changelog.Debian.gz
/usr/share/doc/mate-panel/changelog.gz
/usr/share/doc/mate-panel/copyright
/usr/share/glib-2.0
/usr/share/glib-2.0/schemas
/usr/share/glib-2.0/schemas/org.mate.panel.applet.clock.gschema.xml
/usr/share/glib-2.0/schemas/org.mate.panel.applet.fish.gschema.xml
/usr/share/glib-2.0/schemas/org.mate.panel.applet.window-list.gschema.xml
/usr/share/glib-2.0/schemas/org.mate.panel.applet.workspace-switcher.gschema.xml
/usr/share/glib-2.0/schemas/org.mate.panel.enums.xml
/usr/share/glib-2.0/schemas/org.mate.panel.gschema.xml
/usr/share/glib-2.0/schemas/org.mate.panel.menubar.gschema.xml
/usr/share/glib-2.0/schemas/org.mate.panel.object.gschema.xml
/usr/share/glib-2.0/schemas/org.mate.panel.toplevel.gschema.xml
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/mate-desktop-item-edit.1.gz
/usr/share/man/man1/mate-panel-test-applets.1.gz
/usr/share/man/man1/mate-panel.1.gz
/usr/share/mate-panel
/usr/share/mate-panel/applets
/usr/share/mate-panel/applets/org.mate.panel.ClockApplet.mate-panel-applet
/usr/share/mate-panel/applets/org.mate.panel.FishApplet.mate-panel-applet
/usr/share/mate-panel/applets/org.mate.panel.NotificationAreaApplet.mate-panel-applet
/usr/share/mate-panel/applets/org.mate.panel.Wncklet.mate-panel-applet
/usr/share/mate-panel/layouts
/usr/share/mate-panel/layouts/default.layout
/usr/share/mate-panel/layouts/fedora.layout
/usr/share/mate-panel/layouts/linuxmint.layout
/usr/share/mate-panel/layouts/mageia.layout
/usr/share/mate-panel/layouts/opensuse.layout
/usr/share/mate-panel/layouts/ubuntu.layout
/usr/share/mate-panel/pixmaps
/usr/share/mate-panel/pixmaps/clock-calendar-icon.png
/usr/share/mate-panel/pixmaps/clock-face-large.svg
/usr/share/mate-panel/pixmaps/clock-face-small-day.svg
/usr/share/mate-panel/pixmaps/clock-face-small-evening.svg
/usr/share/mate-panel/pixmaps/clock-face-small-morning.svg
/usr/share/mate-panel/pixmaps/clock-face-small-night.svg
/usr/share/mate-panel/pixmaps/clock-face-small.svg
/usr/share/mate-panel/pixmaps/clock-map-location-current.png
/usr/share/mate-panel/pixmaps/clock-map-location-hilight.png
/usr/share/mate-panel/pixmaps/clock-map-location-marker.png
/usr/share/mate-panel/pixmaps/clock-map.png
/usr/share/mate-panel/pixmaps/fishanim.png
/usr/share/mate-panel/pixmaps/footguy.png
/usr/share/mate-panel/pixmaps/monkey.png
/usr/share/mate-panel/pixmaps/oldwanda.png
/usr/share/mate-panel/pixmaps/wanda.png
/usr/share/mate-panel/ui
/usr/share/mate-panel/ui/clock-menu.xml
/usr/share/mate-panel/ui/clock.ui
/usr/share/mate-panel/ui/fish-menu.xml
/usr/share/mate-panel/ui/fish.ui
/usr/share/mate-panel/ui/notification-area-menu.xml
/usr/share/mate-panel/ui/panel-properties-dialog.ui
/usr/share/mate-panel/ui/panel-run-dialog.ui
/usr/share/mate-panel/ui/panel-test-applets.ui
/usr/share/mate-panel/ui/showdesktop-menu.xml
/usr/share/mate-panel/ui/window-list-menu.xml
/usr/share/mate-panel/ui/window-list.ui
/usr/share/mate-panel/ui/window-menu-menu.xml
/usr/share/mate-panel/ui/workspace-switcher-menu.xml
/usr/share/mate-panel/ui/workspace-switcher.ui
shirishag75 commented 6 years ago

FWIW, if the patches are in the hands of the Debian maintainers, there is quite a bit of possibility of those patches being up-streamed. The DD's who are maintainers do have write access to the main repo. IIRC. If you share the patches and the list of different packages which need to be modified, @mckaygerhard will probably open a bug and both him and me will request the DM's to have it in experimental, pull those packages and see if any issues come up. If not, it would be put into unstable and then testing and finally buster somewhere in 2019 when Debian buster finally releases.

shirishag75 commented 6 years ago

There is another thing to consider though, I remember a conversation with the DD maintainers a few days ago because I was seeing lot of updates just deprecating stuff. Under conversations it was made clear that the deprecations were part of the upcoming gtk-4-0, see https://gitlab.gnome.org/GNOME/gtk

and https://blog.gtk.org/ https://gitlab.gnome.org/GNOME/gtk/milestones/1

shirishag75 commented 6 years ago

FWIW, AFAIK Mint really takes a long time for anything to come to its repo.

braikar commented 6 years ago

Hi, I finally have time to do some coding :) I installed the new linuxmint so I have to fix all the problems for widepanels for myself and I will include them here properly since now everything is in gtk3. I didn't start on the notification area because I saw that some changes happened that I didn't know about, some good, some bad.. The window list somehow works, it has been restricted to a single column in vertical wide panels, so there's no more flickering. But on the other side the notification area is still as bad as before. And a new problem emerged withe the PANEL_OBJECT_ACTION and PANEL_OBJECT_MENU (and I haven't tried the others yet). But the fix I'm making will be easy to apply to all other once it works for one. (NOTE 2days after I've written this post: I've figured it out now :) I've updated the pull request, it applies to all BUTTON_WIDGETS directly and correctly it's now here https://github.com/braikar/mate-panel/pull/2) Basically if the panel is 200pixels wide (or high), the applet takes up 200x200 of space.. The pull request I made there https://github.com/braikar/mate-panel/pull/1 is working on that, but I can't figure out yet how to change the size allocated by the panel. Because the widget is correctly resized and yet the gap remains, in a way that moving other widgets in the free area is impossible.. I prefer to figure that one out before doing the notification area. Because I feel both solutions could rely on the same global change, that is: setting a prefered max icon size as an option in the panel properties below Orientation and Size. That user defined sized can then be fetched as a gsetting to be applied on all applets that depend on that wanted size. Probably we can add an option to the notification area to override the global definition if wanted by the user. As you can see in the attached screenshot, the "mint menu icon" and "kill application icon" still take up the same space.. But if you try the patch and inspect with gtkinspector you will see the buttons are effectively resize, I just don't know why the gap still remains, the buttons are aligned vertically to the top, but the now empty gap remains. On a horizontal panel, the buttons are aligned left and the gap remains on the right..

changes

braikar commented 6 years ago

It's almost done for that problem, I'll work on resizing the arrow correctly too next. https://github.com/braikar/mate-panel/pull/2 As for the notification area, I've seen it's been neatly modified now, but it will thus take me more time to add the changes.. Though it's basically the same as before, change a GtkBox to a GtkGrid (or GtkTable before, but that one will be deprecated in 3.4 too), and it will need to be done in the future anyway since I've seen that Gtk is planning on dropping GtkBoxes anyway..

braikar commented 6 years ago

Pull request to fix the GTK_ARROW on BUTTON_WIDGETs: https://github.com/braikar/mate-panel/pull/3 Notification area is next :)

braikar commented 6 years ago

screenshot at 2018-08-20 21-24-58

Getting there :) The GtkBox is properly replaced by a GtkGrid. I have to get used to how GtkGrid works... I'll finish the fine tuning soon, the icons placement is just a bit erratic.

braikar commented 6 years ago

I am trying to set a gsettings schema for the notification-area, but I can't make sense of the makefile.. The xml gschema is not compiled during the make process? Does anyone have any idea what's wrong? Or can tell me where to ask? Thank you `SUBDIRS = \ libstatus-notifier-watcher \ status-notifier \ system-tray

noinst_LTLIBRARIES = libtray.la noinst_PROGRAMS = testtray

AM_CPPFLAGS = \ $(NOTIFICATION_AREA_CFLAGS) \ $(LIBMATE_PANEL_APPLET_CFLAGS) \ -I$(srcdir) \ -I$(srcdir)/../../libmate-panel-applet \ -I$(top_builddir)/libmate-panel-applet \ -DBUILDERDIR=\""$(uidir)"\" \ -DMATELOCALEDIR=\""$(datadir)/locale"\" \ -DG_LOG_DOMAIN=\""notification-area-applet"\" \ -DNOTIFICATION_AREA_MENU_UI_DIR=\""$(xmluidir)"\" \ -DPROVIDE_WATCHER_SERVICE=1 \ $(DISABLE_DEPRECATED_CFLAGS)

AM_CFLAGS = $(WARN_CFLAGS)

libtray_la_SOURCES = \ na-grid.c \ na-grid.h \ na-host.c \ na-host.h \ na-item.c \ na-item.h

libtray_la_LIBADD = \ libstatus-notifier-watcher/libstatus-notifier-watcher.la \ status-notifier/libstatus-notifier.la \ system-tray/libsystem-tray.la

NOTIFICATION_AREA_SOURCES = main.c main.h

NOTIFICATION_AREA_LDADD = \ ../../libmate-panel-applet/libmate-panel-applet-4.la \ libtray.la \ $(NOTIFICATION_AREA_LIBS) \ $(LIBMATE_PANEL_APPLET_LIBS)

testtray_SOURCES = testtray.c testtray_LDADD = \ libtray.la \ $(NOTIFICATION_AREA_LIBS)

if NOTIFICATION_AREA_INPROCESS APPLET_IN_PROCESS = true APPLET_LOCATION = $(pkglibdir)/libnotification-area-applet.so

notification_area_appletlibdir = $(pkglibdir) notification_area_appletlib_LTLIBRARIES = libnotification-area-applet.la libnotification_area_applet_la_SOURCES = $(NOTIFICATION_AREA_SOURCES) libnotification_area_applet_la_LIBADD = $(NOTIFICATION_AREA_LDADD) libnotification_area_applet_la_LDFLAGS = -module -avoid-version libnotification_area_applet_la_CFLAGS = $(AM_CFLAGS) else APPLET_IN_PROCESS = false APPLET_LOCATION = $(libexecdir)/notification-area-applet

libexec_PROGRAMS = notification-area-applet notification_area_applet_SOURCES = $(NOTIFICATION_AREA_SOURCES) notification_area_applet_LDADD = $(NOTIFICATION_AREA_LDADD) notification_area_applet_CFLAGS = $(AM_CFLAGS) endif

appletdir = $(datadir)/mate-panel/applets applet_in_files = org.mate.panel.NotificationAreaApplet.mate-panel-applet.in applet_DATA = $(applet_in_files:.mate-panel-applet.in=.mate-panel-applet)

$(applet_in_files): $(applet_in_files).in Makefile $(AM_V_GEN)sed \ -e "s|\@LOCATION\@|$(APPLET_LOCATION)|" \ -e "s|\@IN_PROCESS\@|$(APPLET_IN_PROCESS)|" \ -e "s|\@VERSION\@|$(PACKAGE_VERSION)|" \ $< > $@

@PANEL_INTLTOOL_MATE_PANEL_APPLET_RULE@

if !NOTIFICATION_AREA_INPROCESS servicedir = $(datadir)/dbus-1/services service_in_files = org.mate.panel.applet.NotificationAreaAppletFactory.service.in service_DATA = $(service_in_files:.service.in=.service)

org.mate.panel.applet.NotificationAreaAppletFactory.service: $(service_in_files) $(AM_V_GEN)sed \ -e "s|\@LOCATION\@|$(APPLET_LOCATION)|" \ $< > $@ endif

uidir = $(datadir)/mate-panel/ui ui_DATA = notification-area-preferences-dialog.ui

xmluidir = $(datadir)/mate-panel/ui xmlui_DATA = notification-area-menu.xml

notification_area_gschemas_in = org.mate.panel.applet.notification-area.gschema.xml.in gsettings_SCHEMAS = $(notification_area_gschemas_in:.xml.in=.xml)

EXTRA_DIST = \ org.mate.panel.NotificationAreaApplet.mate-panel-applet.in.in \ $(notification_area_gschemas_in) \ $(xmlui_DATA) \ $(ui_DATA) \ $(service_in_files)

CLEANFILES = \ $(applet_DATA) \ $(applet_DATA).in \ $(service_DATA) \ $(gsettings_SCHEMAS)

-include $(top_srcdir)/git.mk`

That's the content on the makefile, and the gschema is referenced in main.c...

braikar commented 6 years ago

Almost done, in the end it was quite easy! But it must be fined tuned. The sorting system of the icons is a bit messy! It works by removing all items from the grid, re-adding them and re-sorting them and forcing a redraw.. It could be made nicer that's sure. ^^ I'll do some more beautifying of the code in the coming weeks (it doesn't react well to panel resize, but that's not a big issue since it doesn't happen often anyway..). In the coming weeks.. because in 4 days I'm going to a place almost without internet (satellite/56k haha, and barely 3g when the atmosphere allows it!) for almost for 3 weeks ;) As I'm all set for my desktop, that's all I wanted. I'll publish the actual diff in 1-2 days for those who want it quickly ;) screenshot at 2018-08-21 14-05-58 As you can see I added a Preferences dialog, with two options, a tick box to keep them aligned on one line as it was before, they automatically resize to the width of the panel, up to 48px (icon size) centered (the change I made in BUTTON_WIDGETs applies now on the notification area items too, they don't take up 200x200 on a wide panel anymore). And if the "Display icons only on one line" is unticked, one can choose the size of the icons directly and they'll re-arrange nicely in a gird. As you can see the two examples where I set 28 size for one and 43 for the other. They don't adapt to all sizes though, once the size is big enough or small enough to fill the width/height, it resizes.. And as you can see the settings are set in a GSchema. I'll just need help to figure out how to change the Makefile to automatically compile it, I've spent hours on it without figuring it out. I installed the GSchema manually.. Meanwhile while doing that I've noticed that the clock applet doesn't display the weather anymore :( I guess the the connection to the weather server has been broken with the port to GtK3.. screenshot at 2018-08-21 14-14-01 See you soon

lukefromdc commented 6 years ago

Maybe you are not reaching the weather server from where you live? Turning on weather in the clock applet works fine with GTK 3 on my builds from the eastern US, and has all the way back to MATE 1.10 and with all GTK3 verrsions from 3.14 to current development 3.23

braikar commented 6 years ago

@lukefromdc I don't know? I can't see anything wrong in the syslog. Can you try, my settings are either "Paris, France" or "Luxembourg, Luxembourg". I was thinking maybe it's because I have compiz running, with D-Bus disabled? If enabled, everything flickers like crazy.. I jumped from mate-1.12 (where it worked flawlessly) to 1.20, I haven't used the in between updates because I wanted to keep my vertical panel and had no time to make patches for the new versions. Can you just tell me if Paris/Luxembourg works for you, then I know it's something here. I'll try to figure it out when I get back in some weeks. As you can see on the screenshots mine displays absolutely nothing (the space is left blank). Thanks

synthakai commented 6 years ago

@braikar thanks for the good job! I hope everybody can get the vertical panel working soon :) . meanwhile, I am on linuxmint 17 and even in this old distribution with mate 1.12 the weather applet has been updated and it is working now, so theoretically there should be a way in the code to make the weather applet work. Paris/Luxembourg are working fine for me. nice weather in Paris +30