After the initial release of LXQt, I found that there is a FAQ. How’s the memory usage? Will it become a bloated memory hog because of Qt? Here are some numbers for you.
My test environment is the latest Debian stable installed in VirtualBox with 512 MB of RAM and 1 CPU core assigned. After cold boot, the memory usage is as follows.
Plain Openbox only: 58 MB
XFCE: 89 MB (with default configuration of Debian. This value will increase after xfce is ported to gtk+ 3)
LXQt: 95 MB (add 37 MB to openbox, still has some room for optimization)
The screen resolution is 1280 x 1024. So a wallpaper roughly used 1280x1024x4 bytes = 5MB of RAM. If you don’t set a wallpaper, this number can be lower. Besides, this is a virtual machine so some special modules for vbox are loaded. I turned off printer service and network-manager applet since they’re not used.
Yes, the memory usage slightly increased, but the difference is really negligible. Moreover, LXQt has more features, such as a better program launcher and new power management stuff.
Apparently the gtk+ 2 version uses less memory, but we cannot use gtk+ 2 forever. It’s not a secret that gtk+ 3 is not a memory saver. So, I’d say Qt is really not that bad.
Why yet another DE? Why can’t you do something more innovative? I think the answer for this FAQ is simple.
Nowadays everything goes mobile and touch, but we still saw unmet need for a classic desktop environment. Otherwise, Windows xp should have been killed years ago and Windows 8 should have high market share now.
In the history of free software, we see forking everyday, but (successful) merging rarely happened. We want to prove that it actually works. People can focus on what they can share with each other, not how they are different.
The following is my personal opinion (not on behalf of other LXQt developers)
Seriously, if a 17 MB memory usage increment can buy us faster development, more active developers [Figure 1], more contributors, and a healthier upstream community, that’s definitely worth it. When I say healthier, I mean those who do not hold a “Follow our way, or go away!” attitude. This is just as important as other technical considerations when you choose a toolkit.
Many people like to argue that Qt is not C++ since it requires a pre-processor. Did anyone tell you that Gtk+ actually uses a preprocessor, too? Check the manpage of “glib-genmarshal” please. Without this pre-processor to generate some code for you, it will be awfully difficult to add signals to your GObjects. That’s not C language, right?
It does not really matter for users what toolkit you’re using given the final result works. Let’s save some time not arguing which is better and focus on what we can do with them. 🙂
Recently, PC-BSD developers just reminded us that there is an unmet need for a Qt desktop for BSDs. So, here you go. 🙂
As stated earlier, we’re not really Linux-centric. We support Linux better simply because we’re Linux users. Now with some help from several FreeBSD users, things can be different. I installed FreeBSD 10 in Virtualbox last week. After reading some docs and fighting with it we fixed some broken makefiles. Now the major components should work as expected.
Of course, there are still some Linux things which do not work (yet).
lxqt-powermanagement: this requires upower
lxqt-policykit: I haven’t test if policykit works for FreeBSD
volume control applet: currently it only supports ALSA and PulseAudio. I’m going to implement OSS support for it.
removable device applet: this requires udisks
Reboot/Shutdown from the menu: We use logind/consolekit now. Any good alternative for BSD?
Other parts should just work. We hope that we can improve FreeBSD support more. Of course, help from the BSD community is needed.
Since the merge of the LXDE and Razor-Qt teams in July 2013, there has not been any releases to the public. After months of works, the merged product is in a good shape now. It’s quite stable and usable. So we are discussing about the possibility to make the first alpha release for the long awaited DE. The exact date of the release is still under discussion, but we will do it as soon as possible. Since it’s an alpha release, which means it’s for early testers and developers interested, please do not expect too much. Things are expected to be broken and some parts might still need some polishing. For example, translations are not done yet. They will be done before the final release of LXDE-Qt (or LXQt).
p.s.: If someone is willing to help test it on FreeBSD, please let us know. 🙂
In the GTK+ world, we have many lightweight music players, such as Audacious. While migrating to Qt, some people might want a Qt-based alternative for use in LXDE-Qt. Fortunately, we have Qmmp. Here are screenshots from their website. They provides the old-school WinAmp-like skins, or you can install the qmmp-plugin-pack to get the foobar2000-like simple UI.
The music player looks very suitable for LXDE-Qt, but it has some known problems, one of which is higher CPU usage then similar music players (mainly Audacious). To improve that, I spent two days hacking and found some potential solutions so I share them here.
Install qmmp-plugin-pack and use mpg123 plugin for playing mp3 files instead of the default libmad plugin. Mpg123 is highly optimized and can use CPU features when available, such as SIMD. This can be changed in the preferences dialog. Just turn off the libmad plugin and turn on the mpg123 one. This greatly reduced the CPU usage while playing mp3 files. Qmmp by default give libmad higher priority, so you have to turn off libmad. Otherwise mpg123 won’t be used.
Apply these 2 patches I created and recompile qmmp from source. The subversion r4265 code of qmmp should be used. Detailed information about the bugs they fixed is in the bug report 685. I already send the patches to the upstream, but they’re not yet applied. I post them here so other qmmp users can try them.
Turn off the visualizer (spectrum visualizer) if you’re using the simple UI (the second screenshot above). It’s the main cause of high CPU usage. Turning it off can decrease CPU usage to some degree. With the second patch I provided, you can get rid of the CPU usage completely when the visualizer is off.
If you love qmmp, try to see if the solutions provided here solve your problems.
The LXQt project is steadily developed. While the image viewer lximage-qt just got some polishing lately, the Qt port of PCManFM file manager also reaches a quite usable state.
Some notable changes are:
Add dir tree to the side pane
Improved file popup menu
Able to open the selected files with arbitrary apps
Improved handling when trying to open an executable file.
Improved statusbar info
Many bug fixes
Though we don’t have a stable release yet, basically the feature set of the Qt port is quite close to the earlier 1.0 version of the gtk+ version. Users interested to the project are encouraged to test the latest code in our git repo. Patches are always welcomed! 🙂
The image viewer of LXQt (LXDE-Qt) has been improved much recently. Here is the latest screenshot.
Here is a brief list of recent changes:
Printing support added
Thumbnail preview (the bottom pane on the screenshot)
Built-in tool to take a screenshot
Slide show support
Improved fullscreen support
Improved preference dialog
File properties dialog added
The image viewer is fully functional and usable now. At the same time, other LXQt components are getting some more updates as well. Though there are no formal releases of LXQt yet, the latest code in git already works pretty well. Please stay tunned! 🙂
Hard at work and huge changes were served. Below you’ll find the NEWS files for PCManFM and libfm, usually we post the git log and link the commit IDs to the log but that is not possible this time, the NEWS files combined are 4800 words!
Implemented accessibility for the desktop managed by pcmanfm.
Added missing accessibility relations between main window parts.
Added tooltips for desktop items. Tooltips contain full file names, while desktop text shows them truncated in case of long names.
For LibFM version 1.2.0 (and newer) show version of LibFM in the About window as well, not just PCManFM version.
Added support for configuration options of LibFM 1.1.0 and 1.2.0 into Preferences dialog.
Adopted new LibFM APIs and disabled all the deprecated calls.
Implemented separated desktop configuration for each monitor. The Desktop Preferences dialog will be applied only to current monitor.
If no setup was ever done for secondary monitor then setup will be copied from primary one. Configuration will be converted into new style
from old one on the first start of PCManFM desktop manager. The new configuration will be not known to old version of PCManFM so if you
start old one again, it will gain default configuration for the desktop instead.
Changed representing of sort mode in config file: instead of numerics ‘sort_type’ and ‘sort_by’ it’s saved as ‘sort=’ text setting. Thus it is possible to save extended modes such as ‘case’ or ‘mingle’ and save sort by extended columns (see LibFM new APIs).
Implemented saving of columns (works for Detailed List View mode). The list of columns is represented as [:<width]. This feature will work with LibFM 1.0.2 or newer. The LibFM 1.1.x will get some
benefit only, the PCManFM can load that list from config. The possibility to catch columns change is available since LibFM 1.2.0 so this feature will work in full only with LibFM 1.2.0 or newer.
Changed strings to follow common Human Interface Guidelines for strings capitalization.
New tab with Search Results now opened in Detailed List View mode with columns: Name, Description, Location, Size, Modified. Since Search Results is a special folder, its layout should be other than default.
The ‘Tools’->’Open Current Folder as Root’ menu item is removed along with ‘su_cmd’ configuration option. That mode is too much dangerous and appropriate functionality can be achieved using DES-EMA extension for context menu, no need to hardcode it into PCManFM.
Added support for extended sort modes into main menu.
If used with LibFM 1.2.0 or newer then list of view modes in the main menu will be not hardcoded but list of supported view modes retrieved from FmStandardView widget.
Added support for per-folder configurations: sort mode, show_hidden, and view mode. The settings will be loaded from the file .directory if it exists, the file ~/.config/pcmanfm//dir-settings.conf will be used otherwise (and if linked with LibFM 1.2.0 or newer then the file
~/.config/libfm/dir-settings.conf will be used instead by the LibFM). Those settings will be saved not for each of the visited folders but only if ‘View’->’Save for This Folder’ checkbox in the main menu is checked, and will be forgotten after it’s unchecked.
Changed representing of view mode in config file: instead of numeric ‘view_mode’ it is saved in portable way as string defined by widget FmStandardView.
Changed representing of side pane mode in config file: instead of numeric ‘side_pane_mode’ it is saved now in portable way as string defined by widget FmSidePane.
Implemented Dual Pane mode which can be toggled on anytime. If there is some tab next to current then it will be used for inactive pane, and if there is only one
tab present in the window then new tab will be created (for the same directory as current view). When tab that is shown in inactive pane is closed then Dual Pane mode
is terminated and may be toggled on again by user if needed. The Dual Pane mode can be toggled either via the main menu or by pressing a key ‘F3’.
Added icon size manipulations (increase, decrease, normalize size) into View menu. New size will be remembered in config for the appropriate type of icons.
Added configuration for toolbar: it can be now hidden, and elements on it (New Tab, navigations, Home) can be hidden individually as well.
Added menu option ‘Go’->’Connect to Server…”. If selected it opens a dialog window to select type of remote folder and few parameters (host, port, path, login) for the connection. If not cancelled then selected remote folder will be opened in new tab.
Implemented new config option ‘media_in_new_tab’, defaulted to false. If set then automounted folder will be opened in new tab instead of new window.
Implemented new config option ‘desktop_folder_new_win’, defaulted to false. If set then folder from desktop will be opened in new window instead of new tab.
Context menu options to open folder in new window / tab / terminal now available also for side pane items’ context menu if used with LibFM 1.2.0 or newer.
If used with libfm 1.2.0 or newer then option ‘mingle’ will be included into default sort modes for the Desktop. This is expected by most of users – we add something to Desktop, then we see it after all already added items, not after other folders.
Implemented handling for extra items on the desktop:
Those items have not be in the Desktop folder, they will be added to the view by desktop manager internally. Corresponding config options are ‘show_trash’, ‘show_documents’, ‘show_mounts’ – those are set in
the desktop config for each monitor. Default is true for ‘show_trash’ and false for other items. Note that all those items are not links of any kind but folders itself so weird operations with them may lead to weird results. This feature will work only if linked against libfm 1.2.0 or newer.
Folder view modes moved to separate submenu to make View menu shorter.
Reordered View, Bookmarks, and Go menus placement in menu bar to follow common order used by other applications and file managers.
The menu items ‘Go’->’Applications’ and ‘Tools’->’Find Files…’ should become insensitive now if appropriate modules were not loaded.
Added new section ‘autorun’ into config where last choices made by user for some kind of inserted media is remembered. Added a checkbutton
‘Always perform this action on this media type’ into the dialog where user selects an action so user can remember the choice and never ask again
for that kind of media. The button is not available for unknown or mixed media types. The ‘do nothing’ kind of choice is allowed to remember as well
if user selects not ask again and press the ‘Cancel’ button in the dialog. The choice ‘not ask’ is saved in config file as asterisk (*) prepended to application ID. The choice of view in the PCManFM itself is saved as pseudo-ID “pcmanfm”.
The menu option ‘Edit’->’Delete’ is split to two: ‘Move to Trash’ and ‘Delete’ because some users with disabilities may not be able to use keybinding Shift+Del therefore should be a possibility to do exact action by mouse only.
Added new menu option ‘File’->’Folder Properties’ which duplicates the folder context menu option for those who cannot use the context menu.
Added new menu option ‘Edit’->’Properties’ from the selection context menu for those who cannot use the context menu.
Added new menu option ‘Edit’->’Open’ to launch selection for those who can use neither keyboard nor selection context menu.
Added new config option ‘show_statusbar’ with default to true which defines should status bar be shown or hidden. It’s controllable via menu ‘View’->’Show Status Bar’.
Added new menu option ‘File’->’Create Link…’ to create link(s) on the selected file(s) into some directory.
Implemented a runtime option to open Find Files dialog window. It will not replace any other options, i.e. if used alone and no other window nor desktop manager is active, it will open new default window.
It will not open any additional window if used when an other window or desktop manager is active though.
When wallpaper mode is color-only, the file chooser for wallpaper image is not clickable anymore because it has no reasons to be clickable.
Implemented the interactive search for desktop contents. It is similar to that in GtkTreeView and ExoIconView, activated by just typing or pressing Ctrl+F. This small search entry window is
opened at the top right corner of workspace. It supports the same shortcuts as those GtkTreeView – Ctrl+G for “find next” or “Shift+Ctrl+G for backward, scroll gestures also possible.
Added new menu option ‘View’->’Filter…’ which allows to apply shell pattern to files currently shown in the view. The pattern is case insensitive.
After creation of new tab using keyboard Ctrl+T (or main menu option) the Location Bar of new created tab will be focused to allow easy change path. Any other created new tabs will have the focus as usual.
Added new config option ‘change_tab_on_drop’, defaulted to true to keep old behavior: when you drag file(s) on tab label then tab will be
unfolded so you can drop files into folder view. If set to false (new behavior) then the tab will be not unfolded but you can drop files directly on tab label using any wanted gestures and files will end up in the folder that tab label points to.
Added new menu option ‘Edit’->’Copy Path(s)’ to copy text paths for the selection into clipboard.
Added new config option ‘home_path’ (unset by default) which defines the file path or URI string to open when ‘Home Folder’ is activated in side pane, toolbar, or menu. Available only with LibFM 1.2.0 or newer.
Added new config option ‘focus_previous’ defaulted to false (preserving old behavior) which allows select and focus the folder where we came from when we go into parent directory. It’s available only with LibFM 1.2.0 or newer.
Added new config option ‘close_on_unmount’ defaulted to true. If set to true then tab containing a folder that is vanished (that happens if the folder either
was deleted or was renamed or was unmounted) will be closed. If set to false then such tab will go to the ‘Home Folder’ instead (with respect to ‘home_path’ config option).
Implemented possibility to set custom folder to display on desktop. It is saved in monitor config option ‘folder’. If that config
option is unset that implies default desktop folder. If that config option is set to empty string then desktop icons support and drag&drop support will be disabled for that monitor. Otherwise mentioned path will be used to display on the desktop instead of Desktop Folder.
Changed saving option ‘wallpaper_mode’ into desktop config, it will be saved as text instead of number to allow further improvements.
Added new wallpaper mode ‘crop’ that will scale image proportionally to match the monitor size fut in difference to the ‘fit’ mode the scaled image will fill whole monitor area and will be cropped if it’s bigger than the monitor.
Added new wallpaper mode ‘screen’ that will scale image to fill the entire screen size and display appropriate part on the monitor it is configured for.
This mode is useful when people have an appropriate wallpaper and want their screen composed of two monitors to show the whole image – a part on first monitor and other part on second.
Added alternative to Location Bar – implemented FmPathBar support with switching via menu ‘View’->’Path Bar’->… radio buttons. The path bar mode is applied to windows opened after change, the same way as the side bar change is applied.
Added optional ‘New Window’ button to the toolbar left to ‘New Tab’ one to those who don’t like tabbed view.
The statusbar can show total size of selected files if some conditions are met. Conditions are:
number of selected files should be less than 1000;
selection should contain no directories.
Those limitations are due to lightweight nature of the file manager and otherwise counting will take too much resources.
Added API to create third-party plugins that may append own text to the statusbar text for selected files. The plugins should be installed into $(libdir)/pcmanfm folder and use “#include” directive in the code.
Added new menu option ‘Tools’->’Run a Command in Current Folder’ to run an arbitrary command line from the folder opened in current tab. This option works only with LibFM 1.2.0 or newer.
Added ‘auto_selection_delay’ option into config file, defaulted to 600, which defines interval in milliseconds before folder item is selected in single-click mode. Setting to 0 disables autoselection.
Added ‘drop_default_action’ option into config file, which defines how to act when some file(s) were dropped onto destination widget and no modificator key was pressed. Default is 0 (Auto).
Added ‘confirm_trash’ option into config file, defaulted to true, which defines whether moving files to trash can should be confirmed by the user. Previously this confirmation was defined by the ‘confirm_del’ option but now those two are separated.
Added ‘show_full_names’ option into config file, defaulted to false, which defines whether long names in icon view should be shown as it is or truncated to reasonable height.
The Places View made customizable. New section ‘[places]’ added into config file with an option for each standard item (Home, Desktop, Trash, and Applications).
Added new Places View items: File system, Computer, and Network. All new items are disabled by default.
The option ‘places_unmounted’ in config file defines whether volumes from /etc/fstab that aren’t mounted should be shown in Places View sidebar or not. This option should be not present in the Preferences dialog the same as ‘advanced_mode’ one. Defaulted to true therefore default behavior is the same as before.
Context Menu on folder now available by Ctrl+Menu keypress while the selection context menu is available by Menu (or Shift+F10) keypress.
Implemented reordering bookmarks in Places View via context menu.
Greatly improved accessibility on every widget.
Added an option ‘Add to Bookmarks’ into file context menu. Available only if exactly one file is selected and that file is a directory.
Implemented dropping files onto Directory Tree View (sidebar) items.
Added terminal list file. There is no need to add ‘-e %s’ or similar to ‘terminal’ config file statement, it will be ignored from now on but predefined command line options from terminal list file will be used instead.
Added possibility to keep terminal window open after command execution. It depends on chosen terminal though: some terminals allow this (such as xterm, konsole, urxvt) but some doesn’t (lxterminal).
Added optional program name for custom application. If no program name is entered then application’s association with mime type will be not remembered and created application desktop entry file will be removed from user’s applications directory. Otherwise entered name will be shown in list of applications for that mime type instead of file name (that was old behavior).
New class FmTemplate for full templates support. Templates support also added into folder context menu replacing old hardcoded menu for the Empty Text File and Shortcut. To be more lightweight it is created once per folder view and isn’t updated if user added or removed some template while the view window is still opened. If this will cause any inconveniences this behavior may be changed but that will make the folder context menu less lightweight to appear.
Added ‘only_user_templates’ option into config file, defaulted to false, which defines whether only user defined templates should be shown in the folder context menu or system defined should be shown too.
Added ‘template_run_app’ option into config file, defaulted to false, which defines whether default application for appropriate MIME type should be ran after successful creation of file from template. There is also button in the dialog to change this default per creation.
Added ‘template_type_once’ option into config file, defaulted to false, which defines two modes for templates appearance. If this option is set to false then only those duplicates will be ignored which have the same file name, and label in popup list will be set to template file name without last suffix. If this option is set to true then only one template of each MIME type will be shown, it will have label from MIME type description. In both cases if any search directory has desktop entry matching this template (or template itself is defined by the desktop entry file) then value of ‘Name’ from it will override that autogenerated label.
Added a possibility to have tooltips in popups (GTK itself has no such possibility).
Added menu item “Empty File” back into folder context menu.
The ‘no_usb_trash’ option now has default to 1 (true).
Added support to remember columns width for FmFolverView. The columns widths are changeable only in Detailed List View though. Any change in columns layout will emit a “columns-changed” signal so application may connect handler to it and save columns layout into config file.
Implemented columns extension APIs which allows application to add own custom columns into any FmFolderModel – it registers handler for such column and any view which uses the model can use it after that.
Thumbnails loader code moved from libfm-gtk into libfm. Application can use custom image callbacks therefore external thumbnailers can be called independent from application-specific image representation, thumbnail generator will create thumbnail file and that thumbnail will be loaded outside of libfm.
Setting ‘thumbnail_max’ to 0 will mean unlimited size from now on.
Added file properties dialog extension API. Application can add own handler to modify file properties dialog for certain MIME type files.
Implemented file properties dialog extension for desktop entry file type – opening file properties dialog for single desktop entry will be extended by third tab (‘Desktop Entry’) with few desktop entry properties such as command to execute. Icon also becomes clickable (and focusable as well, can be activated by Space key when focused), activation will present icon choose dialog. The implementation was partially taken from LXShortcut utility. Icon change dialog is also available for any single file which allows icon change.
Disallowed default desktop path (by fm_path_get_desktop()) to be equal to home directory since it may be too dangerous. If it is set to home directory then it will be shifted to ~/Desktop.
Added ‘shadow_hidden’ option into config file, defaulted to false, which allows icons of hidden files to be shadowed in view.
Added GFileMonitor implementation for menu:// VFS.
The ‘Permissions’ tab in the file properties dialog will be hidden if permissions (owner/group and access flags) aren’t available to get for the selected file(s).
Added file operations for menu:// VFS, therefore any application which uses libfm can do desktop menu editing.Supported operations are now:
– create new application in any menu folder;
– change some application properties (contents of desktop entry);
– delete some application from menu;
– move the application from some menu folder to another one;
– create new folder in the menu (it is hidden initially);
– delete some folder from the menu.
Folder creation and deletion operations are disabled if used with libmenu-cache older than 0.5.0 because you cannot see hidden folders with older libmenu-cache and therefore you cannot see newly created folder too (empty folders are hidden from menu in accordance with XDG menu specification).
New class FmXmlFile which is simple container which allows to load
and parse XML text, do desired changes, and finally compose
changed data into XML text back. It has very few simplifications:
– only UTF-8 encoding is supported;
– no user-defined entities (those should be converted externally);
– processing instructions, comments and the doctype declaration are parsed but are not interpreted in any way.
Added one more library: libfm-extra. It contains only FmXmlFile for now. The purpose for separated library is that it can be used where libfm cannot be – for example in menu-cache utilities. This library can be compiled separatedly from other libraries, use the configure script option –with-extra-only for that.
Implemented support for hidden menu applications and folders. Those are visible in folder view only when ‘Show hidden’ is on. This will work only with libmenu-cache 0.5.0 or newer.
Default behavior of drag and drop files on desktop is changed: if file dropped to desktop is some remote URI (a web link for example) then shortcut will be created; if file is a file under home directory (so it is most likely some special directory and should be never moved) then a symlink will be created; otherwise the file will be copied or moved as usual. This “smart link” behavior is applied only if option ‘drop_default_action’ is set to ‘auto’.
Added ‘smart_desktop_autodrop’ option into config file to enable or not abovementioned “smart link” behavior. Its default is true to protect inexperienced users, the old behavior can be returned by setting this option to false.
Implemented creating shortcuts (desktop entries with Type=Link) so it is possible now to drop a link from browser to desktop, for example, and that link will be opened with default browser when you click on it. And you can edit display name and icon of created shortcut to your preference.
Added basic support for detecting target type of shortcuts. If type of target content cannot be determined then content type of shortcut will be set to “inode/x-shortcut”.
Added APIs to test possibility and change display name, icon, “hidden” attribute of file, and target of shortcut.
File name is shown if file properties dialog window along with display name if it is different from displayable one.
If access or modification time aren’t available for the file then they will be not shown instead of stupid “01 Jan 1970” date.
File can be renamed in the file properties dialog now. The entry will be disabled if target file system doesn’t support file renaming.
The “link” icon mark in left upper corner of icon is shown on shortcuts the same way as it is shown for symlinks. It is reasonable since any shortcut is the same thing – link to another resource.
New interface for loadable modules (plugins). Modules can be made by third party as well. Modules will be loaded on first demand and never reloaded so if you add or remove some module then you have to restart your application.
Added ‘modules_blacklist’ option into config file to disallow certain modules to load. The wildcard char ‘*’ is allowed and matches any number of characters. To match ‘*’ itself it should be escaped with two backslashes (\\), due to key file format. The option is a string list, each string may be just a type to blacklist, or type mask and name mask, divided by a colon (:).
Added ‘modules_whitelist’ option into config file as a exceptions list from the ‘modules_blacklist’ option. Format is the same.
– gtk_menu_scheme (GTK context menu extension for URI scheme)
– gtk_menu_mime (GTK context menu extension for file MIME type)
Moved all VFS into loadable modules.
Moved desktop entry file properties extension into loadable module.
Rewritten context menu creation with loadable modules. Loadable modules have key either URI scheme, or MIME type.
Customized Trash Can context menus with separate module.
Added test if the directory is read-only and update context menus appropriately.
FmPathEntry shows real display name now instead of forged UTF-8 one. It is more logical if we enter directory “Multimedia” and end up in the “Multimedia” rather then in “AudioVideo”. It works for entry path and for path completion as well (naturally, it was impossible before).
The fm_path_display_name() API now returns real display name in most of cases instead of forged UTF-8 one.
Added ‘defer_content_test’ options into config file which defined if deferred content type test should be applied. Deferred content type test means the MIME type and icons of FmFolder items will be based only on file name for native files but their actual content will be tested later, after signal “finish-loading” was already emitted. If verified content type differs from early estimation then the signal “files-changed” will be emitted later. If option ‘defer_content_test’ is unset then old behavior (emit “finish-loading” only after all the info is retrieved) will happen.
The option ‘drop_default_action’ is saved in more portable way – not the number but text. Therefore if that list will be ever changed then it will be still accepted by libfm right way.
Added support for ‘hidden’ file attribute into file context menu and file properties dialog.
Added options ‘SortIgnoreCase’ and ‘MingleDirs’ into folder context menu.
The FmIcon class is implemented using GIcon instead, greatly reducing number of APIs used for cached icons support.
Implemented extensions for context menu on Sidebar items, similar to those that are done for FmFileMenu or FmFolderMenu. Application must remember file on which menu was activated and use it in own callback if it was activated.
Disabled attempt to drop files into folders on read-only file system.
The item “Delete” in context menu now changes appearance between Trash and Remove in dependency if Shift key is pressed.
Implemented little popup menu if option ‘drop_default_action’ is set to ‘ask’ – it shows ‘Copy’, ‘Move’, ‘Link’, and ‘Cancel’ choices when some files are dropped onto widget controllable by libfm drag&drop.
Added support for + drop: it will show the abovementioned menu with choices.
Allowed dropping file into the same directory if ‘drop_default_action’ is set to ‘ask’ – it shows ‘Link’ and ‘Cancel’ choices therefore it is possible to create symbolic link onto the file by drag&drop.
If last access right change time is available for file then it will be shown in the file properties dialog.
Broken symlinks are shown with appropriate icon “dialog-warning”.
Added API to suspend execution of running FmJob. This API applied to progress dialog therefore it will be possible to pause and resume any file operations jobs in middle. This may be useful in some cases.
Added ‘list_view_size_units’ option into config file, unset by default, if set then defines which units will be used in the Size column in Detailed List View mode, similar to those used in ‘du’ Unix utility: ‘h’ for ISO units, ‘H’ for SI units, ‘k’ for KiB, ‘m’ for MiB, ‘g’ for GiB, ‘K’ for kB, ‘M’ for MB, ‘G’ for GB. If not set then default mode (by ‘si_unit’ config option) will be used.
Added ‘quick_exec’ option into config file, false by default. If set to true then libfm-gtk will not ask for options on launching executable file but will do default action: run in terminal for any executable script or run directly for other executable files.
Implemented hiding items in Places View (Applications, Trash Can, etc.) if appropriate support is missing (no GVFS support or no module).
Implemented advanced version of lxshortcut application as one more tool based on libfm-gtk.
Sealed all the private data in objects. Applications should exclude use of sealed data and use accessor functions instead. For old code the workaround may be used – define FM_DISABLE_SEAL in compiler options.
Added ‘format_cmd’ option into config file. If set then “Format volume” option will appear on local non-mounted volumes which allows user to reformat USB stick for example. The example of setting for the option is “/usr/lib/gnome-disk-utility/gdu-format-tool -d”, that will call well known component of Gnome Disk Utility.
Implemented internal workaround for GIO inotify delay – operations with files are reflected in view instantly now, without delay of 1 second.
Added new class FmMenuToolItem – simplified GtkMenuToolButton with only menu button arrow without button that it is bound to.
Applied common human interface guidelines to capitalization of strings. Changed some names that might be ambiguous: ‘Computer’ to ‘Devices’.
Added new object FmFolderConfig for abstract access for folder-specific configuration values as key/value pairs (similarly to GKeyFile).
Added support for adding an optional icon in FmTabLabel before the text in the label.
New API fm_side_pane_set_show_hidden() for change visibility of hidden file in side pane (if the mode supports that).
Implemented support for hidden files in FmDirTreeModel.
Implemented more flex access to FmSidePane modes to allow extensions in the future.
Added option ‘Copy Path(s)’ into selection context menu to allow user copy text representation of path(s) as simple text list delimited by newline into the clipboard.
Changed search:// paths delimiter to be ‘,’ instead of ‘:’.
Corrected strings in the application chooser dialog.
Config file isn’t enforced to be rewritten anymore when fm_finalize() is called. The application should control that process instead. This will speed up application termination because when config is changed then the application will save config. Doing it on exit is a plain waste of resources: we rewrite what is already written but spend both CPU and disk I/O on it.
Press in FmPathEntry in case if completion ended in single match will append a slash to the completed directory name.
New API fm_side_pane_set_home_dir() for change the directory path which will be used on activating ‘Home’ item in side pane.
New API fm_folder_view_scroll_to_path() to scroll folder view to some path and optionally focus it.
If files that file properties dialog is open for contain a directory then file properties dialog will show file counting progress with total number of files involved.
Added new built-in column in FmFolderModel – Extension (last suffix of the displayable name) as alternative to file type for some old-style users.
Search dialog options are remembered now between searches. Search path and ‘Properties’ tab are not saved though.
Added fallback icons for folder and file in case if no usable theme was set in user GTK environment.
An unusual update. Andriy posted a note to the pcmanfm development list about the upcoming release of PCManFM and libfm components. He has been hard at work closing bugs and adding features and in hopes to release in time for the next Ubuntu freeze we’ve now entered soft string freeze. This means that no new features will be added and most strings are stable enough to be translated. In about two weeks a solid freeze happens and no strings will change (hopefully we’ve found all hard to translate cases by then). If you want to help test drive the new code (build from source: pcmanfm-1.2.0-beta1.tar.xzlibfm-1.2.0-beta4.tar.xz) or add to the translation effort we do welcome that.
If nothing very evil happens a new and shiny PCManFM 1.2.0 will be out early February.