LucED - The Lucid Editor
Home |  Screenshots |  License |  Documentation |  Contact

Table of Contents


LucED is an open source text editor with a graphical X11 user interface. Although the project has not published any official releases so far, you are welcome to play around with the current source code.

The principal aim of the LucED project is to develop a text editor with the following features:

  • A simple and minimalistic, but powerful user interface that is similar to the NEdit text editor, but does not depend on Motif
  • Fast and responsive user interface: e.g. syntax highlighting is done in the background and does not freeze the user interface, special handling to achieve fast keyboard repeat rates
  • No dependencies on high-level widget toolkits in order to minimise the requirements for the runtime system to support old systems and slow network connections

The following features are already imlemented:

  • Embedded Lua programming language for scripting and configuration
  • Syntax highlighting configurable via PCRE regular expressions, similar to the NEdit syntax highlighting but with the enhancement to use arbitrarily nested patterns
  • Full unicode support (works with UTF-8 internally)

Up to now, LucED doesn't have a menu bar or a file selector... so the intended audience are users working with the commandline ;-)


LucED - The Lucid Editor - is copyrighted by Oliver Schmidt and is licensed under the terms of the GNU General Public License Version 2 (see the files editor/COPYRIGHT and editor/LICENSE).

LucED contains modified software from the following projects:

  • Lua - a powerful, fast, lightweight, embeddable scripting language - is copyrighted by, PUC-Rio and is licensed under the terms of the MIT License (see the file lua/COPYRIGHT).

  • PCRE - Perl Compatible Regular Expressions - is copyrighted by the University of Cambridge and is licensed under the terms of the BSD Licence (see the file pcre/LICENCE).

  • LPeg - Parsing Expression Grammars For Lua - is copyrighted by, PUC-Rio and is licensed under the terms of the MIT License (see the file lpeg/LICENCE).

  • lposix - a POSIX library for Lua - has been placed in the public domain by its author (see the file lposix/LICENCE).

Installing an official release

Official LucED releases will be distributed as tar.gz archives, based on the widely used GNU autotools build system.

The tar.gz archive should not be used for development purposes, because it contains generated C++ code.
For development purposes a checked out git repository should be used (see section Building in a development sandbox).


The following software must be installed:

  • tar program, e.g. GNU Tar
  • gunzip program, e.g. GNU Gzip
  • sh standard shell, e.g. GNU Bash
  • Any make program that is supported by the GNU autotools, e.g. GNU Make
  • C++ compiler , e.g. gcc version 3.4 or higher
  • libX11 with development headers
  • libxpm with development headers (optional)
  • libiconv with development headers (optional), e.g. GNU libiconv
  • traditional X11 bitmap fonts, package name depends on distribution, e.g. xfonts-75dpi

Build instructions

If for example the tar.gz file has name luced-0.01.tar.gz, you can build and install LucED with the command sequence:

   gunzip luced-0.01.tar.gz
   tar xf luced-0.01.tar
   cd luced-0.01
   sudo make install-strip

Configure options

When invoking the command ./configure, the configure script tries to figure out build options for the underlying operating system. This process can be influenced by passing some of the following commandline options to the configure script:

  • --disable-xpm disables the usage of libxpm for displaying icons. This can improve performance on slow connections.

  • --disable-iconv disables the usage of libiconv for transforming character encodings. If libiconv is disabled, LucED only knows UTF-8 and ISO-8859-1 encoding.

  • --enable-debug enables various runtime checks for debugging purposes. This can slow down performance but makes it easier to track errors, since a detected programming error will abort the program immediately.
  • --prefix=PREFIX is a generic configure option to determine, where the files are to be installed (default for PREFIX is: /usr/local). The LucED program is then installed under PREFIX/bin/luced.

The configure script has a lot of more generic commandline options. As usual, you may invoke

   ./configure --help

to get a list of all commandline options that can be passed to the configure script.

Building in a development sandbox

For development purposes, LucED should be build within a checked out Git repository.

In this case the GNU autotools are only used for finding the system configuration with autoconf (and for building the release tar.gz archive), the build process itself is based on hand-written Makefiles.


The following software must be installed, if you want to build LucED within a checked out Git repository:

Check out Git repository

You can get the latest source code from the github repository.

   git clone git://
   cd luced 

Build instructions

Try the following commands for building LucED:

   cd editor

Local build adjustments can be done in the file, to override settings of the Makefile.

For building a debug executable, the file should contain the following line:


Configure options can also be placed in the file, e.g.:

   CONFIGURE_OPTS := --disable-xpm

Example: Compiling with the clang compiler:

   CONFIGURE_OPTS := CC=clang CXX=clang++

Build a distributable tar.gz archive

Build a distributable tar.gz ball with the following commands:

   make release
   cd release
   make dist

This will build a standard source tar.gz ball that can be installed with the notorious command sequence:

   make install

This tar ball should not be used for development purposes, because it contains generated C++ code.
For development purposes a checked out git repository should be used.

Build problems

Compilation has been tested with gcc versions 3.4, 4.1, 4.2, 4.3, 4.4 and clang version 2.9 (clang version 2.8 compiles, but generates incorrect exception handling code).

There may be problems with some C++ compilers, that do not fully support C++ templates.

If you have any problems, please contact the author via email: oliver at luced dot de.

Program invocation

To open the file test.txt simply type:

   luced test.txt

For less typing, the author recommends to create a shell alias or a symbolic link to type lc instead of luced, e.g.

   alias lc=luced

LucED doesn't have a file selector, every file must be opened through the shell command line. To create a new file, simply invoke LucED with the desired name of the new file.

If the current directory and the home directory both have no directory named .luced, a default .luced configuration directory is written on program invocation in the home directory.

Environment variables

LucED evaluates the following environment variables:

  • HOME to find out, where the default config directory .luced is to be found.

  • LUCED_CONFIG_DIR to override the default config directory $HOME/.luced.

  • LUCED_DEFAULT_ENCODING to override the system's default character encoding.

  • LUCED_INSTANCE to invoke LucED with a specific instance name if no instance name is given as the commandline argument.

Commandline options

The following options can ba passed (both short and long forms are possible):

  • -i, --instance to determine the LucED instance name. The following argument parameter must be the desired instance name.

  • -ns, --no-server to start LucED as foreground process without considering or launching a background server process.

  • -e, --encoding to determine the encoding for the next file name on the commandline. The following commandline argument must be the name of the desired encoding.

  • -qs, --quit-server to shut down a running server instance from the commandline.

  • -cdc, --clone-default-config to clone the built-in config package default in the LucED config directory.


   luced -i TEST test1.txt -e latin1 test2.txt test3.txt

invokes LucED with instance name TEST, files test1.txt and test3.txt with default encoding and file test2.txt with Latin-1 character encoding. If no instance with name TEST exists, a background LucED server process with this instance name is started. If the named LucED server instance exists, the commandline arguments are passed to this instance. If a desired file is already loaded, the corresponding window is raised (the option -e is ignored in this case).


   luced --clone-default-config

clones the default config package and gives e.g. the following output message:

   [luced]: Cloned default config package to /home/oliver/.luced/default-1

this can be useful to edit or to examine the built-in config files of the default package.

unless otherwise stated all material is © 2006-2017 by Oliver Schmidt