This is an old revision of the document!


Migrate from FLWM to LXDE

FIXME This page is being over-hauled as of 20180710 with a slightly changed focus.

LXDE is a Desktop Environment based on the OpenBox Window Manager. It includes, among other things, a comfortable panel and a set of helper applications, the most prominent being it's file manager PCManFM and editor Leafpad.

The full of LXDE desktop environment does not work out of the box on dCore. Among many other things, it conatins session management tools which are unnecessary on dCore and even cause trouble. The approach chosen here is to create a functionally equivalent set-up by adding the necessary tools from LXDE to a regular Openbox environment. A bonus will be that the mechanisms for dealing with OnDemand applications will work nicely with dCore.

Version

These instructions are known to work on …

  • dCore-bionic64 — sm8ps 2018/07/10

Older version are available for …

Installing

We shall split the installation into two extensions; the base packages shall be loaded upon boot whereas additional tools shall be made available on demand. The distinction depends on personal taste and so one may want to include frequently used or even all packages into the base extensions. Optionally, the selection of tools may be split in two separate extensions.

For Ubuntu, create a list file 'lxde-base-LIST', containing

openbox
obconf
lxpanel

and 'lxde-tools-LIST', containing (cf. https://packages.ubuntu.com/bionic/lxde)

lxterminal
pcmanfm
gpicview
leafpad
lxrandr
clipit

Then sce-import these two extension lists, having the first one depend upon the X-server extension and the latter on the first. Make sure that the entry “lxde-base-LIST” is present in 'tce/sceboot.lst'.

In your boot-loader, adapt the boot-code to “desktop=openbox”.

First run

Setting the desktop boot-code to the start-command “startlxde” will boot into a functional LXDE desktop. After some time of use, however, one will recognize that the concept of ondemand-applications is not integrated into the menu system.

This is no big deal, indeed, provided one is willing to load each needed extension from the terminal by 'sce-load'. In the long run, this is getting tiresome, though. Fortunately, getting LXDE to understand the ondemand-concept is simple, thanks to the already existing mechanisms for Openbox.

Re-booting

The *Core exit menu is available via the LXPanel menu under System Tools. Alternatively it can be reached by right-clicking the desktop which opens the Openbox menu. The log-off icon in LXPanel closes the graphical deskop and brings one back to the command line. From there one can reboot or shut down the system by sudo reboot or sudo poweroff, respectively. Notice that 'backup.sh' must be manually invoked beforehand if needed.

Compatibility tweaks

There are several steps necessary in order to make Openbox visible and provide the demanded mechanisms.

Compatibility with FLWM

Wbar, Trayer, setbackground, mouse_config

In case one has followed the instructions for setting up a basic desktop installation, a Wbar window will pop up and possibly Trayer will be running in the background. For the moment, use killall wbar trayer to get rid of them.

dCore sets the desktop background on FLWM through '~/.setbackground', configures the mouse through '~/.mouse_config' and runs any shell script under '~/.X.d/', among others the starter script for Wbar. These scripts are unnecessary as LXDE provides the functionality itself.

Wrap all these up scripts with the following if-clause so that they do not get executed unless FLWM is used.

#!/bb/sh 
if [ $(cat /etc/sysconfig/desktop) = flwm ] 
then 
        <original script>
fi

If one wants to start a terminal by default then the following change in '~/.xinitrc' will work in both situations.

#xterm &
/etc/alternatives/x-terminal-emulator &

Boot-code desktop

Change the boot-code to desktop=openbox and re-boot once so as to have Openbox set up the necessary configuration files. The desktop will remain empty but upon right-click, the familiar *Core-menu will show up through which one can reboot.

That boot-code is necessary and will remain in place. Booting into an LXDE-desktop needs to be forced by changing or adding, respectively, the following lines in '~/.xinitrc'.

#"$DESKTOP" 2>/tmp/wm_errors &
startlxde 2>/tmp/wm_errors &

Openbox-menu

The main menu contains settings for the desktop whose extended section allows for having the menu of the window manager show upon (right-)clicking the desktop. This is the key for making ondemand-applications available through Openbox.

In its standard setting, that menu does not contain much. Its content is defined in the file '~/.config/openbox/lxde-rc.xml'. Search for "<file>" to find the line where the menu-file is included.

    <file>/usr/share/lxde/openbox/menu.xml</file>

Replace that line by the following, including the *Core-menus that have been set up by Openbox.

    <file>/usr/local/tce.openbox.xml</file>
    <file>ondemand.xml</file>
    <file>system-tools.xml</file>
    <file>menu.xml</file>

Take note that the order of these entries matters as far as 'menu.xml' must be the last one!

Usage

After selecting Reconfigure Openbox from the Openbox-menu for a first time, it will show a sub-menu for ondemand-applications afterwards. Selecting any one of them will run the respective script under 'ondemand/' in the tce-folder; its default content being a call to ondemand -e for the selected extension.

For that matter it may be useful to reserve one pixel at some border in order to always have the desktop available even when a window is maximized. This can be set through the Openbox configuration manager from the settings menu.

The menu does not show all installed applications; instead, the list of loaded application will show in the main LXDE-menu which will dynamically update.

In principle, it should be possible to have the Openbox-menu also show the full list of applications (cf. an article from the PCLinuxOS magazine) but this is beyond our scope here.

Comment

The procedure for loading ondemand-applications may seem a bit round-about; however it is more convenient, indeed, than having to load them from the terminal. Of course, one would wish for a fully automated process like for Openbox itself.

Special cases

Some applications do not work well with the default ondemand-script and complain that “neither freedesktop file nor wireless executable exists”. One notable such case is the wireless extension.

Edit the respective file under 'ondemand/' in the tce-folder and make it follow some working procedure. For the case mentioned, the following does work.

#!/bin/sh
sce-load wireless
cliorx sudo wifi.sh

The names of the ondemand-menu entries are taken from the file names under 'ondemand/' which may be chosen at will.

Exit button

The button for log-out provided by LXDE should be replaced by the exit button by *Core. The LXDE log-out dialogue will remain available through the main LXDE-menu.

  • Right-click on the taskbar and choose to add or remove panel items.
  • Add an application launch bar and edit its content to be the exit-command from the system tools menu.

One probably wants to delete the application launch bar containing the screen-lock and LXDE-exit buttons.

Localization

LXDE provides a comfortable tool for switching the keyboard layout by one of its panel items called Keyboard Layout Handler. (It is necessary to de-activate its setting “Keep system layouts” before one can configure additional keyboard layouts.)

Thus there is no need to manually call setxkbmap through a file under '~/.X.d/'. Such a file may be wrapped like above to restrict its action to the FLWM-desktop.

However, the file manager PCmanFM (or rather GTK as mentioned in the forum) needs to be explicitly told about filename encoding. Include the following into '~/.profile'.

export G_FILENAME_ENCODING=@locale

Further settings

Some sporadic notes about useful settings for the LXDE-desktop.

LXDE-settings

The LXDE-Openbox Guide is a pretty useful reference for many scenarios.

Openbox settings

Since LXDE is based on Openbox, it may be helpful to consider the Openbox guide by urukrama.

Function keys

LXDE intercepts F11 before any application and interprets it as command to maximize and un-decorate the window. It is more common to have this function key interpreted by the application itself.

The key binding can be changed in '~/.config/openbox/lxde-rc.xml'. Unfortunately the respective section comes as quite an unordered muddle which makes XML particularly hard to read. Nevertheless, the following will lay the binding to Ctrl+Shift+F11 instead. (Searching for “ToggleFullscreen” will get you to the right place.)

<keybind key="C-S-F11"><action name="ToggleFullscreen"/></keybind>

Resource monitor, LXTask

The LXDE-panel provides a resource-monitor add-in which is quite useful by itself. Furthermore, its standard action upon clicking is to launch LXTask which give a quite complete over-view of running processes. It is installed through the lxtask package.

Screen settings and external monitor

The built-in 'lxrandr' does not seem to work on all machines. Occasionally, it only proclaims its inability to find information about the monitor. Arandr is an even better substitute which can be imported and loaded without any issues. It installs an entry in the settings menu.

In case that Lxpanel should become invisible due to different monitor sizes, the main menu can still be accessed by pressing Ctrl+Esc.

If suspending to RAM or disk works then one may want to make it easily available through a panel button. For that matter, one must first create suitable menu entries after which it is a trivial task of adding them to the application starter containing already the exit button.

First, create the directory '~/.local/share/pixmaps/' and download a green and red variant of the original blue icon file for the exit button into it.

Then create two files ~/.local/share/applications/pm-{suspend,hibernate}.desktop with the following content, respectively. Adapt the path if a different user name applies. If applicable, one may want to use pm-suspend-hybrid instead of simple pm-suspend.

[Desktop Entry]
Name=Suspend
Exec=sudo pm-suspend
Icon=/home/tc/.local/share/pixmaps/exittc_red.png
Type=Application
Categories=System;
[Desktop Entry]
Name=Hibernate
Exec=sudo pm-hibernate
Icon=/home/tc/.local/share/pixmaps/exittc_green.png
Type=Application
Categories=System;

LXDE should automatically recognize the changes and show the new menu entries. If not so, then lxpanelctl restart will force the panel to re-read its configuration files.

Disabling the scroll wheel switching desktops

Although strictly speaking an issue of Openbox, this quick guide is included here nevertheless. Scrolling on the desktop with either mouse wheel or (inadvertedly) the touchpad is interpreted as a command to switch desktops. This can be changed by commenting out (enclose by <!– and –>) or deleting the following lines from the section <context name=“Desktop”> of '~/.config/openbox/lxde-rc.xml'.

      <mousebind button="Up" action="Click">                             
        <action name="DesktopPrevious"/>
      </mousebind>                              
      <mousebind button="Down" action="Click">                     
        <action name="DesktopNext"/>
      </mousebind>                                                           

That same action is still available through Alt+scrolling which some may find better suited. Furthermore that action allows for cycling through the desktops without boundaries.

> Return to the dCore Wiki Welcome page

Print/export
QR Code
QR Code dcore:migrating_from_flwm_to_lxde (generated for current page)