A small, configurable console text editor.

Keywords: c, console, ctags, curses, customizable, easy, editor, emacs, gpl, gplv2, minimal, ncurses, syntax highlighting, terminal, text, text editor


A small and easy to use console text editor.


  • Multiple buffers/tabs
  • Unlimited undo/redo
  • Regex search and replace
  • Syntax highlighting
  • Customizable color schemes
  • Customizable key bindings
  • Support for all xterm Ctrl/Alt/Shift key codes
  • Command language with auto-completion
  • Unicode 12.1 compatible text rendering
  • Support for multiple encodings (using iconv)
  • Jump to definition (using ctags)
  • Jump to compiler error
  • EditorConfig support


dte screenshot


dte can be installed via package manager on the following platforms:

OS Install command
Debian Testing apt-get install dte
Arch Linux (AUR) $AUR_HELPER -S dte
Void Linux xbps-install -S dte
FreeBSD pkg install dte
OpenBSD pkg_add dte
NetBSD (pkgsrc) pkg_add dte
OS X (Homebrew) brew tap yumitsu/dte && brew install dte
Android (Termux) pkg install dte


To build from source, first install the following dependencies:

...then download and unpack the latest release tarball:

curl -LO
tar -xzf dte-1.9.1.tar.gz
cd dte-1.9.1

...and compile and install:

make -j8 && sudo make install


After installing, you can access the documentation in man page format via man 1 dte, man 5 dterc and man 5 dte-syntax.

Online documentation is also available at


Installation variables:

The following Make variables may be useful when packaging dte:

  • prefix: Top-level installation prefix (defaults to /usr/local).
  • bindir: Installation prefix for program binary (defaults to $prefix/bin).
  • mandir: Installation prefix for manual pages (defaults to $prefix/share/man).
  • DESTDIR: Standard variable used for staged installs.
  • V=1: Enable verbose build output.

Example usage:

make V=1
make install V=1 prefix=/usr DESTDIR=pkg

Other variables:

There are some other variables that may be useful in certain cases (but typically shouldn't be used for general packaging):

  • TERMINFO_DISABLE=1: Use built-in terminal support, instead of linking to the system terminfo/curses library. This makes it much easier to build a portable, statically linked binary. The built-in terminal support currently works with tmux, screen, st, xterm (and many other xterm-compatible terminals) and falls back to ECMA-48 mode for other terminals.
  • ICONV_DISABLE=1: Disable support for all file encodings except UTF-8, to avoid the need to link with the system iconv library. This can significantly reduce the size of statically linked builds.
  • BUILTIN_SYNTAX_FILES: Specify the syntax highlighters to compile into the editor. The default value for this contributes about 100KiB to the binary size.

Example usage:


Persistent configuration:

The above variables can also be configured persistently by adding them to a file, for example:

prefix = /usr
mandir = $(prefix)/man
V = 1

The file should be in the project base directory alongside GNUmakefile and must be valid GNU make syntax.

Stable release tarballs:

The releases page contains a short summary of changes for each stable version and links to the corresponding source tarballs.

Note: auto-generated tarballs from GitHub/GitLab can (and do) change over time and cannot be guaranteed to have long-term stable checksums. Use the tarballs from the releases page, unless you're prepared to deal with future checksum failures.

Desktop menu entry:

A desktop menu entry for dte can be added by running:

make install-desktop-file

Any variable overrides specified for make install must also be specified for make install-desktop-file. The easiest way to do this is simply to run both at the same time, e.g.:

make install install-desktop-file V=1 prefix=/usr DESTDIR=PKG

Note: the install-desktop-file target requires desktop-file-utils to be installed.


Copyright (C) 2017-2019 Craig Barnes.
Copyright (C) 2010-2015 Timo Hirvonen.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2, as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License version 2 for more details.

Project Statistics

Sourcerank 3
Stars 13
Forks 0
Open issues 21
Dependencies 0
Tags 13
Last updated

Recent Tags See all

v1.9.1 September 29, 2019
v1.9 September 21, 2019
v1.8.2 April 23, 2019
v1.8.1 April 22, 2019
v1.8 April 18, 2019
v1.7 May 08, 2018
v1.6 December 20, 2017
v1.5 November 03, 2017
v1.4 October 16, 2017
v1.3 August 26, 2017
v1.2 July 30, 2017
v1.1 July 29, 2017
v1.0 April 28, 2015

Something wrong with this page? Make a suggestion

Last synced: 2019-11-04 08:12:27 UTC

Login to resync this repository