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
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.
I’ve finally gotten round to doing a 0.3.4 release to get some of the features I’ve had ready for a while “out there”. On the way a lot of translation updates have trickled in and Christian Hesse supplied a patch to fix internal themes with Gtk+3.22.
As announced already a while ago, this release features a “Do not disturb” mode so you can suppress notification bubbles when in/convenient. So this should satisfy users who want to silence all notifications for a limited time-frame.
For users who want to suppress certain applications, they can now do so with a list of “known applications” – which gets populated over the life-time of xfce4-notifyd by all apps that send notifications.
If an application does not show up in this list it simply hasn’t sent a notification since you have upgraded to 0.3.4 🙂
Another – slightly hidden – feature is defining a screen for notification bubbles to appear. While by default notifications are shown on the screen where the mouse-pointer resides, you can now select the “primary monitor” – the “primary monitor” can be set globally e.g. through xfce4-display-settings – as default place for notification bubbles to end up on.
To enable this feature in xfce4-notifyd, add the (Boolean) property “/primary-monitor” to the xfce4-notifyd channel and set it to True.
In a future release this option may be moved to the settings dialog.
The only real bugfix in this release makes sure that internal themes work with Gtk+3.22, which dropped support for the “font” css shorthand in favor of “font-weight”, “font-family” etc.
Finally I’ll soon merge my “logging” branch – which brings the persistence feature to xfce4-notifyd – to master to give people a chance to test and translators some time to do their magic.
While I had planned to make the next release about features, I ended up fixing a few issues and doing a bugfix release instead. So 0.3.3 is about getting things right.
Generally speaking Xfce has very few unit tests – or tests at all – but since Jerome had laid a foundation for notification tests in xfce4-notifyd I decided to extend that to testing the icons in notifications. What inspired me to do so was that I noticed that notifyd was not in line with the fd.o notifications specification in two aspects:
it didn’t support the “image-path” hint and
the priorities of how to handle the icons were mixed up.
So my new “test-icons” test – which I wrote before(!) I implemented the fix for the priorities, even if I checked it into git only until later 😉 – checks whether the server handles all icon-related properties, hints and features and also checks whether the priority is in accordance with the specification. I also started some documentation on what parts of the freedesktop.org specification are implemented in xfce4-notifyd and which ones are not (prominent example which is not implemented: sound).
Other than that a thank-you goes to Olivier for contributing another build-fix. Finally I managed to get a few more bugs fixed, most notably a general theming issue (action buttons were sometimes mis-styled) and hiding notification buttons without label. Together with the translation updates I think this makes 0.3.3 a worthwhile release.
Final note: currently there are only 12 bugs open on the tracker, of which several are feature requests so things seem to be going quite well!
So xfce4-volumed has been around a while and automagically handling your media keys – originally written by Steve around 2009 – but lingering unmaintained in Xfce’s Git repository. This version of the media-key daemon uses gstreamer 0.10’s mixer interface, which has been deprecated in gstreamer 1.0.
It’s been almost as long that Lionel forked the project into xfce4-volumed-pulse in 2012 – hosted on Launchpad ever since – notably adding support for PulseAudio.
Migration to xfce.org
Not much has happened since then, until Sean and me decided to move the project over to the official Xfce infrastructure for more distributions to enjoy. This means the code is now on git.xfce.org and bugs are tracked on bugs.xfce.org.
I also went ahead and added some small features to it (all documented in the Readme). Amongst others I merged a feature branch adding support for the Microphone Mute key (thanks goes to Christian Pointner for the feature). I also added support for symbolic icons, which means your audio volume change notifications can now be shown – presuming you have at least xfce4-notifyd 0.3.2 installed – with always correctly colored monochrome icons. This latter feature has been made optional through an “icon-style” xfconf property in the newly created xfce4-volumed-pulse channel. This same channel now also handles the “volume-step-size” property, which used to live in the xfce4-mixer channel (this really didn’t make sense to me anymore with xfce4-mixer not supporting PulseAudio). Finally we cleaned up the repository a bit and Sean was kind enough to knock out the 0.2.2 release while I was afk.
So finally I’ve decided to release xfce4-clipman-plugin 1.4.0, which is the Gtk+3 port of the plugin. For a while I was unsure whether to do a development or a stable release – to be clear: this was not a decision based on the stability of the product itself but the fact that it relied on the development release of a Xfce core component (libxfce4ui-4.13.0). However I decided to revert the commit that introduced the dependency (I will apply it again latest when 4.14 is out).
As the port is a 1:1 port there are practically no new features. The only notable difference is that the panel plugin’s icon is now a symbolic icon.
Thanks to Eric, Steve and Florian for helping me get this off the ground!
This is only a smaller bugfix release that replaces a deprecated call and – more importantly – fixes the default theming of XfceHeading in all Gtk+3 settings dialogs of Xfce.
This release came a bit sooner than expected, but it’s primary goal is to fix a showstopper regression which slipped into 0.3.1 and practically rendered xfce4-notifyd useless on systems with Gtk+3 <=3.18 (i.e. not showing any notifications). Thanks to Olivier for noticing immediately and posting a patch!
But while this had to be a fast release I still managed to put in some feature-goodness. For instance I came through on my promise to add more default themes and in this release I added “Retro” and “Bright“.
The biggest feature in this release however is the support for symbolic icons. For those of you who haven’t heard of the feature before: it’s basically Gtk+ coloring your icon with the color of the font of that particular context, so the icon will color-wise match the font. This is especially useful for monochrome icons and (usually) prevents white-on-white scenarios. It also gives users and theme-makers more freedom (instead of having a “dark panel” or a separate “dark notifications” variant of an icon-theme). Note that your notification-sending application also has to request a symbolic icon, xfce4-notifyd is not enforcing symbolic icons.
Another notable fix (that I forgot to mention in the release notes) is the fix of styles of the progressbars in notifications. Those were not styled according to the notifyd-theme selected but always used the style of the base (as in: screen-wide) Gtk+ theme.
Finally, a minor improvement is that all themes are now sorted alphabetically in the Settings Dialog.
With this bugfix release out of the way it won’t be long until I merge my feature branch and get more testing for the “Do not disturb” mode.
On the plate for the next release are more default themes (hint: “Retro” has already been pushed to git master) and potentially the per-application settings and “Do not disturb” mode which I previously teased. The latter might also warrant a major version number bump so we’ll see whether it’ll really end up in 0.3.2.
As previously announced I’ve been working on per-application settings and a “Do not disturb” mode for xfce4-notifyd, which is Xfce’s notification daemon.
Finally I’ve come to a point where I’m ok with pointing to the code and encouraging people to try it and spot potential issues with it. As both of these features have been long-time requested I hope it’ll make quite a few people happy. I know I’ve been quite happy myself since I can use it 🙂
The way that the “known applications” are handled by xfce4-notifyd is that they are remembered once they have sent a notification. This means that you can only mute applications which have – at some point since you’ve been running the code from the branch – actually sent notifications. I’ve been previously thinking about trying to collect all potential candidates somehow but this turned out too pesky and personally I think most users will want to mute those applications that send notifications often and those will quickly appear in that (alphabetically sorted) list.
Caveats: Some of this isn’t final – I might still be updating the wording on some of the labels or even some of the functionality might be amended a little, but generally I’m quite pleased with how things are working. Furthermore there may be memory leaks, I just haven’t had the time to really get to that (bugreports and patches are warmly welcomed ;)).
If you have feedback or suggestions please feel free to add some comments to this post or contact me on other communication channels.
Finally – 5 months after the release of Gtk+3.20 – I’m happy to announce the release of the first version of Greybird supporting it.
Why has it taken so long? – you
may ask yourselves – and one reason was certainly me being totally busy with other things, but another one was that Ubuntu didn’t ship it in its 16.04 LTS release (which was a totally sane decision, by the way). Because of the latter it took some time before the issue of having a theme that supports Gtk+3.20 became pressing enough for me to take action.
Anyway, now it is done. (At least mostly.)
While porting the theme (in this case really: porting, not just: adding support for) I also decided to rebase it on Adwaita. Over the last releases so much stuff had piled up, so many quick fixes or patching up visual nuisances to support “the next Gtk+ release” that the theme had become an unmaintainable jungle – I frankly couldn’t have told you which line mattered anymore. While rebasing, I also went from CSS to SASS, which was the only right decision, as I’m sure now after having gone through with it. It made the code so much more maintainable and readable (kind of reminding me of the first Gtk+3 releases, when themes were still a lot leaner in terms of LOC).
So yeah, I’m pretty happy with where this has been going. There are still some rough edges (e.g. progressbars are probably not 100% greybirdy) and things I haven’t added support back for (e.g. elementary’s Granite widgets), but I think what is there now warrants an initial release as things still look consistent between Gtk+2 and Gtk+3 applications.
One final note: Greybird has recently switched to a new versioning scheme, which basically mirrors the Gtk+3 release numbers the theme works best with.