Xfce

Subdomains
 

GSoC’22: The Journey Begins

  • May 26, 2022
  • Yogesh Kaushik

I am pleased to inform you that my proposal for GSoC with Xfce, under the mentorship of André Miranda, has been accepted. So this summer, I will be contributing to Xfce. Allow me to introduce myself and the work that I will be doing.

I am Yogesh Kaushik, a sophomore at IIIT Delhi in the Computer Science Engineering branch. As per the suggestions of a few intelligent souls in my college, I dual-booted my system and began using Linux for regular use in my first semester of college. My first Linux distribution was Kali, and that's how I was introduced to Xfce. Over time, I also tried quite a few other desktop environments like KDE and GNOME. But for me, the simplicity of Xfce is simply unmatched. So when I got the opportunity to contribute to it, I can't refuse it. Luckily the opportunity didn't turn me down. Enough of my introduction; let me now tell you about my objectives for GSoC this year.

Thunar Bulk Renamer

Thunar is the file manager for Xfce. It comes with fascinating support for renaming multiple files, and that feature is called Bulk Renamer. The Bulk Renamer itself is a very advanced feature, but it may require unnecessary human intervention under some circumstances. If the user wants to rename a file, such that the new name is the original name of some other file, which is yet to be renamed, the system will require user interference. For more clarity, let's say the user wants to rename a file as "File02", but there is already a file named "File02," which is already added to the Bulk Renamer but is yet to be renamed. In such a situation, the Bulk Renamer will raise an error and ask the user to fix it manually. My task would be to make the Bulk Renamer intelligent enough to identify such situations and allow it to act independently in such cases.

This would be my first task in GSoC, so how I am going to do that, you will see quite soon.

Screenshooter

As the name suggests, it is an application to take screenshots in Xfce. The application is exceptionally rich in terms of the functionalities it currently has. And my task would be to make it even more prosperous. I would introduce the support for custom actions in the Screenshooter. For those of you who would have used Xfce a lot, you must have seen the custom actions in Thunar or AppFinder. For those who don't know it, allow me to elaborate. With the help of custom actions, the user will be able to run custom scripts for the taken screenshot. So if you want to directly upload your screenshot to your favorite hosting platform, you just need to create one script, and that's it; you are good to go. Similarly, you can do a lot more with it.

Panel

Xfce Panel is where you can find your open apps and a lot of widgets. Depending upon your Linux Distro, you can find it on any four sides. Generally, for Kali, it is present on the top. But you can customize it according to your own choices. Now panel has a lot of plugin, some of which are internal and some are external. My task would be to merge two such plugins, namely "DateTime" and "Clock". The two plugins are very similar and thus they should be merged for better developments in future.

If the time permits I will do a few more enhancements in the Xfce environment. My journey with Xfce has started and I hope it will go smoothly even beyond the scope of GSoC.

Congratulations to fellow Xfce GSoC contributors Pratyaksh Gautam and Amrit Borah.

A Journey Begins (GSoC – 2022)

  • May 25, 2022
  • Amrit Borah

 

Introduction

Hello 👋😁 ! I am overjoyed to announce that my proposal to XFCE for GSoC - 2022 got selected !

Oh ! I forgot to introduce myself. My name is Amrit Borah and I am a somophore undergraduate student at the Indian Institute of Information Technology Guwahati (IIITG), India, pursuing Computer Science Engineering (CSE). I have only recently completed my 4th semester at college. 

Tasks in my proposal

So, getting back to the topic at hand - GSoC, I will be taking on 4 tasks for XFCE.

Namely,

  • Implementing option to enable expansion of folders in "Details View" in Thunar. (link)The desired outcome -


  • Adding user profiles to XFCE Terminal (link)
  • I'll also be rewriting the preference-dialog in plain C. Currently it has been written using glade.
  • Handling session restoration for XFCE Terminal (link)
  • Implementing colored highlights for files/folders in Thunar. (link) The desired outcome -


  • Further details on the topics can be found on the links corresponding to the respective tasks.

    What I'll be working with -

     I will be working with GTK - 3.0 toolkit and C source code for the aforementioned tasks.

    Linux, C & XFCE

    I first started using Linux back in 2018. Quite frankly, I hated the look of Windows 10. I wasn't really tech savvy enough to really know the fundamental differences between Windows & GNU/Linux. All I could differentiate them by, was their looks. I wanted to make my desktop look and feel like MacOS. I have always liked it's pleasant looks. The MacOS desktop is pure eye candy to me. But unfortunately I never had the pleasure to own a Apple Mac. So I installed Ubuntu. Followed youtube tutorials and customised gnome to look like mac os. Then as year went by I tried out other distros like Pop OS, Opensuse, etc. But the laptop I had then was the Y530 from Lenovo which had Nvidia GTX 1050. Gaming was an issue for me. So I switched back to Windows. 

    Finally in 2020, when I got my own personal laptop for college, I got a thinkpad E14 with the intention of daily driving Linux. I tried out a variety of flavors on that hardware. It had great keyboard ! On the quest for the perfect Distro, I stumbled upon numerous YouTube channels on Linux notably DistroTube. Following the guide for Arch installation I successfully installed arch and tasted my first WM i.e Awesome WM. Customising it wasn't too bad but since I had little knowledge of lua I found it's config too verbose and hard to hack into ( (whispering...) I wasn't tech savvy back then ) . It was only a matter of time before I started WM hopping much like my distro hoping earlier. Tried out bspwm & xmonad. I even tried learning Haskell, but only went as far as the basics (didn't venture into monads).

    But I think I finally settled down on Fedora. Gnome is/was my favourite DE but I always had one gripe i.e stuttering/lagging when switching into the overview view using intel igpus. It has now been solved ig with Gnome 42, at least it's really smooth for me now. So (I sincerely hope ! distro/wm hopping is fun but tedious 😭) Gnome it is then.

     Coming onto C now, my first introduction to C programming language was in my CS course. It was one of the topics in my 1st semester. I kinda like C to be honest. I am most familiar with it's syntax more so than other programming languages. But memory management is not fun 😭. Oh the seg faults 😇 ! Later we did have Java as a course. I have a good relation with Java. But the real meaty portions of the OS was taught in my Operating Systems course in 4th sem. I loved that course.Finally got a formal introduction to the depths of an operating system.

     I hadn't used XFCE on any of my main machines since they were quite capable hardware. It's only when I bought a raspberry pi 4, I got the taste of the XFCE DE. I am quite impressed with the performant and snappy look and feel of the DE. And Now I have the pleasure to work for XFCE 😄 !

    Final thoughts

    I have gone on for too long now. So keeping it short, I am really greatful for the opportunity that I am provided with and I thank Sergios - Anestis Kefalidis (my mentor & maintainer of XFCE Terminal), Alexander Schwinn (maintainer of Thunar & xfce org admin for gsoc) & Yongha Hwang (Xfce Developer) for the reviews and support.

    I would also like to congratulate my fellow GSoC contributors - Pratyaksh Gautam & Yogesh Kaushik - and wish them the best of luck !

    Really excited ! 😁

    My contributions to XFCE

    • For Thunar (link)
    • For XFCE Terminal (link)

     

    Settings GUI

    • April 22, 2022
    • Sergios - Anestis Kefalidis

      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).

    XfceSettingsEditor integrated in Thunar's Preferences Dialog

    XfceSettingsEditor integrated in Thunar's Preferences Dialog.

    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.


    Previous post

    xfce4-terminal 1.0.0 stable release

    • April 2, 2022
    • Sergios - Anestis Kefalidis

      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.
    For a more extensive look into all the new features you can read my previous blogs (0.9.0, 0.9.1, 0.9.2) or the NEWS file in the code repository.

    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.
    Before I start working on all that, I will take care of any regressions that get reported in this release (there has already been one).


    Videos showcasing features and improvements in this release:

    Previous post

    Xfce accepted to Google Summer of Code 2022

    • March 11, 2022
    • Alexander Schwinn

    Xfce accepted to Google Summer of Code 2022

    Good news, Xfce has been accepted to Google Summer of Code 2022 !

    This time not only different thunar projects will be mentored, but as well some xfce4-terminal, xfce4-screenshooter and xfce4-panel projects. Check our Xfce GSoC Wiki for a detailed list of project ideas !

    If you are not much involved into Xfce yet and interested in software development, now might be a good opportunity to contribute to Xfce while even getting payed for it !

    In case you are already involved in Xfce development, you might be interested to mentor a GSoC contributor and add some project idea to the ideas-list for which you can do mentoring.

    For more detailed information, best check the guides on the official GSoC page.

    Hope to see you there !

    xfce4-terminal 0.9.2 development release

    • March 5, 2022
    • Sergios - Anestis Kefalidis

    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.


    Previous post

    A better toolbar for Thunar

    • January 21, 2022
    • Sergios - Anestis Kefalidis

    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:

    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.

    Toolbar Editor

    The toolbar editor.

      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.

    Toolbar

    A custom toolbar.

    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.


    Previous post

    xfce4-terminal 0.9.1 development release

    • December 10, 2021
    • Sergios - Anestis Kefalidis

      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


    Previous post

    A shortcuts editor for Xfce and a couple of other things

    • November 25, 2021
    • Sergios - Anestis Kefalidis

    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 Shortcuts

    The XfceShortcutsEditor integrated in Thunar's Preferences dialog.

    Termianl Shortcuts

    The XfceShortcutsEditor as a separate dialog for xfce4-terminal.

    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).


    Previous post

    xfce4-terminal 0.9.0 development release

    • October 16, 2021
    • Sergios - Anestis Kefalidis

      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


    Previous post