1
0
Fork 0
forked from dnkl/fuzzel
Application launcher for wlroots based Wayland compositors, similar to rofi's drun mode.
  • C 95.4%
  • Shell 2.8%
  • Meson 1.8%
Find a file
Daniel Eklöf b484ec38ca
render: fix crash when 'tabs = 0'
When tabs is 0, and there's a tab character in the entry name, fuzzel
crashes.

This happens because we divide the current cluster's length with the
tab count (modulus, really).

Simply set chars_to_next_tab_stop to 0 when tabs is 0.

Closes #348
2024-06-17 10:36:16 +02:00
.builds ci (sr.ht): pull directly from git.sr.ht 2022-08-23 16:43:36 +02:00
3rd-party/nanosvg nanosvg: update to 93ce879dc4c04a3ef1758428ec80083c38610b1f 2024-04-27 09:44:51 +02:00
completions Add margin (spacing relative the anchor point) support 2024-05-22 13:07:09 +02:00
doc Add margin (spacing relative the anchor point) support 2024-05-22 13:07:09 +02:00
external external: wlr-protocols: bump 2021-06-27 10:52:14 +02:00
subprojects subprojects: use meson *.wrap files for tllist+fcft 2020-12-24 13:26:02 +01:00
.gitignore gitignore: ignore .cache 2022-08-09 18:42:34 +02:00
.gitmodules fcft/tllist: remove git submodules 2020-01-11 14:47:47 +01:00
.woodpecker.yaml ci: install openssl explicitly, to fix missing SSL module in Python 2024-04-17 09:21:46 +02:00
application.c application: 'app' may be NULL 2024-04-12 16:51:48 +02:00
application.h xdg: filter desktop entries by XDG_CURRENT_DESKTOP 2023-05-31 12:58:42 -07:00
CHANGELOG.md render: fix crash when 'tabs = 0' 2024-06-17 10:36:16 +02:00
char32.c char32: mbsntoc32() and c32ntombs() returns a size_t, not a char32_t 2024-04-20 08:21:48 +02:00
char32.h char32: add c32chr() 2022-12-04 20:28:11 +01:00
config.c Add margin (spacing relative the anchor point) support 2024-05-22 13:07:09 +02:00
config.h config: codespell: varios -> various 2024-06-09 10:17:11 +02:00
dmenu.c main: add --dmenu0 command line option 2022-12-04 20:28:11 +01:00
dmenu.h main: add --dmenu0 command line option 2022-12-04 20:28:11 +01:00
fdm.c tllist: is now an external "library", so use <> includes 2019-11-17 19:18:21 +01:00
fdm.h fdm: sync with latest FDM - fdm_del() now closes FD 2019-11-05 11:00:15 +01:00
fuzzel.ini Add margin (spacing relative the anchor point) support 2024-05-22 13:07:09 +02:00
generate-version.sh generate-version: handle git repo not having any tags 2021-10-11 20:22:58 +02:00
icon.c icon: codespell: explicitely -> explicitly 2024-06-09 10:17:20 +02:00
icon.h icon: icon_reload_application_icons() -> icon_lookup_application_icons() 2022-04-17 23:28:09 +02:00
key-binding.c key-binding: disable debug logging by default 2022-10-28 16:32:06 +02:00
key-binding.h implement ctrl-u (erase before cursor) keybinding 2024-02-16 09:52:43 +01:00
LICENSE license: fix bad copy-paste: first commit was in 2019 2020-07-25 08:51:51 +02:00
log.c log: fix syslog not respecting the configured log level 2024-04-05 16:17:07 +02:00
log.h main: add --log-level=none|info|warning|error command line option 2022-02-04 23:13:23 +01:00
main.c Add margin (spacing relative the anchor point) support 2024-05-22 13:07:09 +02:00
match.c Add --select=STRING command line option 2023-10-08 16:28:23 +02:00
match.h Add --select=STRING command line option 2023-10-08 16:28:23 +02:00
meson.build meson: bump version to 1.10.2 2024-04-15 16:28:08 +02:00
meson_options.txt meson: use nanosvg backend by default 2022-02-07 10:46:31 +01:00
nanosvg.c nanosvg: define NANOSVG_ALL_COLOR_KEYWORDS 2023-03-21 09:03:29 +01:00
nanosvgrast.c svg: add support for using nanosvg as SVG backend 2021-10-07 19:18:54 +02:00
path.c Add --list-executables-in-path command line option 2024-01-05 11:14:36 +00:00
path.h Add --list-executables-in-path command line option 2024-01-05 11:14:36 +00:00
PKGBUILD meson+pkgbuild: bump version to 1.9.2 2023-07-14 08:49:46 +02:00
png-fuzzel.h svg: add support for using nanosvg as SVG backend 2021-10-07 19:18:54 +02:00
png.c png: do alpha pre-multiplication manually 2024-04-18 15:54:46 +02:00
prompt.c implement ctrl-u (erase before cursor) keybinding 2024-02-16 09:52:43 +01:00
prompt.h implement ctrl-u (erase before cursor) keybinding 2024-02-16 09:52:43 +01:00
README.md readme: update for -Denable-{png,svg} -> -D{png,svg}-backend 2021-11-21 16:29:35 +01:00
render.c render: fix crash when 'tabs = 0' 2024-06-17 10:36:16 +02:00
render.h render: add support for fractional scaling 2024-03-19 17:17:24 +01:00
shm.c bar: wayland: shm: try with MFD_NOEXEC_SEAL first, then without 2023-10-13 16:36:58 +02:00
shm.h meson: make cairo an optional dependency 2020-12-20 14:57:07 +01:00
stride.h Add missing file 2019-09-29 13:00:03 +02:00
wayland.c add descriptive error for missing layer surface protocol 2024-06-11 09:38:59 +02:00
wayland.h wayland: remove prototype for non-existing function 2022-11-03 15:09:34 +01:00
xdg.c xdg: don't try to append 'terminal' to a non-existing 'Exec' key 2024-04-15 16:17:18 +02:00
xdg.h config: new option filter-desktop 2023-06-06 09:31:32 -07:00

CI status

Fuzzel

Fuzzel is a Wayland-native application launcher, similar to rofi's drun mode.

Packaging status

Screenshot

Screenshot

Fuzzel, with transparency, on top of a browser window showing a diff of a fuzzel commit

Features:

  • Wayland native
  • Rofi drun-like mode of operation
  • dmenu mode where newline separated entries are read from stdin
  • Emacs key bindings
  • Icons!
  • Remembers frequently launched applications

Limitations:

  • No themes (but you can configure font and colors)

Requirements

Runtime

  • pixman
  • wayland (client and cursor libraries)
  • xkbcommon
  • cairo (optional)
  • libpng (optional)
  • librsvg (optional)
  • fcft 1

Building

  • meson
  • ninja
  • wayland protocols
  • scdoc
  • tllist 1

Installation

To build, first, create a build directory, and switch to it:

mkdir -p bld/release && cd bld/release

Second, configure the build (if you intend to install it globally, you might also want --prefix=/usr):

meson --buildtype=release \
    -Denable-cairo=disabled|enabled|auto \
    -Dpng-backend=none|libpng \
    -Dsvg-backend=none|librsvg|nanosvg \
    ../..

-D{png,svg}-backend can be used to force-enable or force-disable a specific png and/or svg backend. Note that nanosvg is builtin (i.e. it needs to external dependencies).

-Denable-cairo can be used to force-enable or force-disable cairo support. When disabled, fuzzel will not be able to draw rounded corners, nor will it support SVGs using the librsvg backend.

Three, build it:

ninja

You can now run it directly from the build directory:

./fuzzel

Use command line arguments to configure the look-and-feel:

./fuzzel --help

Optionally, install it:

ninja install

For more detailed configuration information, see the man page:

man fuzzel

License

Fuzzel is released under the MIT license.

Fuzzel uses nanosvg, released under the Zlib license.


  1. can also be built as subprojects, in which case they are statically linked. ↩︎