Build LXQt From Source

From LXDE.org
(Redirected from Build LXDE-Qt From Source)
Jump to: navigation, search

This site is outdated. Please visit the new wiki

Introduction

Since the original LXDE and razor-qt projects decided to merge the effort and work together on the same project, we formed lxqt. Here is a guide for the brave to build lxqt from git source code. Please note, since this is a work in progress, things are subject to frequent changes. So be prepared and don't expect too much. Things will improve, but it takes time. :-)

Get Qt5

If your Gnu/Linux distribution offers Qt5-packages, it could nevertheless be necessary to use the official Qt5 installer from the Qt-website. Some Lxqt-packages use private header files which are shipped with the official installer but not included in the packages offered by the distribution (tested with Ubuntu).

To install Qt5, get the installer package from http://www.qt.io/download-open-source/, run it and install it at any location. Then, you have to include the qmake binary in your path. Then, cmake can query the qmake binary for the location of the header-files and libs. For example, you could append

export PATH=[path-to-Qt-bin]:$PATH

to your ~/.bashrc.

Get the source code from git

git clone https://github.com/lxde/lxqt
cd lxqt
git submodule init
git submodule update
git submodule foreach git checkout master
git submodule foreach git pull --rebase
  • To build all of the code at once, you may optionally use the build_all.sh script:
LXQT_PREFIX=/usr ./build_all.sh
  • If your distro is 64 bit and it installs libraries to lib64 rather than lib, try LIB_SUFFIX=64 environment variable. The script is a quick and simple hack and may not work correctly. Building all of the components manually is safer at the moment.

Qt4 support

Qt4 support is now limited to libqtxdg only

  • cmake >= 2.8.11
  • pass -DUSE_QT4=ON flag to cmake to turn on Qt4 support

LLVM/Clang

To build with LLVM/Clang (the default compiler of FreeBSD), you need to do this.

cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang ..

These two cmake parameters can be used to override the default detection of compilers.


Build the base libraries

mimetypes (Qt4 Only)

  • Mimetypes provider for the Qt4 build of libqtxdg
  • Prerequisite: qt >= 4.7.2
  • Build:
cd mimetypes
qmake
make
sudo make install
  • This library is only needed for the Qt4 build.

libqtxdg

  • Library providing freedesktop.org specs implementations for Qt.
  • Prerequisite:
    • for Qt4: cmake >= 2.8.11, qt >= 4.7.2 and QtMimeTypes,
    • for Qt5: cmake >= 2.8.11 and qt >= 5.3.0.
  • Export USE_QT4 with ON or OFF, as you wish
  • Build: see below.
mkdir build
cd build
cmake ..
make
sudo make install

liblxqt

  • Common base library for most lxqt components
  • Prerequisite: cmake >= 2.8.11, qt >= 5.3, KWindowSystem, libqtxdg
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

liblxqt-mount

  • Library used to manage removable devices
  • Prerequisite: cmake >= 2.8.11, qt >= 5.3, liblxqt
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxqt-globalkeys

  • Daemon and library for global keyboard shortcuts registration
  • Prerequisite: cmake >= 2.8.11, qt >= 5.3, liblxqt, KWindowSystem
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxqt-notificationd

  • Notification daemon and library
  • Prerequisite: cmake >= 2.8.11, qt >= 5.3, liblxqt, KWindowSystem, Xlib
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

libsysstat

  • Library used to query system statistics (net status, system resource usage, ...etc)
  • Prerequisite: cmake >= 2.8.11, qt >= 5.3
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

menu-cache

  • Prerequisite: automake >= 1.9, pkg-config, libglib >= ?, gtk-doc, libfm-extra
  • For menu-cache and libfm, we have a circular dependency: menu-cache depends on libfm-extra which is installed with libfm while libfm depends on menu-cache. To solve this issue, you can build and install libfm-extra only, see libfm-extra_only.
  • Build:
./autogen.sh
./configure
make
sudo make install
sudo ldconfig

libfm-extra only

  • In directory libfm
  • Build:
./autogen.sh
./configure --with-extra-only --sysconfdir=/etc
make
sudo make install
sudo ldconfig

libfm

  • Prerequisite: automake >= 1.9, intltool, gtk-doctools, pkg-config, glib >= 2.16, libexif (for thumbnails), menu-cache >= 0.5, valac >= 0.14 (optional, for actions support, only needs for build and has no runtime dep)
  • Build:
./autogen.sh
./configure --without-gtk --sysconfdir=/etc
make
sudo make install
sudo ldconfig
  • Notice
    • You may have to use --sysconfdir=/etc for some systems (such as Linux); otherwise config files will be install to /usr/local/etc by GNU automake.
    • The flag --without-gtk is also required here since we don't need to build libfm-gtk library.
    • If you install menu-cache in /usr/local, do this prior to running configure
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
  • Special configure flags:
    • --enable-debug: (add -g -O0, and other compiler flags required for debugging, disable optimization and generate debug symbols)
    • --enable-demo: also build a small demo program libfm-demo for testing libfm.
  • Runtime dependencies:
    • gvfs (optional, trash can, remote filesystem mounting, and volume management requires gvfs)
    • lxmenu-data (optional, required for menu://application to work, if you have gnome-menus package or other application menu definition files installed, this is not needed).

Build major components

lxqt-panel

  • Desktop panel
  • Prerequisite: cmake >= 2.8.11, qt >= 5.3, libqtxdg, liblxqt, KWindowSystem, KGuiAddons, libkf5solid, lxqt-globalkeys, liblxqt-mount (mount plugin), Xlib, libsysstat, libdbusmenu-qt5, xcb-util, xcb-damage
  • Optional dependencies: libstatgrab (CPU Load Plugin and Network Monitor Plugin), libicu (Weather Plugin), alsa or pulseaudio (Volume Plugin), lm-sensors (Sensors Plugin), menu-cache
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

pcmanfm-qt

  • file manager + desktop manager
  • Prerequisite: libfm >= 1.2, menu-cache >= 0.4, qt >= 4.6, cmake >= 2.8.11, pkg-config, xcb
    • If you install menu-cache or libfm in /usr/local, do this prior to running cmake
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig

Notice: PCManFM-Qt package also install a companion library, libfm-qt, which is the Qt binding of libfm.

lxqt-session

  • session manager
  • Prerequisite: qt >= 5.3, cmake >= 2.8.11, KWindowSystem, liblxqt, Xlib, libudev
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxqt-runner

  • Launch applications quickly by typing commands
  • Prerequisite: qt >= 5.3, cmake >= 2.8.11, liblxqt, KWindowSystem, lxqt-globalkeys, menu-cache
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxqt-qtplugin

  • LxQt platform integration plugin for Qt5 (let all Qt programs apply LxQt settings)
  • Prerequisite: qt >= 5.3, cmake >= 2.8.11, liblxqt
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxqt-policykit

  • Policykit authentication agent
  • Prerequisite: qt >= 5.3, cmake >= 2.8.11, liblxqt, libqtxdg, polkit-qt
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxqt-powermanagement

  • Daemon use for power management and auto-suspend
  • Prerequisite: qt >= 5.3, cmake >= 2.8.11, xcb, x11-xcb, xcb-screensaver, xcb-dpms, libkf5solid, liblxqt
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lximage-qt

  • Image viewer
  • Prerequisite: pcmanfm-qt >= 1.2 (will be used for thumbnail generation and others), qt >= 5.3, cmake >= 2.8.11, pkg-config, libexif
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxqt-config

  • System configuration (control center)
  • Prerequisite: qt >= 5.3, cmake >= 2.8.11, KWindowSystem, Xlib, liblxqt, libqtxdg
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxqt-config-randr

  • Simple monitor configuration
  • Prerequisite: qt >= 5.3, cmake >= 2.8.11, Xlib, Xrandr
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

obconf-qt

  • Window manager configuration (for Openbox)
  • Prerequisite: qt >= 4.6, cmake >= 2.8.3, pkg-config, openbox development libs
  • If you want to use Qt5, run "export USE_QT5=ON" before you call "cmake ..". If you have already called "cmake ..", cmake will cache that you use Qt4. Then, you can remove and recreate the "build"-directory.
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

compton-conf

  • X composite manager configuration (for compton)
  • Prerequisite: qt >= 4.6, cmake >= 2.8.3, pkg-config, libconfig
  • Runtime dependency: compton (running with dbus support turned on)
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxqt-about

  • About dialog for lxde-qt
  • Prerequisite: qt >= 5.3, cmake >= 2.8.11, liblxqt
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

Install data files

lxqt-common

  • Common data file required for running an lxde-qt session
  • Prerequisite: cmake >= 2.8.11
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxmenu-data

  • Data files for application menu
  • Prerequisite: automake >= 1.9
  • Build:
./autogen.sh
./configure --sysconfdir=/etc
make
sudo make install
  • Note: on some other distros, xdg config dir is not /etc/xdg, then pass appropriate --sysconfdir to the configure script according to the OS you use.

Deprecated components

The following components were used in LXQt previously. They still work now, but they might not get future update.

lxqt-openssh-askpass

  • Tool used with openssh to prompt the user for password (DEPRACATED)
  • Prerequisite: qt >= 5.3, cmake >= 2.8.11, liblxqt
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxinput-qt

Now, lxinput-qt is merged to lxqt-config.

* Keyboard and mouse configuration

  • Prerequisite: qt >= 4.6, cmake >= 2.8.3, Xlib, pkg-config
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxqt-appswitcher

  • Applications switcher
  • Prerequisite: qt >= 4.6, cmake >= 2.8.9, liblxqt, lxqt-globalkeys, libX11
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install

lxqt-lightdm-greeter

  • lxde-qt front-end for lightdm
  • Prerequisite: qt >= 4.6, cmake >= 2.8.9, liblxqt
  • Build:
mkdir build
cd build
cmake ..
make
sudo make install
  • Configure: Open /etc/lightdm/lightdm.conf in an editor (with root privileges - eg. sudo vim /etc/lightdm/lightdm.conf) and make the 'greeter-session' line in the SeatDefaults section look like:
greeter-session=lxqt-lightdm-greeter

After restarting lightdm the greeter should show up.

List of external dependencies

For the build process of the Lxqt components, you need a few external dependencies installed on your machine. In general, Google is your friend. Installed packages are checked by cmake itself or via pkg-config. For the cmake-search, you can feed google with PackagenameConfig.cmake. For pkg-config, you could use packagename.pc. (This method worked very well on Ubuntu.)

If I have not missed any of the external dependencies, here is the list of the package names for Ubuntu (maybe the packages have similar names for different distributions?):

  • alsa -> libasound2-dev
  • automake -> automake
  • gtk-doc -> gtk-doc-tools
  • KF5GuiAddons -> libkf5guiaddons-dev
  • KWindowSystem -> libkf5windowsystem-dev
  • libconfig -> libconfig-dev
  • libdbusmenu-qt5 -> libdbusmenu-qt5-dev
  • libexif -> libexif-dev
  • libkf5solid -> libkf5solid-dev
  • libstatgrab -> libstatgrab-dev
  • libudev -> libudev-dev
  • lm-sensors -> libsensors4-dev
  • openbox development libs -> openbox-dev
  • Polkit-Qt -> libpolkit-qt5-1-dev && libpolkit-agent-1-dev
  • pulseaudio -> libpulse-dev
  • valac -> valac
  • xcb -> ?
  • xcb-damage -> libxcb-damage0-dev
  • xcb-dpms -> libxcb-dpms0-dev
  • xcb-screensaver -> libxcb-screensaver0-dev
  • xcb-util -> libxcb-util0-dev


Debian

For any Debian version, first enable the experimental repos by adding them to /etc/apt/source.list. Then, copy paste this in terminal :

sudo apt-get -t experimental install libasound2-dev gtk-doc-tools libkf5guiaddons-dev libkf5windowsystem-dev libconfig-dev libdbusmenu-qt5-dev libexif-dev libkf5solid-dev libstatgrab-dev libudev-dev libsensors4-dev openbox-dev libpolkit-qt5-1-dev libpolkit-agent-1-dev libpulse-dev valac xcb libxcb-damage0-dev libxcb-dpms0-dev libxcb-screensaver0-dev libxcb-util0-dev

You can also get the latest qt5 (list to complete): sudo apt-get -t experimental install qt5-default qt5-qmake

openSUSE

On openSUSE you have to install the following development packages: zypper in libqt5widgets-devel libQt5DBus-devel libQt5xml-devel libQt5concurrent-devel libqt5-qtx11extras-devel libqt5-linguist-devel liblxqt-devel libqt5-qtbase-private-headers-devel

Funtoo / Gentoo

On *ntoo you have to emerge: emerge -a kwindowsystem kguiaddons liboobs polkit-qt qtsvg qtscript qtprintsupport libconfig