ctpv/README.md

226 lines
5.5 KiB
Markdown
Raw Permalink Normal View History

2022-06-14 13:00:53 +02:00
# ctpv
File previewer for a terminal
2022-06-14 13:00:53 +02:00
![showcase](doc/showcase.gif)
----
2023-03-26 00:06:18 +01:00
ctpv is a file previewer utility for a terminal.
2022-06-20 22:25:31 +02:00
2023-03-26 00:06:18 +01:00
It was made with integration into [lf file manager][lf] in mind,
but I believe that it can be easily integrated into other programs
as well.
2022-07-11 15:40:12 +02:00
2023-03-26 00:06:18 +01:00
It supports previews for source code, archives, PDF files, images,
videos, etc.
See [Previews](#previews) for more info.
Image previews are powered by one of these programs:
2022-06-20 22:25:31 +02:00
* [Überzug][ueberzug] (X11 only)
2023-03-26 00:06:18 +01:00
* [Chafa][chafa] (X11 and Wayland)
* [Kitty terminal][kitty]
2022-06-14 13:00:53 +02:00
2022-06-16 07:00:57 +02:00
ctpv is a remake of an awesome program named
2023-03-26 00:06:18 +01:00
[stpv](https://github.com/Naheel-Azawy/stpv).
stpv did everything I wanted, except it was a bit sluggish because
2022-06-14 13:00:53 +02:00
it was written in POSIX shell.
2023-03-26 00:06:18 +01:00
ctpv is written in C and is an attempt to make a faster version of
stpv with a few new features.
2022-06-21 17:09:07 +02:00
2023-03-26 00:06:18 +01:00
## Previews
2022-06-21 17:09:07 +02:00
2023-03-26 00:06:18 +01:00
Previewing each file type requires specific programs installed on
a system.
2022-06-19 17:21:52 +02:00
If a program is not found on the system, ctpv
will try to use another one.
Only one program is required for each file type.
For example, you only need either `elinks`, `lynx` or
`w3m` installed on your system to view HTML files.
2022-06-17 10:41:43 +02:00
2022-06-18 17:50:57 +02:00
<!-- This table is auto generated! -->
<!--TABLESTART-->
| File types | Programs |
2022-06-17 10:53:10 +02:00
| ---- | ---- |
| any | [exiftool][exiftool] cat |
| archive | [atool][atool] |
| audio | [ffmpegthumbnailer][ffmpegthumbnailer] [ffmpeg][ffmpeg] |
| diff | [colordiff][colordiff] [delta][delta] [diff-so-fancy][diff-so-fancy] |
| directory | ls |
| font | fontimage |
| gpg-encrypted | [gpg][gpg] |
| html | [elinks][elinks] [lynx][lynx] [w3m][w3m] |
| image | [ueberzug][ueberzug] [chafa][chafa] |
| json | [jq][jq] |
| markdown | [glow][glow] [mdcat][mdcat] |
| office | [libreoffice][libreoffice] |
| pdf | pdftoppm |
| svg | convert |
| text | bat cat [highlight][highlight] [source-highlight][source-highlight] |
| torrent | transmission-show |
| video | [ffmpegthumbnailer][ffmpegthumbnailer] |
[ffmpegthumbnailer]: https://github.com/dirkvdb/ffmpegthumbnailer
[w3m]: https://w3m.sourceforge.net/
[elinks]: http://elinks.cz/
[fontforge]: https://fontforge.org
[exiftool]: https://github.com/exiftool/exiftool
[highlight]: https://gitlab.com/saalen/highlight
[chafa]: https://github.com/hpjansson/chafa
[gpg]: https://www.gnupg.org/
[transmission]: https://transmissionbt.com/
[delta]: https://github.com/dandavison/delta
[colordiff]: https://www.colordiff.org/
[source-highlight]: https://www.gnu.org/software/src-highlite/
[ueberzug]: https://github.com/seebye/ueberzug
[mdcat]: https://github.com/swsnr/mdcat
[glow]: https://github.com/charmbracelet/glow
[atool]: https://www.nongnu.org/atool/
[lynx]: https://github.com/jpanther/lynx
[libreoffice]: https://www.libreoffice.org/
[diff-so-fancy]: https://github.com/so-fancy/diff-so-fancy
[imagemagick]: https://imagemagick.org/
[poppler]: https://poppler.freedesktop.org/
[jq]: https://github.com/jqlang/jq
[ffmpeg]: https://ffmpeg.org/
2022-06-18 17:50:57 +02:00
<!--TABLEEND-->
2022-06-17 10:41:43 +02:00
2022-06-14 13:00:53 +02:00
## Installation
### Manual
2023-03-26 00:06:18 +01:00
If you are building from source, make sure to install these libraries!
Depending on your system, you probably will also need "devel" versions
of the same libraries.
* `libcrypto`
* `libmagic`
Install:
```console
2022-06-14 13:00:53 +02:00
git clone https://github.com/NikitaIvanovV/ctpv
cd ctpv
2023-04-01 02:29:49 +02:00
make
2023-03-26 00:06:18 +01:00
sudo make install
2022-06-14 13:00:53 +02:00
```
2023-03-26 00:06:18 +01:00
Uninstall:
```console
sudo make uninstall
```
2022-06-14 13:00:53 +02:00
2022-06-21 17:07:01 +02:00
### AUR
If you are an Arch Linux user, you can install
2022-09-10 16:30:16 +02:00
[`ctpv-git`](https://aur.archlinux.org/packages/ctpv-git)
AUR package.
2022-06-21 17:07:01 +02:00
2023-03-26 00:06:18 +01:00
```console
2022-06-21 17:07:01 +02:00
yay -S ctpv-git
```
2023-03-20 20:50:45 +01:00
### MacPorts
With MacPorts, you can install the
[`ctpv`](https://ports.macports.org/port/ctpv)
package.
```console
sudo port install ctpv
```
2023-08-12 00:57:19 +02:00
### Homebrew
With Homebrew, you can install the
[`ctpv`](https://formulae.brew.sh/formula/ctpv)
package.
```console
brew install ctpv
```
### Nix
#### Nix package
```console
nix-env -ivf cptv
nix profile install nixpkgs#cptv # with flakes enabled
```
#### NixOS and HomeManager
If you don't need to call it directly and
just want to use it through lf:
```nix
programs.lf = {
previewer = {
keybinding = "i";
source = "${pkgs.ctpv}/bin/ctpv";
};
extraConfig = ''
&${pkgs.ctpv}/bin/ctpv -s $id
cmd on-quit %${pkgs.ctpv}/bin/ctpv -e $id
set cleaner ${pkgs.ctpv}/bin/ctpvclear
'';
}
```
2023-11-30 10:19:17 +01:00
### Gentoo
2023-12-08 14:05:05 +01:00
Add this
[ctpv-9999.ebuild](https://github.com/Sneethe/sneethe-overlay/blob/main/app-misc/ctpv/ctpv-9999.ebuild)
to your own
[repository](https://wiki.gentoo.org/wiki/Creating_an_ebuild_repository).
2023-11-30 10:19:17 +01:00
2023-12-08 14:05:05 +01:00
Or alternatively:
2023-11-30 10:19:17 +01:00
```console
eselect repository add sneethe-overlay git https://github.com/Sneethe/sneethe-overlay.git
emaint sync --repo sneethe-overlay
emerge --ask --verbose app-misc/ctpv
```
2022-06-14 13:00:53 +02:00
## Integration
### lf file manager
Add these lines to your lf config
(usually located at `~/.config/lf/lfrc`).
2022-06-14 13:00:53 +02:00
```
set previewer ctpv
set cleaner ctpvclear
&ctpv -s $id
&ctpvquit $id
2022-06-14 13:00:53 +02:00
```
#### Wayland
If you use Wayland, follow these steps:
* Make sure you use one of the [terminals that support sixel][sixel]
* Install [this fork of lf][lf-sixel]
* Install [Chafa][chafa]
2023-03-26 00:06:18 +01:00
* Add `set chafasixel` to `~/.config/ctpv/config`
As of 2023-03-19, original lf does not support sixel protocol,
which is why you need use the fork.
2022-06-14 13:00:53 +02:00
## Documentation
2022-06-20 22:25:31 +02:00
Full documentation on command line options,
2022-09-10 16:30:16 +02:00
configuration and how to define custom previews can be found here:
2023-03-26 00:06:18 +01:00
<https://www.nikitaivanov.com/man1/ctpv>
[ueberzug]: https://github.com/seebye/ueberzug
[kitty]: https://github.com/kovidgoyal/kitty
[chafa]: https://github.com/hpjansson/chafa
[lf]: https://github.com/gokcehan/lf
[lf-sixel]: https://github.com/horriblename/lf
[sixel]: https://www.arewesixelyet.com