deprecate build.sh script

This commit is contained in:
speedie 2023-05-13 21:27:12 +02:00
parent 3ddb0f50dd
commit 94af79720f
5 changed files with 142 additions and 191 deletions

1
.gitignore vendored
View file

@ -4,4 +4,5 @@
*sig*
spmenu
buildconf_dev
buildconf
build

View file

@ -165,148 +165,114 @@
<![endif]-->
</head>
<body>
<h1 id="spmenu">spmenu</h1>
<figure>
<img src="docs/preview.png" alt="image" />
<figcaption aria-hidden="true">image</figcaption>
<img src="docs/spmenu.svg" title="spmenu" style="width:25.0%"
alt="spmenu logo" />
<figcaption aria-hidden="true">spmenu logo</figcaption>
</figure>
<h1 id="spmenu">spmenu</h1>
<h2 id="what-is-spmenu">What is spmenu?</h2>
<p>spmenu is an X11 menu application based on <a
href="https://tools.suckless.org/dmenu">dmenu</a> which takes standard
input, parses it, and lets the user choose an option and sends the
selected option to standard output.</p>
<p>spmenu is an X11 menu application which takes standard input, parses
it, and lets the user choose an option and sends the selected option to
standard output.</p>
<p>In addition to this, it also serves as a run launcher through the
included shell script <code>spmenu_run</code>, which handles both $PATH
listing, .desktop entries and file listing.</p>
<p>It is designed to integrate well with my <a
href="https://dwm.suckless.org">dwm</a> fork, <a
href="https://git.speedie.site/speedwm">speedwm</a>.</p>
<h2 id="improvements-over-dmenu">Improvements over dmenu</h2>
<ul>
<li>Proper configuration file, including keybinds.</li>
<li>dwm-like key/mouse bind array (See keybinds.h and mouse.h)</li>
<li>Vim-like modes, including indicator.</li>
<li>The ability to move around items with keybinds.</li>
<li>Customizable/dynamic line/column size.</li>
<li>Ability to update entries dynamically by reading from file</li>
<li>IME support
<ul>
<li>Was removed from suckless dmenu years ago due to issues Ive
resolved</li>
</ul></li>
<li>Powerlines</li>
<li>Web browser like keybindings.</li>
<li>256 color support through SGR codes.</li>
<li>Image support
<ul>
<li>Somewhat based on <a
href="https://github.com/Cloudef/dmenu-pango-imlib">this
repository</a></li>
</ul></li>
<li>Option to block typing.</li>
<li>Rewritten arguments, old arguments still work though.</li>
<li>Hiding each part of the menu.</li>
</ul>
<p>..and more! Note that spmenu is still <strong>compatible</strong>
with dmenu. Just pass the original arguments.</p>
<p>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 <a
href="https://spmenu.speedie.site">wiki</a> which goes through features
in more detail.</p>
<h2 id="dependencies">Dependencies</h2>
<ul>
<li>libX11</li>
<li>libX11
<ul>
<li>If youre using macOS, XQuartz is a dependency instead.</li>
<li>If youre using Wayland, <code>xorg-xwayland</code> is a
dependency.</li>
</ul></li>
<li>libXrender</li>
<li>freetype</li>
<li>imlib2
<ul>
<li>Used for image support, can be disabled if you dont want this by:
<ul>
<li>build.sh: Setting <code>imlib2=false</code> in
<code>buildconf</code>.</li>
</ul></li>
<li>Used for image support, can be disabled during compile time.</li>
</ul></li>
<li>libXinerama
<ul>
<li>Can be disabled if you dont want/need multi-monitor support by:
<ul>
<li>build.sh: Setting <code>xinerama=false</code> in
<code>buildconf</code>.</li>
</ul></li>
</ul></li>
<li>tcc compiler
<ul>
<li>You can swap it out for GCC or any other C99 compatible compiler by:
<ul>
<li>build.sh: Adding <code>CC="gcc"</code> to the
<code>buildconf</code>. command if you want)</li>
</ul></li>
<li>Used for multi-monitor support, can be disabled during compile
time.</li>
</ul></li>
<li>OpenSSL
<ul>
<li>Used to calculate MD5 of images if image support is enabled, can be
disabled if you dont want this by:
<ul>
<li>build.sh: Setting <code>imlib2=false</code> and
<code>openssl=false</code> in <code>buildconf</code>.</li>
</ul></li>
disabled during compile time.</li>
</ul></li>
<li>Pango
<ul>
<li>Can be disabled if you dont want/need Pango markup by:
<ul>
<li>build.sh: Setting <code>pango=false</code> and
<code>pangoxft=false</code> in <code>buildconf</code>.</li>
</ul></li>
<li>Can be disabled if you dont want/need Pango markup during compile
time.</li>
</ul></li>
<li>libconfig
<ul>
<li>Can be disabled if you dont want/need config file support by:
<ul>
<li>build.sh: Setting <code>libconfig=false</code> in
<code>buildconf</code>.</li>
</ul></li>
<li>Can be disabled if you dont want/need config file support during
compile time.</li>
</ul></li>
<li>meson
<ul>
<li>Used to compile spmenu</li>
<li>Used to compile spmenu, not optional unless youre experienced with
build systems.</li>
</ul></li>
</ul>
<h2 id="installation-gnulinux-bsd">Installation (GNU/Linux, *BSD)</h2>
<p><code>emerge dev-vcs/git</code>, <code>pacman -S git</code>,
<code>apt-get install git</code></p>
<h2 id="installation">Installation</h2>
<ul>
<li><p>If youre using macOS you may want to consider looking at <a
href="https://spmenu.speedie.site/index.php/Using+spmenu+on+macOS">this
wiki artic le</a> for more information.</p></li>
<li><p>If you are on Arch GNU/Linux, you can add <a
href="https://git.speedie.site/speedie-repository">my repository</a>
which includes <code>spmenu</code> as well as other useful packages.
Then simply <code>pacman -S spmenu</code>.</p></li>
<li><p>Or if you are on Gentoo GNU/Linux, you can add <a
href="https://git.speedie.site/speedie-overlay">my overlay</a> which
includes <code>x11-misc/spmenu</code> as well as other useful packages.
Then simply <code>emerge spmenu</code>.</p></li>
</ul>
<p>If you still need/want to manually compile, follow along with manual
compilation.</p>
<p>Here were manually compiling spmenu. This is likely what youll want
to do if youre using any distribution but Arch or Gentoo.</p>
<p>Git is required to clone the repository, but you can also use <a
href="https://ls.speedie.site">releases</a>. Those can be unpacked using
<code>tar -xpvf /path/to/spmenu-version.tar.gz</code>.</p>
<p>To install Git:</p>
<ul>
<li><p>Gentoo: <code>emerge dev-vcs/git</code></p></li>
<li><p>Arch: <code>pacman -S git</code></p></li>
<li><p>Debian: <code>apt-get install git</code></p></li>
</ul>
<p>You will also need the dependencies for spmenu. Youll have to find
those packages in your distribution repositories.</p>
<p>To clone the repository using Git:</p>
<p><code>git clone https://git.speedie.site/spmenu</code></p>
<p><code>cd spmenu/</code></p>
<p><code>./build.sh # Run as root. Install any missing dependencies.</code></p>
<p>Report any issues with the build.sh script.</p>
<h2 id="installation-macosos-xmac-os-x">Installation (macOS/OS X/Mac OS
X)</h2>
<p>NOTE: Adds Xquartz as a dependency. I highly recommend you use
Homebrew to install all the dependencies.</p>
<p>Follow Installation (GNU/Linux, *BSD) for the most part. macOS
requires some minor changes though, such as disabling pango, pangoxft,
imlib2, and openssl. It is not possible to compile spmenu with these as
of now, unless youre a developer.</p>
<p>PREFIX must also be set to /usr/local instead of the default /usr if
youre using macOS Catalina or newer, because Apple made /usr
read-only.</p>
<p>Configure the build by running these commands:</p>
<p><code>mkdir -p build/ # Create a build/ directory, Meson will use this as the working directory</code></p>
<p><code>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</code></p>
<p>Now, to build it run <code>ninja -C build</code>. If all went well
you should have a binary in the <code>build/</code> directory.</p>
<p>Finally, to install it all, run:</p>
<p><code>meson install -C build --destdir /usr # /usr may be overriden to /usr/local or anything else if you use macOS or simply want another destination directory</code></p>
<p>To generate documentation, which may be necessary if youre pushing
new changes to your Git repository, run
<code>scripts/make/generate-docs.sh</code> <strong>in the current
directory</strong>.</p>
<p>To generate a tarball, run <code>scripts/make/generate-pkg.sh</code>
<strong>in the current directory</strong>. If you want to generate a
Pacman package, run <code>scripts/make/generate-pacman-pkg.sh</code>
instead.</p>
<p>See <a
href="https://spmenu.speedie.site/index.php/Using+spmenu+on+macOS">this
wiki article</a> for more information.</p>
<h2 id="installation-gentoo-gnulinux">Installation (Gentoo
GNU/Linux)</h2>
<p>NOTE: The Gentoo overlay may be out of date. Use at your own
risk!</p>
<p>If you are on Gentoo GNU/Linux, you can add <a
href="https://git.speedie.site/speedie-overlay">my overlay</a> which
includes <code>x11-misc/spmenu</code> as well as other useful
packages.</p>
<h2 id="installation-arch-gnulinux">Installation (Arch GNU/Linux)</h2>
<p>If you are on Arch GNU/Linux, you can add <a
href="https://git.speedie.site/speedie-repository">my repository</a>
which includes <code>spmenu</code> as well as other useful packages.</p>
<p>Theres also a PKGBUILD. To use it, simply run
<code>scripts/make/generate-pacman-pkg.sh</code> in the directory the
PKGBUILD is located. You can then <code>pacman -U</code> this package,
or add it to your repository.</p>
<p>If you wish to package spmenu for your GNU/Linux distribution, feel
free to add it to this list.</p>
<h2 id="todo">TODO</h2>
<p>Pull requests would be greatly appreciated for any of these
issues!</p>
@ -330,9 +296,6 @@ xprompt</li>
to avoid adding more external dependencies unless its a common
dependency most people already have.</li>
</ul></li>
<li>Deprecate: build.sh script. Its not really necessary now that were
using Meson for building anyway. Will probably be completely removed
along with the <code>IMG:</code> syntax in spmenu 2.0.</li>
</ul>
<h3
id="unlikely-but-maybe-at-some-point-in-the-distant-future">Unlikely,

146
README.md
View file

@ -1,11 +1,11 @@
# spmenu
![spmenu logo](docs/spmenu.svg "spmenu"){ width=25% }
![image](docs/preview.png)
spmenu
======
## What is spmenu?
spmenu is an X11 menu application based on
[dmenu](https://tools.suckless.org/dmenu) which takes standard input, parses
spmenu is an X11 menu application which takes standard input, parses
it, and lets the user choose an option and sends the
selected option to standard output.
@ -13,107 +13,98 @@ In addition to this, it also serves as a run launcher through the included
shell script `spmenu_run`, which handles both $PATH listing, .desktop entries
and file listing.
It is designed to integrate well with my [dwm](https://dwm.suckless.org) fork, [speedwm](https://git.speedie.site/speedwm).
## Improvements over dmenu
- Proper configuration file, including keybinds.
- dwm-like key/mouse bind array (See keybinds.h and mouse.h)
- Vim-like modes, including indicator.
- The ability to move around items with keybinds.
- Customizable/dynamic line/column size.
- Ability to update entries dynamically by reading from file
- IME support
- Was removed from suckless dmenu years ago due to issues I've resolved
- Powerlines
- Web browser like keybindings.
- 256 color support through SGR codes.
- Image support
- Somewhat based on [this repository](https://github.com/Cloudef/dmenu-pango-imlib)
- Option to block typing.
- Rewritten arguments, old arguments still work though.
- Hiding each part of the menu.
..and more! Note that spmenu is still **compatible** with dmenu.
Just pass the original arguments.
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.
## Dependencies
- libX11
- If you're using macOS, XQuartz is a dependency instead.
- If you're using Wayland, `xorg-xwayland` is a dependency.
- libXrender
- freetype
- imlib2
- Used for image support, can be disabled if you don't want this by:
- build.sh: Setting `imlib2=false` in `buildconf`.
- Used for image support, can be disabled during compile time.
- libXinerama
- Can be disabled if you don't want/need multi-monitor support by:
- build.sh: Setting `xinerama=false` in `buildconf`.
- tcc compiler
- You can swap it out for GCC or any other C99 compatible compiler by:
- build.sh: Adding `CC="gcc"` to the `buildconf`.
command if you want)
- 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
disabled if you don't want this by:
- build.sh: Setting `imlib2=false` and `openssl=false` in `buildconf`.
disabled during compile time.
- Pango
- Can be disabled if you don't want/need Pango markup by:
- build.sh: Setting `pango=false` and `pangoxft=false` in `buildconf`.
- Can be disabled if you don't want/need Pango markup during compile time.
- libconfig
- Can be disabled if you don't want/need config file support by:
- build.sh: Setting `libconfig=false` in `buildconf`.
- Can be disabled if you don't want/need config file support during compile time.
- meson
- Used to compile spmenu
- Used to compile spmenu, not optional unless you're experienced with build systems.
## Installation (GNU/Linux, \*BSD)
## Installation
`emerge dev-vcs/git`, `pacman -S git`, `apt-get install git`
- If you're using macOS you may want to consider looking at [this wiki artic
le](https://spmenu.speedie.site/index.php/Using+spmenu+on+macOS) for more information.
- If you are on Arch GNU/Linux, you can add
[my repository](https://git.speedie.site/speedie-repository) which includes
`spmenu` as well as other useful packages. Then simply `pacman -S spmenu`.
- Or if you are on Gentoo GNU/Linux, you can add
[my overlay](https://git.speedie.site/speedie-overlay) which includes
`x11-misc/spmenu` as well as other useful packages. Then simply `emerge spmenu`.
If you still need/want to manually compile, follow along with manual compilation.
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.
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`.
To install Git:
- Gentoo: `emerge dev-vcs/git`
- Arch: `pacman -S git`
- Debian: `apt-get install git`
You will also need the dependencies for spmenu. You'll
have to find those packages in your distribution repositories.
To clone the repository using Git:
`git clone https://git.speedie.site/spmenu`
`cd spmenu/`
`./build.sh # Run as root. Install any missing dependencies.`
Configure the build by running these commands:
Report any issues with the build.sh script.
`mkdir -p build/ # Create a build/ directory, Meson will use this as the working
directory`
## Installation (macOS/OS X/Mac OS X)
`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`
NOTE: Adds Xquartz as a dependency. I highly recommend you use Homebrew
to install all the dependencies.
Now, to build it run `ninja -C build`. If all went well you should have a
binary in the `build/` directory.
Follow 'Installation (GNU/Linux, \*BSD)' for the most part. macOS requires
some minor changes though, such as disabling pango, pangoxft, imlib2, and
openssl. It is not possible to compile spmenu with these as of now, unless
you're a developer.
Finally, to install it all, run:
PREFIX must also be set to /usr/local instead of the default /usr
if you're using macOS Catalina or newer, because Apple made /usr read-only.
`meson install -C build --destdir /usr # /usr may be overriden to /usr/local
or anything else if you use macOS or simply want another destination directory`
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.
See [this wiki article](https://spmenu.speedie.site/index.php/Using+spmenu+on+macOS)
for more information.
## Installation (Gentoo GNU/Linux)
NOTE: The Gentoo overlay may be out of date. Use at your own risk!
If you are on Gentoo GNU/Linux, you can add
[my overlay](https://git.speedie.site/speedie-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](https://git.speedie.site/speedie-repository) which includes
`spmenu` as well as other useful packages.
There's also a PKGBUILD. To use it, simply run
`scripts/make/generate-pacman-pkg.sh` in the directory the PKGBUILD is
located. You can then `pacman -U` this package, or add it to your repository.
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!
@ -133,9 +124,6 @@ have LibreSSL compatibility.
- Probably use some minimal public domain library for this, I'd
like to avoid adding more external dependencies unless it's a
common dependency most people already have.
- Deprecate: build.sh script. It's not really necessary now that we're
using Meson for building anyway. Will probably be completely removed
along with the `IMG:` syntax in spmenu 2.0.
### Unlikely, but maybe at some point in the distant future

View file

@ -4,8 +4,7 @@ version="$(grep "version : '" meson.build | awk '{ print $3 }' | sed "s/'\"//g;
rm -f spmenu spmenu-${version}.tar.gz spmenu-${version}.PKGBUILD *.o *zst*
mkdir -p spmenu-${version}
cp -rf LICENSE meson.build meson.options *.h *.c scripts/ docs/ libs/ themes/ PKGBUILD build.sh spmenu-${version}
[ -f buildconf ] && cp buildconf spmenu-${version} || :
cp -rf LICENSE meson.build meson.options *.h *.c scripts/ docs/ libs/ themes/ PKGBUILD spmenu-${version}
[ -f Makefile ] && cp Makefile spmenu-${version} || :
[ -f host.mk ] && cp host.mk spmenu-${version} || :
[ -f toggle.mk ] && cp toggle.mk spmenu-${version} || :