From 1d39136f8a985c971149a41d22e098fade6f7e67 Mon Sep 17 00:00:00 2001 From: speedie Date: Fri, 31 Mar 2023 18:01:57 +0200 Subject: [PATCH] move TODO into readme.md and/or readme.html --- Makefile | 2 +- README.html | 190 ++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 108 ++++++++++++++++++++++------- TODO | 9 --- spmenu.1 | 2 +- 5 files changed, 275 insertions(+), 36 deletions(-) create mode 100644 README.html delete mode 100644 TODO diff --git a/Makefile b/Makefile index fede5cb..348740c 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ include host.mk include toggle.mk # spmenu version -VERSION = 0.3.2 +VERSION = 0.3.3 CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700L -D_POSIX_C_SOURCE=200809L -DVERSION=\"$(VERSION)\" $(XINERAMATOGGLE) $(BDTOGGLE) $(PANGOTOGGLE) $(IMLIB2TOGGLE) CFLAGS = -std=c99 -pedantic -Wall -Wno-deprecated-declarations $(OPT) $(INCS) $(CPPFLAGS) diff --git a/README.html b/README.html new file mode 100644 index 0000000..b98dde0 --- /dev/null +++ b/README.html @@ -0,0 +1,190 @@ +

spmenu

+
+image + +
+

What is spmenu?

+

spmenu is an X11 menu application based on dmenu which takes standard +input, parses it, and lets the user choose an option and sends the +selected option to standard output.

+

In addition to this, it also serves as a run launcher through the +included shell script spmenu_run. Alternatively you may use +spmenu_desktop which lists .desktop entries instead of +$PATH.

+

It is designed to integrate well with my dwm fork, speedwm.

+

Special features

+

This build of spmenu has some features written for this build. Of +course if you want, this is free software so you can use it in your own +build.

+ +

..and more!

+

Other features

+

Note: This is an incomplete list, it’s just here to give you an idea +of what this build has to offer.

+ +

Dependencies

+ +

Installation +(GNU/Linux, *BSD, macOS/OS X/Mac OS X)

+

emerge dev-vcs/git # Install dev-vcs/git using your favorite package manager

+

git clone https://git.speedie.gq/spmenu

+

cd spmenu/

+

./build.sh # Run as root.

+

Report any issues with the build.sh script. There’s also a Makefile +which you can use but it may require editing host.mk and toggle.mk +manually.

+

Installation (Gentoo +GNU/Linux)

+

If you are on Gentoo GNU/Linux, you can add my overlay which +includes x11-misc/spmenu as well as other useful +packages.

+

Installation (Arch GNU/Linux)

+

If you are on Arch GNU/Linux, you can add my repository which +includes spmenu as well as other useful packages.

+

There’s also a PKGBUILD. To use it, simply makepkg -Si +in the directory the PKGBUILD is located.

+

If you wish to package spmenu for your GNU/Linux distribution, feel +free to add it to this list.

+

TODO

+

Pull requests would be greatly appreciated for any of these +issues!

+

General

+ +

Unlikely, +but maybe at some point in the distant future

+ +

Bugs

+ +

Scripts

+

This build of spmenu should work with all spmenu/dmenu scripts. Here are a few I’ve +written/use. If your scripts are useful enough, and written with spmenu +in mind, feel free to pull request and put your scripts here!

+

More information

+

See the included man page.

+

License

+

spmenu is licensed under the MIT license. See the included LICENSE +file for more information!

diff --git a/README.md b/README.md index 348b35d..1011213 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # spmenu + ![image](/docs/preview.png) -### What is spmenu? +## What is spmenu? spmenu is an X11 menu application based on [dmenu](https://tools.suckless.org/dmenu) which takes standard input, parses @@ -12,9 +13,9 @@ In addition to this, it also serves as a run launcher through the included shell script `spmenu_run`. Alternatively you may use `spmenu_desktop` which lists .desktop entries instead of $PATH. -It is designed to integrate well with my [dwm](https://dwm.suckless.org) fork, [speedwm](https://codeberg.org/speedie/speedwm). +It is designed to integrate well with my [dwm](https://dwm.suckless.org) fork, [speedwm](https://git.speedie.gq/speedwm). -### Special features +## Special features This build of spmenu has some features written for this build. Of course if you want, this is free software so you can use it in your own build. @@ -33,7 +34,7 @@ Of course if you want, this is free software so you can use it in your own build ..and more! -### Other features +## Other features Note: This is an incomplete list, it's just here to give you an idea of what this build has to offer. @@ -53,22 +54,35 @@ this build has to offer. - History support - Customizable bar height -### Dependencies +## Dependencies - libX11 - libXrender - freetype - imlib2 - - Used for image support, can be disabled if you don't want this by editing `toggle.mk`. + - Used for image support, can be disabled if you don't want this by: + - build.sh: Setting `imlib2=false` in `buildconf`. + - Makefile: Editing `toggle.mk` and commenting out a few lines. - libXinerama - - Can be disabled if you don't want/need multi-monitor support, edit `toggle.mk` -- tcc compiler (you can swap it out for GCC by passing CC="gcc" to the `make` command if you want) + - Can be disabled if you don't want/need multi-monitor support by: + - build.sh: Setting `xinerama=false` in `buildconf`. + - Makefile: Editing `toggle.mk` and commenting out a few lines. +- tcc compiler + - You can swap it out for GCC or any other C99 compatible compiler by: + - Makefile: Passing `CC="gcc"` to the `make` command. + - build.sh: Adding `CC="gcc"` to the `buildconf`. +command if you want) - OpenSSL - - To calculate MD5 -- Pango (for drawing fonts) - - If you do not want to use pango, edit `toggle.mk` + - Used to calculate MD5 of images if image support is enabled, can be +disabled if you don't want this by: + - build.sh: Setting `imlib2=false` and `openssl=false` in `buildconf`. + - Makefile: Editing `toggle.mk` and commenting out a few lines. +- Pango + - Can be disabled if you don't want/need Pango markup by: + - build.sh: Setting `pango=false` and `pangoxft=false` in `buildconf`. + - Makefile: Editing `toggle.mk` and commenting out a few lines. -### Installation (most GNU/Linux distributions) +## Installation (GNU/Linux, \*BSD, macOS/OS X/Mac OS X) `emerge dev-vcs/git # Install dev-vcs/git using your favorite package manager` @@ -76,35 +90,79 @@ this build has to offer. `cd spmenu/` -`make clean install # Run as root.` +`./build.sh # Run as root.` -### Installation (Gentoo) +Report any issues with the build.sh script. There's also a Makefile which +you can use but it may require editing host.mk and toggle.mk manually. + +## Installation (Gentoo GNU/Linux) If you are on Gentoo GNU/Linux, you can add [my overlay](https://git.speedie.gq/speedie-overlay) which includes `x11-misc/spmenu` as well as other useful packages. -### Installation (Arch) +## Installation (Arch GNU/Linux) If you are on Arch GNU/Linux, you can add [my repository](https://git.speedie.gq/speedie-repository) which includes `spmenu` as well as other useful packages. -There's also a PKGBUILD. To use it, simply `makepkg -Si`. +There's also a PKGBUILD. To use it, simply `makepkg -Si` in the directory +the PKGBUILD is located. -If you wish to package spmenu for your GNU/Linux distribution, feel free to add it to this list. +If you wish to package spmenu for your GNU/Linux distribution, feel free to add +it to this list. -### Images +## TODO -To use an image, pipe `IMG:/path/to/image` to spmenu. If you want you can specify arguments. +Pull requests would be greatly appreciated for any of these issues! -`printf "IMG:$HOME/Wallpapers/Art/2.png\tThis is a cool image.\n" | spmenu` +### General -### .Xresources values +- Key: Mouse bind array (Likely mouse.h). +- Config file: Add configuration file using (probably) libconfig, allowing +keybinds to be configured without recompiling spmenu. +- Image support: Stop using OpenSSL for caching images, mostly because MD5() +is deprecated as of OpenSSL 3.0, but this would also make it very easy to +have LibreSSL compatibility. +- Matching: Add support for contextual completions similar to xprompt +- Text drawing: Use cairo for text drawing over Xft. +- Matching: FIFO, used to dynamically refresh entries. -This build allows you to define .Xresources values to load on startup. See docs/example.Xresources for a list of default values. +### Unlikely, but maybe at some point in the distant future -### Scripts +- Wayland: Wayland support, but only if it doesn't require writing any extra +code which as of now seems unlikely. + - Before this can even be done, we need to add a configuration file using +anything but .Xresources, replace Xft with cairo, deal with keybinds in some +Wayland compatible way, and figure out a way to preserve X11 compatibility +as I do not want to use Wayland anyway. + - You can just use XWayland anyway if you happen to use Wayland, so it's not +like you will be unable to use spmenu in its current state. -This build of spmenu should work with all spmenu/dmenu scripts. [Here](https://git.speedie.gq/speedwm-extras) are a few I've written/use. -If your scripts are useful enough, and written with spmenu in mind, feel free to pull request and put your scripts here! +### Bugs + +- Text drawing: Pango will sometimes spit out errors for invalid markup. +Silencing this would be a good idea. +- Items: If we have zero lines, the width of items that contain SGR sequences +will be the max size of one item. This is fine, and there is not much I can do +about it without significant rewrites I don't think are worth doing. +- Image support: Images take a long time to load sometimes, particularly when +items are selected using the cursor so what we really need is a way to ] +skip over images after a set time limit + +## Scripts + +This build of spmenu should work with all spmenu/dmenu scripts. +[Here](https://git.speedie.gq/speedwm-extras) are a few I've written/use. +If your scripts are useful enough, and written with spmenu in mind, feel free +to pull request and put your scripts here! + +## More information + +See the included `man` page. + +## License + +spmenu is licensed under the MIT license. See the included LICENSE file for +more information! diff --git a/TODO b/TODO deleted file mode 100644 index 630e93e..0000000 --- a/TODO +++ /dev/null @@ -1,9 +0,0 @@ -# TODO for spmenu - -- Mouse bind array (mouse.h) -- Add configuration file using (probably) libconfig, allowing keybinds to be configured without recompiling spmenu -- Use higher level libraries, MD5() is deprecated as of OpenSSL 3 but it has been temporarily silenced. This might also improve compatibility for people who don't use OpenSSL. -- Contextual completions -- Use cairo for text drawing over Xft -- MAYBE wayland support, but only if it doesn't require writing any extra code which as of now seems unlikely -- FIFO, used to dynamically refresh diff --git a/spmenu.1 b/spmenu.1 index 5a11654..15f2d67 100644 --- a/spmenu.1 +++ b/spmenu.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "spmenu" "1" "" "0.3.2" "dynamic menu" +.TH "spmenu" "1" "" "0.3.3" "dynamic menu" .hy .SH spmenu .SH What is spmenu?