far2l
FAR管理器v2的Linux分支(http://farmanager.com/) 也可在OSX/MacOS和BSD上运行(但后者未经常规测试) 测试版。 使用风险自负!
目前可用的插件:NetRocks(SFTP/SCP/FTP/FTPS/SMB/NFS/WebDAV)、colorer、multiarc、tmppanel、align、autowrap、drawline、editcase、SimpleIndent、Calculator、Python(可选脚本支持)
许可证:GNU/GPLv2
使用了以下项目的代码
- FAR for Windows及其部分插件
- WINE
- ANSICON
- Portable UnRAR
- 7z ANSI-C解码器
- utf-cpp(作者:ww898)
UI后端
FAR2L有基本UI后端(详见内置帮助中的UI后端部分):
-
GUI(WX):使用wxWidgets,在图形模式下工作,理想用户体验,需要大量X11依赖;
-
TTY|Xi:在终端模式下工作,需要一对X11库作为依赖(用于访问剪贴板和获取所有键盘修饰键的状态),几乎完美的用户体验;
-
TTY|X:在终端模式下工作,使用X11访问剪贴板,所有键盘操作通过终端进行;
-
TTY:纯终端模式,无X11依赖,用户体验有一些限制(在终端模拟器中运行时可完全工作,这些模拟器提供剪贴板访问并具有高级键盘协议)。
模式 (UI后端) | TTY (纯far2l) | TTY|X | TTY|Xi | GUI |
---|---|---|---|---|
工作环境: | 终端 | 终端 | 终端 | 桌面环境 (X11 或Wayland 或macOS) |
二进制文件: | far2l | far2l far2l_ttyx.broker | far2l far2l_ttyx.broker | far2l far2l_gui.so |
依赖项: | 最小 | + libx11 | + libx11, libxi | + wxWidgets, GTK |
键盘: | 典型终端: 仅基本 按键组合 KiTTY(putty分支), kitty(*nix版), iTerm2, Windows Terminal, far2l的VT:完全支持 | 典型终端: 仅基本 按键组合 KiTTY(putty分支), kitty(*nix版), iTerm2, Windows Terminal, far2l的VT:完全支持 | 典型终端: x11下大多数 按键组合; Wayland下 仅基本按键组合 KiTTY(putty分支), kitty(*nix版), iTerm2, Windows Terminal, far2l的VT:完全支持 | 所有 按键组合 |
剪贴板 访问: | 典型终端: 通过命令行 工具如xclip kitty(*nix版), iTerm2: 通过OSC52 Windows Terminal: 通过OSC52 或WSL下的 命令行工具 KiTTY(putty分支), far2l的VT: 通过far2l扩展 | 典型终端, kitty(*nix版): 通过x11交互 iTerm2: 通过OSC52 Windows Terminal: 通过OSC52 或WSL下的 命令行工具 KiTTY(putty分支), far2l的VT: 通过far2l扩展 | 典型终端, kitty(*nix版): 通过x11交互 iTerm2: 通过OSC52 Windows Terminal: 通过OSC52 或WSL下的 命令行工具 KiTTY(putty分支), far2l的VT: 通过far2l扩展 | 通过 wxWidgets API 通过WSL下的 命令行工具 |
典型 使用场景: | 服务器, 嵌入式 | 在喜欢的终端中 运行far2l 但具有 更好的用户体验 | 在喜欢的终端中 运行far2l 但具有 最佳用户体验 | 桌面 |
是否必需: | 是 | 否 | 否 | 否 |
_关于在TTY/TTY | X中使用OSC 52的注意事项_: | |||
要与系统剪贴板交互,你必须记得在FAR2L设置和终端设置中启用OSC 52。 | ||||
在FAR2L设置中(选项 ->界面设置 ->使用OSC52设置剪贴板数据 , | ||||
该选项仅在far2l以TTY/TTY | X模式运行且其他剪贴板访问选项不可用时显示; | |||
你可以运行far2l --tty --nodetect 来强制不使用其他剪贴板选项), | ||||
以及在终端设置中必须允许OSC 52选项(出于安全考虑,某些终端默认禁用OSC 52; | ||||
许多终端中的OSC 52仅实现了复制模式,从终端粘贴则通过括号粘贴模式进行)。 |
安装、运行
Debian/Ubuntu 23.10+二进制文件(仅支持TTY X/Xi后端)
apt-get install far2l
仅在使用Wayland的Ubuntu Desktop 23.10下运行时使用
far2l --nodetect=xi --ee
Debian在sid-unstable / 13 trixie-testing / 12 bookworm-backports中有far2;Ubuntu从23.10开始提供。 有关官方仓库中版本的详细信息,请参阅 https://packages.debian.org/search?keywords=far2l 或 https://packages.ubuntu.com/search?keywords=far2l
注意:目前Debian/Ubuntu官方仓库中的far2l仅为TTY|Xi版本,依赖于一对X11库。 这对某些服务器可能不太方便。 对于没有X且仅有终端/ssh访问的服务器,纯far2l-TTY版本更为合适 (二进制文件或便携版请参见社区包和二进制文件)。
OSX/MacOS二进制文件
你可以通过Homebrew Cask安装x86_64平台的预构建包,使用以下命令:
brew install --cask far2l
你也可以从发布页面手动下载并安装x86_64平台的预构建包:https://github.com/elfmz/far2l/releases
Docker
你可以使用容器来尝试far2l
,无需安装任何东西。
docker build . -l far2l
docker run -it far2l
另请参阅社区包和二进制文件
构建、贡献、开发
所需依赖
libwxgtk3.0-gtk3-dev
(或较新发行版中的libwxgtk3.2-dev
,或较旧发行版中的libwxgtk3.0-dev
,可选 - 需要用于GUI后端,使用-DUSEWX=no
时不需要)libx11-dev
(可选 - 需要用于X11扩展,为TTY后端提供更好的用户体验,适用于X11可用的环境)libxi-dev
(可选 - 需要用于X11/Xi扩展,为TTY后端提供最佳用户体验,适用于X11 Xi扩展可用的环境)libxerces-c-dev
(可选 - 需要用于Colorer插件,使用-DCOLORER=no
时不需要)libuchardet-dev
(可选 - 需要用于自动字符集检测,使用-DUSEUCD=no
时不需要)libssh-dev
(可选 - 需要用于NetRocks/SFTP)libssl-dev
(可选 - 需要用于NetRocks/FTPS)libsmbclient-dev
(可选 - 需要用于NetRocks/SMB)libnfs-dev
(可选 - 需要用于NetRocks/NFS)libneon27-dev
(或更高版本,可选 - 需要用于NetRocks/WebDAV)libarchive-dev
(可选 - 需要用于multiarc中更好的归档支持)libunrar-dev
(可选 - 需要用于multiarc中的RAR归档支持,请参阅UNRAR命令行选项)libpcre3-dev
(或较旧发行版中的libpcre2-dev
,可选 - 需要用于multiarc中高级自定义归档格式支持)cmake
(>= 3.2.2)pkg-config
g++
git
(需要用于下载源代码)
或者在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
从sid简单移植应该很容易(从官方源deb包构建你自己的二进制deb):
# 你可以在http://packages.debian.org/sid/far2l找到最新的dsc链接
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 .. 并安装你自己构建的far2l*.deb
在较旧的发行版中:使用libpcre2-dev和libwxgtk3.0-dev代替libpcre3-dev和libwxgtk3.0-gtk3-dev
克隆和构建
- 克隆当前master分支
git clone https://github.com/elfmz/far2l
cd far2l
- 检出某个稳定的发布标签(master分支被认为是不稳定的):
git checkout v_2.#.#
- 准备构建目录:
mkdir -p _build
cd _build
- 构建: 使用make:
cmake -DUSEWX=yes -DCMAKE_BUILD_TYPE=Release ..
cmake --build . -j$(nproc --all)
或使用ninja(需要安装ninja-build包)
cmake -DUSEWX=yes -DCMAKE_BUILD_TYPE=Release -G Ninja ..
cmake --build .
-
如果上述命令没有出错,你也可以安装far2l,
sudo cmake --install .
-
也可以通过运行
cmake --build . --target package
命令在_build
目录中创建far2l_2.X.X_ARCH.deb或...tar.gz包。
额外的构建配置选项:
要构建不带WX后端的版本(仅控制台版本):将-DUSEWX=yes
改为-DUSEWX=no
,在这种情况下也不需要安装libwxgtk*-dev包
要强制禁用TTY|X和TTY|Xi后端:添加参数-DTTYX=no
;要仅禁用TTY|Xi - 添加参数-DTTYXI=no
要消除libuchardet依赖以减少far2l依赖,但代价是失去自动字符集检测功能:添加-DUSEUCD=no
要构建带Python插件的版本:添加参数-DPYTHON=yes
要控制multiarc中如何处理RAR归档:
-DUNRAR=bundled
(默认)使用multiarc/src/formats/rar/unrar中的捆绑源代码
-DUNRAR=lib
使用libunrar和unrar工具,构建还需要安装libunrar-dev
-DUNRAR=NO
不使用特殊的unrar代码,RAR归档将由libarchive处理,除非它也被禁用
还有用于切换其他插件构建的选项:ALIGN AUTOWRAP CALC COLORER COMPARE DRAWLINE EDITCASE EDITORCOMP FARFTP FILECASE INCSRCH INSIDE MULTIARC NETROCKS SIMPLEINDENT TMPPANEL
OSX/MacOS 构建
要进行自定义/最新构建,请使用 brew 或 MacPorts。
- 支持的编译器:AppleClang 8.0.0.x 或更新版本。检查您的版本,如有必要请安装/更新 Xcode。
clang++ -v
- 如果您想使用 Homebrew 构建 - 请先访问 https://brew.sh/ 获取安装说明。请注意,在 MacOS Big Sur 下使用 Homebrew 构建可能会遇到问题。
- 如果您想使用 MacPorts 构建 - 请先访问 https://www.macports.org/install.php 获取安装说明。
通过非官方 brew tap 一键安装最新 far2l git master 版本
- 带 GUI/TTY 后端:
brew install --HEAD yurikoles/yurikoles/far2l
- 仅带 TTY 后端:
brew install --HEAD yurikoles/yurikoles/far2l --without-wxwidgets
- 另外,您可以通过在上述两个命令中添加
--with-python@3.10
来启用 Python 支持。
从源代码完整构建 OSX/MacOS 版本(较困难):
一些问题可能由冲突的依赖项引起,比如安装了两个版本的 wxWidgets,因此在安装依赖项时要避免这种情况。
- 克隆:
git clone https://github.com/elfmz/far2l
cd far2l
- 使用 MacPorts 安装所需依赖:
sudo port install cmake pkgconfig wxWidgets-3.2 libssh openssl xercesc3 libfmt uchardet neon
export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig
- 或者如果您更喜欢使用 brew 包,那么:
brew bundle -v
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(brew --prefix)/opt/openssl/lib/pkgconfig:$(brew --prefix)/opt/libarchive/lib/pkgconfig"
- 安装依赖后 - 您可以构建 far2l: 使用 make:
mkdir _build
cd _build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DUSEWX=yes -DCMAKE_BUILD_TYPE=Release ..
cmake --build . -j$(sysctl -n hw.logicalcpu)
或使用 ninja:
mkdir _build
cd _build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DUSEWX=yes -DCMAKE_BUILD_TYPE=Release -G Ninja ..
cmake --build .
- 然后您可以通过运行
cpack
命令创建 .dmg 包。 请注意,这一步有时会失败,可能需要多次尝试才能成功。 建议在 cpack 进行时不要在机器上做任何操作。 成功创建 .dmg 后,您可以通过运行open ...path/to/created/far2l-*.dmg
来安装它。
macOS 解决方案:如果 far2l 在 macOS 中经常请求文件夹权限
执行以下命令后
sudo codesign --force --deep --sign - /Applications/far2l.app
只需确认一次权限即可。
详情请参阅 issue
。
在 Gentoo(及其衍生版)上构建
最低要求:
emerge -avn dev-libs/xerces-c app-i18n/uchardet dev-util/cmake
如果您想构建支持 wxGTK 的 far2l,还需安装:
emerge -avn x11-libs/wxGTK
此外,对于 NetRocks,您还需要:
emerge -avn net-libs/neon net-libs/libssh net-fs/libnfs net-fs/samba
安装后,按照上面的克隆和构建部分进行操作。
在 NixOS 上安装和构建
要系统范围内安装,请将 far2l
包添加到您的 configuration.nix
的 environment.systemPackages
列表中。要按需运行应用程序而不影响系统状态,请执行 nix-shell -p far2l --command far2l
。这些使用的是您当前 channel 中的包版本。
Far2l 对 nix 的适配是 GitHub 上的一个小文件,它指定从 Far2l 仓库获取哪个 Git 修订版,用哪些依赖项构建,以及如何修补其对其他软件的引用,使其能够以独立方式运行,不受系统中其他可用版本的影响。
您可以构建并运行任何修订版的 far2l
包:
- 直接从 GitHub(NixOS/nixpkgs 仓库,或您自己的 fork 和分支):
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
要将包更新到新的 Far2l 修订版,请编辑 fetchFromGitHub
设置属性 rev
(修订版哈希)和 sha256
(修订版内容哈希)。重要! 如果您保留旧的内容哈希,可能会使用该哈希的旧缓存内容,而不会尝试下载新的修订版。如果您不希望构建过程中断,最简单的方法是创建一个 fork,推送更改,然后直接从 GitHub 构建。
IDE 设置
您可以将项目导入到您喜欢的 IDE 中,如 QtCreator、CodeLite 或任何其他支持 cmake 或 cmake 能够为其生成项目的 IDE。
- QtCreator: 选择"打开项目",并将 QtCreator 指向 far2l 根目录中的 CMakeLists.txt
- CLion: 与 QtCreator 相同。
- CodeLite: 使用此指南设置项目: https://wiki.codelite.org/pmwiki.php/Main/TheCMakePlugin (为避免污染源代码树,不要在 far2l 目录内创建工作空间)
- Visual Studio Code (需要 CMake Tools 扩展): 打开 far2l 根目录(默认在子目录
_build
中构建;您可以在.vscode/settings.json
中更改)
支持扩展 far2l 键盘快捷键和剪贴板访问的终端和 SSH 客户端
- kovidgoyal 的 kitty (Linux, macOS, *BSD): https://github.com/kovidgoyal/kitty 和 https://sw.kovidgoyal.net/kitty (TTY|k 后端: 通过 kovidgoyal 的 kitty 键盘协议实现按键; 在 far2l 和 kitty 中开启 OSC 52 以支持剪贴板)
- Wez 的终端模拟器 (Linux, FreeBSD, Windows): https://github.com/wez/wezterm 和 https://wezfurlong.org/wezterm (TTY|k 后端: 在 Linux, FreeBSD 中通过 kovidgoyal 的 kitty 键盘协议实现按键; TTY|w 后端: 在 Windows 中通过 win32-input-mode 实现按键,默认启用; 开启 OSC 52 以支持剪贴板) [kitty 键盘协议在 macOS 和 Windows 中不受支持]
- iTerm2 (macOS): https://gitlab.com/gnachman/iterm2 和 https://iterm2.com (TTY|a 后端: 通过 iTerm2 "raw keyboard" 协议实现按键; 开启 OSC 52 以支持剪贴板)
- Windows Terminal (TTY|w 后端: 通过 win32-input-mode 实现按键; 开启 OSC 52 以支持剪贴板; 存在鼠标 bug: https://github.com/microsoft/terminal/issues/15083 )
- 原版 Putty 无法正确发送某些键盘快捷键。请使用支持特殊 far2l TTY 扩展(流畅按键、剪贴板共享等)的 putty 分支版本:
- putty4far2l (Windows ssh 客户端): https://github.com/ivanshatsky/putty4far2l/releases 和 https://github.com/unxed/putty4far2l (TTY|F 后端:通过 FAR2L TTY 扩展支持按键和剪贴板)
- cyd01 的 KiTTY (Windows ssh 客户端): https://github.com/cyd01/KiTTY 和 https://www.9bis.net/kitty (TTY|F 后端:通过 FAR2L TTY 扩展支持按键和剪贴板)
- putty-nd (Windows ssh 客户端): https://sourceforge.net/projects/putty-nd 和 https://github.com/noodle1983/putty-nd (TTY|F 后端:通过 FAR2L TTY 扩展支持按键和剪贴板)
注意:要完全传输扩展键盘快捷键和剪贴板到/从远程 far2l, 最佳方式之一是在本地 far2l-GUI 内部发起连接 (详见内置帮助的 UI 后端部分)。
有用的第三方扩展
-
支持 far2l 终端扩展的 Turbo Vision TUI 框架: https://github.com/magiblot/tvision
-
支持 far2l 终端扩展的 turbo 文本编辑器: https://github.com/magiblot/turbo
-
从 Windows FAR Manager 2 .reg 格式导入配色方案的工具: https://github.com/unxed/far2ltricks/blob/main/misc/far2l_import.pl
-
社区维基和技巧 (俄语;非官方): https://github.com/akruphi/far2l/wiki
社区软件包和二进制文件
这些由爱好者维护,可能与主分支不完全一致:有时包含额外插件,有时有调整等。
- 便携版 (带 TTY X/Xi 后端) | AppImage (带 wx-GUI 和一些额外插件): https://github.com/spvkgn/far2l-portable/releases
- Ubuntu 和 Mint 的 PPA 包含最新 far2l: https://launchpad.net/~far2l-team/+archive/ubuntu/ppa
- Fedora 和 CentOS: https://copr.fedorainfracloud.org/coprs/polter/far2l
- OpenSUSE、Fedora、Ubuntu: https://download.opensuse.org/repositories/home:/viklequick/
- OpenWrt: https://github.com/spvkgn/far2l-openwrt
- Termux: https://github.com/spvkgn/far2l-termux
- Flatpak: https://github.com/spvkgn/far2l-flatpak (通过沙盒仅能访问部分实际文件系统)
更多信息请参见 https://github.com/elfmz/far2l/issues/647
关于移植和 FAR 插件 API 变更的说明
- 请参阅 HACKING.md
测试
已知问题:
- 仅英语、俄语、乌克兰语和白俄罗斯语(仅界面)的翻译是有效的,所有其他语言都需要深度校正。