Linux fork of FAR Manager v2 (http://farmanager.com/)
Works also on macOS and BSD (but latter not tested on regular manner)
BETA VERSION.
Use on your own risk!
Plug-ins that are currently working: NetRocks (SFTP/SCP/SHELL/FTP/FTPS/SMB/NFS/WebDAV/AWS S3 optional compilation if AWSSDK installed), colorer, multiarc, tmppanel, Advanced compare, filecase, inside, align, autowrap, drawline, editcase, editorcomp, incsrch, SimpleIndent, Calculator, Python (optional scripting support), arclite (now as experimental version which partially more effective then multiarc; arclite disabled by default, to enable manually turn on F9->Options->Plugins configuration->ArcLite->[x] Enable Arclite plugin).
- FAR for Windows and some of its plugins
- WINE
- ANSICON
- Portable UnRAR
- 7z ANSI-C Decoder
- utf-cpp by ww898
- Getting Started
- Installing, Running
- Building, Contributing, Hacking
- Compatible Terminals and SSH clients
- Useful 3rd-party extras
- Community packages & binaries
- See also (in external documents):
Note: Far2l uses keyboard shortcurts in the tradition of the Far Manager for Windows, but some of them (Alt+F1, Alt+F2, Alt+F7, Ctrl+arrows, etc.) usually exclusively used in desktop environment GNOME, KDE, Xfce, macOS etc. and in terminal emulators. To work with these keys in far2l you need to release keyboard shortcuts globally in the environment settings (see #2326, #2731, under GNOME you can use dconf-editor org.gnome.desktop.wm.keybindings to view and change global keybindings) or use far2l lifehacks: Sticky controls via Ctrl+Space or Alt+Space or Exclusively handle hotkeys option in the Input settings (see details in buil-in far2l help).
FAR2L has base UI Backends (see details in build-in help section UI backends):
-
GUI (WX): uses wxWidgets, works in graphics mode, ideal UX (might add dependencies to your desktop environment, e.g. wxWidgets toolkit and related packages);
-
TTY|Xi: works in terminal mode, requires a dependency on pair X11 libraries (to access clipboard and to get state of all keyboard modifiers), almost perfect UX;
-
TTY|X: works in terminal mode, uses X11 to access clipboard, all keyboard works via terminal;
-
TTY: plain terminal mode, no X11 dependencies, UX with some restrictions (works fully when running in the terminal emulators, which provide clipboard access and has their advanced keyboard-protocols).
Works: | in console and in any terminal |
in terminal window under graphic X11 session |
in terminal window under graphic X11 session |
in Desktop environment (X11 or Wayland or macOS) via wxWidgets |
Binaries: | far2l | far2l far2l_ttyx.broker |
far2l far2l_ttyx.broker |
far2l far2l_gui.so |
Dependencies: | minimal | + libx11 | + libx11, libxi | + wxWidgets, GTK |
Keyboard: | Typical terminals: only essential key combinations KiTTY (putty fork), |
Typical terminals: only essential key combinations KiTTY (putty fork), |
Typical terminals: most of key combinations under x11; only essential key combinations under Wayland KiTTY (putty fork), |
All key combinations |
Clipboard access: |
Typical terminals: via command line tools like xclip kitty (*nix one), Windows Terminal: KiTTY (putty fork), |
Typical terminals, kitty (*nix one): via x11 interaction iTerm2: Windows Terminal: KiTTY (putty fork), |
Typical terminals, kitty (*nix one): via x11 interaction iTerm2: Windows Terminal: KiTTY (putty fork), |
via wxWidgets API via command line |
Typical use case: |
Servers, embedded (*wrt, etc) |
Run far2l in favorite terminal but with better UX |
Run far2l in favorite terminal but with best UX |
Desktop |
Debian / Ubuntu official repositories (packages names): |
Install far2l with --no-install-recommends and use far2l due to auto downgrade (since 2.6.5~ds-3 / Ubuntu 25.10+) |
far2l | far2l | far2l-wx (since 2.6.4 / Ubuntu 25.04+) |
Community PPA (packages names): |
far2l | far2l-ttyx | far2l-ttyx | far2l-gui |
Note: When running far2l automatically downgrade if its components are not installed (or system libs are not available): GUI ⇒ TTY|Xi ⇒ TTY|X ⇒ TTY. To force run only specific backend use in command line: for GUI: far2l --notty; for TTY|Xi use in command line: far2l --tty; for TTY|X: far2l --tty --nodetect=xi; for plain TTY: far2l --tty --nodetect=x (see details via far2l --help).
Note about use OSC 52 in TTY/TTY|X: to interact with the system clipboard you must not forget to enable OSC 52 in both the FAR2L settings (Options⇒Interface settings⇒Use OSC52 to set clipboard data, which shown in the dialog only if far2l run in TTY/TTY|X mode and all other options for clipboard access are unavailable; you can run far2l --tty --nodetect to force not use others clipboard options), and in terminal settings option OSC 52 must be allowed (by default, OSC 52 is disabled in some terminals for security reasons; OSC 52 in many terminals is implemented only for the copy mode, and paste from the terminal goes by bracketed paste mode).
-
GUI backend (Debian since far2l 2.6.4 / Ubuntu 25.04+)
-
TTY X/Xi backends only (Debian / Ubuntu 23.10+)
-
TTY backends only – do not install X11 dependencies and dependencies used in the NetRocks plugin (Debian since far2l 2.6.5~ds-3 / Ubuntu 25.10+)
apt install --no-install-recommends far2l
Debian has far2l in sid (unstable) / 14 forky (testing) / 13 trixie / 12 bookworm-backports; Ubuntu since 23.10. Details about versions in the official repositories see in https://packages.debian.org/search?keywords=far2l or https://packages.ubuntu.com/search?keywords=far2l
Note: packages in official repositories may be very outdated, actual binaries or portable see in Community packages & binaries.
Note: since far2l 2.6.4 Debian/Ubuntu packages build with python subplugins.
Note: in some old Debian/Ubuntu you can obtain far2l packages corresponding to the latest distributions via backport mechanism (see info in Debian Backports and Ubuntu Backports).
Manually building backport of official packages for other old Debian/Ubuntu system [click to expand/collapse]A simple sid back port should be as easy as (build your own binary deb from the official source deb package, required install dependencies):
You can install prebuilt package for x86_64 platform via Homebrew Cask, by command:
You can also manually download and install prebuilt package for x86_64 platform from Releases page: https://github.com/elfmz/far2l/releases
You can use containers to try far2l without installing anything.
See also Community packages & binaries
- libwxgtk3.0-gtk3-dev or libwxgtk3.2-dev in newer distributions, or libwxgtk3.0-dev in older ones (optional - needed for GUI backend, not needed with -DUSEWX=no)
- libx11-dev (optional - needed for X11 extension that provides better UX for TTY backend wherever X11 is available)
- libxi-dev (optional - needed for X11/Xi extension that provides best UX for TTY backend wherever X11 Xi extension is available)
- libxml2-dev (optional - needed for Colorer plugin, not needed with -DCOLORER=no)
- libuchardet-dev (optional - needed for auto charset detection, not needed with -DUSEUCD=no)
- libssh-dev (optional - needed for NetRocks/SFTP)
- libssl-dev (optional - needed for NetRocks/FTPS)
- libsmbclient-dev (optional - needed for NetRocks/SMB)
- libnfs-dev (optional - needed for NetRocks/NFS)
- libneon27-dev (or later, optional - needed for NetRocks/WebDAV)
- AWS SDK S3 (optional - needed for NetRocks/AWS S3)
- libarchive-dev (optional - needed for better archives support in multiarc)
- libunrar-dev (optional - needed for RAR archives support in multiarc, see -DUNRAR command line option)
- 7zip or p7zip-full in old distributions (optional - not needed for building, but dynamically used for archives processing via multiarc and arclite)
- libicu-dev (optional - needed if used non-default ICU_MODE, see -DICU_MODE command line option)
- python3-dev (optional - needed for python plugins support, see -DPYTHON command line option)
- python3-cffi (optional - needed for python plugins support, see -DPYTHON command line option)
- cmake ( >= 3.2.2 )
- pkg-config
- g++
- git (needed for downloading source code)
or simply on Debian/Ubuntu:
In older distributions: use libwxgtk3.0-dev instead of libwxgtk3.0-gtk3-dev.
- Clone current master
- Checkout some stable release tag (master considered unstable): git checkout v_2.#.#
- Prepare build directory:
- Build: with make:
or with ninja (you need ninja-build package installed)
-
If above commands finished without errors - you may:
-
just run far2l from ./install/far2l
(use the full path to run from any location: <path>/far2l/_build/install/far2l) -
or/and install far2l: sudo cmake --install .
-
or/and it's possible to create far2l_2.X.X_ARCH.deb or ...tar.gz packages in _build directory by running cmake --build . --target package command.
-
To build without WX backend (console version only): change -DUSEWX=yes to -DUSEWX=no also in this case dont need to install libwxgtk*-dev package
To force-disable TTY|X and TTY|Xi backends: add argument -DTTYX=no; to disable only TTY|Xi - add argument -DTTYXI=no
To eliminate libuchardet requirement to reduce far2l dependencies by cost of losing automatic charset detection functionality: add -DUSEUCD=no
By default far2l uses pre-generated "hardcoded" UNICODE characters properties. But this can be changed by specifying -DICU_MODE when configuring cmake: -DICU_MODE=prebuilt - is a described above default implementaion. Most dependency-less option. -DICU_MODE=build - re-generate characters properties during build by using libicu available on build system, but it still not required to be present on target. -DICU_MODE=runtime - obtain properties at runtime (that can be bit slower) using libicu that required to be present on target system.
To build with Python plugin: add argument -DPYTHON=yes but you must have installed additional packages within yours system: python3-dev and python3-cffi.
To control how RAR archives will be handled in multiarc: -DUNRAR=bundled (default) use bundled sources found in multiarc/src/formats/rar/unrar -DUNRAR=lib use libunrar and unrar utility, also build requires libunrar-dev to be installed -DUNRAR=NO dont use special unrar code, rar archives will be handled by libarchive unless its also disabled
There're also options to toggle other plugins build in same way: -DALIGN=no, -DARCLITE=no, -DAUTOWRAP=no, -DCALC=no, -DCOLORER=no, -DCOMPARE=no, -DDRAWLINE=no, -DEDITCASE=no, -DEDITORCOMP=no, -DFARFTP=yes (by default it is disabled), -DFILECASE=no, -DINCSRCH=no, -DINSIDE=no, -DMULTIARC=no, -DNETROCKS=no, -DSIMPLEINDENT=no, -DTMPPANEL=no (see in CMakeLists.txt) and for NetRocks components (see in NetRocks/CMakeLists.txt).
To make custom/recent build use brew or MacPorts.
- Supported compiler: AppleClang 8.0.0.x or newer. Check your version, and install/update Xcode if necessary.
- If you want to build using Homebrew - first visit https://brew.sh/ for installation instructions. Note that there're reported problems with Homebrew-based build under MacOS Big Sur.
- If you want to build using MacPorts - first visit https://www.macports.org/install.php for installation instructions.
- With GUI/TTY backends:
- With TTY backend only:
- Additionally you can enable python support by adding [email protected] to the one of two above commands.
Some issues can be caused by conflicting dependencies, like having two versions of wxWidgets, so avoid such situation when installing dependencies.
- Clone:
- Install needed dependencies with MacPorts:
- OR if you prefer to use brew packages, then:
- After dependencies installed - you can build far2l: with make:
or with ninja:
- Then you may create .dmg package by running: cpack command. Note that this step sometimes fails and may succeed from not very first attempt. Its recommended not to do anything on machine while cpack is in progress. After .dmg successfully created, you may install it by running open ...path/to/created/far2l-*.dmg
After command
it is enough to confirm permission only once.
Details see in issue.
For absolute minimum you need:
If you want to build far2l with wxGTK support also install it:
Additionally, for NetRocks you will need:
After installing, follow Clone and Build section above.
Installing on NixOS or Nix for Linux or macOS
To install system-wide, add the far2l package to your configuration.nix environment.systemPackages list. To run the application on-demand without affecting the system state, execute nix-shell -p far2l --command far2l. These use a package version from your current channel.
The Far2l adaptation for nix is a small file on GitHub, it tells which Git revision from Far2l repo to fetch, with what dependencies to build it, and how to patch its references to other software to make it run in isolated fashion independently from other versions available in the system.
Custom Building and Installing on NixOS or Nix for Linux or macOS from scratch
- Copy far2lOverlays.nix to your Nix configuration folder
- Add it as import to 'configuration.nix'
- Optionally you could change a revision in far2lOverlays.nix to whatever you want (read the comments in the nix file, all the fields you need to change are commented)
- update with 'nixos-rebuild switch'
You can import the project into your favourite IDE like QtCreator, CodeLite, or any other, which supports cmake or which cmake is able to generate projects for.
- QtCreator: select "Open Project" and point QtCreator to the CMakeLists.txt in far2l root directory
- CLion: the same as QtCreator.
- CodeLite: use this guide to setup a project: https://wiki.codelite.org/pmwiki.php/Main/TheCMakePlugin (to avoid polluting your source tree, don't create your workspace inside of the far2l directory)
- Visual Studio Code (required CMake Tools extension): open far2l root directory (by default building in subdirectory _build; you can change in .vscode/settings.json)
Note: to full transfer extended keyboard shortcuts and the clipboard to/from the remote far2l one of the best way to initiate the connection inside local far2l-GUI (see details about TTY|F backend in build-in help section UI backends).
Terminals/SSH clients with support extended far2l keyboard shortcuts and clipboard access:
-
kovidgoyal's kitty (Linux/BSD, macOS): https://github.com/kovidgoyal/kitty & https://sw.kovidgoyal.net/kitty (TTY|k backend: keys by kovidgoyal's kitty keyboard protocol; turn on OSC 52 in far2l and kitty for clipboard support)
-
Alacritty (Linux/BSD, macOS, Windows): https://github.com/alacritty/alacritty & https://alacritty.org/ (TTY|k backend: keys by kovidgoyal's kitty keyboard protocol; turn on OSC 52 in far2l for clipboard support) [in Windows in system must be conpty.dll: alacritty/alacritty#8360]
-
Rio Terminal (Linux/BSD, macOS, Windows): https://github.com/raphamorim/rio & https://raphamorim.io/rio/ (TTY|k backend: keys by kovidgoyal's kitty keyboard protocol; turn on OSC 52 in far2l for clipboard support)
-
Ghostty (Linux, macOS): https://github.com/ghostty-org/ghostty & https://ghostty.org/ (TTY|k backend: keys by kovidgoyal's kitty keyboard protocol; turn on OSC 52 in far2l for clipboard support)
-
Wez's Terminal Emulator (Linux/BSD, Windows): https://github.com/wez/wezterm & https://wezfurlong.org/wezterm (TTY|k backend: keys in Linux/BSD by kovidgoyal's kitty keyboard protocol; TTY|w backend: keys in Windows by win32-input-mode, enabled by default; turn on OSC 52 for clipboard support) [kitty keyboard protocol not supported in macOS & Windows]
-
iTerm2 (macOS): https://gitlab.com/gnachman/iterm2 & https://iterm2.com (TTY|a backend: keys by iTerm2 "raw keyboard" protocol; turn on OSC 52 for clipboard support)
-
foot (Linux Wayland only): https://codeberg.org/dnkl/foot (TTY|k backend: keys by kovidgoyal's kitty keyboard protocol; turn on OSC 52 in far2l for clipboard support)
-
Windows Terminal (TTY|w backend: keys by win32-input-mode; turn on OSC 52 for clipboard support; has mouse bug: microsoft/terminal#15083 )
-
Original PuTTY does not correctly send some keyboard shortcuts. Please use putty forks with special far2l TTY extensions support (fluent keypresses, clipboard sharing etc):
- putty4far2l (Windows ssh-client): https://github.com/ivanshatsky/putty4far2l/releases & https://github.com/unxed/putty4far2l (TTY|F backend: keys and clipboard by FAR2L TTY extensions support)
- cyd01's KiTTY (Windows ssh-client): https://github.com/cyd01/KiTTY & https://www.9bis.net/kitty (TTY|F backend: keys and clipboard by FAR2L TTY extensions support)
- putty-nd (Windows ssh-client): https://sourceforge.net/projects/putty-nd & https://github.com/noodle1983/putty-nd (TTY|F backend: keys and clipboard by FAR2L TTY extensions support)
- PuTTY 0.82+: since 0.82 in vanilla PuTTY you can set keyboard settings Xterm 216+ and xterm-style bitmap (see: #2630 ), but vanilla PuTTY can not transfer clipboard.
-
A collection of macros for far2l: https://github.com/corporateshark/far2l-macros
-
Turbo Vision, TUI framework supporting far2l terminal extensions: https://github.com/magiblot/tvision
-
turbo, text editor supporting far2l terminal extensions: https://github.com/magiblot/turbo
-
far2ltricks: https://github.com/unxed/far2ltricks
- tool to import color schemes from windows FAR manager 2 .reg format: https://github.com/unxed/far2ltricks/blob/main/misc/far2l_import.pl
-
External far2l plugins:
- jumpword (far2l editor plugin for quick searching the word under cursor): https://github.com/axxie/far2l-jumpword/
- netcfg (far2l net interfaces configuration plugin): https://github.com/VPROFi/netcfgplugin
- sqlplugin (far2l sql db (sqlite, etc..) plugin): https://github.com/VPROFi/sqlplugin
- processplugin (far2l processes plugin): https://github.com/VPROFi/processes
- far-gvfs (gvfspanel) (far2l plugin to work with Gnome VFS): https://github.com/cycleg/far-gvfs
-
far2m is fork with FAR3 macro system (Lua) and extended plugins: https://github.com/shmuz/far2m
-
Community wiki & tips (in Russian; unofficial): https://github.com/akruphi/far2l/wiki
They are mainteined by enthusiasts and may be not exact with master: sometimes has extra plugins, sometimes has tweak, etc.
-
Portable (with TTY X/Xi backend) | AppImage (with wx-GUI and some extra plugins): https://github.com/spvkgn/far2l-portable/releases
-
Ubuntu and Mint from PPA with fresh far2l: https://launchpad.net/~far2l-team/+archive/ubuntu/ppa
-
tips for toggle between repositories PPA and official Ubuntu [click to expand/collapse]
-
Tranfser to binaries from PPA repository
sudo apt remove far2l* # required if any far2l was installed sudo apt install software-properties-common # required if add-apt-repository not installed sudo add-apt-repository ppa:far2l-team/ppa #sudo apt install far2l-gui # (!) use if you need plain+GUI backends #sudo apt install far2l-ttyx # (!) use if you need plain+TTY|Xi backends #sudo apt install far2l # (!) use if you need only plain backend -
Disconnection PPA and return to official Ubuntu repository
sudo apt remove far2l* # required if any far2l was installed sudo apt install software-properties-common # required if add-apt-repository not installed sudo add-apt-repository --remove ppa:far2l-team/ppa #sudo apt install far2l-wx # (!) use if you need plain+TTY|Xi+GUI backends #sudo apt install far2l # (!) use if you need plain+TTY|Xi backends #sudo apt install --no-install-recommends far2l # (!) use only since 2.6.5~ds-3 in 25.10 if you need only plain backend
-
-
tips for toggle between repositories PPA and official Ubuntu [click to expand/collapse]
-
Fedora and CentOS: https://copr.fedorainfracloud.org/coprs/polter/far2l
-
OpenSUSE, Fedora, Debian, Ubuntu: https://download.opensuse.org/repositories/home:/viklequick/
(contain separate packages with external plugins;
in sources.list you may add: deb https://downloadcontentcdn.opensuse.org/repositories/home:/viklequick/<os-version> ./) -
Flatpak: https://github.com/spvkgn/far2l-flatpak (access only to part of real filesystem via sandbox)
See also in #647
- See HACKING.md
- Only valid translations are English, Russian, Ukrainian and Belarussian (interface only), all other languages require deep correction.