2023-06-07 01:28:21 +02:00
|
|
|
![preview](docs/spmenu-themes.gif)
|
2023-03-31 18:01:57 +02:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
spmenu
|
|
|
|
======
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-06-02 18:37:51 +02:00
|
|
|
spmenu is a simple X11 and Wayland menu application which takes standard input, parses
|
|
|
|
it, lets the user choose an option and sends the selected option to standard output.
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-06-07 01:00:19 +02:00
|
|
|
In addition to this, it also serves as a run launcher and desktop launcher
|
|
|
|
through the included shell script `spmenu_run`, which handles both $PATH
|
|
|
|
listing, .desktop entries, and file listing.
|
2023-03-29 23:08:24 +02:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
While spmenu is based on dmenu, and is also fully compatible with dmenu,
|
2023-06-07 01:00:19 +02:00
|
|
|
spmenu introduces many new features which can be useful in shell scripting,
|
|
|
|
and notably Wayland support. There are way too many to list, but spmenu has a
|
2023-05-13 21:27:12 +02:00
|
|
|
[wiki](https://spmenu.speedie.site) which goes through features in more detail.
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-06-07 01:00:19 +02:00
|
|
|
spmenu also serves as a proper dmenu replacement for Wayland users, and
|
|
|
|
can be themed to look identical to dmenu.
|
2023-06-02 18:37:51 +02:00
|
|
|
|
2023-06-07 02:01:02 +02:00
|
|
|
## Screenshots
|
|
|
|
|
|
|
|
![.desktop launcher](screenshots/desktop-launcher.png)
|
|
|
|
![typing](screenshots/typing.gif)
|
|
|
|
|
2023-03-31 18:01:57 +02:00
|
|
|
## Dependencies
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-06-02 18:37:51 +02:00
|
|
|
- wayland-client
|
|
|
|
- For Wayland support, which is optional.
|
|
|
|
- wayland-scanner
|
|
|
|
- For Wayland support, which is optional.
|
|
|
|
- wayland-protocols
|
|
|
|
- For Wayland support, which is optional.
|
|
|
|
- xkbcommon
|
|
|
|
- For Wayland support, which is optional.
|
2023-01-20 23:17:30 +01:00
|
|
|
- libX11
|
2023-06-06 22:06:06 +02:00
|
|
|
- For X11 support, which is optional.
|
2023-01-20 23:17:30 +01:00
|
|
|
- libXrender
|
2023-06-06 22:06:06 +02:00
|
|
|
- For X11 support, which is optional.
|
2023-02-25 13:52:55 +01:00
|
|
|
- imlib2
|
2023-06-06 22:06:06 +02:00
|
|
|
- Only a dependency if X11 support is enabled.
|
2023-05-13 21:27:12 +02:00
|
|
|
- Used for image support, can be disabled during compile time.
|
2023-01-20 23:17:30 +01:00
|
|
|
- libXinerama
|
2023-06-06 22:06:06 +02:00
|
|
|
- For X11 support, which is optional.
|
2023-05-13 21:27:12 +02:00
|
|
|
- Used for multi-monitor support, can be disabled during compile time.
|
2023-03-17 15:44:46 +01:00
|
|
|
- OpenSSL
|
2023-03-31 18:01:57 +02:00
|
|
|
- Used to calculate MD5 of images if image support is enabled, can be
|
2023-05-13 21:27:12 +02:00
|
|
|
disabled during compile time.
|
2023-06-05 05:15:49 +02:00
|
|
|
- pango
|
|
|
|
- cairo
|
2023-04-04 21:39:38 +02:00
|
|
|
- libconfig
|
2023-05-13 21:27:12 +02:00
|
|
|
- Can be disabled if you don't want/need config file support during compile time.
|
2023-05-08 11:39:34 +02:00
|
|
|
- meson
|
2023-05-13 21:27:12 +02:00
|
|
|
- Used to compile spmenu, not optional unless you're experienced with build systems.
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
## Installation
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
- If you are on Arch GNU/Linux, you can add
|
2023-06-03 02:47:39 +02:00
|
|
|
[my repository](https://git.speedie.site/speedie/speedie-repository) which includes
|
2023-05-13 21:27:12 +02:00
|
|
|
`spmenu` as well as other useful packages. Then simply `pacman -S spmenu`.
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
- Or if you are on Gentoo GNU/Linux, you can add
|
2023-06-03 02:47:39 +02:00
|
|
|
[my overlay](https://git.speedie.site/speedie/speedie-overlay) which includes
|
2023-05-13 21:27:12 +02:00
|
|
|
`x11-misc/spmenu` as well as other useful packages. Then simply `emerge spmenu`.
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
If you still need/want to manually compile, follow along with manual compilation.
|
2023-03-31 18:01:57 +02:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
Here we're manually compiling spmenu. This is likely what you'll want to do
|
|
|
|
if you're using any distribution but Arch or Gentoo.
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
Git is required to clone the repository, but you can also use
|
|
|
|
[releases](https://ls.speedie.site). Those can be unpacked
|
|
|
|
using `tar -xpvf /path/to/spmenu-version.tar.gz`.
|
2023-04-26 11:28:44 +02:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
To install Git:
|
2023-04-27 08:21:46 +02:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
- Gentoo: `emerge dev-vcs/git`
|
2023-04-27 08:21:46 +02:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
- Arch: `pacman -S git`
|
2023-04-26 11:28:44 +02:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
- Debian: `apt-get install git`
|
2023-04-26 11:28:44 +02:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
You will also need the dependencies for spmenu. You'll
|
|
|
|
have to find those packages in your distribution repositories.
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
To clone the repository using Git:
|
2023-05-12 16:40:38 +02:00
|
|
|
|
2023-06-03 02:47:39 +02:00
|
|
|
`git clone https://git.speedie.site/speedie/spmenu`
|
2023-05-13 21:27:12 +02:00
|
|
|
|
|
|
|
`cd spmenu/`
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
Configure the build by running these commands:
|
2023-03-02 10:07:56 +01:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
`mkdir -p build/ # Create a build/ directory, Meson will use this as the working
|
|
|
|
directory`
|
|
|
|
|
|
|
|
`meson setup build # This will check to make sure all dependencies are found.
|
|
|
|
If you're recompiling you may want to pass --reconfigure as an argument`
|
|
|
|
|
2023-05-21 22:13:47 +02:00
|
|
|
This is where you can enable/disable certain features, as well as set
|
|
|
|
compiler options.
|
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
Now, to build it run `ninja -C build`. If all went well you should have a
|
|
|
|
binary in the `build/` directory.
|
|
|
|
|
|
|
|
Finally, to install it all, run:
|
2023-03-02 10:07:56 +01:00
|
|
|
|
2023-05-21 22:13:47 +02:00
|
|
|
`meson install -C build --prefix /usr # /usr may be overriden to /usr/local
|
2023-06-06 22:06:06 +02:00
|
|
|
or anything else`
|
2023-03-31 18:01:57 +02:00
|
|
|
|
2023-05-13 21:27:12 +02:00
|
|
|
To generate documentation, which may be necessary if you're pushing new changes
|
|
|
|
to your Git repository, run `scripts/make/generate-docs.sh` **in the current
|
|
|
|
directory**.
|
|
|
|
|
|
|
|
To generate a tarball, run `scripts/make/generate-pkg.sh` **in the current
|
2023-06-07 01:00:19 +02:00
|
|
|
directory**. If you want to generate a pacman package, run
|
2023-05-13 21:27:12 +02:00
|
|
|
`scripts/make/generate-pacman-pkg.sh` instead.
|
|
|
|
|
2023-06-02 18:37:51 +02:00
|
|
|
## Wayland support
|
|
|
|
|
|
|
|
Note that Wayland support is still experimental, and some features do not
|
|
|
|
currently work under Wayland. Some will never work under Wayland due to limitations.
|
|
|
|
These are:
|
|
|
|
|
|
|
|
- Image support
|
|
|
|
- Images simply will not be drawn on Wayland.
|
|
|
|
- Will eventually be solved by replacing imlib2 with cairo.
|
|
|
|
- `--x-position` and `--y-position` arguments
|
|
|
|
- These arguments do not work under Wayland, because the layer_shell
|
|
|
|
protocol doesn't allow clients to be placed on a specific position.
|
|
|
|
- Embedding `-w` and window manager managed `-wm`
|
|
|
|
- These arguments do not make much sense on Wayland, and embedding is not possible
|
|
|
|
due to the original implementation using XEmbed. If the embed argument is passed
|
|
|
|
it will simply be ignored and the window will be layered as normal.
|
|
|
|
- `--monitor` argument
|
2023-06-07 01:00:19 +02:00
|
|
|
- Possible under Wayland, but not really useful.
|
|
|
|
- `--vertical-padding` and `--horizontal-padding` arguments
|
|
|
|
- Not possible under Wayland due to layer_shell not supporting it.
|
2023-06-02 18:37:51 +02:00
|
|
|
- Window borders
|
|
|
|
- Pasting
|
|
|
|
|
2023-03-31 18:01:57 +02:00
|
|
|
## Scripts
|
2023-02-25 14:00:22 +01:00
|
|
|
|
2023-05-06 15:02:25 +02:00
|
|
|
There's a page dedicated to user scripts
|
|
|
|
[over on the wiki](https://spmenu.speedie.site/index.php/User+scripts). Feel
|
|
|
|
free to contribute and try scripts on there.
|
2023-02-25 15:31:06 +01:00
|
|
|
|
2023-03-31 18:01:57 +02:00
|
|
|
## More information
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-06-07 01:00:19 +02:00
|
|
|
See the included spmenu(1) and spmenu_run(1) man pages.
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-03-31 18:01:57 +02:00
|
|
|
## License
|
2023-01-20 23:17:30 +01:00
|
|
|
|
2023-03-31 18:01:57 +02:00
|
|
|
spmenu is licensed under the MIT license. See the included LICENSE file for
|
|
|
|
more information!
|
2023-04-30 01:00:49 +02:00
|
|
|
|
|
|
|
## Wiki
|
|
|
|
|
|
|
|
spmenu has [a wiki](https://spmenu.speedie.site) for more extensive
|
2023-06-06 22:06:06 +02:00
|
|
|
documentation. Contributions to the wiki are appreciated, and
|
|
|
|
can be done through [the Git repository](https://git.speedie.site/speedie/spmenu-wiki).
|