 <rss version="2.0">
<channel>
	<title>Alexxcon's Software Development Blog</title>
	<link>https://alexxcons.github.io/</link>
	<description>Some blog posts related to (Xfce) software</description>

          <item>
            <title>Xfwl4 - The roadmap for a Xfce Wayland Compositor</title>
            <author>Alexander Schwinn</author>
            <link>https://alexxcons.github.io/blogpost_15.html</link>
            <guid>https://alexxcons.github.io/blogpost_15.html</guid>
            <pubDate>Tue, 27 Jan 2026 14:00:00 GMT</pubDate>
            <description><![CDATA[
        <div id="body" class="clear">
            <h4>Jan 27,2026</h4>
            <h2>Xfwl4 - The roadmap for a Xfce Wayland Compositor</h2>

            <p>We, the Xfce team are excited to share some great news!</p>

            <p>After careful consideration, we’ve decided on a meaningful way to use the generous donations from our community: funding longtime Xfce core developer <a href="https://gitlab.xfce.org/kelnos" target="_blank">Brian Tarricone</a> to create xfwl4, a brand-new Wayland compositor for Xfce.</p>

            <p>This initiative will utilize a significant portion of the project’s donated funds, but we believe it’s an important investment in Xfce’s future.</p>
 
            <p>The goal is, that xfwl4 will offer the same functionality and behavior as xfwm4 does, or as much as possible considering the differences between X11 and Wayland. Using xfwl4 should feel just like using xfwm4 on X11. We even plan to reuse the existing xfwm4 configuration dialogs and xfconf settings to ensure a seamless transition.</p>

            <p>Xfwl4 will not be based on the existing xfwm4 code. Instead, it will be written from scratch in rust, using <a href="https://github.com/Smithay/smithay/" target="_blank">smithay</a> building blocks.</p>

            <h3>Why doing a rewrite?</h3>

            <p>The first attempt at creating an Xfce Wayland compositor involved modifying the existing xfwm4 code to support both X11 and Wayland in parallel. However, this approach turned out to be the wrong path forward for several reasons:</p>
            <ul>
              <li>Xfwm4 is architected in a way that makes it very difficult to put the window management behavior behind generic interfaces that don't include X11 specifics.</li>
              <li>Refactoring Xfwm4 is risky, since it might introduce new bugs to X11. Having two parallel code bases will allow for rapid development and experimentation with the Wayland compositor, with zero risk to break xfwm4.</li>
              <li>Some X11 window management concepts just aren't available or supported by Wayland protocols at this time, and dealing with those differences can be difficult in an X11-first code base.</li>
              <li>Using the existing codebase would require us to use C and wlroots, even if a better alternative is available.</li>
            </ul>
            <h3>Why to base xfwl4 on smithay?</h3>

            <p>Once the decision to write a compositor from scratch was done, the next major question was: Which Wayland support library to use as a base? In order to find an answer on that question Brian evaluated wlroots and smithay. The decision to use smithay as a base was done for the following reasons:</p>
            <ul>            
              <li>smithay supports most/all official Wayland protocol extensions, as well as the wlroots protocols and some KDE protocols.</li>
              <li>smithay has no high level abstraction, as wlroots has. However, it allows for very deep customization of the graphics and input pipeline, as well as all aspects of Wayland protocol and desktop/shell handling.</li>
              <li>smithay has great documentation.</li>
              <li>Using rust makes it easier to avoid memory related bugs and decreases the chances of crashes, something that should never happen for a Wayland compositor.</li>
              <li>Rather subjective: Brian has a strong preference to write code in rust over writing code in C.</li>
              <li>wlroots is written in C, in a way which makes it very difficult to write <a href="https://way-cooler.org/blog/2019/04/29/rewriting-way-cooler-in-c.html" target="_blank">wlroots rust bindings</a>.</li>
            </ul>
            <h3>Scope of the project</h3>

            <p>Besides getting feature parity with xfwm4, the xfwl4 project scope includes as well some other related tasks:</p>
            <ul>
              <li>Major changes to session-startup will be required, since on Wayland the compositor has to be the root of the session instead of xfce4-session.</li>
              <li>Support for the xdg-session-management protocol is another goal.</li>
              <li>As well support for XWayland is part of the roadmap.</li>
              <li>The build system of the Xfce CI container will need to be upgraded in order to support building rust code via meson.</li>
            </ul>

            <p>Brian has already started work on the project, so stay tuned for the first development release of xfwl4, which we hope to share around mid-year.</p>

            <p>If you’re interested in the detailed reasoning behind the project or want to explore all the technical details, check out the <a href="https://gitlab.xfce.org/kelnos/xfwl4/-/issues" target="_blank">issues</a> and the <a href="https://gitlab.xfce.org/kelnos/xfwl4" target="_blank">work in progress source code</a>.</p>
            <p>For any questions related to xfwl4, please visit our Matrix channel <a href="https://matrix.to/#/#xfce-dev:matrix.org">#xfce-dev</a>.</p>
            <p>We’d like to extend our heartfelt thanks to our generous supporters on <a href="https://opencollective.com/xfce" target="_blank">Open Collective US</a> and <a href="https://opencollective.com/xfce-eu" target="_blank">Open Collective EU</a> for making this project possible!</p>

            <p>&nbsp;</p>
            <p>Best regards,</p>
            <p>The Xfce development team</p>
        </div>
        ]]></description>
        </item>

        <item>
            <title>Xfce 4.20 Released</title>
            <author>Alexander Schwinn</author>
            <link>https://alexxcons.github.io/blogpost_14.html</link>
            <guid>https://alexxcons.github.io/blogpost_14.html</guid>
            <pubDate>Sun, 15 Dec 2024 11:00:00 GMT</pubDate>
            <description><![CDATA[
        <div id="body" class="clear">
            <h4>Dec 15,2024</h4>
            <h2>Xfce 4.20 released</h2>

            <p>After almost two years of work, we are happy to announce the release of Xfce 4.20.</p>
            <p>Since Xfce 4.18 a lot of major development happened. Our team added many nice new features, did a gazillion of bug fixes and did various minor improvements. Finally, all that was released for your pleasure.</p>

            <p>The major focus during this development cycle was the preparation of the codebase to be ready for Wayland. So that we meanwhile have experimental Wayland support for most components. More details in the 'Wayland' section below.<p>

            <p>Assuming you have installed Xfce 4.18, here an overview on the major changes you will see on an upgrade to Xfce 4.20.</p>

            <h2>General</h2>
            <div class="t1">
                <h3>Wayland</h3>
                  <p><b>Important Notice:</b> Please be aware that the Wayland support in Xfce 4.20 is experimental. It is recommended for advanced users only, as you may encounter bugs and experience incomplete functionality. Proceed with caution!</p>

                  <p>Thanks to <a href="https://gitlab.xfce.org/kelnos">Brian</a> and <a href="https://gitlab.xfce.org/Tamaranch">Gaël</a> almost all Xfce components are able to run on Wayland windowing, while still keeping support for X11 windowing.</p>
                  <p>This major effort was achieved by abstracting away any X11/Wayland windowing specific calls and making use of Wayland/Wlroots protocols. A whole new Xfce library, "libxfce4windowing" was introduced during that process. XWayland will not be required to run any of the ported Xfce components.</p>
                  <p>So far Xfce does not feature a compositor which supports Wayland. If you want to run Xfce in Wayland, Labwc and Wayfire will give you the best results. A detailed instruction on this can be found <a href="https://wiki.xfce.org/releng/wayland_roadmap#testing">here</a>. Please be aware that Wayland support is still experimental!</p>
                  <p>Plans are underway to add Wayland support to Xfwm4 while preserving its existing X11 functionality. However, such a restructurization will be a major effort and we cannot tell yet when/if it will be done, so please don't hold your breath waiting for it.</p>

                  <p>For few components and multiple features, it was not possible to port them to Wayland, partly because there are no standardized Wayland protocols available yet to provide the required services:</p>
                  <ul>
                    <li>Workspace support is missing (ext-workspace protocol <a href="https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/40">was just merged</a>).</li>
                    <li>Systray icons will be missing for multiple applications (required to use StatusNotifier instead of GtkStatusIcon)</li>
                    <li>Xfce4-settings: Keyboard and mouse settings so far are internal to the Wayland compositor and as such the according Xfce dialogs won't be available on Wayland yet.</li>
                    <li>Power related keyboard handling (brightness keys, suspend, etc.) is internal to the Wayland compositor and as such cannot be supported yet by Xfce components.</li>
                    <li>Wayland does not specify a native protocol for taking screenshots. However, xfce4-screenshooter already supports screenshots via the wlroots 'screencopy' protocol (entire screen). Screenshots of a rectangle selection or the active window are not yet supported via Wayland.</li>
                  </ul>
                  <p>Some other Xfce components don't run at all on Wayland:</p>
                  <ul>
                    <li>Xfwm4</li>
                    <li>Xfdashboard</li>
                    <li>Xfce4-screensaver (porting to Wayland <a href="https://gitlab.xfce.org/apps/xfce4-screensaver/-/merge_requests/28">completed but not merged</a>, as it requires the experimental <a href="https://gitlab.xfce.org/kelnos/libwlembed">libwlembed library</a>)</li>
                    <li>Xfce4-windowck-plugin (needs to be <a href="https://gitlab.xfce.org/panel-plugins/xfce4-windowck-plugin/-/issues/37">ported to libxfce4windowing</a>)</li>
                    <li>Xfce4-xkb-plugin (keyboard handling is internal to the Wayland compositor)</li>
                  </ul>

                  <p>More detailed info on the current Wayland status can be found on our <a href="https://wiki.xfce.org/releng/wayland_roadmap">Wayland roadmap.</a></p>

                <h3>Scaling</h3>
                  <p>Icons and thumbnail scaling was fixed for various components. Various missing icons for larger scales were added. Any blurriness when using Xfce components on a HiDPI display should be gone now.</p>
            </div>

            <h2><a href="https://docs.xfce.org/xfce/exo/start" target="_blank">exo</a></h2>
            <div class="t1">
                <h3>Icon View Performance</h3>
                  <p>By using different container types, the "Exo-Icon-View" now can handle 100,000 files and more without freezing.</p>

                <h3>Type ahead search box</h3>
                  <p>The type ahead search box in the exo icon view now always stays inside the according view widget.</p>
            </div>

            <h2><a href="https://docs.xfce.org/xfce/libxfce4ui/start" target="_blank">libxfce4ui</a></h2>
            <div class="t1">
                <h3>Shortcut Editor</h3>
                  <p>Shortcuts now can be used for multiple actions if they don't conflict with each other.</p>

                <h3>About Dialog</h3>
                  <p>The dialog now shows the distribution logo, information about the used windowing system and the used GPU.</p>
                  <img class="full-img" src="images/blogpost_14/libxfce4ui_about.png" alt="libxfce4ui - about dialog"/>
            </div>

            <h2><a href="https://docs.xfce.org/xfce/libxfce4windowing/start" target="_blank">libxfce4windowing</a></h2>
            <div class="t1">
                <p>This library is new to Xfce. Libxfce4windowing is an abstraction library that attempts to present windowing concepts (screens, top level windows, workspaces, etc.) in a windowing-system-independent manner.

                <p>Currently, X11 is fully supported via libwnck. Wayland is partially supported by using various Wayland protocol extensions. However, the full range of operations available on X11 is not available on Wayland, due to missing features in these protocols extensions.</p>
            </div>

            <h2><a href="https://docs.xfce.org/xfce/thunar/start" target="_blank">thunar</a></h2>
            <div class="t1">

                <h3>Mounted and Remote Locations</h3>
                  <p>Mount points now show an emblem and have a specific type description.</p>
                  <p>Ipv6 remote URLs are now supported.</p>
                  <p>It is now possible to create symbolic links as well on remote locations./p>

                <h3>Search</h3>
                  <p>It is not required any more to wait until a search is finished to open the context menu on search results.</p>

                <h3>Toolbar</h3>
                  <p>A couple of new toolbar buttons were added:<p>
                    <ul>
                        <li>View Switcher - A drop-down button to select a view.</li>
                        <li>Menu - This hamburger button will show automatically in the toolbar, when the menubar is hidden. It will reveal a vertical menu, bar, when pressed.</li>
                        <li>New Tab - Open a new tab using the current directory.</li>
                        <li>New Window - Open a new window using the current directory.</li>
                    </ul>
                  <img class="full-img" src="images/blogpost_14/thunar_toolbar_new_items.png" alt="thunar - new toolbar buttons"/>
                  <img class="full-img" src="images/blogpost_14/thunar_toolbar_hamburger.png" alt="thunar - improved hamburger toolbar button"/>
                
                  <p>On shrinking the Thunar window, toolbar items will now be moved to an overflow menu. Like that, it is possible to maintain smaller thunar windows.</p>
                  <p>Furthermore, a bug was fixed which prevented the usage of submenu custom actions in the toolbar.</p>

                <h3>Window Decorations</h3>
                  <p>There is now an option to use client side decorations in Thunar (CSD).</p>
                  <img class="full-img" src="images/blogpost_14/thunar_csd_with_menu.png" alt="thunar - CSD with menu"/>
                  <img class="full-img" src="images/blogpost_14/thunar_csd_without_menu.png" alt="thunar - CSD without menu"/>

                <h3>Statusbar</h3>
                  <p>An option to show the number of hidden files in the statusbar was added.</p>

                <h3>Recently Used Files</h3>
                  <p>Only files which were successfully opened are now added to the list of recently used files.</p>
                  <p>Directories won't be added to the recently used files anymore.</p>

                <h3>Symbolic Icons</h3>
                  <p>There is now an option to use symbolic icons in the side pane and colored icons in the toolbar.</p>
                  <img class="full-img" src="images/blogpost_14/thunar_symbolic_icons.png" alt="thunar - symbolic icons"/>
                  <img class="full-img" src="images/blogpost_14/thunar_colored_icons.png" alt="thunar - colored icons"/>

                <h3>Drag and Drop</h3>
                  <p>While dragging files, folders are now opened automatically on hover.</p>
                  <p>While dragging files, the focus of the split view pane is now updated when hovered.</p>

                <h3>Performance</h3>
                  <p>In the past, you might have faced situation involving bigger numbers of files in which thunar showed a freeze. Due to various different performance measures, thunar now is much more bullet-proof for action involving huge numbers of files.</p>
                  <p>This was achieved by using appropriate container types, moving some actions into separate jobs and throttling of view-updates.</p>
                  <p>A <a href="https://wiki.xfce.org/thunar/dev/integration_testcases"></a>number of integration test cases</a> will be used in order to keep performance on the current level in the future.</p>

                <h3>Custom Actions</h3>
                  <p>Shortcuts for custom action will now as well work when the custom action is located in a sub-menu.</p>

                <h3>File Transfer</h3>
                  <p>For file validation in thunar 4.18.x a md5 checksum was calculated for source and target file. This calculation turned out to be rather slow and actually superfluous.
                  Now files are just compared directly. In addition, the usage of direct I/O operations now attempts to prevent comparison of possibly cached buffers.</p>
                  <p>An option was added to only copy files in parallel if the relevant devices are in idle state. This prevents possible fragmentation during copy for HDD drives.</p>
                  <p>Transferring files no longer steals the current focus.</p>
                  <p>The file transfer question dialog now provides the same options while having less buttons. In addition, file thumbnails now are properly requested by the dialog.</p>
                  <img class="full-img" src="images/blogpost_14/thunar_transfer_dialog.png" alt="thunar - file transfer dialog"/>

                <h3>Launchers</h3>
                  <p>By default, launcher names instead of filenames are shown now for trusted launchers.</p>

                <h3>Undo/Redo</h3>
                  <p>The user now will be asked before any deletion will be done by an undo operation.</p>

                <h3>List View</h3>
                  <p>Similar to the tree-view side pane, the main view now also supports folder expansion.</p>
                  <img class="full-img" src="images/blogpost_14/thunar_expandable_folders.png" alt="thunar - expandable folders"/>

                <h3>Split View</h3>
                  <p>A shortcut now can be used to toggle between split-view panes, and the focused pane now uses different coloring.</p>
                  <img class="full-img" src="images/blogpost_14/thunar_split_view.png" alt="thunar - split view"/>
                  <p>A dialog will now ask for confirmation when closing a split-pane with multiple tabs.</p>
            </div>

            <h2><a href="https://docs.xfce.org/xfce/xfce4-appfinder/start" target="_blank">xfce4-appfinder</a></h2>
            <div class="t1">

                <p>The application list now as well can be navigated via Ctrl+N / Ctrl+P keys (VI default).</p>
                <p>An option was added to close the Appfinder window automatically when focus is lost.</p>
                <p>Ctrl+Enter can be used to execute commands immediately when selecting entries from the dropdown.</p>
                <p>Within the new version, application specific actions will show on right click.</p>
                <p>An option to show generic names of launchers was added.</p>
                <p>Appfinder optionally can now be launched as a daemon, so that it will respond even quicker.</p>
                <p>An option allows now to launch items on a single click.</p>

                <img class="full-img" src="images/blogpost_14/appfinder_new.png" alt="xfce4-appfinder - settings Xfce 4.18"/>

            </div>

            <h2><a href="https://docs.xfce.org/xfce/xfce4-panel/start" target="_blank">xfce4-panel</a></h2>
            <div class="t1">

                <h3>General</h3>
                  <p>The border width of the panel is now configurable.</p>
                  <p>For manual installations: the panel now does its best to find plugins in XDG base directories, and better preserves its configuration when it can't find them.</p>

                <h3>Clock</h3>
                  <p>LCD clock: An option was added to visualize inactive segments.</p>
                  <p>Analog: There is now an optional 24h mode.</p>
                  <p>Digital: Week numbers now are shown optionally.</p>

                <h3>Show Desktop</h3>
                  <p>There is now the possibility to show the desktop when hovering the mouse on the "show desktop" panel icon.</p>

                <h3>Tasklist</h3>
                  <p>Icon size management has been improved overall, notably by switching to libxfce4windowing.</p>

                <h3>Preferences</h3>
                  <p>The 'delete' key can now be used to remove panel objects, and several objects can be removed at once.</p>
                  <p>Panel objects in the panel configuration list now will have the same icons as in the panel itself.</p>
                  <img class="full-img" src="images/blogpost_14/panel_item_list.png" alt="xfce4-panel - panel configuration list"/>
            </div>

            <h2><a href="https://docs.xfce.org/xfce/xfce4-power-manager/start" target="_blank">xfce4-power-manager</a></h2>
            <div class="t1">

                <h3>Screen Locking</h3>
                  <p>There is no dedicated "security" tab anymore. Lock screen management was massively simplified and "Light Locker" was dropped. "lock-on-sleep" is now synchronized with xfce4-session and xfce4-screensaver.</p>
                  <p>Screen locking settings are now only handled by xfce4-screensaver to avoid conflicts. A button to open xfce4-screensaver-preferences was added:</p>
                  <img class="full-img" src="images/blogpost_14/power_manager_settings.png" alt="xfce4-power-manager - settings"/>
                  <img class="full-img" src="images/blogpost_14/power_manager_screensaver.png" alt="xfce4-screensaver - settings"/>

                <h3>Power Settings</h3>
                  <p>Support for handling different power profiles via power-profiles-daemon was added.</p>
                  <p>The overall charge state calculation was wrong for some cases and is now fixed.</p>
                  <p>When the critical power dialog pops up, unintentional user actions are now prevented.</p>
                  <p>There is now support for the hybrid sleep mode.</p>
                  <p>The device details tab now as well shows the energy rate.</p>

                <h3>Others</h3>
                  <p>Several use-cases for lid close were fixed.</p>
                  <p>There are now the options "shutdown" and "do nothing" on lid close.</p>
                  <p>Buttons to change the brightness exponentially and keyboard backlight toggle keys now are supported.</p>
            </div>

            <h2><a href="https://docs.xfce.org/xfce/xfce4-session/start" target="_blank">xfce4-session</a></h2>
            <div class="t1">
                <p>The logout dialog will not provide a checkbox to enable session saving anymore.</p>
                <p>It is now possible to start a Wayland session via 'startxfce4 --wayland'.</p>

                <p>Minimal support for xdg-desktop-portal was added by registering for a wallpaper, screenshot and background xapp.</p>
            </div>

            <h2><a href="https://docs.xfce.org/xfce/xfce4-settings/start" target="_blank">xfce4-settings</a></h2>
            <div class="t1">

                <h3>Appearance Settings</h3>
                  <p>Icon themes are now loaded in a separate thread, in order to prevent a possible freeze.</p>
                  <p>For icon themes which are known to be incomplete, a warning now will be shown.</p>
                  <p>The usage of client side decorations is opt-in now, not opt-out.</p>
                  <p>Dark themes now are identified and supported in a more reliable way. (Relevant e.g. for the Qogir and Orchis themes)</p>´

                <h3>Display Settings</h3>
                  <p>The default display profile has been added to the list of profiles that can match, and will be used if more than one matches now.</p>
                  <p>Profile management has been extended to all profiles, not just those that match, and their names can now be edited.</p>
                  <p>Scaling now always is done for both dimensions, and the preview shows the resulting size.</p>
                  <p>Mirror state management has been improved overall, in particular by removing the need to match refresh rates.</p>
                  <p>The minimal dialog has been improved, in particular by allowing the display to be extended to the left and from top to bottom, and with compact profile display.</p>
                  <img class="full-img" src="images/blogpost_14/settings_display.png" alt="xfce4-settings - minimal display"/>

                <h3>Mouse Settings</h3>
                  <p>A checkbox was added to toggle between adaptive and flat mouse accel profile.</p>
                  <p>High resolution scrolling can now be enabled for mice which do support it.</p>
                  <img class="full-img" src="images/blogpost_14/settings_mouse.png" alt="xfce4-settings - mouse"/>

                <h3>Mime Settings</h3>
                  <p>It is now possible to select/change multiple items at once.</p>
            </div>

            <h2><a href="https://docs.xfce.org/xfce/xfconf/start" target="_blank">xfconf</a></h2>
            <div class="t1">
                <p>A systemd user unit, corresponding to the D-Bus session service, is now added.</p>
                <p>Whitespaces are now properly escaped when writing a xfconf channel to disk.</p>
                <p>Xfconf-query now displays array contents.</p>
            </div>

            <h2><a href="https://docs.xfce.org/xfce/xfdesktop/start" target="_blank">xfdesktop</a></h2>
            <div class="t1">

              <h3>Background Management</h3>
                <p>For random wallpaper cycling, wallpapers now are only repeated after all other wallpapers were shown.</p>
                <p>Old Xfce backgrounds were ported from .png to .svg to be usable for large screens.</p>
                <p>Gradients will now be rendered in a gamma-correct way.</p>

              <h3>Icon grid</h3>
                <p>The confirmation dialog for arranging desktop icons now is optional.</p>
                <p>It is now possible to set custom colors for icon labels and icon background.</p>
                <p>The icon grid on each monitor is now independent of one another.</p>

              <h3>Minimized Application Icons</h3>
                <p>Window icons are now initially shown on the monitor where the window was present before being minimized.</p>
                <p>The context menu (when clicking on an empty space) now has more useful options than before.</p>

              <h3>File Icons</h3>
                <p>There is now an option to sort folders before files.</p>
                <p>The positions of the icons are now saved in a way that should avoid icons moving around in unexpected ways when monitors are added and removed.</p>
                <p>New files and dropped files now will be placed near the current cursor location.</p>
                <p>Icons of fixed disks and drives can now be optionally shown.</p>
              
              <h3>Preferences</h3>
                <p>The 'Desktop Icons' tab was fully reworked.</p>
                <img class="full-img" src="images/blogpost_14/xfdesktop_settings_icons.png" alt="xfdesktop - settings - desktop icons"/>
                <p>All shortcuts of Xfdesktop now can be configured, using the XfceShortcutsManagers widget.</p>
                <img class="full-img" src="images/blogpost_14/xfdesktop_settings_shortcuts.png" alt="xfdesktop - settings - keyboard shortcuts"/>
                <p>More folders that hold background images were added as shortcuts in the settings dialog.</p>
                <p>The settings dialog will update if the background is changed from outside the dialog.</p>
                <p>Wallpaper image folders now are loaded fully asynchronously to prevent lag.</p>

              <h3>Context Menu</h3>
                <p>Cascading custom actions will now as well shown correctly in Xfdesktop.</p>
                <p>It is now possible to open multiple selected folders at once.</p>
                <p>The context menu now opens on button press rather than button release, as most users will expect.</p>
                <p>The middle-click window list menu has new styling and added features.</p>
            </div>

            <h2><a href="https://docs.xfce.org/xfce/xfwm4/start" target="_blank">xfwm4</a></h2>
            <div class="t1">
                <p>Support for stretch theme variants</p>
                <p>compositor: Block softpipe for GLX vsync</p>
                <p>focus: Include skip taskbar/pager when passing focus</p>
                <p>Fix crash when alt-tabbing (<a href="https://gitlab.xfce.org/xfce/xfwm4/-/issues/762">#762</a>)</p>
            </div>

            <p>For the sake of readability, this list only shows main highlights. Check the full <a href="https://www.xfce.org/download/changelogs">Xfce 4.20 changelog</a> for a more detailed list of changes.</p> 
            <p>The theme "Greybird-dark" and the icon-theme "elementary Xfce dark" were used for the screenshots. This summary can as well be viewed as a <a href="https://www.xfce.org/about/tour420">localized online tour</a>.</p>
            <p>This release <a href="https://archive.xfce.org/xfce/4.20">can be downloaded here</a>, either as a set of individual packages or as a single tarball including all individual versions.</p>

            <h2>Our Sponsors</h2>
            <div class="t1">
              <p>Thanks go to <a href="https://www.gandi.net" target="_blank">Gandi</a> for providing the Xfce server infrastructure for free, and to <a href="https://kalmarndc.se" target="_blank">Kalmar NDC</a> for sponsoring our GitLab runners. We appreciate your support!</p>
              <p>As well, many thanks to our generous financial supporters on <a href="https://opencollective.com/xfce" target="_blank">Open Collective US</a> and <a href="https://opencollective.com/xfce-eu" target="_blank">Open Collective EU</a>!</p>
              <p>At the moment, aside from the couple of hardware purchases for our developers, we don't have specific plans for the funds. We are exploring the best ways to use them effectively. It's reassuring to know we have such strong financial backing. Thank you for your support!</p>
            </div>

            <p>&nbsp;</p>
            <p>Best regards,</p>
            <p>The Xfce development team</p>
        </div>
        ]]></description>
        </item>

          <item>
            <title>Xfce 4.20 Pre2 Released</title>
            <author>Alexander Schwinn</author>
            <link>https://alexxcons.github.io/blogpost_13.html</link>
            <guid>https://alexxcons.github.io/blogpost_13.html</guid>
            <pubDate>Sun, 01 Dec 2024 17:00:00 GMT</pubDate>
            <description><![CDATA[
        <div id="body" class="clear">
            <h4>Dec 01,2024</h4>
            <h2>Xfce 4.20 Pre2 Released</h2>
              <p>Dear Xfce community, I am happy to announce the release of Xfce4.20 pre2.</p>

              <p>This platform pre-release consists of the Xfce core components and will be followed by the final Xfce4.20 release soon. We fixed some quirks which were found in Xfce4.20 pre1, did some further polishing and the result is now released as Xfce4.20 pre2.</p>
              <p>Early adopters are invited to give it a try and check for compatibility before the final release, which is <a href="https://wiki.xfce.org/releng/4.20/roadmap">planned for 15. December</a>.</p>

              <p>Xfce4.20 pre2 includes all Xfce core components. The tarballs for building it can be found here:</p>
              <ul>
                <li><a href="https://archive.xfce.org/xfce/4.20pre2/src">Download individual tarballs</a></li>
                <li><a href="https://archive.xfce.org/xfce/4.20pre2/fat_tarballs">Download one tarball which includes all releases</a></li>
              </ul>
              <p>Though, you might prefer to wait for distribution specific development packages.</p>

            <h2>Wallpaper contest</h2>
              <p>It is a pleasure for me to present you the outcome of our <a href="https://gitlab.xfce.org/artwork/public/-/issues/18">Xfce4.20 wallpaper contest</a>, which received numerous nice wallpaper submissions.</p>
              <p>This year we received 54 submissions in total, contributed by 18 different users.</p>
              <p>Since two wallpapers were tied for the third place, four new wallpapers will be shipped with Xfce-4.20.</p>
              <p>The winner wallpaper, which will be the new Xfce4.20 default wallpaper, was brought to you by "kaz sb":</p>
              <img class="full-page-img" src="images/blogpost_13/xfce-x.svg" alt="xfce-x.svg"/>
              <p>The second place, authored by Denys DEKUVE:</p>
              <img class="full-page-img" src="images/blogpost_13/xfce-light.svg" alt="xfce-light.svg"/>
              <p>The third place, authored by Farhang Bakhshi:</p>
              <img class="full-page-img" src="images/blogpost_13/xfce-cp-dark.svg" alt="xfce-cp-dark.svg"/>
              <p>And another third place, authored by Rose Pierce:</p>
              <img class="full-page-img" src="images/blogpost_13/xfce-mouserace.svg" alt="xfce-mouserace.svg"/>
              <p>You as well might be interested in the <a href="https://gitlab.xfce.org/artwork/public/-/issues/18">complete list of submissions</a>.</p>
            <h2>Coming soon</h2>
              <p>A detailed sum up of all new features in Xfce4.20 is planned for the final release, so stay tuned!</p>

            <p>&nbsp;</p>
            <p>Best regards,</p>
            <p>The Xfce development team</p>
        </div>
        ]]></description>
        </item>

          <item>
            <title>Wallpaper Contest for Xfce 4.20 open for voting</title>
            <author>Alexander Schwinn</author>
            <link>https://alexxcons.github.io/blogpost_12.html</link>
            <guid>https://alexxcons.github.io/blogpost_12.html</guid>
            <pubDate>Fri, 15 Nov 2024 22:30:00 GMT</pubDate>
            <description><![CDATA[
        <div id="body" class="clear">
            <h4>Nov 15,2024</h4>
            <h2>Wallpaper Contest for Xfce 4.20 open for voting</h2>

            <p>The submission phase for the <a href="https://gitlab.xfce.org/artwork/public/-/issues/18">Xfce 4.20 wallpaper contest</a> is over now, and I am very happy to see numerous contributions.</p>
            <p>While writing this blog post, 47 different wallpapers were submitted by 15 different authors.</p>
            <p>Whatever will be the outcome of the contest, I would like to express my thanks to all these authors and wish all of them good luck for the voting period.</p>
            <p>Starting by now, two weeks of voting will show which wallpapers are the most popular ones.</p>
            <p>In order to cast your vote, login at <a href="https://gitlab.xfce.org/artwork/public/-/issues/18">gitlab.xfce.org</a> and add a &#10084;&#65039; reaction to all wallpapers you want to upvote. (Other emojis will not be counted)</p>
            <p>Remember to vote for the best wallpaper, not just the best image. For instance, it's beneficial to provide free space for desktop items.</p> 
            <p>Voting will be closed on 29. November. Like that, the new wallpaper can be utilized for the Xfce4.18 pre2 announce, which is planned for beginning of December.</p>
            <p>Happy voting !</p>
        </div>
        ]]></description>
        </item>

        <item>
            <title>Xfce 4.20 Pre1 Release and Wallpaper Contest for Xfce 4.20</title>
            <author>Alexander Schwinn</author>
            <link>https://alexxcons.github.io/blogpost_11.html</link>
            <guid>https://alexxcons.github.io/blogpost_11.html</guid>
            <pubDate>Fri, 01 Nov 2024 23:10:00 GMT</pubDate>
            <description><![CDATA[
        <div id="body" class="clear">
            <h4>Nov 01,2024</h4>
            <h2>Xfce 4.20 Pre1 Released</h2>
            <p>Dear Xfce community, I am happy to announce the release of Xfce4.20 pre1.</p>

            <p>Xfce 4.20 Pre1 is a platform pre-release, which gives early adopters the possibility to test the new release and to check for compatibility.</p>

            <p>Further implications for the pre1 release:<p>
            <ul>
                <li>In order to increase stability, no new features will be added to Xfce core components until the final release.</li>
                <li>We will not add new strings either, in order to give translators the possibility to reach a complete translation for the final release.</li>
            </ul>

            <p>A detailed overview on the major changes introduced in Xfce4.20 will be given for the final release, <a href="https://wiki.xfce.org/releng/4.20/roadmap">planned for December 15th</a>.</p>

            <p>Xfce4.20 pre1 includes all Xfce core components. The tarballs for building it can be found here:</p>
            <ul>
              <li><a href="https://archive.xfce.org/xfce/4.20pre1/src">Download individual tarballs</a></li>
              <li><a href="https://archive.xfce.org/xfce/4.20pre1/fat_tarballs">Download one tarball which includes all releases</a></li>
            </ul>
            <p>Though, you might prefer to wait for distribution specific development packages.</p>

            <h2>Wallpaper Contest for Xfce 4.20</h2>

            <p>Like for Xfce 4.18 I would like to ask the Xfce community to contribute a few wallpapers. Everyone will have the opportunity to vote on them to elect the new default wallpaper for Xfce 4.20.</p>
            
            <p>If you possess the required skills, your contribution would be greatly appreciated!</p>

            <p>Like the <a href="https://gitlab.xfce.org/artwork/public/-/tree/master/wallpapers">old Xfce wallpapers</a>, the new wallpaper should be a vector graphic with an unmodified <a href="https://gitlab.xfce.org/artwork/public/-/tree/master/logo">Xfce mouse</a> on it and some fancy shapes.</p>

            <p>Note that the image must be all yours and needs to be licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>. If you do not specify a license in your post, then we will assume that you are licensing the image under the CC BY-SA 4.0.</p>

            <p>The image should not mention the software (FOSS or proprietary) used to create the wallpaper in the metainfo.</p>

            <p>The deadline for submissions is the 15th of November. Like that, we will have two weeks left for voting and integration of the new wallpaper into the Xfce pre2 release.</p>

            <p>In order to participate, take a look at the <a href="https://gitlab.xfce.org/artwork/public/-/issues/18">Xfce wallpaper contest GitLab issue</a>.</p>

            <p>Please note that this year only the &#10084;&#65039; emoji will be considered as an upvote, in order to simplify vote counting. You can upvote as many wallpapers as you like.</p>
        </div>
        ]]></description>
        </item>
        <item>
            <title>Xfce is moving from IRC to Matrix</title>
            <author>Alexander Schwinn</author>
            <link>https://alexxcons.github.io/blogpost_10.html</link>
            <guid>https://alexxcons.github.io/blogpost_10.html</guid>
            <pubDate>Tue, 23 Apr 2024 09:04:00 GMT</pubDate>
            <description><![CDATA[
        <div id="body" class="clear">
            <h4>Apr 23,2024</h4>
            <h2>Xfce is moving from IRC to Matrix</h2>

            <p>After a 6-month trial period, as of April 1, 2024, <a href="https://www.xfce.org/">Xfce</a> moved its official communication channels from IRC to Matrix.</p>
            <p>The old IRC channels will remain open, so you can still hang out there. However, the 'official' channels linked in the <a href="https://docs.xfce.org/contribute/dev/start#communication_with_the_xfce_development_team">Xfce Wiki</a> now will be the Matrix channels.</p>

            <p>This change affects the following channels:</p>

            <ul>
                <li><a href="irc://irc.libera.chat/#xfce">#xfce</a> on libera.chat --&gt; <a href="https://matrix.to/#/#xfce:matrix.org">#xfce:matrix.org</a> -- general user support and discussion</li>
                <li><a href="irc://irc.libera.chat/#xfce-dev">#xfce-dev</a> on libera.chat --&gt; <a href="https://matrix.to/#/#xfce-dev:matrix.org">#xfce-dev:matrix.org</a> -- development discussion</li>
                <li><a href="irc://irc.libera.chat/#xfce-commits">#xfce-commits</a> on libera.chat --&gt; <a href="https://matrix.to/#/#xfce-commits:matrix.org">#xfce-commits:matrix.org</a> -- notable GitLab activity
                </li>
            </ul>

            <p><b>Reasoning</b></p>
            
            <p>In the past, it was possible to connect and idle on libera IRC channels via <a href="https://matrix.org/ecosystem/bridges/irc/">Matrix.org bridge</a>.
            Using Matrix to connect is very convenient for several reasons:</p>

            <ul>
                <li>When accessing IRC channels via Matrix bridge, it's not necessary to manage an <a href="https://en.wikipedia.org/wiki/BNC_(software)">IRC bouncer</a>.
                    Bridged Matrix channels retain messages that arrive while you are offline.</li>
                <li>Chat history is synchronised across multiple devices by default. No special BNC setup is required.</li>
                <li>Based on personal experience, the entry barrier for Matrix seems to be lower than for IRC.</li>
                <li>On IRC, after answering a support question, you might realize that the person asking it went offline hours ago (no BNC used) and as such you wasted your time. Won't happen if the question was raised by a Matrix user.</li>
            </ul>
            <p>As such, several people started connecting to the Xfce IRC channels via Matrix (including myself). However, on July 2023, the party was over.
            <a href="https://libera.chat/news/matrix-deportalling">Libera.Chat decided to disable Matrix bridging</a> and suggested to use so-called "channel plumbing" until further notice.
            I'm not sure about the technical details here, but in the end, <a href="https://libera.chat/news/matrix-bridge-disabled-retrospective">"plumbing" did not work out for some reason</a>.
            By November 2023 it became clear that <a href="https://libera.chat/news/official-matrix-bridge-farewell">bridging would not come back either</a>.</p>
            
            <p>Meanwhile, Xfce communication became fragmented. Some people dusted off their IRC bouncers and used them again, some used a private Matrix server setup (Heisenbridge was still functional) and some just stayed on the Matrix channels, which were no longer interconnected to the IRC channels.</p>
            <p>In order to end that fragmentation and because of the above mentioned Matrix advantages, after 6 months of testing and adding some Matrix bots (real nice job Brian!), the Xfce team decided to prefer Matrix over IRC in the future and settle down there.</p>
            <p>So, even if you are a hardcore Xfce IRC user, please install the Matrix client of your choice and give the shiny new (cough) possibilities offered by Matrix a try. Looking forward to see you in the Xfce Matrix channels!</p>
        </div>
        ]]></description>
        </item>
        <item>
            <title>An Estimate on the Total Number of Xfce Users</title>
            <author>Alexander Schwinn</author>
            <link>https://alexxcons.github.io/blogpost_9.html</link>
            <guid>https://alexxcons.github.io/blogpost_9.html</guid>
            <pubDate>Sun, 07 Apr 2024 09:04:00 GMT</pubDate>
            <description><![CDATA[
        <div id="body" class="clear">
        <h4>Apr 06,2024</h4>
            <h2>An Estimate on the Total Number of Xfce Users</h2>

            <p>Recently, my wife asked me how many people in total actually use the software I develop in my free time (mostly <a href="https://docs.xfce.org/xfce/thunar/start">thunar</a>).</p>

            <p>I never thought about that question, so I just made a wild guess. Based on the number of people I believed are active on the Xfce <a href="https://matrix.to/#/#xfce:matrix.org">Matrix</a> / IRC channels, I answered: "... maybe between 2000 and 10.000 people do use Xfce".</p>

            <p>I know nobody can give exact numbers. It's all about package downloads, OS types reported by browsers, and other more or less biased data harvesting.</p>

            <p>However, the question nagged me, so I searched for some more reliable numbers.</p>

            <p>Ubuntu came to my mind. Since it collects some user-data, I thought it might be a good starting point for my investigation.</p>

            <p>Via web search, I found out that <a href="http://webtribunal.net/blog/ubuntu-usage-statistics">there seem to be about 40 Million Ubuntu users</a>.</p>

            <p>According to <a href="https://ubuntu.com/blog/ubuntu-20-04-survey-results">this post</a>, 15% of them use Xubuntu.</p>

            <p>--&gt <b>6 million Xubuntu users</b> (holy crap)

            <p>Further digging revealed that <a href="https://truelist.co/blog/linux-statistics/">aproximately 33% of Linux desktop users use a Ubuntu based distro</a>.</p>
            
            <p>--&gt Approximately 120 million Linux desktop users in total</p>

            <p>--&gt Considering a rather conservative estimate of 10% Xfce users on non-Ubuntu systems --&gt <b>another 8 million installs</b></p>

            <p>That would be approximately <b>14 million Xfce users</b>. So many people do use the software I tinker with? /o\</p>
  
            <p>Considered that estimate is more or less accurate, than why are the Xfce communication channels rather calm?</p>

            <p>For example, we currently have around 6000 non-blocked accounts at <a href="https://gitlab.xfce.org/">gitlab.xfce.org</a>. That would be roughly one in every 2000 users (0,043%) who create an account. Can that be true?</p>

            <p>Since I was not sure if my numbers are reasonable, I asked for feedback <a href="https://forum.xfce.org/viewtopic.php?pid=75134">in the Xfce forums</a>.</p>

            <p>The estimate seems to be mostly fine. On the question about the rather low percentage of people who get in contact via official Xfce communication channels, there are several guesses:</p>
            <ul>
              <li>If users are looking for answers to Xfce related problems, most of them search/ask on Reddit, Stack Exchange, ChatGPT, etc., or in distro specific channels.</li>
              <li>Xfce is a very stable DE. Many Xfce users probably don't try to get in contact because things just work fine for them.</li>
              <li>Many people might just use software "as is" and don't even bother to ask for any advice.</li>
           </ul>

            <p>I wanted to share this estimate with you, since for me, it was a surprise to see that such a huge number of people actually seem to use Xfce. Knowing so gives me even more motivation to further improve Xfce.</p>
        </div>
        ]]></description>
        </item>
        <item>
            <title>Xfce 4.18 released</title>
            <author>Alexander Schwinn</author>
            <link>https://alexxcons.github.io/blogpost_8.html</link>
            <guid>https://alexxcons.github.io/blogpost_8.html</guid>
            <pubDate>Thu, 15 Dec 2022 11:30:00 GMT</pubDate>
            <description><![CDATA[
        <div id="body" class="clear">
            <h4>Dec 15,2022</h4>
            <h2>Xfce 4.18 released</h2>

            <p>After almost two years of work, we are happy to announce the release of Xfce 4.18 !</p>
            <p>Since Xfce 4.16 a lot of major development happened. Our team added multiple nice new features, did a gazillion of bug fixes and did various minor improvements. Finally, all that is going to be released for your pleasure.</p>

            <p>This development cycle was influenced a lot by <a href="https://summerofcode.withgoogle.com/archive/2021/organizations/5706869816950784">GSoC 2021</a> and <a href="https://summerofcode.withgoogle.com/programs/2022/organizations/xfce">GSoC 2022</a>, which led to various new features, most of them for Thunar, the Xfce File Manager.
            Though as well multiple other Xfce components got a lot of love and many improvements were done under the hood.
            </p>
            <p>Assuming you have installed Xfce 4.16, here is an overview on the major changes you will see on an upgrade to Xfce 4.18:</p>

            <h2>libxfce4ui</h2>
              <h3>XfceFilenameInput</h3>
                <p>XfceFilenameInput is a comfortable widget for filename input, which was added in order to prevent invalid filenames at an early stage and to give detailed feedback on the concrete problem.</p>
                <img class="full-img" src="images/blogpost_8/xfce4ui-new-file-dialog1.png" alt="XfceFilenameInput - trailing whitespaces"/>
                <img class="full-img" src="images/blogpost_8/xfce4ui-new-file-dialog2.png" alt="XfceFilenameInput - slash"/>
              <h3>XfceShortcutsEditor</h3>
                <p>This widget is a shortcut editor which was introduced in order to have a graphical interface to modify component-specific shortcuts. Currently, it is only used inside Thunar, Xfce4-terminal and Mousepad, though other components might follow.</p>
                <img class="full-img" src="images/blogpost_8/xfce4ui-shortcuts-editor.png" alt="XfceShortcutsEditor in Thunar"/>

            <h2>tumbler</h2>
              <p>Some performance improvements for the pixbuf-thumbnailer and the scheduler were done. As well now there are multiple overwrite options for the desktop-thumbnailer.</p>
              <p>There is now support for the thumbnail sizes x-large and xx-large, which are very useful for high resolution displays.</p>
              <p>Tumbler and Thunar now support shared thumbnail repositories, like described in the freedesktop.org thumbnail specification. This feature can be used to produce thumbnails for a folder in advance, directly located near the pictures. Like that, the thumbnails don't need to be re-generated for each individual user.</p>
              <p>For more information on shared thumbnails, check the <a href="http://users.uoa.gr/~sdi1800073/sources/xfce_blog03.html">related blog post</a>.</p>

            <h2>xfce4-panel</h2>
              <p>The DateTime and the Clock plugin provided overlapping functionallity. In order to prevent parallel development, they have been merged into a single plugin.</p>
              <img class="full-img" src="images/blogpost_8/panel-clock1.png" alt="The new 'Clock' panel widget"/>
              <p>The new Clock plugin received a new binary time mode now and provides a sleep monitor. Here's a screenshot of all possible layouts which are: Analog, Binary, Digital, Fuzzy and LCD.</p>
              <img class="full-img" src="images/blogpost_8/panel-clock2.png" alt="All possible Clock Modes"/>

            <h2>xfdesktop</h2>
              <p>Like in thunar, the "Delete" menu entry in the context menu can now be hidden.</p>
              <p>In order to don't mess the desktop by accident on pressing 'rearrange desktop icons', the user is asked for confirmation now.</p>

            <h2>xfce4-settings</h2>
              <p>The search entry for xfce4-settings-manager was a bit simplified. Now it will always be shown, without any slider or button.</p>
              <img class="full-img" src="images/blogpost_8/settings-main-dialog.png" alt=""/>
              <h3>xfce4-display-settings</h3>
                <p>xfce4-display-settings got some minor improvements and the possibility to decide what to do when new displays are connected.</p>
                <img class="full-img" src="images/blogpost_8/settings-display.png" alt="xfce4-display-settings - minor improvements"/>
              <h3>xfce4-appearance-settings</h3>
                <p>On selecting a new theme, there is now the option to automatically set a matching xfwm4 theme, if available.</p>
                <img class="full-img" src="images/blogpost_8/settings-appearance.png" alt="xfce4-appearance-settings - toggle to set matching Xfwm4 theme"/>

            <h2>thunar</h2>
            <h3>List View</h3>
              <p>For directories, the count of containing files can now be displayed in the size column. It is now possible to add a 'file creation date' column, and the 'configure columns' dialog can be opened with a right-click on any column head.</p>
              <img class="full-img" src="images/blogpost_8/thunar-listview1.png" alt="Thunar - List View - Preferences"/>
              <img class="full-img" src="images/blogpost_8/thunar-listview2.png" alt="Thunar - List View - File count and file creation date"/>
            <h3>Image Preview</h3>
              <p>Finally, an image preview side pane has been added to Thunar. No, wait, actually two of them! You can choose to either use the 'embedded' mode which will take no extra space, but hide parts of the left side pane. Or you can go for the 'standalone' mode, which will use a separate pane on the right and display as well some basic information.</p>
              <img class="full-img" src="images/blogpost_8/thunar-preview1.png" alt="Thunar - Embedded Image Preview"/>
              <img class="full-img" src="images/blogpost_8/thunar-preview2.png" alt="Thunar - Standalone Image Preview"/>
            <h3>Undo and Redo</h3>
              <p>It is now possible to undo basic file operations and to redo them. Undo and Redo can be used for 'move', 'rename', 'trash', 'link' and 'create' operations. Per default, a history of the last 10 operations is stored, though the history length is configurable. Whenever an Undo/Redo is triggered, a notification with few details will be shown.</p>
              <img class="full-img" src="images/blogpost_8/thunar-undo-redo.png" alt="Thunar - Undo and Redo"/>
            <h3>File Highlight</h3>
              <p>Files now can be highlighted by setting the background and the filename to different colors. This can be done via an additional tab, located in the 'properties' dialog. The view menu provides a checkbox in order to enable/disable the feature. Once enabled, files now can be shown in all the colors of the rainbow.</p>
              <img class="full-img" src="images/blogpost_8/thunar-hightlight1.png" alt="Thunar - File Highlight Options"/>
              <img class="full-img" src="images/blogpost_8/thunar-hightlight2.png" alt="Thunar - Hightlighted file in List View"/>
              <img class="full-img" src="images/blogpost_8/thunar-hightlight3.png" alt="Thunar - Hightlighted files in Icon View"/>
              <p>For more information on file highlight, check the <a href="https://elessar-space.blogspot.com/2022/08/gsoc22-file-highlighting-in-thunar.html">related blog post</a>.</p>
            <h3>Toolbar</h3>
              <p>It is now possible to customize the toolbar according to your personal needs! An additional dialog has been added for that purpose, on which the visibility and position of specific items can be managed. As well custom actions, which appear for folders can be used in the toolbar.</p>
              <p>When the menubar is hidden, an additional toolbar button which can be used to show the menu will be displayed.</p>
              <img class="full-img" src="images/blogpost_8/thunar-toolbar1.png" alt="Thunar - Toolbar with all configurable Elements"/>
              <img class="full-img" src="images/blogpost_8/thunar-toolbar2.png" alt="Thunar - Toolbar Configuration Dialog"/>
              <img class="full-img" src="images/blogpost_8/thunar-toolbar3.png" alt="Thunar - Show Menubar button"/>
              <p>For more information on the configurable toolbar, check the <a href="http://users.uoa.gr/~sdi1800073/sources/xfce_blog10.html">related blog post</a>.</p>
            <h3>Split View</h3>
              <p>Thunar now provides the option to use split panes. The pane separator can be moved, and its position will be stored. Via a xfconf setting, it is as well possible to have a vertical split. </p>
              <img class="full-img" src="images/blogpost_8/thunar-splitpanes.png" alt="Thunar - Split Panes"/>
            <h3>Statusbar</h3>
              <p>The status bar style was tweaked and '|' is now used to separate entries. Furthermore, it is now possible to customize it by using the context menu.</p>
                <img class="full-img" src="images/blogpost_8/thunar-statusbar.png" alt="Thunar - Statusbar Customization"/>
            <h3>Recursive Search</h3>
              <p>Thunar has now the possibility to search recursively, directly inside Thunar itself. The search is done in a separate thread and search results are added rapidly into a List View. A new row 'Location' shows where the search results are located, and the context menu provides the option 'Open Item Location' in order to travel there quickly. The preferences dialog provides an option to limit recursive search to local folders, or to disable it. </p>
              <img class="full-img" src="images/blogpost_8/thunar-search1.png" alt="Thunar - Recursive Search"/>
              <img class="full-img" src="images/blogpost_8/thunar-search2.png" alt="Thunar - Recursive Search Preferences"/>
              <p>For more information on the recursive search feature, check the <a href="http://users.uoa.gr/~sdi1800073/sources/xfce_blog04.html">related blog post</a>.</p>
            <h3>Recent</h3>
              <p>Recently used files now can be accessed in the side pane. Like for the 'Recursive Search' feature, the new 'Location' row can be used in List View. Additionally, for 'Recent' a new row 'Recency' can be added to sort the files by their latest usage. </p>
              <img class="full-img" src="images/blogpost_8/thunar-recent.png" alt="Thunar - Recently Used Files"/>
              <p>For more information on 'Recent' in Thunar check the <a href="http://users.uoa.gr/~sdi1800073/sources/xfce_blog02.html">related blog post</a>.</p>
            <h3>Bookmark Menu</h3>
              <p>In order to keep the 'Go' menu compact, bookmarks have been moved into a separate, new 'Bookmarks' menu. The menu item 'add Bookmark' was rather hidden in the 'send to' menu in Thunar 4.16. As part of the new 'Bookmarks' menu, it is more prominent now.</p>
              <img class="full-img" src="images/blogpost_8/thunar-bookmarks.png" alt="Thunar - Bookmarks Menu"/>
            <h3>Trash directory</h3>
              <p>With the new release, the trash directory provides an info bar which gives easy access to `Empty Trash` and 'Restore' functionality. When using List View, a 'Date Deleted' column will be shown, so that the files can be sorted by deletion date. Via context menu, it is now possible to select 'Restore and Show' in order to automatically open a new tab in the folder of the restored file(s).</p>
              <img class="full-img" src="images/blogpost_8/thunar-trash.png" alt="Thunar - Trash Infobar and Date Deleted Column"/>
            <h3>Default Applications</h3>
              <p>The management to set/unset default applications for specific mime types was improved. The context menu got a dedicated item 'Set Default Application' which will open the 'ApplicationChooserDialog' with 'use as default' preselected. The dialog now has a section 'Default Application' in order to make clear which default application currently is set. If you want to remove applications from the list, right click it and select 'forget association'. </p>
              <img class="full-img" src="images/blogpost_8/thunar-default-application1.png" alt="Thunar - Context Menu Entry to set Default Application"/>
              <img class="full-img" src="images/blogpost_8/thunar-default-application2.png" alt="Thunar - Revamped Application Chooser Dialog"/>
            <h3>Custom Actions</h3>
              <p>It is now possible to arrange custom actions in cascading submenus. Just enter the same submenu name for a custom action in order to place it into the same menu. If you require multiple menu levels, you can achieve that by using '/' in the path of the 'Submenu' entry.</p>
              <img class="full-img" src="images/blogpost_8/thunar-uca-submenu1.png" alt="Thunar - Custom Action Submenu"/>
              <img class="full-img" src="images/blogpost_8/thunar-uca-submenu2.png" alt="Thunar - Custom Action Configuration Dialog"/>
            <h3>Preferences</h3>
              <p>The thumbnail settings in the preferences dialog got grouped together, and meanwhile it is possible to limit the file size for which thumbnails should be generated. That should mitigate possible performance issues by preventing thumbnail generation for huge video files.</p>
              <img class="full-img" src="images/blogpost_8/thunar-preferences1.png" alt="Thunar - Thumbnail Preferences"/>
              <p>File transfer operations optionally can use *.partial~ as an intermediate file now. After a transfer operation, there is now the option to verify the file checksums in order to make sure that no single bit got corrupted. Note that the checksum feature will require some extra time during copy when activated.</p>
              <img class="full-img" src="images/blogpost_8/thunar-preferences2.png" alt="Thunar - File Transfer Preferences"/>
              <p>For more information on the new file transfer options, check the <a href="https://dev.ikx.kr/GSOC-5th/">related blog post</a>.</p>
              <p>A checkbox was added in order to allow running shell scripts. In Thunar 4.16 it only was possible to change that behavior by changing a hidden setting. Use that option with caution!</p>
              <img class="full-img" src="images/blogpost_8/thunar-preferences3.png" alt="Thunar - Script Execution Preferences"/>
              <p>There is now the possibility to restore tabs on startup, and to show the full directory path in the tab title.</p>
              <img class="full-img" src="images/blogpost_8/thunar-preferences4.png" alt="Thunar - Tab and Window Preferences"/>

            <h2>xfce4-appfinder</h2>
              <h3>Configuration</h3>
                <p>Appfinder got support for the 'PrefersNonDefaultGPU' property, which is useful for systems with hybrid graphic cards.</p>
                <p>Environment variables are now parsed when passed in collapsed mode.</p>
              <h3>Appearance</h3>
                <p>An option to hide the window decorations was added.</p>
                <img class="full-img" src="images/blogpost_8/appfinder.png" alt="xfce4-appfinder without window decorations"/>

            <h2>xfwm4</h2>
             <h3>Workspaces</h3>
               <p>Workspace setting will now work as well with other window managers.</p>
             <h3>Compositor</h3>
               <p>The compositor now supports adaptive vsync with GLX.</p>

            <h2>General</h2>
              <h3>Scaling</h3>
                <p>Improved support for UI scaling and fix for many blurry icons in the core components when scaling is used. This will be particularly useful for Hi DPI screens.</p>
              <h3>Window Header Bars</h3>
                <p>All header bars of Xfce Windows/Dialogs by default will be drawn by the window manager now (Xfwm4). Some dialogs optionally support 'GtkHeaderBar' (CSD) which can be enabled via a xfconf setting.</p>
                <img class="full-img" src="images/blogpost_8/general-gtkheaderbar.png" alt="xfce-appearance-settings - Preference to enable GtkHeaderBar"/>

            <p>For the sake of readability, this list only shows main highlights. Check the full <a href="https://www.xfce.org/download/changelogs">Xfce 4.18 changelog</a> for a detailed list of changes.</p> 
            <p>This summary can as well be viewed as a <a href="https://www.xfce.org/about/tour418">localized online tour</a>.</p>
            <p>This release <a href="https://archive.xfce.org/xfce/4.18">can be downloaded here</a>, either as a set of individual packages or as a single tarball including all these individual versions.</p>

            <p>&nbsp;</p>
            <p>Best regards,</p>
            <p>The Xfce development team</p>
        </div>
        ]]></description>
        </item>
        <item>
            <title>Xfce 4.18 Pre2 Released</title>
            <author>Alexander Schwinn</author>
            <link>https://alexxcons.github.io/blogpost_7.html</link>
            <guid>https://alexxcons.github.io/blogpost_7.html</guid>
            <pubDate>Thu, 01 Dec 2022 23:00:00 GMT</pubDate>
            <description><![CDATA[
        <div id="body" class="clear">
            <h4>Dec 01,2022</h4>
            <h2>Xfce 4.18 Pre2 Released</h2>
              <p>Dear Xfce community, I am happy to announce the release of Xfce4.18 pre2.</p>

              <p>This platform pre-release consists of the Xfce core components and will be followed by the final Xfce4.18 release soon. We fixed some quirks which were found in Xfce4.18 pre1, did some further polishing and the result is now released as Xfce4.18 pre2.</p>
              <p>Early adopters are invited to give it a try and to check for compatibility before the final release, which is <a href="https://wiki.xfce.org/releng/4.18/roadmap">planned for 15. December</a>.</p>

              <p>Xfce4.18 pre2 includes all Xfce core components. The tarballs for building it can be found here:</p>
              <ul>
                <li><a href="https://archive.xfce.org/xfce/4.18pre2/src">Download individual tarballs</a></li>
                <li><a href="https://archive.xfce.org/xfce/4.18pre2/fat_tarballs">Download one tarball which includes all releases</a></li>
              </ul>
              <p>Though, you might prefer to wait for distribution specific development packages.</p>

            <h2>Wallpaper contest</h2>
              <p>It is a pleasure for me to present you the outcome of our <a href="https://gitlab.xfce.org/artwork/public/-/issues/1">Xfce4.18 wallpaper contest</a>, which received numerous nice wallpaper submissions.</p>
              <p>The winner wallpaper, which will be the new Xfce4.18 default wallpaper, was brought to you by Katerina Shkel:</p>
              <img class="full-page-img" src="images/blogpost_7/xfce-4.18-final.svg" alt="xfce-4.18-final.svg"/>
              <p>The second and third place both go to Denis Kuzminok. As well these wallpapers will be shipped within Xfce:</p>
              <img class="full-page-img" src="images/blogpost_7/Xfce-4.18_blue_flower.svg" alt="xfce-4.18-final.svg"/>
              <img class="full-page-img" src="images/blogpost_7/Xfce-4.18_leaf_mouse.svg" alt="xfce-4.18-final.svg"/>
              <p>You as well might be interested in the <a href="https://gitlab.xfce.org/artwork/public/-/issues/1">complete list of submissions</a> !</p>
            <h2>Coming soon</h2>
              <p>A detailed sum up of all new features in Xfce4.18 is planned for the final release, so stay tuned!</p>

            <p>&nbsp;</p>
            <p>Best regards,</p>
            <p>The Xfce development team</p>
        </div>
        ]]></description>
        </item>
	<item>
            <title>Wallpaper Contest for Xfce 4.18 - End of submissions</title>
            <author>Alexander Schwinn</author>
            <link>https://alexxcons.github.io/blogpost_6.html</link>
            <guid>https://alexxcons.github.io/blogpost_6.html</guid>
            <pubDate>Sun, 20 Nov 2022 23:00:00 GMT</pubDate>
            <description><![CDATA[
            <div id="body" class="clear">
            <h4>Nov 20,2022</h4>
            <h2>Wallpaper Contest for Xfce 4.18 - End of submissions</h2>

            <p>The submission deadline for the <a href="https://gitlab.xfce.org/artwork/public/-/issues/1">Xfce 4.18 wallpaper contest</a> just ended, and I am happy to see that many submissions!</p>

            <p>Starting by now, one week of voting will show which wallpapers are the most popular ones.</p>

            <p>In order to cast your vote, login at <a href="https://gitlab.xfce.org/artwork/public/-/issues/1">gitlab.xfce.org</a> and add a &#10084;&#65039; or &#128077; reaction to all wallpapers you want to upvote.</p>
 
            <p>Please keep in mind that you should vote for the best wallpaper, not for the best picture. E.g. it makes sense to leave some free space where desktop items can be placed.</p> 

            <p>Voting will be closed on 27. November. Like that, the new wallpaper can be utilized for the Xfce4.18 pre2 announce, which is planned for beginning of December.</p>
 
            <p>Happy voting !</p>
            </div>
        ]]></description>
        </item>
	<item>
            <title>Wallpaper Contest for Xfce 4.18</title>
            <author>Alexander Schwinn</author>
            <link>https://alexxcons.github.io/blogpost_5.html</link>
            <guid>https://alexxcons.github.io/blogpost_5.html</guid>
            <pubDate>Thu, 20 Oct 2022 23:00:00 GMT</pubDate>
            <description><![CDATA[
            <div id="body" class="clear">
            <h4>Oct 20,2022</h4>
            <h2>Wallpaper Contest for Xfce 4.18</h2>

            <p>Probably you already heared that <a href="https://wiki.xfce.org/releng/4.18/roadmap">Xfce 4.18 is planned to be released</a> on 15th Dec. this year.</p>

            <p>It would be nice to have a new default wallpaper for that release. This time the idea is to ask the Xfce community to contribute a couple of wallpapers. With a community vote the default Xfce 4.18 wallpaper than can be selected.</p>
            
            <p> So if you have the required skills, your contribution would be very welcome !</p>

            <p>Like the <a href="https://gitlab.xfce.org/artwork/public/-/tree/master/wallpapers">old Xfce wallpapers</a>, the new wallpaper should be a vector graphic with an unmodified <a href="(https://gitlab.xfce.org/artwork/public/-/tree/master/logo)">Xfce mouse</a> on it and some fancy shapes.</p>

            <p>Note that the image must be all yours and needs to be licenced under <a href="https://creativecommons.org/licenses/by-sa/4.0/)">CC BY-SA 4.0</a>. If you do not specify a licence in your post then we will assume that you are are licensing the image under the CC BY-SA 4.0.</p>

            <p>The image should not mention the software (FOSS or proprietary) used to create the wallpaper in the metainfo.</p>

            <p>Deadline for submissions is the 20th of November.</p>

            <p>In order to participate, post your wallpaper into the <a href="https://gitlab.xfce.org/artwork/public/-/issues/1">corresponding gitlab issue</a> !</p>
        </div>
        ]]></description>
        </item>
	<item>
	    <title>Xfce accepted to Google Summer of Code 2022</title>
	    <author>Alexander Schwinn</author>
	    <link>https://alexxcons.github.io/blogpost_4.html</link>
	    <guid>https://alexxcons.github.io/blogpost_4.html</guid>
	    <pubDate>Fri, 11 Mar 2022 07:00:00 GMT</pubDate>
	    <description><![CDATA[
	    <div id="body" class="clear">
            <h2>Xfce accepted to Google Summer of Code 2022</h2>
            <p></p>
            <p>Good news, Xfce has been accepted to <a href="https://summerofcode.withgoogle.com/programs/2022/organizations/xfce">Google Summer of Code 2022</a> !</p>

            <p>This time not only different thunar projects will be mentored, but as well some xfce4-terminal, xfce4-screenshooter and xfce4-panel projects. Check our  <a href="https://wiki.xfce.org/projects/gsoc/start">Xfce GSoC Wiki</a> for a detailed list of project ideas !</p>

            <p>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 !</p>

            <p>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 <a href="https://wiki.xfce.org/projects/gsoc/start#project_ideas">ideas-list</a> for which you can do mentoring.</p>

            <p>For more detailed information, best check the guides on the <a href="https://summerofcode.withgoogle.com">official GSoC page</a>.</p>

            <p>Hope to see you there !</p>
        </div>
        ]]></description>
	</item>
	<item>
	    <title>Shiny new things in Thunar thanks to GSoC 2021</title>
	    <author>Alexander Schwinn</author>
	    <link>https://alexxcons.github.io/blogpost_3.html</link>
	    <guid>https://alexxcons.github.io/blogpost_3.html</guid>
	    <pubDate>Sat, 11 Sep 2021 15:00:00 GMT</pubDate>
	    <description><![CDATA[
	    <div id="body" class="clear">
            <h2>Shiny new things in Thunar thanks to GSoC 2021</h2>
            <p></p>
            <p><a href="https://summerofcode.withgoogle.com">GSoC 2021</a> is over now and I am happy to tell you that both students working on thunar did an excellent job. Alot of nice stuff has been added thanks to them !</p>
            
            <p>In order to allow you to discover all these new features, <a href="https://mail.xfce.org/pipermail/xfce-announce/2021-September/001059.html">Thunar 4.17.5</a> was just released.
            (Note that this is a development release. It still might have some rough edges)</p>
            
            <p>For details about the new features check the summaries provided by Sergios and Yongha:</p>
            
            <ul>
                <li><a href="http://users.uoa.gr/~sdi1800073/sources/xfce_blog05.html">Sergios GSoC Summary</a></li>
                <li><a href="https://dev.ikx.kr/GSOC-6th/">Yongha's GSoC Summary</a></li>
            </ul>
            <p>Besides these, here as well some more new features added during GSoC for which I thought they would be worth to mention:</p>
            <p></p>
            
            <p>Bookmarks got moved into a separate 'Bookmarks Menu' and a 'create bookmark' option was added
            (<a href="https://gitlab.xfce.org/xfce/thunar/-/merge_requests/109">MR !109</a> and <a href="https://gitlab.xfce.org/xfce/thunar/-/merge_requests/71">MR !71</a>)</p>
            
            <img class="full-img" src="images/blogpost_3/bookmark_menu.png" alt="bookmark menu"/>
            <p></p>
            <p>A new menu item "Set Default Application" was added to the "Open with" submenu (<a href="https://gitlab.xfce.org/xfce/thunar/-/merge_requests/79">MR !79</a>)</p>
            
            <img class="full-img" src="images/blogpost_3/default_app_1.png" alt="Open with - Set Default App"/>
            <p></p>
            <p>A new section 'Default Application' was added to the 'thunar-chooser-dialog' (<a href="https://gitlab.xfce.org/xfce/thunar/-/merge_requests/81">MR !81</a>)</p> 
            
            <img class="full-img" src="images/blogpost_3/default_app_2.png" alt="Default App Section"/>
            
            <p>On top there are still <a href="https://gitlab.xfce.org/xfce/thunar/-/merge_requests">various open merge requests</a> with partial finished features, most of them from GSoC students for which I did not find time so far.
            So expect more new stuff to arrive soon !</p>
            
            <p>You as well might want to keep an eye on <a href="https://gitlab.xfce.org/apps/xfce4-terminal">xfce4-terminal</a>, which received alot of activity recently, since it is now maintained by Sergios Kefalidis.</p>
            
            <p>If you find a bug on any of these new features, please make use of the <a href="https://gitlab.xfce.org/xfce/thunar">xfce bugtracker</a>.</p>
            
            <p>Happy testing !</p>
        </div>
        ]]></description>
	</item>
	<item>
	    <title>Xfce participation in GSoC 2021</title>
	    <author>Alexander Schwinn</author>
	    <link>https://alexxcons.github.io/blogpost_2.html</link>
	    <guid>https://alexxcons.github.io/blogpost_2.html</guid>
	    <pubDate>Wed, 23 Jun 2021 15:00:00 GMT</pubDate>
	    <description><![CDATA[
	        <div id="body" class="clear">
            <h2>Xfce participation in GSoC 2021</h2>
            <p></p>
            <p>I am a bit late with my blog post .. though I suppose better late than never :D</p>
            
            <p>This year Xfce applied to the <a href="https://summerofcode.withgoogle.com/organizations/6058796058673152/">Google Summer of Code</a> program and I am happy to tell you that we accomplished to get 3 slots ! (That's very good, since new organization usually only receive one or two slots)</p>
            
            <p>There was a lot of interest by students. In total 15 proposals were received for Xfce.
            So sadly we had to refuse several nice proposals. However the number of mentors as well was limited, so that this year Xfce anyhow would not be able to mentor more students.</p>
            
            <p>Now there are 3 very motivated GSoC students supporting Xfce. Allow me to introduce:</p>
            
            <ul>
                <li><b>Yongha Hwang</b>, who applied for various thunar issues, mostly related to file transmission.</li>
                <li><b>Sergios Anestis Kefalidis</b>, who as well works on thunar, targeting a wide range of features.</li>
                <li><b>Vishal Sharma</b>, who is looking into sample/skeleton panel plugins in different GOI supported languages.</li>
            </ul>
            <p>Since I maintain thunar, I am the main mentor of Sergios and Yongha.</p>
            
            <p>These two and as well some other thunar focused GSoC applicants kept me very busy by adding many contributions long before the official coding part started :)
            Already now I think mentoring for GSoC was a good thing to do. The gain by far outweighs the burden. I don't have much time left to work on issues myself, though the students overcompensate that by magnitudes.</p>
            
            
            <p>Here a small taste of the recent activity related to GSoC:</p>
            <ul>
            <li><a href="https://gitlab.xfce.org/xfce/thunar/-/issues?scope=all&utf8=%E2%9C%93&state=closed&label_name[]=8.%20GSoC%202021">Thunar issues fixed by GSoC students</a></li>
            <li><a href="https://gitlab.xfce.org/xfce/thunar/-/merge_requests">Currently 12 open thunar merge requests, 9 opened by GSoC students</a></li>
            </ul>
            
            <p>... and that is only thunar. There is as well a lot of activity on exo and libxfce4-util !</p>
            
            <p>Many various smaller tweaks already made it into <a href="https://gitlab.xfce.org/xfce/thunar/-/tags/thunar-4.17.2">thunar 4.17.2</a>. Some bigger ones, e.g. issues from the [project ideas list](https://wiki.xfce.org/projects/gsoc/start#project_ideas)  are currently in work, or even already landed in the current master.</p>
            
            <p>If you want to take a peek on the upcoming changes and new features already now, you can check the students frequent blog posts:</p>
            
            <ul>
            <li><a href="https://dev.ikx.kr">Yongha Hwang</a></li>
            <li><a href="http://users.uoa.gr/~sdi1800073/">Sergios Anestis Kefalidis</a></li>
            <li><a href="https://freshlybuilt.com/members/vishalsharma/">Vishal Sharma</a></li>
            </ul>
            
            <p>Hope you will enjoy the upcoming changes!</p>
        </div>
	    ]]></description>
	</item>
	<item>
	    <title>Thunar, GtkAction and a big mess</title>
	    <author>Alexander Schwinn</author>
	    <link>https://alexxcons.github.io/blogpost_1.html</link>
	    <guid>https://alexxcons.github.io/blogpost_1.html</guid>
	    <pubDate>Wed, 24 Jun 2020 15:00:00 GMT</pubDate>
	    <description><![CDATA[
	        <div id="body" class="clear">
            <h2>Thunar, GtkAction and a big mess</h2>
            <p></p>

            <h3>Overview</h3>
            
            <p>My journey into the <a href="https://developer.gnome.org/gtk3/stable/GtkAction.html">GtkAction</a> abysses of <a href="https://gitlab.xfce.org/xfce/thunar">Thunar</a> began in the mid of 2019. Be warned, it is no story of success. It is rather a story about finding a way through a maze while walking into almost every dead end.</p>
            
            <p>Actually I just wanted to fix <a href="https://gitlab.xfce.org/xfce/thunar/-/issues/198">#198 (Merge all file-context-menus into one)</a>. But somehow things got weird. More than half a year later and after numerous interactive rebases I finally merged my branch into master \o/</p>
            
            <h3>Motivation</h3>
            
            <p>The old Thunar used to create the same menu items in different places using different code. In the past that led to inconsistencies. E.g. the location bar only provided a very minimal context menu, no <a href="https://docs.xfce.org/xfce/thunar/custom-actions">custom actions</a> at all.</p>
            
            <img class="full-img" src="images/blogpost_1/location_buttons_context_menu.png" alt="location button context menu"/>
            
            <p>From time to time I found myself right-clicking on a `location-button`, just to find out that there still is no `custom action`. At some point of maximal annoyance I decided to fix that problem ... not sure if I would have done so when I knew how long that road would be.</p>
            
            <p>Looking at <a href="https://gitlab.xfce.org/xfce/thunar/-/blob/xfce-4.14/thunar/thunar-location-button.c">thunar-location-buttons.c</a> revealed a lot of duplicated code. <a href="https://gitlab.xfce.org/xfce/thunar/-/blob/xfce-4.14/thunar/thunar-standard-view.c">thunar-standard-view</a> and <a href="https://gitlab.xfce.org/xfce/thunar/-/blob/xfce-4.14/thunar/thunar-window.c">thunar-window</a> both used the deprecated <a href="https://developer.gnome.org/gtk3/stable/GtkActionGroup.html#GtkActionEntry">GtkActionEntry</a> to define `menu item labels` and related actions. The `location buttons` just mirrored parts of that code. On top some other actions were defined in <a href="https://gitlab.xfce.org/xfce/thunar/-/blob/xfce-4.14/thunar/thunar-standard-view.c">thunar-launcher</a> or had their own classes, inheriting `GtkAction`.</p>
            
            <p>So yay, lets just copy+paste the missing stuff to the location buttons?
            Nah, that would be too easy. As a developer who values <a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself">DRY</a>, it would hurt my belief in clean code to produce more mess.</p>
            
            <h3>Let's Start Hacking</h3>
            
            <p>I started to do some coding .. first I created a new widget <a href="https://gitlab.xfce.org/xfce/thunar/-/blob/master/thunar/thunar-menu.c">thunar-menu</a> which internally is a <a href="https://developer.gnome.org/gtk3/stable/GtkMenu.html">gtk-menu</a>, and moved menu-item creation and the related actions for copy/cut/paste/delete/move_to_trash there to have them at some central place, so they can be reused by different menus. I as well moved the actions from `thunar-launcher` to `thunar-menu` (I guess the original intention of the launcher was, to actually launch things, not to manage menu-items) and replaced separate action classes in favour of methods inside `thunar-menu`.</p>
            
            <p>Meanwhile the location-button-menu and the context-menu, which I used for testing, were populated with some items again.</p>
            
            <p>The old code made massive use of the deprecated `GtkAction` and `GtkActionEntry` classes together with `GtkUiManager`. I did not want to add more `G_GNUC_BEGIN_IGNORE_DEPRECATIONS` to silence warnings. So I decided to replace the deprecated calls.</p>
            
            <p>Looking into the gtk3 documentation revealed that there now is <a href="https://developer.gnome.org/GAction/">GAction</a> and <a href="https://developer.gnome.org/gio/stable/GActionMap.html#GActionEntry">GActionEntry</a> which provides some service around accelerator activation, and there is <a href="https://developer.gnome.org/gtk3/stable/GtkMenu.html">GtkMenu</a>/<a href="https://developer.gnome.org/gio/stable/GMenu.html">GMenu</a> for which at that time I had no clear idea why there are two of them.</p>
            
            <p>The <a href="https://developer.gnome.org/GAction/">documentation of GAction</a> told me that it should not be used for anything related to labels, icons or creation of visual widgets, damn. So at that time I did not see an advantage in using this class. I decided to rather go for `GtkMenu` together with some custom replacement for `GtkActionEntry`: <a href="https://gitlab.xfce.org/xfce/libxfce4ui/-/blob/master/libxfce4ui/xfce-gtk-extensions.h#L45">XfceGtkActionEntry</a>.</p>
            
            <p>In retrospective ignoring `GAction` might not have been my smartest move. Meanwhile I understood how `GAction` can be used with `GtkMenu`, and I will most likely go for it at some later point.</p>
            
            <p>Regarding <a href="https://developer.gnome.org/gtk3/stable/GtkUIManager.html">GtkUiManager</a>: The definition of menu-items of Thunar was scattered across <a href="https://gitlab.xfce.org/xfce/thunar/-/commit/ed46f9c3baa3533629d8c1000511300fb0e6fdd5">7 different *-ui.xml files</a>, making it hard to figure out what belongs together. Because of that I decided to just get rid of the deprecated `GtkUiManager` and create menu-items in the code instead of predefining their order in xml. IMO the usage of xml files might be nice for static GUI's, though for dynamic menu-creation it just introduces unnecessary complexity.</p>
            
            <p>So I started to build `XfceGtkActionEntry` and some support methods.`XfceGtkActionEntry` is a structure which holds labels, tooltips, icons, types, the accelerator paths and callbacks to the related actions. Like `GtkActionEntry` it is just a struct and can be filled in a static way.</p>
            
            <p>Next problem: The menus in Thunar so far did not get destroyed, but were updated whenever the selected items got changed, and got shown when needed. That sounded wrong to me. Why should I want to update menu-items, which can be expensive, while no menu is visible at all ?
            There were bugs about menu flickering and slowness while rubber banding/mass select which seem to be related. Since I anyhow needed to touch that part, I decided to build menus only when they need to be shown.</p>
            
            <p>Things went well, I came to the point where I needed some items from `thunar-window`, like the zoom-section and the view-specific settings. As well most file-menu items in the `thunar-window` menu did not work any more since I moved management of them from `thunar-launcher` to` thunar-menu`. So next step clearly was: Introduce `XfceGtkActionEntry` to `thunar-window` ... and than shit hit the fan.</p>
            
            <p>So far the `thunar-window` menu was always present and took care for any accelerator actions. Since my concept was "create menu on request", there was no menu instance which could take care for accelerators any more, leading to dysfunctional accelerator keys, rendering my whole concept as faulty .. aargh.</p>
            
            <h3>Start all over again</h3>
            
            <p>After some time of grieve and doubts I fixed the problem by moving most of the code from `thunar-menu` back to `thunar-launcher`, which lifetime is coupled to `thunar-window`.</p>
            
            <p>From now on `thunar-menu` was more or less just an convenience wrapper for `thunar-launcher` ... still useful, but sadly it lost its glory. `thunar-launcher` now builds volatile menu items on request and permanently listens to the related accelerators. Finally accelerators started to work fine, and I was able to continue to fight with the window menu.</p>
            
            <p>I had much more trouble with that menu, too much to tell it here .. however somehow I managed to get it functional, so that it mostly worked like before.</p>
            
            <h3>An unpleasant discovery</h3>
            
            <p>Later on, while <a href="https://gitlab.gnome.org/GNOME/gtk/-/issues/2375">reporting a bug against gtk</a> I learned that the class <a href="https://developer.gnome.org/gtk3/stable/gtk3-Accelerator-Maps.html">gtk_accel_map</a>, which I use as a central part will be deprecated soon ... aargh again. The gtk devs so far just missed to set a deprecation macro. So it seems like I will need to touch the accelerator part again. This time I plan to make use of the <a href="https://developer.gnome.org/gio/stable/GActionMap.html">GActionMap</a> interface .. going to be a story for another day.</p>
            
            <h3>Testing and open issues</h3>
            
            <p>For first testing and code-review I luckily got support of some early adopters. They found many more defects and regressions which kept me busy a long while. Fortunately nothing concept-breaking was found.</p>
            
            <p>While writing this there are still some regressions I introduced, waiting to get fixed by me before a stable release:</p>
            <ul>
            <li><a href="https://gitlab.xfce.org/xfce/thunar/-/issues/331">Regression: Missing accelerators for bookmark items</a></li>
            <li><a href="https://gitlab.xfce.org/xfce/thunar/-/issues/319">GObject-WARNING on closing thunar in some conditions</a></li>
            </ul>
            
            <p>And there are related tasks on my agenda, for which I just did not find the time so far:</p>
            <ul>
            <li>rename `thunar-launcher` to e.g. `thunar-action-manager`</li>
            <li>use `thunar-menu` in `bookmark view`</li>
            <li>use `thunar-menu` in `Tree view`</li>
            <li>many minor things</li>
            </ul>
            <h3>Conclusion</h3>
            
            <p>Finally I ended up with <a href="https://gitlab.xfce.org/xfce/thunar/-/merge_requests/10">25 commits and +4717 / -7149 line changes</a>. The occurrence of `G_GNUC_BEGIN_IGNORE_DEPRECATIONS` got reduced from 250 to 35. The remaining 35 occurrences will further drop when using GtkMenu for bookmark-view/tree-view. That should simplify the move to gtk4 in the future. The `location-button` context menu shows custom-actions now, and as well some other bugs got fixed with the changes.</p>
            
            <p>So overall, the result does not look too bad I guess.</p>
            
            <p>Well, this blogpost grew by far too long. I hope you nevertheless enjoyed the journey into the Thunar internals!</p>
            
            <p>... enough storytelling for now, I really need to take care of these remaining regressions! :)</p>
            
            <p>Thanks to <a href="https://gitlab.xfce.org/reubengreen73">Reuben</a>, <a href="https://gitlab.xfce.org/andreldm">AndreLDM</a>, <a href="https://gitlab.xfce.org/DarkTrick">DarkTrick</a> and others for early testing and bug reporting! Special thanks to AndreLDM, motivating me to write this blogpost at all :D.</p>

        </div>
	    ]]></description>
	</item>
</channel>
</rss>