1[![CI status](https://ci.codeberg.org/api/badges/dnkl/fuzzel/status.svg)](https://ci.codeberg.org/dnkl/fuzzel)
2
3# Fuzzel
4
5Fuzzel is a Wayland-native application launcher, similar to rofi's
6_drun_ mode.
7
8[![Packaging status](https://repology.org/badge/vertical-allrepos/fuzzel.svg)](https://repology.org/project/fuzzel/versions)
9
10
11## Screenshot
12
13![Screenshot](doc/screenshot.png)
14
15_Fuzzel, with transparency, on top of a browser window showing a diff of a fuzzel commit_
16
17
18## Features:
19
20- Wayland native
21- Rofi drun-like mode of operation
22- dmenu mode where newline separated entries are read from stdin
23- Emacs key bindings
24- Icons!
25- Remembers frequently launched applications
26
27
28## Limitations:
29
30- No themes (but you **can** configure font and colors)
31
32
33## Requirements
34
35### Runtime
36
37* pixman
38* wayland (_client_ and _cursor_ libraries)
39* xkbcommon
40* cairo (optional)
41* libpng (optional)
42* librsvg (optional)
43* [fcft](https://codeberg.org/dnkl/fcft) [^1]
44
45[^1]: can also be built as subprojects, in which case they are
46    statically linked.
47
48
49### Building
50
51* meson
52* ninja
53* wayland protocols
54* scdoc
55* [tllist](https://codeberg.org/dnkl/tllist) [^1]
56
57
58## Installation
59
60To build, first, create a build directory, and switch to it:
61```sh
62mkdir -p bld/release && cd bld/release
63```
64
65Second, configure the build (if you intend to install it globally, you
66might also want `--prefix=/usr`):
67```sh
68meson --buildtype=release \
69    -Denable-cairo=disabled|enabled|auto \
70    -Denable-png=disabled|enabled|auto \
71    -Denable-svg=disabled|enabled|auto \
72    ../..
73```
74
75`-Denable-{png,svg}` can be used to force-enable or force-disable png
76and/or svg support. The default is `auto`, which means enable if all
77required libraries are available. PNGs require _libpng_, and SVGs
78require _cairo_ and _librsvg_.
79
80`-Denable-cairo` can be used to force-enable or force-disable cairo
81support. When disabled, fuzzel will not be able to draw rounded
82corners, nor will it support SVGs (regardless of what `-Denable-svg`
83is set to).
84
85Three, build it:
86```sh
87ninja
88```
89
90You can now run it directly from the build directory:
91```sh
92./fuzzel
93```
94
95Use command line arguments to configure the look-and-feel:
96```sh
97./fuzzel --help
98```
99
100Optionally, install it:
101```sh
102ninja install
103```
104
105For more detailed configuration information, see the man page:
106```sh
107man fuzzel
108```
109
110
111## License
112
113Fuzzel is released under the [MIT license](LICENSE).
114
115Fuzzel uses nanosvg, released under the [Zlib
116license](3rd-party/nanosvg/LICENSE.txt).
117