lf

提供: ArchWiki
2023年7月20日 (木) 20:58時点におけるKgx (トーク | 投稿記録)による版 (英語版から転載)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

lf (as in "list files") is a terminal file manager written in Go with a heavy inspiration from ranger. Outstanding features are a fast startup and low memory footprint, a server/client architecture and high customization. Unlike ranger, some features like tabs or windows are intentionally not included and instead left to be handled by window manager or terminal multiplexer.

Installation

Install the lf package.

Usage

To start the application, launch a terminal and run lf. The default keybindings are similar to those of vim with some difference from rangers default.

Configuration

Copy the default configuration at /usr/share/doc/lf/lfrc.example to ~/.config/lf/lfrc to use as a template for further customization. Some common features are already included as comments in the configuration example. For more extensive configurations see the documentation. Useful configuration examples from the community can also be found on GitHub.

Tips and tricks

Using rifle file opener

lf can use the file opener rifle which is included in the ranger package.

Set an environment variable to automatically use rifle to open files in the related applications.

export OPENER='rifle' 

For editing file, you can also set your default editor:

export EDITOR='vim'

Previewing files

To automatically preview contents from currently selected files, set a custom previewer script in lfrc. It is possible to simple use the scope.sh script from ranger which serves as a good template for customization.

set previewer "~/.config/ranger/scope.sh"

Sandboxing previews

While the default lf configuration only previews text files, using more complex preview parsers is somewhat dangerous. In case there is a vulnerability in a preview parser like pdftotext, it is possible to use this simple script to sandbox the previewer using bubblewrap :

~/.config/lf/previewSandbox.sh
#!/bin/bash
set -euo pipefail
(
    exec bwrap \
     --ro-bind /usr/bin /usr/bin \
     --ro-bind /usr/share/ /usr/share/ \
     --ro-bind /usr/lib /usr/lib \
     --ro-bind /usr/lib64 /usr/lib64 \
     --symlink /usr/bin /bin \
     --symlink /usr/bin /sbin \
     --symlink /usr/lib /lib \
     --symlink /usr/lib64 /lib64 \
     --proc /proc \
     --dev /dev  \
     --ro-bind /etc /etc \
     --ro-bind ~/.config ~/.config \
     --ro-bind ~/.cache ~/.cache \
     --ro-bind "$PWD" "$PWD" \
     --unshare-all \
     --new-session \
     bash ~/.config/lf/preview.sh "$@"
)

Set your previewer to the sandbox script and have your real preview script at ~/.config/lf/preview.sh:

set previewer ~/.config/lf/previewSandbox.sh

See also