descriptionLinux port of FAR v2
homepage URLhttps://github.com/elfmz/far2l
repository URLhttps://github.com/elfmz/far2l.git
ownerroot@yurikoles.com
last changeSun, 12 May 2024 20:19:27 +0000 (12 23:19 +0300)
last refreshSun, 12 May 2024 20:37:32 +0000 (12 22:37 +0200)
content tags
add:
README.md

Cirrus Build Status Coverage Status Coverity Scan Language Grade: C/C++ Packages

far2l tag

Linux fork of FAR Manager v2 (http://farmanager.com/)
Works also on OSX/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/FTP/FTPS/SMB/NFS/WebDAV), colorer, multiarc, tmppanel, align, autowrap, drawline, editcase, SimpleIndent, Calculator, Python (optional scripting support)

FreeBSD/MacOS (Cirrus CI): Cirrus

License: GNU/GPLv2

Used code from projects

Installing, Running

Debian/Ubuntu 23.10+ binaries (with TTY X/Xi backends only)

apt-get install far2l

Under Ubuntu Desktop 23.10 run as far2l --nodetect=xi --ee

OSX/MacOS binaries

You can install prebuilt package for x86_64 platform via Homebrew Cask, by command:

brew install --cask far2l

You can also manually download and install prebuilt package for x86_64 platform from Releases page: <https://github.com/elfmz/far2l/releases>

Docker

You can use containers to try far2l without installing anything.

docker build . -l far2l
docker run -it far2l

See also Community packages & binaries

Building, Contributing, Hacking

Required dependencies

Or simply on Debian/Ubuntu:

apt-get install libwxgtk3.0-gtk3-dev libx11-dev libxi-dev libpcre3-dev libxerces-c-dev libuchardet-dev libssh-dev libssl-dev libsmbclient-dev libnfs-dev libneon27-dev libarchive-dev cmake pkg-config g++ git

A simple sid back port should be as easy as (build your own binary deb from the official source deb package):

# you will find the latest dsc link at http://packages.debian.org/sid/far2l
dget http://deb.debian.org/debian/pool/main/f/far2l/far2l_2.5.0~beta+git20230223+ds-2.dsc
dpkg-source -x *.dsc
cd far2l-*/
debuild
# cd .. and install your self built far2l*.deb

In older distributions: use libpcre2-dev and libwxgtk3.0-dev instead of libpcre3-dev and libwxgtk3.0-gtk3-dev

Clone and Build

git clone https://github.com/elfmz/far2l
cd far2l
mkdir -p _build
cd _build
cmake -DUSEWX=yes -DCMAKE_BUILD_TYPE=Release ..
cmake --build . -j$(nproc --all)

or with ninja (you need ninja-build package installed)

cmake -DUSEWX=yes -DCMAKE_BUILD_TYPE=Release -G Ninja ..
cmake --build .
Additional build configuration options:

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

To build with Python plugin: add argument -DPYTHON=yes

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: ALIGN AUTOWRAP CALC COLORER COMPARE DRAWLINE EDITCASE EDITORCOMP FARFTP FILECASE INCSRCH INSIDE MULTIARC NETROCKS SIMPLEINDENT TMPPANEL

OSX/MacOS build

To make custom/recent build use brew or MacPorts.

clang++ -v
One line OSX/MacOS install latest far2l git master via unofficial brew tap
brew install --HEAD yurikoles/yurikoles/far2l
brew install --HEAD yurikoles/yurikoles/far2l --without-wxwidgets
Full OSX/MacOS build from sources (harder):

Some issues can be caused by conflicting dependencies, like having two versions of wxWidgets, so avoid such situation when installing dependencies.

git clone https://github.com/elfmz/far2l
cd far2l
sudo port install cmake pkgconfig wxWidgets-3.2 libssh openssl xercesc3 libfmt uchardet neon
export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig
brew bundle -v
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(brew --prefix)/opt/openssl/lib/pkgconfig:$(brew --prefix)/opt/libarchive/lib/pkgconfig"
mkdir _build
cd _build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DUSEWX=yes -DCMAKE_BUILD_TYPE=Release ..
cmake --build . -j$(sysctl -n hw.logicalcpu)

or with ninja:

mkdir _build
cd _build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DUSEWX=yes -DCMAKE_BUILD_TYPE=Release -G Ninja ..
cmake --build .
macOS workaround if far2l in macOS regularly asks permission to folders

After command

 sudo codesign --force --deep --sign - /Applications/far2l.app

it is enough to confirm permission only once.

Details see in issue.

Building on Gentoo (and derivatives)

For absolute minimum you need:

emerge -avn dev-libs/xerces-c app-i18n/uchardet dev-util/cmake

If you want to build far2l with wxGTK support also install it:

emerge -avn x11-libs/wxGTK

Additionally, for NetRocks you will need:

emerge -avn net-libs/neon net-libs/libssh net-fs/libnfs net-fs/samba

After installing, follow Clone and Build section above.

Installing and Building on NixOS

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.

You can build and run far2l package for any revision:

nix-shell -I nixpkgs=https://github.com/<fork>/nixpkgs/archive/<revision-or-branch>.tar.gz -p far2l --command far2l
nix-shell -I nixpkgs=/path/to/nixpkgs -p far2l --command far2l

To advance the package to a new Far2l revision, edit the fetchFromGitHub set attributes rev (revision hash) and sha256 (revision content hash). Important! If you leave the old content hash, the old cached content for that hash might be used without attempting to download the new revision. If you're not expecting the build to break, the easiest would be to make a fork, push the change, and build straight from github.

IDE Setup

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.

Terminals and SSH clients

Supporting extended far2l keyboard shortcuts and clipboard access

Useful 3rd-party extras

Community packages & binaries

They are mainteined by enthusiasts and may be not exact with master: sometimes has extra plugins, sometimes has tweak, etc.

Notes on porting and FAR Plugin API changes

Testing

Known issues:

shortlog
51 min ago elfmzMerge pull request #2218 from akruphi/dialog_up_downmaster
11 hours ago akruphisetattr (Attributes dialog CtrlA): hotkeys correction
12 hours ago akruphicorrect after #2213 vertical keys processing in dialog
25 hours ago elfmzMerge pull request #2208 from akruphi/date_configure
25 hours ago elfmzMerge pull request #2215 from ctapmex/github-ci
25 hours ago Aleksey Dobrunovfix clang build
25 hours ago elfmzMerge pull request #2213 from Dazzar56/setattr-hotkeys
25 hours ago elfmzMerge pull request #2211 from dstd/history-autohighligh...
25 hours ago elfmzMerge pull request #2209 from ctapmex/colorer-openwrt
25 hours ago elfmzMerge pull request #2212 from unxed/ctrl_yo
26 hours ago elfmzMerge pull request #2217 from ctapmex/colorer-schemes
26 hours ago elfmzMerge pull request #2216 from ctapmex/farcolorer_refact...
31 hours ago akruphiDate format customization: refactoring
32 hours ago akruphiDate format customization: more detect formats from...
34 hours ago Aleksey Dobrunovupdate colorer schemes
2 days ago Dazzar56new keyboard navigation method now is default
...
tags
3 weeks ago v_2.6.1_hotfix1
4 weeks ago v_2.6.1
2 months ago v_2.6.0 2.6.0
6 months ago v_2.5.3
8 months ago v_2.5.2
11 months ago v_2.5.1
15 months ago v_2.5.0
19 months ago v_2.4.1
2 years ago v_2.4.0
2 years ago v_2.3.2
2 years ago v2021-12-04_alpha
2 years ago v2021-09-21_alpha
2 years ago v2021-06-30_alpha
3 years ago v2021-04-26_alpha
3 years ago v2021-04-19_alpha v2021-04-19_alpha
3 years ago alpha-17sep20 alpha 17 september 2020
...
heads
51 min ago master
3 weeks ago v_2.6.1_hotfix
19 months ago debug-1361
3 years ago iconv