Xfce

Subdomains

xfce4-power-manager 1.6.1

After almost two years I finally managed to get around to release a new version of the power manager, including many bugfixes that have accumulated over this time over the original Gtk+3/GDBus port that is 1.6.0.

Users will mostly notice the improved support for Desktop systems (they used to have the “battery-missing” icon displayed in the panel plugin – a regression over 1.4.x, which handled desktops more gracefully). Those who also use xfce4-notifyd’s recent logging mechanism will notice that now not every power manager event (e.g. changing the brightness) ends up in the log, as many notifications are marked as transient.

xfce4-panel 4.12.2 and 4.13.2

Both the stable 4.12 series and the 4.13 development series saw releases of late.

4.12.2

4.12 saw a small feature release adding support for the much and often requested “primary monitor” feature of RandR. So when you now define a panel’s location as “Output: Primary” it will dynamically move to the monitor marked as “primary” through the xfce4-display-settings dialog.

The default value “Automatic” for the Output option remains, so users will not notice any invasive changes here. Also the behavior of this default option remains unchanged (usually pushing the panel to the left-most monitor – aka x=0/y=0 – by default).

4.13.2

4.13 also saw a release, introducing GObject Introspection support, which should enable people to write Panel plugins in different languages (e.g. Python). We still need a template for that (volunteers forward!) so people can get their hands dirty more easily, but I think this is a very nice addition.

Apart from this I fixed a lot of smaller and bigger issues in the panel’s core plugins (actions, clock, launcher, tasklist and systray) and the settings dialog can now again be plugged into the xfce4-settings-manager dialog.

After only 2 months of work I was today ready to release xfce4-notifyd 0.4.1 (thanks in part to Viktor’s fix for make distcheck) with a bunch of fixes and some small features too (and of course lots of translation updates).

New panel plugin menu layout

Features

The panel plugin that was introduced in 0.4.0 received some attention, gaining a new hidden option (log-icon-size) for users to set the icon-size for the notifications that are displayed in the menu. Furthermore I added a “Clear log” button and finally decided to revamp the layout of the menu a little, inspired by some work of the elementary folks. Now the “Do not disturb” item is on top (or bottom, depending on your panel layout) of the list for easy and quick/er access and sports a GtkSwitch because the GtkCheckMenuItem was not visible enough.
To top off the changes to the plugin I added a placeholder text in case the log has been cleared or there are no notifications to display (e.g. if the “only notifications from today” filter is set but the log only contains entries from yesterday and before).

Furthermore spent some more time on the notification window layout and it should be very consistent now, so equal spacing between the icon, subject, body, buttons and the edge of the bubble.

Finally I added a configure option to use autostart instead of dbus (Bug #13989), which is a feature some distros (like Mageia) have done already via downstream patches so far and which helps if people have multiple DEs and therefore notification services installed in parallel.

Bugfixes

Regarding bugfixes there are also a few notable mentions. With the help of several contributors the following issues were tackled:

Most of this post is fairly old news, but still worth to be mentioned.

Also as a small gimmick (and because it was requested in my previous post), here is a gif of the new slide-out animation of xfce4-notifyd 0.4.0

I have read your comments and bugreports and have already been working towards some further improvements of notifyd, so I guess 0.4.1 is around the corner.

Finally, here goes the “historic news”.

xfce4-panel 4.13.1

After a longer waiting time I pushed out another development release of the panel. This one includes among as major change the port to GDBus, which was done by Ali. This means the panel now depends on xfconf 4.13 – recommended is at least 4.13.3 – and is not compatible anymore with xfconf 4.12.

A lot of bugfixes and translation updates accumulated over the last months since 4.13.0, the most prominent one is the fix of drag and drop (one of the bigger known regressions of the Gtk+3 port) thanks to Peter. A nice new improvement is the re-ordering of systray items, which was implemented by Viktor.

xfce4-clipman-plugin 1.4.2

We’ve had a lot of problems with keyboard shortcuts not working reliably with the panel plugin and systray version of clipman so Mike rolled up his sleeves and ported both to GtkApplication. I haven’t had a problem with my keyboard shortcuts since!

Greybird 3.22.5

This release features some small improvements including slimmer CSD/headerbars to save some vertical pixels, initial support for Xfdesktop 4.13 to help all testers of Xfce’s development releases and finally a fix for message dialog buttons.

I have since then been working towards supporting Thunar’s Gtk+3 port better in Greybird, which will be included in the next release.

After quite some development time I have decided to push out xfce4-notifyd 0.4.0 today. This is not just a bugfix, but a feature-packed release.

Panel plugin

Among the biggest changes there is a panel plugin which displays the most recent notifications as well as allowing for quick access to the do-not-disturb mode. It also serves as a status indicator for the do-not-disturb mode, so you can easily see whether notifications are shown or hidden overall.

The new panel plugin

Improved logging

I’ve also spent some time on improving the notification image handling in the log. While handling icon-names is easy (just save them as string) handling the pixbufs was a little more challenging. I decided to do it the Git way and deduplicate these pixbufs based on their (unique) hashes, so that each picture would only be saved once. All of those pictures end up in a sub-directory of the log (which by default is ~/.cache/xfce4/notifyd/icons). Currently there is no monitoring of how much space these images consume and no button to clear them away, maybe I’ll add that later if people feel it would be useful/necessary. After using this feature for several months I have accumulated less than 7MB.
The log also received some more love in terms of markup support and character escaping. Multi-line notifications should now be correctly logged.

New animation: slide-out

Just for the fun of it I also worked out a new animation optional addon to the standard fade-out. I called it slide-out and it’s a fairly wide-spread animation mix of fade-out and sliding the bubble (depending on its location on the screen of course) off-screen.

New logo

As this turned out to be a bigger release I went for a bigger version jump and also included the new logo I had been working on for a while. I evaluated several “notification” metaphors and went for the ‘ol bell (notification bubbles felt a little odd and not easy to depict, as they look usually very diverse).

Bugfixes

Some people may be happy to know that I dropped the feature that let xfce4-notifyd exit after 10 minutes of inactivity. I can only guess but I presume this was implemented to save resources. Nowadays it feels more annoying if a daemon has to be restarted and the first notification that’s that split-second longer to appear.

A few more tweaks have been done to the geometry of the notification bubble windows to not take more space than needed and distribute things evenly (no more strange margins) and the configuration dialog now shows a warning if xfce4-notifyd is not detected as running.

Download

As always, you can download and build/install the tarball or wait for your favorite distribution to package and ship it to you.

After a looong waiting time – the original port of the panel was first kicked off in March 2013 by Nick – the first development release of the xfce4-panel is out and I am happy to say it is usable! There are however some regressions and of course a lot of potential bugs that simply haven’t been uncovered because of the limited usage and testing so far (I guess I haven’t gone through all possible kinds of panel setups).

A very simple setup

General functionality and features

I know this is very boring, but the Gtk+3 version of the panel is on par with 4.12.1. Most of the functionality is there (see regressions and known issues), but no dramatic new features were introduced (apart from what the Gtk+3 toolkit brings to the table itself).

One notable feature that people have also been requesting for a while – in fact yours truly originally reported the bug – is support for RandR’s “primary monitor” feature. This means the panel will not stay on the left-most monitor by default but jump to the monitor that you define as “primary” in xfce4-settings Display dialogue.

Known issues and regressions

Not all panel settings may be kept as the configuration is not 100% backward compatible (e.g. we’re using GdkRGBA instead of GdkColor for the background)

Small regression with intelligent hiding (when opening a menu, the panel hides and comes back immediately while it should just remain visible)

Enter/leave opacity does not work for Gtk2 plugins

The panel is not visually focused by default (fixed in Xfwm4>=4.12.4)

There is also one deprecation that is worth mentioning. While the panel relied on xfce_panel_image in Gtk+2 (i.e. pixbuf drawing and scaling) we decided to deprecate this approach in favor of using the toolkit’s features directly (which is now possible more efficiently with Gtk+3). The newly added xfce_panel_plugin_get_icon_size relies on GtkImage directly and which introduces defined, meaningful icon size-steps to avoid fuzzy icons in the panel.

Theming

I have already added some basic theming for the panel to Greybird and I hope this will help others. I’ve also noticed that the GtkCalendar widget in Gtk+3 is visually broken (actually also codewise really terrible, and likely therefore unmaintained) and made some effort to improve that in Greybird.

What’s next?

Well, there are still a lot of things to do. The top two of the todo list for the panel are of course fixing all known and not yet reported bugs as well as cleaning up more deprecations (currently your terminal’s backlog is filled with warnings when running make, which makes it hard to distinguish the meaningful from the meaningless information).

How can you help?

Do some testing, either by using something like VirtualBox or xfce-test or use a distribution that is brave enough to package the panel (I presume we will see it in some Ubuntu PPA in the near future). Set the panel up your way and just use it and hopefully we will manage to cover all existing use-cases and have them working in 4.14 as well.

Testing Xfce

Xfce – like many other open source projects – is not exactly following a test-driven development workflow. I would argue that we need a slight mindset change here plus we need some (standardized) infrastructure to make testing easier for people who want to get involved.

Luckily what we have been waiting for in terms of the latter is already here! xfce-test is a Docker-based setup built by Florian which enables anyone to quickly spin up a container (based on Xubuntu 17.04 for now) with some components integrated from Git master, e.g. the Gtk3 panel. The great thing is it does not create the overhead of a real virtual machine for a tester but instead stays in the lightweight world of containers. This also makes it easy for everyone to adapt and rebuild the container and to create a reproducible environment that can be shared.

xfce4-notifyd 0.3.6

And another bugfix release for xfce4-notifyd is out! The best part about this is that apart from code-review there was nothing for me to do to get there!

So a big shout-out goes to both Mattias and Igor for fixing some of my – slowly but surely traditional – shortcomings (memleaks here we go again!).

Greybird 3.22.2 and 3.22.3

So there are also new releases out for Greybird, and not a bad ones I may add. On the feature side I added a preliminary version of a dark theme, which I hope will please some of the Gnome users of this theme.

Furthermore I did some polishing on making GtkPopover and Headerbar buttons more integrated and tight. Finally some fixes went into Nautilus notifications, the xfce4-notifyd theme and GtkCalendar looks acceptable at last (which makes the Gtk3 version of the panel usable)!

elementary-xfce 0.8

This release adds support for the new icon names of Gnome 3.24. I also pulled in several icons from upstream elementary, especially updated mimetypes (thanks Dan!) plus I added support for Pantheon Photos.

Finally I added more sizes to some of the icons, ridding the theme of some inconsistencies.

xfce4-panel 4.13.0 in the works

As hinted at in the previous installment of “Releases, releases, releases!” I’ve been pouring quite some time into getting xfce4-panel close to a first 4.13 development release. This should help testers to get a packaged up stable point of reference and it should also help us to track the remaining issues in our issue tracker like normal human beings instead of collecting everything in the wiki roadmap page.

So while there are still some issues remaining (one of the more prominent disfunctions is broken drag-and-drop in certain contexts) I use the panel on a daily basis and it hasn’t crashed upon me once and does pretty much what it should – even with Gtk2 plugins in it (nnnice!).

So it’s not that I’ve been quiet and lazy – I was actuallybusy preparing some releases and hacking on stuff. So here’s an update on what’s been going on and what’s to come.

xfce4-taskmanager 1.2.0

This is a new release which brings a handy feature, i.e. identifying windows by clicking on them. Just use the crosshair-button in the toolbar and click on a window. This will result in the appropriate/associated process being selected in the tree or listview. Thanks a lot to Florian for helping getting this feature release-ready!
Some small improvements to keyboard navigation have also been pushed with this release, namely hitting the Delete or Shift+Delete keys will let you terminate or kill processes respectively.
Finally Olivier improved the memory usage for the FreeBSD.

Looking a little into the future, I’ve also been busy porting taskmanager to Gtk3 entirely, i.e. dropping support for Gtk2. This will happen with the next major release (2.x), which means no more feature-releases are planned for the 1.x series and Gtk2. It’s not out of the question though, that there will be a bugfix or maintenance release for 1.x later on.

xfce4-notifyd 0.3.5

This long-awaited feature release finally brings the persistence support I have been working on for a while. So you can now enable a notification log and get your “away log” easily this way. There are even some options to only get the log for certain apps or only with “do not disturb” mode enabled.
Handy, right?

I have also – and this is maybe even more important – reworked the settings dialog towards something that I would hope could be the future direction of Xfce settings dialogs in general (or to the least open the discussion about it). Initially we settled on doing a 1:1 port from Gtk2 to Gtk3 to keep the disturbance and changes for users as small as possible. However, Gnome’s HIG (Human Interface Guidelines) that Xfce originally relied on – and still relies on – have changed dramatically and with that most Gtk+3 applications. So personally I think we should re-think the Xfce HIG and the new xfce4-notifyd settings dialog tries to be a best practice for some things. I’ll probably do a separate writeup of that though as this article is already long enough and there are still some releases to be announced.

Thunar 1.6.11

This maintenance release brings some important fixes that have made users complain a lot in the recent past – and understandably so. Thunar was fairly unstable with copy, rename, move and drag-and-drop operations and would simply crash. While a lot of people in the community did testing (and whining :)), several folks got to work, identified the underlying issue and submitted patches (that I pushed recently).
So hopefully this new release will provide a new baseline for testers and we can close many of the existing up- and downstream reports, many of which may be duplicates (at least in the sense that they were caused by the same pieces of code).

Greybird 3.22.1

This is mostly a maintenance release, which fixes a bug in Geary’s conversation view and improves the readability of OSDs.
However, it also features a new (round) style for GtkSwitches, which makes them take up less space. Sweet!

What’s next?

Currently I’ve been hacking a little on Xfce’s display dialog to add a feature I once rejected (mea culpa, live and learn…). At the time I was more optimistic about me – or anyone else for that matter – finding the time to implement proper colord support in Xfce, which means support for color profiles. Unfortunately we didn’t make it, so what I can offer now is the rebasing and improvement of a patch that was once written against Gtk2 and merge-ready for Gtk3 (including a small rework of the settings dialog as a whole) and an honest apology to Andreas Lampersberger, the author of the original patch.
There are still more things I’d like to fix in display dialog land, like scaled mirror mode by default if two displays don’t share any resolutions (which is generally supported by XRandR, but not implemented yet).

The other thing I’ll probably get back to now is the panel. The gtk3_css branch that I was last working at needs some revisiting and I hope that some of the recent activity on the IRC channel and mailing list will also lead to more peopletesting the code and helping out with the porting or just smaller patches even.

Anyway, there’s a lot to do and your help is much appreciated along the way! So get in touch with us if you feel like contributing.

Status icon theme

A while ago I started working on making Xubuntu’s default messenger app Pidgin look a little more integrated by creating a status-icon theme for it. As Xubuntu relies on the wonderful elementary set for iconography (in a variant maintained by me which is while being distro agnostic slightly misleadingly labeled “elementary-xfce”) the Pidgin theme was obviously done in that vein.

Smiley theme

Last week I extended this effort to emoticons and created an initial smiley theme for Pidgin. While it may not support all protocol standards yet it should be pretty usable already. I’m hoping for people to submit some bug-reports on github if they encounter a lack of support for a protocol standard for emoticons.
It makes use of all meaningful emotes provided by upstream elementary.

Download and install

You can get both themes from the same github repository. To my knowledge, neither of them have been packaged in any distribution, so you will have to run the Makefile I included to install both themes.

Caveat: As Pidgin does not support system-wide status-icon themes, you will have to install that theme locally and it will only be available on a per-user basis. Hopefully this will be fixed/implemented in Pidgin upstream in the future.

Install the status-icon theme

Install the smiley theme

While I haven’t been very active in terms of clipman lately I decided to push out a maintenance release in the 1.4 series nevertheless, as some useful patches had piled up in the master branch.

The probably single most important patch was contributed by Rinat and fixes the menu of clipman when used in a bottom-aligned panel. As I myself am using a panel at the top of my screen I didn’t notice this at all when releasing 1.4.0.

Other than that I improved the icon sizing for the panel plugin, which was another common – and understandable complaint – with 1.4.0. So the icon doesn’t remain at 16px, but scales in (meaningful) steps – very much like the power manager’s plugin.

Finally I decided to draw up a new application icon for clipman, as the old one was quite dusty already, low resolution and inconsistently looking at different sizes. Gaze at it in all its glory

Download

As always, wait patiently until your favorite distribution packages up clipman 1.4.1 or grab the tarball from here:

Greybird has finally seen a first release supporting Gtk+3.22. To this end, I have decided to rebase on top of Adwaita 3.22.1, which also means I remain close to the original SCSS code. So far I can safely say that rebasing the whole Greybird theme on Adwaita has made my maintenance life a lot more fun again.

One slightly annoying issue in Gtk+3.22 seems to be the deprecation of the “font” shorthand, so instead of “font: Courier bold 22px;” you have to

New, shiny and normal

write something like “font-family: Courier; font-weight: bold; font-size: 22px;”. This in itself would be okayish, but Gtk+ seems to treat this deprecation as an error and consequently xfce4-notifyd would no longer build on systems with Gtk+3.22.

I also fixed some minor issues, one of the more annoying ones was the tall tabs in e.g. xfce4-terminal, which now looks a lot more normal again.

Another nice fix that I borrowed from Numix is a workaround to make applications in Ubuntu that have their CSDs patched out look more normal. And apart from fixing an issue in the notification theme I also managed to sneak in a preparatory commit for the xfce4-panel in its Gtk+3 flavor, which is still in the works.