A fast and lightweight IDE
C C++ VHDL TeX Objective-C FORTRAN Other
Latest commit 3cf0161 Feb 29, 2016 @techee techee Store "equal" tags into binary trees instead of lists in Symbol tree
At the moment tags with identical names are stored into a linked list in
tags_table and parents_table. This however leads to quadratic complexity
when looking up the nearest parent or tag in tree because the whole list
has to be traversed.

Use binary trees indexed by line number instead of lists so the lookup can
be performed in log(N) time and the overall complexity is N*log(N) instead
of N^2.

The GTree API is a little stupid because during the search it doesn't give
access to the value and it doesn't tell when a leaf node was reached. For
this reason the lookup has to be made in two steps - first, the best line
number is found (returned in user_data) and then a normal search for the
found line number is made to get the value stored in the tree.

This patch fixes the problem described in #577 when e.g. a big json export
file contains many identically named tags.
Failed to load latest commit information.
data Set custom selection color on no-match search entry on GTK2 Jul 16, 2016
doc Added keybinding for Delete from line start to current position Jul 13, 2016
icons icon: regenerate png/ico files based on the svg Apr 12, 2015
m4 Fix check for GtkDoc header generation dependencies Mar 3, 2016
plugins classbuilder: Use .hpp instead of .h for C++ header file extension Apr 30, 2016
po Update Russian translation (#1131) Jul 9, 2016
scintilla plugin api: export scnotification_get_type Jun 22, 2016
scripts scripts/cross-build-mingw.sh: Use newer support libraries with GTK2 Jun 23, 2016
src Store "equal" tags into binary trees instead of lists in Symbol tree Jul 22, 2016
tagmanager api: Annotate element type for TMSourceFile::tags_array Jun 29, 2016
tests Merge pull request #857 from techee/cpp_h Jun 10, 2016
.gitignore Ignore generated doc/doxygen_* files Jul 3, 2016
.travis.yml Install python-lxml on Travis for the GtkDoc header generation Feb 18, 2016
AUTHORS Add Matthew Brush as developer Nov 11, 2011
COMMITTERS Add Colomban to the COMMITTERS list Mar 2, 2011
COPYING Update FSF address Aug 24, 2012
ChangeLog Generate ChangeLog from Git log Jun 17, 2012
ChangeLog.pre-1-22 Concatenate ChangeLog.pre-0-17 and ChangeLog.pre-1-22 Jan 6, 2016
HACKING HACKING: Update instructions to add a tags parser Jun 24, 2016
INSTALL Initial revision Nov 22, 2005
Makefile.am Merge pull request #769 from eht16/drop_waf_build_system Mar 13, 2016
NEWS Post release version bump Jul 10, 2016
README README: Further improve installation instructions Jun 27, 2016
README.I18N Remove leftover references to SVN Jan 9, 2016
README.Packagers Fix typos Jan 3, 2016
README.rst Add a README.rst link for GitHub to know the format and render it Jun 25, 2016
THANKS Fix lost <> inside thanks Feb 18, 2015
TODO Remove GNU regex now we have GRegex Jan 2, 2012
autogen.sh Don't warn about missing configure flags if configure shall be skipped Apr 12, 2012
configure.ac Post release version bump Jul 10, 2016
geany.desktop.in geany.desktop.in: Add Keywords field entry Jun 16, 2016
geany.exe.manifest Post release version bump Jul 10, 2016
geany.gladep Don't regenerate the support.[hc] files, to prevent unnecessary rebui… May 1, 2007
geany.nsi.in Windows installer: Add C runtime libraries to default installation Jul 2, 2016
geany.pc.in Replace references to GTK2 with GTK+ Jul 10, 2015
geany.spec.in Merge pull request #769 from eht16/drop_waf_build_system Mar 13, 2016
geany_private.rc Post release version bump Jul 10, 2016
makefile.win32 Fix strangely undefined GTK for PlatGtk.cxx by moving build dir (#1001) Jan 24, 2015
win32-config.h Post release version bump Jul 10, 2016


Geany - A fast and lightweight IDE


Geany is a small and lightweight integrated development environment. It was developed to provide a small and fast IDE, which has only a few dependencies from other packages. Another goal was to be as independent as possible from a special Desktop Environment like KDE or GNOME. So it is using only the GTK+ toolkit and therefore you need only the GTK+ runtime libraries to run Geany.


The basic features of Geany are:

  • syntax highlighting
  • code completion
  • auto completion of often used constructs like if, for and while
  • auto completion of XML and HTML tags
  • call tips
  • folding
  • many supported filetypes like C, Java, PHP, HTML, Python, Perl, Pascal
  • symbol lists
  • embedded terminal emulation
  • extensibility through plugins

Installation from distribution packages

Using distribution packages on Linux, BSD and similar distributions is the easiest and recommended way. This way you will also benefit from automatic Geany updates by the package manager of the distribution.

Packages are available for most distributions including Debian, Fedora, Ubuntu and many more.

Installation on Mac OSX and Windows

Prebuilt binary packages for Mac OSX and Windows can be found on http://www.geany.org

Installation from sources


For compiling Geany yourself, you will need the GTK2 (>= 2.24) or GTK3 libraries and header files. You will also need its dependency libraries and header files, such as Pango, Glib and ATK. All these files are available at http://www.gtk.org.

Furthermore you need, of course, a C compiler and the Make tool; a C++ compiler is also needed for the required Scintilla library included. The GNU versions of these tools are recommended.

To build the user manual you need rst2html from Docutils. A pre-built version of the manual is available in distribution tarballs and will be used as fallback if rst2html is missing. When building from Git however, that pre-built version is not included and rst2html is required by default. You can explicitly disable building the user manual using the --disable-html-docs configure flag, but this will result in not installing a local version of the user manual, and Geany will then try and open the online version instead when requested.


Building Geany from source on Mac OSX and Windows is more complicated and is out of scope of this document. For more information on building instructions for these platforms, please check the wiki at http://wiki.geany.org/howtos/.

Installing from a Git clone

Install Autotools (automake, autoconf and libtool), intltool, and the GLib development files before running any of the following commands, as well as rst2html from Docutils (see above for details). Then, run ./autogen.sh and then follow the instructions for installing from a release tarball.

Installing from a release tarball

Run the the following three commands:

$ ./configure
$ make
(as root, or using sudo)
% make install

For more configuration details run ./configure --help

If there are any errors during compilation, check your build environment and try to find the error, otherwise contact the mailing list or one of the authors.

See the manual for details (geany.txt/geany.html).


To run Geany just type:

$ geany

on a console or use the applications menu from your desktop environment. There a few command line options. See the manual page of Geany or run:

$ geany --help

for details. Or look into the documentation in the doc/ directory. The most important option probably is -c or --config, where you can specify an alternate configuration directory.


Geany is distributed under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. A copy of this license can be found in the file COPYING included with the source code of this program. The included Scintilla library (found in the subdirectory scintilla/) has its own license, which can be found in the file scintilla/License.txt included with the source code of this program.

Ideas, questions, patches and bug reports

See http://www.geany.org/ If you add something, or fix a bug, please send a patch (in Git or diff -u format) to the mailing list or one of the authors. Also see the HACKING file.

-- 2005-2016 by Enrico Tröger, Nick Treleaven, Colomban Wendling, Matthew Brush and Frank Lanitz enrico(dot)troeger(at)uvena(dot)de nick(dot)treleaven(at)btinternet(dot)com lists(dot)ban(at)herbesfolles(dot)org mbrush(at)codebrainz(dot)ca frank(at)frank(dot)uvena(dot)de