Thunar: Image Preview and Hidden Preferences
Welcome back, it's been a while!
Where have I been?
I haven't had much time to actively contribute to Xfce in the past few months. Between mentoring Amrit for GSoC and completing my undegraduate thesis, I wasn't able to write patches at my normal pace. Things have started to pick back up, now that I've finished my undegraduate studies. I still won't be able to work on Xfce as much as I used to. In addition to starting my Master's degree, I have joined the AI Research Team of the University of Athens. Nonetheless, I will continue to maintain Xfce Terminal and contribute to Thunar and other core Xfce components. Now that this is out of the way, let's talk Thunar!
Image Preview
Thunar just got an image preview, hooray! Well, actually, Thunar now has two images previews. The user can select to use a standalone image preview pane, which also shows some details about the files (work in progress), or use an image preview that is embedded in the left sidepane.
Eliminating Hidden Preferences
In my previous blog post, I wrote about wanting to eliminate hidden preferences, which I consider bad design. I've been working on a solution for both Thunar and Xfce Terminal, that reuses code from the Xfce Settings Editor. Instead of hiding preferences, all preferences that are considered secondary/niche, or don't fit in the existing tabs of the Preferences Dialog, we moved them to a new tab.
Settings GUI
Welcome back! It's time to talk about hidden preferences.
The problem
It's a sunny day and you boot up your PC, which uses Xfce, ready to do some file-organizing. You open Thunar and suddenly you realise something. All this time you would have prefered sorting to be case-sensitive. You open the Preferences Dialog but alas, there is no relevant setting. You are left disappointed, hoping that Thunar devs add this option in a future release. You might even create a feature request.
Little do you know, Thunar does have a preference to enable this functionality but it is hidden away. You can only find it in the wiki and even that is not a guarantee because we might forget about updating the wiki. Then you have to go and manually enable it in the Settings Editor or using xfconf-query.
Thunar is not the only Xfce application that has hidden settings, Terminal is another prominent application that has preferences that don't showup in its preferences dialog.
Settings Editor à la Shortcuts Editor
If you have been following the development of Xfce you probably know that I created a Shortcuts Editor widget that can be easily integrated in Xfce apps. Presently, Thunar, Mousepad and Terminal use that widget to give users an easy way of editing shortcuts.
I've been working on a similar widget for Settings based on the Xfce Settings Editor. The end goal is to have a simplified version of that settings editor that can be easily integrated in Xfce Apps that use xfconf. That will allow us to eliminate hidden preferences (or at least, greatly reduce them).
Searching in the Xfce Settings Editor
The other big feature that I've been working on is Search/Filtering for the existing Xfce Settings Editor. Simon had started working on a patch for this but never finished it, so I continued where he left off. I am not planning to include this functionality in the separate widget that was described previously.
xfce4-terminal 1.0.0 stable release
After 15 months a new stable release of Xfce Terminal is out full of improvements for everybody to enjoy!
A new maintainer
From 2016 until 2020, Terminal was in the capable hands of Igor Zakharov. It became unmaintained for a few months in 2021 until I took up its development in September. This is Terminal's first stable release with me as its maintainer, and I hope you will find it worthy of the quality standards set by my predecessors and the Xfce desktop environment as a whole.
A new versioning scheme
After asking around the Xfce community about Terminal's versioning scheme and looking into its history, I decided to adopt Thunar's old versioning. That means that the next cycle of development releases will be 1.1.x, and the next major stable release will be 1.2.0. That will continue until we reach 2.0.0 or some major change happens (for example, porting to GTK 4).
Improvements
For anyone who hasn't kept up with Terminal's development here are the major improvements:
- The `Scrolling on ouput` preference has been improved and will now be temporarily disabled if you scroll up.
- Overlay scrollbars are now supported.
- You can now send signals to the foreground process through the UI.
- The '--tab' and '--window' command line arguments have been reworked to be more intuitive.
- For those who use background images, 'Fill' is a new style option.
- The 'Unsafe Paste' dialog has been significantly revamped and now also gives you an option to temporarily disable it.
- You can now change the behavior of right click.
- Accelerators that contain the 'Tab' key can now be changed at runtime.
- A new Shortcuts Editor was created for Xfce applications, and Xfce Terminal is one of the first apps to support it (requires libxfce4ui 4.17.2 or greater).
- XfceTitledDialog is used where possible for better synergy with the rest of your Xfce desktop.
Under the hood
As far as under the hood improvements go, I spent most of my time rewriting the code that handles the accelerators and the creation of various menus. This removed most of the deprecated code in Xfce Terminal and fixed various small issues or inconsistencies that existed in the old code while also reducing the size of the codebase. At first, this transition introduced a bunch of regressions but thanks to testers in the community it looks like any shortcuts or UI issues created by it have been fixed. A nice bonus of this transition is being able to customize the goto-tab accelerators.
I did also spent some time fixing build warnings and removing code for ancient versions of VTE. All in all, I believe that the codebase is in a better place than it was one year ago and this will enable me to make 1.2.0 an even bigger release.
Future plans
Xfce Terminal
The future of Xfce Terminal is bright. Some of my goals for 1.2.0 are:
- Rewriting the Preferences Dialog to use XfceTitledDialog and integrate the Shortcuts Editor into it.
- Creating a new Settings Editor widget in libxfce4ui by reusing code from the exisitng Settings Editor and using that to eliminate hidden preferences.
- Documenting all public functions in Xfce Terminal.
- Introducing Profiles-like functionality which will close a bunch of open issues.
- Tab restoration outside of Xfce environments.
- Improved FreeBSD support.
Videos showcasing features and improvements in this release:
xfce4-terminal 0.9.2 development release
xfce4-terminal 0.9.2 development release
A new xfce4-terminal development release is here, and this time it is special. This version serves also as the release candidate for xfce4-terminal 1.0.0. If you want to help keep xfce4-terminal bug-free, this is the time to test and report any bugs you find!
Changes
For this release I focused on fixing regressions and minor annoyances, so I have no fancy new features to write about in this post. Most improvements are related to accelerator-handling and most fixes related to UI/UX regressions (or accidental changes) that were introduced in the transition to XfceGtkActionEntry. You can see the full list of changes in our wiki.
I want to thank Gael and Theo for bringing a lot of these issues to my attention.
Future plans
If no major bugs are discovered, I will release xfce4-terminal 1.0.0 in a couple of weeks. After that I will focus on my long list of Thunar issues.
A better toolbar for Thunar
A better toolbar for Thunar
Welcome to my first Xfce development update for 2022. Happy new year!
Toolbar and Custom Actions
The problem
In the past, there have been quite a few discussions about the toolbar and which items it should contain. Both developers and community members wondered: "Should the reload button be removed?", "Why isn't the search button a toggle in the toolbar?", "Should toggle buttons exist in the toolbar?". As you might expect, there was no perfect answer to those questions. Some people liked one thing, other people liked the exact opposite.
You can see all that in the following links:
- Move the reload button
- Remove the reload button
- Move the search button to the toolbar
- Add Zoom buttons in the toolbar
The solution
Here comes Merge Request 173 which introduces the ability to customize the toolbar. That is done through a new "Toolbar Editor", which is based on the existing "Columns Editor", where the user can reorder and hide toolbar items.
Instead of being satisfied with the ability to customize the toolbar using built-in items, I decided to take it a step further and give users the option to add their custom actions to it. Presently, only actions that are used on directories can be displayed as items in the toolbar but in the future we could expand that functionality if there is user demand.
Other improvements
I have also been working on some smaller improvements. Thunar can now handle shortcuts that include the 'Tab' key and I am prototyping a spinner element to let users know when a search is ongoing.
Future plans
This is probably the last big feature that I will develop for Thunar 4.18. After this is merged I will probably focus on fixing regressions and bugs.
xfce4-terminal 0.9.1 development release
Welcome back! For the last two months, I've been working on fixing regressions introduced by 0.9.0 (thanks to all the people who use try the development releases) and a few new features and enhancements that the community has been asking for.
Enhancements
The `scrolling-on-output` preference has been slightly reworked. Previously, you were unable to scroll-up while the terminal was printing (the view would be immediately scrolled back down). The new, improved behavior follows the printed lines only if you haven't scrolled upwards. If you have, the view stays there and you can continue the automatic scrolling by going back to the current "end" of the terminal screen, i.e. by scrolling back down.
Additionally, as was promised in the previous release, I reworked the checkbox to disable the 'Unsafe Paste' dialog. Now you can disable the dialog temporarily instead of being forced to permanently disable it and then having to re-enable it (disabling it permanently is not advised).
New features
A new scrollbar type has been added, called overlay-scrollbar. This scrollbar is provided by GtkScrolledWindow which xfce4-terminal now uses for its terminal screens. Overlay scrollbars are slimmer, therefore they save some horizontal space. If you like the old scrollbar style that is still available (and will probably be the default in the final release).
This version also includes the XfceShortcutsEditor widget that I wrote about in a previous post. Keep in mind that you need libxfce4ui 4.17.2 (or greater) to use this feature, otherwise the entry will be hidden.
Last but not least, you can now customize what the right-click action. Instead of opening the context menu, you can configure xfce4-terminal to paste the clipboard or the current selection.
Release notes
You can find the full release notes at the following link: Release Notes
A shortcuts editor for Xfce and a couple of other things
A shortcuts editor for Xfce and a couple of other things
Welcome to another Xfce development update! In this one you will learn about the new Xfce Shortcuts Editor and a couple of upcoming Thunar features.
Shortcuts Editor
As you may know, I'm the maintainer of xfce4-terminal and a developer for Thunar. It just so happens that both of these programs have a ton of shortcuts. Until now, there was no GUI for changing shortcuts. Users had to manually edit the `accels.scm` file which is doable yet cumbersome.
Additionally xfce4-terminal, being a terminal emulator, has the problem of its shorcuts colliding with the shorcuts of terminal applications, rendering them unusable. To fix that issue users needed to once again dive into the `accels.scm` file and change the default shortcuts manually.
That is why I created a new widget called XfceShortcutsEditor in libxfce4ui. Applications that use XfceGtkActionEntries for their accelerators can easily integrate that editor in their UI and enjoy the benefits without any additional complexity.
Thunar improvements
As far as Thunar specific improvements go, I'm happy to announce that the next version of Thunar will have a customizable Statusbar. By right-clicking, users will be able to hide/show information that they (don't) need.
Additionally the folder properties dialog now displays the type of contents of the folder (i.e. the number of files and folders insdie the folder).
xfce4-terminal 0.9.0 development release
Welcome back! Since I became maintainer of xfce4-terminal I've worked on replacing deprecated parts of the codebase, closing old bugs and merging Merge Requests which have been sitting around for a while.
GtkActions
The majority of my time was spent on dealing with the, now deprecated, GtkActions/GtkActionEntries and GtkUiManager which were used for creating the menubar, toolbar, right click context menu and for handling the shortcuts. All of that logic was moved to Xfce's own XfceGtkAction entries which are supported by the Xfce team. As a nice bonus, this transition slightly reduced the size of the codebase. Some deprecated parts remain, like the UI for changing encoding from the menubar but I've decided to transition slowly to make sure that things remain stable.
Sending signals
The most exciting new feature is the ability to send signals to foreground processes. This is done either through the right click menu, or through the `Terminal` entry of the menubar. We have Cyrille Pontivieux to thank for the initial implementation of this, which I simplified and later transitioned to the new menu/shortcut system.
Release notes
You can find the full release notes at the following link: Release Notes
A couple of big features for Thunar
A couple of big features for Thunar
Welcome to my first post-GSoC blogpost. Google Summer of Code might have ended but I'm continuing my daily work on Thunar and Xfce Terminal (more on that later). This blog-post is accompanied by a video that showcases what is written here.
Recursive Search
I'm happy to inform you that my work on implementing a performant recursive-search in Thunar has been met with success. Users will be able to recursively search their filesystem (including remote folders and other special locations like Recent and Trash) and sort the results like they would in any folder. Presently, searching is depth limited but in the final version you will be able to select a custom depth or no depth at all, to make sure that this is useful even for older machines and at the same time makes use of the resources of faster systems. As this is a work in progress there are some bugs and crashes but it looks like the big issues have been solved at last. You can see for yourself at: link.
Shared Thumbnail Repositories
Additionally, I wanted to give users the option to create shared thumbnail repositories from within Thunar. That's why I've been working on creating a script to create Shared Thumbnail Repositories using any thumbnailer that implements the D-Bus thumbnailing spec (tumbler being an example of such a thumbnailer). You will be able to use this script from Thunar through a custom action.
Xfce Terminal
Lastly, I wanted to let you know that I've become the maintainer of xfce4-terminal. I've been working on resolving old issues, fixing bugs and merging MRs that have been sitting stagnant for months. I've got a lot of exciting things to show you on that front, so stay tuned.
A journey comes to an end
A journey comes to an endAs this year's Google Summer of Code comes to a close, so does this series of blogposts. Since this is my last post related to GSoC I have decided to summarize my contributions to Xfce and give you a glimpse of what I'll be working on in the foreseeable future. If you have read my previous posts, you can skip right to the end since you have already read most of the stuff that I'm going to write.
What has been done
My project's goal was to improve various aspects of Thunar, dealing with several important deficiencies that existed. In the roughly two and a half months that my work lasted I made the following contributions:
- Add zoom-level as a per-directory setting MR, giving users the ability to have the zoom-levels of their directories restored upon opening them.
- Support for GTK-Recent MR, adding support for the `recent:///` location, and all that this entails.
- Provide additional menu item for trashed files: "restore and open folder" MR, giving users the option to immediately open the location of files restored from the Trash folder.
- Add a preference to restore tabs on startup MR, or as it is known in other programs a preference to 'restore the last session'.
- Support shared thumbnail repositories MR, making Thunar one of the relatively few programs that support the #SHARED part of the freedesktop.org thumbnail spec. For more info about what this I've uploaded a video in a previous blogpost.
- Search improvements for Thunar MR, which completely reworks Thunar's search functionality and makes Catfish easily accessible from Thunar.
- Some bugfixes and minor additions.
I've also made minor improvements to the `Renamer` as well as dealing with various small bugs or missing features of Thunar.
The future
Google Summer of Code might be ending, but my job isn't done. I will continue working on adding a decent recursive-search. A lot of progress has been made on that front, but the performance isn't quite there yet. Besides that, I want to give Thunar users an option to easily create Shared Thumbnail Repositories which is something that I will probably do through a new plugin.
Acknowledgements
All in all, I've had a great deal of fun and I'm very much looking forward to continue working with the Xfce community on improving the Xfce Desktop Environment. I want to thank my mentor Alexander Schwinn (@alexxcons) for his continuous support and exceptional mentoring, as well as his calm and motivational attitude. I also want to thank Yousuf Philips (@philipz) for promoting all of our work, posts and videos and being a really friendly and kind person to talk to (which was especially great when I first came in contact with the Xfce community).
Link to all my Thunar Merge Requests: link
Previous post