Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


Haskell IDE

Subscribe to updates I use leksah

Statistics on leksah

Number of watchers on Github 751
Number of open issues 197
Average time to close an issue 5 days
Main language Haskell
Average time to merge a PR 9 days
Open pull requests 6+
Closed pull requests 9+
Last commit about 2 years ago
Repo Created over 9 years ago
Repo Last Updated about 2 years ago
Size 21.3 MB
Homepage leksah.org
Organization / Authorleksah
Page Updated
Do you use leksah? Leave a review!
View open issues (197)
View leksah activity
View on github
Fresh, new opensource launches πŸš€πŸš€πŸš€
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating leksah for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Leksah, an Integrated Development Environment for Haskell

Build Status

Leksah aims to integrate various Haskell development tools to provide a practical and pleasant development environment. The user interface is a mix of GTK+ and WebKit based components.

Documentation can be found on leksah.org.

Getting Leksah


Using Nix is the easiest way to get Leksah. It works well on Linux and MacOS. Please let us know it it works on the Windows Subsystem for Linux (WSL).

git clone --recursive https://github.com/leksah/leksah.git
cd leksah
nix-env -f . -i

If your project has a default.nix file along side it (in the same directory as your cabal.project file), leksah will use nix-shell -A shells.ghc --run commands that need ghc and ghci. It will use nix-shell -A shells.ghcjs --run for commands that need ghcjs.

A great way to set up a suitable default.nix for your project is described in project-development.md. This works even if you are not planning on using reflex.

If you want to make changes to Leksah run the ./leksah-nix.sh script to start Leksah itself in a nix-shell with everything needed to work on Leksah. Then open the Leksah cabal.project file.

On macOS the Leksah window start below other active application windows you can use Command+Shift+Tab to bring it to the top (issue 461).

Installation (without Nix)

Leksah requires ghc --version >=8.0.2 and cabal --version >=1.24. To get them go to haskell.og/download and choose the Minimal GHC or Haskell Platform.

Building from source (without Nix)

Step 1: Install C libraries

sudo dnf install gobject-introspection-devel webkitgtk4-devel gtksourceview3-devel
sudo apt-get install libgirepository1.0-dev libwebkit2gtk-4.0-dev libgtksourceview-3.0-dev
Arch Linux
sudo pacman -S gobject-introspection gobject-introspection-runtime gtksourceview3 webkit2gtk
macOS with MacPorts
sudo port install gobject-introspection webkit2-gtk gtksourceview3 gtk-osx-application-gtk3 adwaita-icon-theme`

You will also need to build a MacPorts compatible of GHC. First install GHC some other way then unpack the source for the GHC version you want to use and run:

sudo port install libxslt gmp ncurses libiconv llvm-3.5 libffi
./configure --prefix=$HOME/ghc-8.0.1 --with-iconv-includes=/opt/local/include --with-iconv-libraries=/opt/local/lib --with-gmp-includes=/opt/local/include --with-gmp-libraries=/opt/local/lib --with-system-libffi --with-ffi-includes=/opt/local/lib/libffi-3.2.1/include --with-ffi-libraries=/opt/local/lib --with-nm=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm-classic
make install
echo 'PATH: '"$PATH"

Make sure the $HOME/ghc-8.0.1/bin is present in PATH.

macOS with Homebrew

It might be possible to build Leksah using Homebrew now we have switched to WebKit 2. If you can figure it out please send us the details or better yet a pull request to update this file. Raise an issue if you try and it does not work.

Windows MSYS2


Then in Bash shell with administrator privileges execute:

choco install ghc
pacman -S mingw64/mingw-w64-x86_64-pkg-config mingw64/mingw-w64-x86_64-gobject-introspection mingw64/mingw-w64-x86_64-gtksourceview3 mingw64/mingw-w64-x86_64-webkitgtk3

Set the following environment variables:

SET PATH=%APPDATA%\cabal\bin;C:\msys64\mingw64\bin;C:\msys64\usr\bin;C:\ProgramData\chocolatey\lib\ghc\tools\ghc-8.0.2\bin;C:\ProgramData\chocolatey\lib\cabal\tools;%PATH%
SET PKG_CONFIG_PATH=C:\msys64\mingw64\lib\pkgconfig
SET XDG_DATA_DIRS=C:\msys64\mingw64\share

(change C:\ProgramData\chocolatey\lib\ghc\tools\ghc-8.0.2\bin if a newer version is installed)

pkg install devel/gobject-introspection x11-toolkits/gtksourceview3 www/webkit2-gtk3

Step 2: Clone repository and its submodules

git clone --recursive https://github.com/leksah/leksah.git
cd leksah

Step 3.a: Build - cabal new-build variant

Step 3.a.1: Install extra tools
cabal update
cabal install alex happy
cabal install haskell-gi

Make sure ~/.cabal/bin is present in the PATH (Windows: Make sure %APPDATA%\cabal\bin is present in the PATH).

Step 3.a.2: Build and run Leksah
macOS using MacPorts
XDG_DATA_DIRS=/opt/local/share ./leksah.sh
Other OS

Step 3.b: Build - stack variant

Step 3.b.1: Install extra tools
stack setup --upgrade-cabal
stack install alex happy
stack install haskell-gi
stack install gtk2hs-buildtools

Leksah needs cabal for the metadate feature to work correctly (even when using stack):

stack install cabal-install
cabal update
Step 3.b.2: Build and run Leksah
macOS using MacPorts
XDG_DATA_DIRS=/opt/local/share stack install
stack exec --no-ghc-package-path leksah
Other OS with Gtk+ 3.20 (or newer)
stack install
stack exec --no-ghc-package-path leksah
Other OS with Gtk+ 3.18 (e.g. Ubuntu 16.04)
stack install --flag ltk:-gtk-320 --flag leksah:-gtk-320
stack exec --no-ghc-package-path leksah
Other OS with Gtk+ 3.16
stack install --flag ltk:-gdk-318 --flag ltk:-gtk-318 --flag leksah:-gtk-318 --flag ltk:-gtk-320 --flag leksah:-gtk-320
stack exec --no-ghc-package-path leksah
leksah open issues Ask a question     (View All Issues)
  • over 3 years Resource exhausted
  • over 3 years install leksah from source fails: [Module β€˜GI.Gtk’ does not export β€˜setTextTagUnderlineRgba’]
  • over 3 years echo 'TODO run cabal new-install' TODO run cabal new-install
  • over 3 years crash with leksah: GError 0x0000561db5d5b460
  • over 3 years on three tick marks in toolbar are all the same
  • over 3 years Workspace tree collapses when creating new files or folders
  • over 3 years AppVeyor build is broken again
  • over 3 years Adding a directory crashes file pane
  • over 3 years install leksah from github source with ghc 8.0.1 fails
  • over 3 years Settings menu
  • over 3 years Pane order when opening and closing
  • over 3 years Open session with workspace gives invalid cast exception in gtk
  • over 3 years Remove prefs.lkshp and generate it from defaultPrefs
  • over 3 years Cabal macros cause recompiling all Leksah modules
  • over 3 years C finalizer called back into Haskell
  • over 3 years Give feedback when there are no search results
  • over 3 years Don't open autocompletion when typing string literals or in comments
  • over 3 years Update metadata of active package when compiling succesfully
  • over 3 years .cabal files with syntax errors not handled well
  • over 3 years Disable panes opening automatically
  • over 3 years Remove the first startup windows
  • over 3 years Duplicate packages in the workspace cause problems
  • over 3 years Make a secret pane for better debugging of Leksah
  • over 3 years Record field types are incorrect in metadata
  • over 3 years Give a proper message when command line tools cannot be found
  • over 3 years Give appropriate message when opening an outdated workspace file (older version)
  • over 3 years Ctrl+Tab for switching panes does not work
  • over 3 years Cannot change dark/light mode when no file is open
  • over 3 years Add maximized field to session
  • over 3 years Improve the matching in autocomplete
leksah open pull requests (View All Pulls)
  • github build script for Ubuntu 16.04
  • Readme.md: update to Fedora 23 docker image
  • entrySetPlaceholderText takes a Maybe Text on gtk 3.14 as well
  • Add `cabal new-build` support
  • Fix cabal package name in nix instructions
  • Readme md contribution for haskel home brew
leksah questions on Stackoverflow (View All Questions)
  • haskell leksah hello-world
  • run a single file and access console in leksah
  • Leksah in NixOS 14.12 - fails to install, why?
  • Haskell Unit Testing integrated in Leksah
  • How to get the type of a term inside a do block in Leksah?
  • Haskell Leksah and GHCI
  • GHC 7.10.1, Leksah debugging problems
  • Leksah, GHC 7.10.1 : Is it possible to pass user input to a Haskell program which is launched inside Leksah Haskell IDE? If yes, how?
  • Haskell/GHC 7.10.1/Leksah : What is the meaning of this Warning: "name ... found in source file but was not in scope"
  • Leksah, jump to definition within current package and to names defined in packages installed in Sandbox
  • Leksah / Haskell : search for functions that operate on a given type (say [a], [Char])
  • leksah install fails due to regex-tdfa-text-
  • Leksah debugger fails because "GHCi is not running"
  • turn off warning in leksah
  • How to effectively work with leksah?
  • Clear eval in Leksah
  • haskell code compiles on leksah but not ghc
  • How can I add an extra switch in Leksah?
  • How to stop leksah from replacing chars like the not sign?
  • Leksah hangs on first startup
  • Leksah default hello world is not working after installation Xubuntu 13.10
  • exception installing leksah
  • Leksah does not show any modules
  • When I press the space bar in the Leksah source editor, nothing happens. What packages do I lack?
  • Using Leksah debugger with programs that use readLn and similar
  • Is it possible to have Leksah use a cabal-dev environment for it's workspace?
  • How to 'go to definition' for user defined function in Leksah?
  • Leksah without main
  • Leksah system scope module browser is empty
  • Leksah: automatically build and/or reinstall dependencies when changed
leksah list of languages used
Other projects in Haskell