spmenu/README.md

151 lines
5 KiB
Markdown
Raw Normal View History

2023-05-21 22:13:47 +02:00
![spmenu logo](docs/spmenu.svg "spmenu")
2023-05-13 21:27:12 +02:00
spmenu
======
2023-01-20 23:17:30 +01: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-03-29 23:08:24 +02:00
In addition to this, it also serves as a run launcher through the included
2023-04-30 01:00:49 +02:00
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,
spmenu introduces many new features which can be useful in shell scripting.
There are way too many to list, but spmenu has a
[wiki](https://spmenu.speedie.site) which goes through features in more detail.
2023-01-20 23:17:30 +01:00
It also serves as a dmenu replacement for Wayland users.
## Dependencies
2023-01-20 23:17:30 +01: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
- For X11 support
2023-05-13 21:27:12 +02:00
- If you're using macOS, XQuartz is a dependency instead.
- If you're using Wayland, `xorg-xwayland` is a dependency.
2023-01-20 23:17:30 +01:00
- libXrender
2023-02-25 13:52:55 +01:00
- imlib2
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-05-13 21:27:12 +02:00
- Used for multi-monitor support, can be disabled during compile time.
- OpenSSL
- 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.
- pango
- cairo
- 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-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-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-05-13 21:27:12 +02:00
or anything else if you use macOS or simply want another destination directory`
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
directory**. If you want to generate a Pacman package, run
`scripts/make/generate-pacman-pkg.sh` instead.
## 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
- Window borders
- Pasting
## 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
## More information
2023-01-20 23:17:30 +01:00
See the included `man` page.
2023-01-20 23:17:30 +01:00
## License
2023-01-20 23:17:30 +01: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
documentation. Contributions to the wiki are appreciated!