Website review
This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.
What is feh?
feh is a lightweight, configurable image viewer built for command-line users. It displays images, but it also generates text and thumbnail listings, reports which files can or cannot be loaded, sets X11 desktop backgrounds, and can be driven through configurable keyboard shortcuts. It is released under a variant of the MIT license, and version 3.13.1 is the current release shown on its site.
What you can do with it
- Slideshow: show every file in or below a directory, advancing manually or automatically after a delay.
- Thumbnail mode: browse files as clickable thumbnails.
- List mode: get
ls-style output that includes image dimensions and similar details. - Multiwindow mode: open all selected images at once.
- Wallpaper setting: use it to set X11 backgrounds, with support for rxvt transparency.
- Custom actions: bind shell commands to keys, which is handy for sorting or processing images while you view them.
Who it suits
feh fits people who already work in a terminal and want an image viewer that starts fast, stays out of the way, and can be scripted. If you manage large directories of images, need quick dimension listings, or want a slideshow without a full desktop application, it is a natural choice. It can also be launched from graphical file managers, so a mouse is optional rather than required.
The trade-off is that it is not a photo organizer or editor. There is no catalog, tagging system or non-destructive editing here; the focus is viewing, listing and scripted actions. Optional HTTP and FTP support comes via libcurl, so remote image sources are possible when that dependency is present.
Getting it
feh is packaged for several distributions, including Arch Linux, Debian, FreeBSD, OpenBSD and Ubuntu, so installing through your package manager is usually the simplest route. Source builds are also available, and the README covers dependencies, configuration options and build instructions. Start by installing the package, then run feh on a directory of images to see the slideshow and list modes in practice. The project's manual, linked from feh, documents the operation modes and keyboard shortcuts in detail.
How can I use feh as a wallpaper setter?
feh can set your X11 desktop background directly from the command line. The page lists "Can be used as wallpaper setter; supports rxvt transparency" among its features, and the manual is the authoritative reference for the exact flags. In practice, you point feh at an image file and tell it to fill, scale or tile the screen; because feh is a lightweight X11 viewer rather than a desktop-environment service, it writes the background itself and does not manage a slideshow daemon unless you script one.
Typical approaches
- Single image, scaled to fill the screen: run feh with a background-setting option and a scaling mode, giving the image path. This is the common one-liner for a fixed wallpaper.
- Tiled or centered image: use the tiling or centering option instead of scaling when you want the image repeated or shown at native size against a solid color.
- Random wallpaper from a directory: combine feh's filelist or slideshow input with a background-set option and a randomizing flag, then call it from a script or cron job to rotate images.
- Multiple monitors: feh sets backgrounds per X screen; on multi-head setups you generally run it once per screen or use a script that assigns an image to each output.
Practical example
A shell script that picks a random image and applies it is the usual pattern: feed feh a filelist (for example, the output of find over your wallpaper folder), add the randomize and background-set options, and choose a scaling mode such as fill or max. Wire that script to a keybinding in your window manager or to a cron/systemd timer for periodic rotation. Because feh is scriptable, this is exactly the kind of task it fits: no daemon, no configuration file required.
Trade-offs and alternatives
feh is a good fit if you already use a minimal window manager, want wallpaper changes from scripts, or need rxvt transparency support. It is a weaker fit if you expect a graphical settings panel, per-workspace wallpaper persistence, or automatic handling of monitor hot-plugging — those are desktop-environment features, not feh's job. For a dedicated background daemon with transitions and per-output control, tools such as GitHub-hosted wallpaper managers are a common alternative, though that adds a dependency feh avoids.
Next step
Open the feh manual (linked from the project page) and read the background-setting and scaling options before writing your script. Start with a single image and one scaling mode to confirm the result on your display, then add randomization and a timer once the basic command behaves as expected.
How do I install feh on my system?
Install feh through your distribution's package manager first; compile from source only if your distro lacks a recent package or you need a specific build option.
Package manager route (recommended)
feh is packaged for Arch Linux, Debian, FreeBSD, OpenBSD and Ubuntu, so the usual commands apply:
- Debian/Ubuntu:
sudo apt install feh - Arch Linux:
sudo pacman -S feh - FreeBSD:
sudo pkg install feh - OpenBSD:
doas pkg_add feh
This gets you the current release (v3.13.1 at the time of writing) with dependencies and man pages handled for you. Check with feh --version afterwards.
Building from source
Download the release tarball from feh and follow the README, which lists dependencies, configuration options and build instructions. In outline:
- Install build dependencies (a C compiler, make, and the libraries feh links against, such as imlib2 and libcurl for HTTP/FTP support).
- Unpack the tarball and run the configure step.
make, thensudo make install.
The development version is available as a Git repository via the mirrors linked on the site (finalrewind, Codeberg, GitHub). If you go this route, expect to manage library versions yourself — that is the main trade-off against the package manager path.
Practical note
Because feh is a command-line viewer, installation is only half the setup. Once installed, confirm it works by running feh image.jpg on a file you have locally; if you plan to use it as a wallpaper setter or with custom shell actions, test those after the basic viewer works.
What are the main operation modes of feh?
feh's own documentation lists several distinct operation modes, each aimed at a different way of browsing or processing images from the command line:
- Slideshow — shows every file in or below a directory, with slides changed by keyboard or automatically after a delay.
- Thumbnail — presents files as clickable thumbnails, useful for scanning a folder visually.
- List — an
ls-like text output that includes image dimensions and similar details, suited to scripting and quick inspection. - Multiwindow — opens all images at once in separate windows rather than one at a time.
Beyond these, feh can also compile text and thumbnail listings, report files as loadable or unloadable, set X11 backgrounds (acting as a wallpaper setter, including rxvt transparency), and run custom shell commands as actions — for example, to sort images.
Choosing between them
| Mode | Best for | Trade-off |
|---|---|---|
| Slideshow | Reviewing a whole directory, presentations | Sequential attention; less useful for picking one file |
| Thumbnail | Quickly finding an image among many | Less detail per image |
| List | Scripts, dimension checks, piping output | No visual preview |
| Multiwindow | Comparing several images side by side | Window clutter on small screens |
A practical next step: if you are deciding whether feh fits your workflow, start with the mode that matches your task — thumbnail mode for culling a photo folder, list mode for a shell script that needs dimensions, or slideshow mode for a full-screen review — and check the feh manual for the exact flags. The project is packaged for Arch Linux, Debian, FreeBSD, OpenBSD and Ubuntu, so installation is usually a single package-manager command; source builds are also available via the release tarball or the Git mirrors linked from feh.
How can I customize feh's keyboard shortcuts or configure it?
feh has no graphical preferences window; configuration is done through command-line options, a config file, and X resources. Keyboard shortcuts themselves are built in (and can be remapped at build time), but the practical customization you'll do day to day is defining what keys trigger via config files and custom actions.
How configuration works
- Config file: feh reads a configuration file (by default
~/.config/feh/files such asthemes,buttons, andkeys). Thekeysfile lets you bind keys to actions without recompiling, andbuttonsdoes the same for mouse buttons. This is the main way to customize shortcuts. - Command-line options: Most behavior is set per-invocation with flags — for example slideshow delay, scaling, and window mode. These are covered in the manual linked from the project page.
- Custom actions: feh supports shell commands bound to keys, which is how people build lightweight sorting or tagging workflows (e.g. press a key to move the current image to a folder).
- X resources / X11: feh can also set the X11 background, so wallpaper behavior is configured through its own options rather than a separate tool.
A concrete setup
Create or edit ~/.config/feh/keys and add lines mapping a key to an action, then launch feh normally. A typical use is binding a key to a shell command that moves or renames the displayed file, so you can cull a photo directory without leaving the viewer. Because these are shell commands, the same mechanism works for opening the current file in an external editor or sending it somewhere else.
Choosing an approach
| Goal | Where to change it |
|---|---|
| Rebind a key to a different action | keys config file |
| Change slideshow timing, scaling, mode | Command-line flags |
| Mouse button behavior | buttons config file |
| Wallpaper / background handling | feh's own options, no separate config |
If you only want a few changes, start with the command-line flags and a small keys file; you rarely need to compile feh yourself unless you want to change the built-in default bindings. The official manual, reachable from feh, lists the exact file locations and syntax for your version.
Can feh display images from HTTP or FTP URLs?
Yes. feh can display images fetched over HTTP or FTP, provided it was built with optional libcurl support. This is listed among its features on the project page, and the page also notes that this support is optional rather than guaranteed.
What that means in practice
- If your installed feh includes libcurl, you can pass a URL in place of a file path and it will be retrieved and shown like a local image.
- If it was built without libcurl, URL arguments will not work; you would need a build with that option enabled or another way to fetch the file first.
- Because it is optional, the same feh version on two different systems can behave differently depending on how it was packaged.
A quick check
Run feh --version and look for a line mentioning curl or libcurl. If it appears, URL loading is compiled in. If not, it is not available in that build.
When it is useful
This suits command-line users who want to view a remote image without saving it first, for example checking a generated chart on a web server or stepping through a directory listing served over HTTP. For a single image, curl -O followed by feh on the local file is often simpler and avoids depending on build options. For browsing many remote images, feh's slideshow, thumbnail, list and multiwindow modes work best on local files, so downloading a set first tends to be more predictable.
For a viewer built around remote or mixed sources, a desktop image browser may be a better fit. The feh manual, linked from feh, documents the exact URL syntax and related options.
User reviews (0)