[](https://scan.coverity.com/projects/elfmz-far2l) [](https://deepwiki.com/elfmz/far2l) [](https://repology.org/project/far2l)
# far2l [](https://github.com/elfmz/far2l/tags)
Linux fork of FAR Manager v2 (http://farmanager.com/)
Works also on macOS and BSD (but latter is not regularly tested)
BETA VERSION.
**Use at your own risk!**
Plug-ins that are currently working:
ADB (the external adb binary is required to work, see: [README](https://github.com/elfmz/far2l/blob/master/plugins/adb/README.md)),
Advanced compare,
align,
arclite (now as experimental version which partially more effective than multiarc;
arclite disabled by default, to enable manually turn on
F9->Options->Plugins configuration->ArcLite->[x] Enable Arclite plugin),
autowrap,
Calculator,
colorer,
drawline,
editcase,
editorcomp,
edsort,
filecase,
gitgutter,
hexitor,
ImageViewer,
incsrch,
inside,
jumpword (see: [README](https://github.com/elfmz/far2l/blob/master/plugins/jumpword/README.md)),
memo (see: [README](https://github.com/elfmz/far2l/blob/master/plugins/memo/README.md)),
MTP (see: [README](https://github.com/elfmz/far2l/blob/master/plugins/mtp/README.md)),
multiarc,
NetRocks (SFTP/SCP/SHELL/FTP/FTPS/SMB/NFS/WebDAV/AWS S3),
OpenWith,
Python (optional scripting support, see [readme](plugins/python/configs/plugins/read-en.txt) and [info](plugins/python/configs/plugins/readme-plugins.txt)),
SimpleIndent,
tmppanel,
Transformer (generic external-command text transformations for the editor and file panels),
truncate.
FreeBSD/MacOS (Cirrus CI): [](https://cirrus-ci.com/github/elfmz/far2l)
#### License: GNU/GPLv2
### Used code from projects
* FAR for Windows and some of its plugins
* WINE
* ANSICON
* Portable UnRAR
* 7z ANSI-C Decoder
* utf-cpp by ww898
### Screenshots
![far2l main UI][scr_far2l] | ![NetRocks][scr_netrocks]
--------------------------- | -------------------------
![Attributes][scr_attribs] | ![Editor][scr_editor]
[scr_far2l]: ./far2l/DE/screenshots/far2l.png
[scr_netrocks]: ./far2l/DE/screenshots/far2l_NetRocks.png
[scr_attribs]: ./far2l/DE/screenshots/far2l_attribs_several.png
[scr_editor]: ./far2l/DE/screenshots/far2l_editor_colorer.png
### Jump To:
* [Getting Started](#gstarted)
* [Installing, Running](#inst_run)
* [Building, Contributing, Hacking](#building)
* [Compatible Terminals and SSH clients](#terminals)
* [Useful 3rd-party extras](#useful3party)
* [Community packages & binaries](#community_bins)
* See also (in external documents):
* [Change log](changelog.md)
* [Releases](https://github.com/elfmz/far2l/releases)
* [Python plugin readme](plugins/python/configs/plugins/read-en.txt) and [Short information about each Python plugins/files](plugins/python/configs/plugins/readme-plugins.txt)
* [Notes on porting and FAR Plugin API changes](HACKING.md)
* [Coding style](CODESTYLE.md)
* [Testing](testing/README.md)
* [DUMPER](DUMPER.md)
## Getting Started
_Note_: Far2l uses keyboard shortcuts 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](https://github.com/elfmz/far2l/issues/2326),
[#2731](https://github.com/elfmz/far2l/issues/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 built-in far2l help).
### UI Backends
FAR2L has base UI Backends (see details in built-in help section **UI backends**):
- **GUI|WX** (uses wxWidgets) or **GUI|SDL**: 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 a couple of 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](#terminals), which provide clipboard access and have their advanced keyboard protocols).
| Mode
(UI Backends) | TTY
(plain far2l) | TTY\|X | TTY\|Xi | GUI\|WX | GUI\|SDL
_Experimental_ |
| ---: | --- | --- | --- | --- | --- |
| **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 | in **Desktop
environment**
(X11
or Wayland
or macOS)
via SDL |
| **Binaries:** | far2l | far2l
far2l_ttyx.broker | far2l
far2l_ttyx.broker | far2l
far2l_gui.so | far2l
far2l_sdl.so |
| **[Dependencies](#required-dependencies):** | minimal | + libx11 | + libx11, libxi | + wxWidgets, GTK | + SDL |
| **Keyboard:** | _Typical terminals_:
**only essential
key combinations**
_KiTTY_ (putty fork),
_kitty_ (\*nix one),
_iTerm2_,
_Windows Terminal_,
far2l’s VT: **full support**
(see: [Compatible
Terminals
and SSH clients](#terminals)) | _Typical terminals_:
**only essential
key combinations**
_KiTTY_ (putty fork),
_kitty_ (\*nix one),
_iTerm2_,
_Windows Terminal_,
far2l’s VT: **full support** | _Typical terminals_:
**most of key
combinations under x11**;
**only essential key
combinations
under Wayland**
_KiTTY_ (putty fork),
_kitty_ (\*nix one),
_iTerm2_,
_Windows Terminal_,
far2l’s VT: **full support** | **All key
combinations** | **All key
combinations** |
| **Clipboard
access:** | _Typical terminals_:
via command line
tools like xclip
_kitty_ (\*nix one),
_iTerm2_:
via **OSC52**
_Windows Terminal_:
via **OSC52**
or via **command line
tools under WSL**
_KiTTY_ (putty fork),
far2l’s VT:
via **far2l extensions** | _Typical terminals_,
_kitty_ (\*nix one):
via **x11 interaction**
_iTerm2_:
via **OSC52**
_Windows Terminal_:
via **OSC52**
or via **command line
tools under WSL**
_KiTTY_ (putty fork),
far2l’s VT:
via **far2l extensions** | _Typical terminals_,
_kitty_ (\*nix one):
via **x11 interaction**
_iTerm2_:
via **OSC52**
_Windows Terminal_:
via **OSC52**
or via **command line
tools under WSL**
_KiTTY_ (putty fork),
far2l’s VT:
via **far2l extensions** | via
**wxWidgets API**
via command line
tools under WSL | via
**SDL API** |
| **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** | **Desktop** |
| [Debian](#debian) / [Ubuntu](#debian)
official repositories
(packages names): | Install `far2l` with
`--no-install-recommends`
and use `far2l` due to
[auto downgrade](#downgrade)
(since _2.6.5~ds-3_ /
Ubuntu 25.10+) | `far2l` | `far2l` | `far2l-wx`
(since _2.6.4_ /
Ubuntu 25.04+) | _not yet_ |
| Community [PPA](#community_bins)
(packages names): | `far2l` | `far2l-ttyx` | `far2l-ttyx` | `far2l-gui` | _not yet_ |
_Note_: When running, far2l automatically downgrades
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`).
If your far2l is compiled with SDL you can run `far2l --SDL` also.
_Note_: Using 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 is shown in the dialog only if far2l runs in TTY/TTY|X mode and all other options for clipboard access are unavailable;
you can run `far2l --tty --nodetect` to force it not to use other 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).
_Note_: Using **TTY** under **Wayland** and **OSC 52** under Wayland:
**TTY X|Xi** in `--tty` works incorrectly. You need to fully disable it to use OSC 52 for proper clipboard integration;
you need to run `far2l --tty --nodetect=x`, then OSC 52 setting option will appear in `Interface Settings`, and you can enable it, as described in a chapter above.
Clipboard in `wx-gui` is working correctly.
## Installing, Running
_Note_: packages in official repositories may be very outdated,
actual binaries or portable see in [Community packages & binaries](#community_bins).
#### Debian/Ubuntu binaries from the official repositories
* **GUI|WX** backend (Debian since far2l _2.6.4_ / Ubuntu 25.04+)
```sh
apt install far2l-wx
```
* **TTY X/Xi** backends only (Debian / Ubuntu 23.10+)
```sh
apt install far2l
```
* **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+)
```sh
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_: 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](https://backports.debian.org/Instructions/) and [Ubuntu Backports](https://help.ubuntu.com/community/UbuntuBackports)).
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](#required-dependencies)):
```sh
# you will find the latest dsc link at http://packages.debian.org/sid/far2l
dget http://deb.debian.org/debian/pool/main/f/far2l/2.6.3~beta+ds-1.dsc
dpkg-source -x *.dsc
cd far2l-*/
debuild
# cd .. and install your self built far2l*.deb
```
#### Homebrew binaries or source (macOS and Linux)
Homebrew is a package manager with some [benefits](https://brew.sh/#:~:text=What%20Does%20Homebrew%20Do) over traditional approaches.
First, install Homebrew if not yet installed:
```sh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
##### TTY only, latest compact ve