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* *sig*
spmenu spmenu
buildconf_dev buildconf_dev
buildconf
build build

View file

@ -165,148 +165,114 @@
<![endif]--> <![endif]-->
</head> </head>
<body> <body>
<h1 id="spmenu">spmenu</h1>
<figure> <figure>
<img src="docs/preview.png" alt="image" /> <img src="docs/spmenu.svg" title="spmenu" style="width:25.0%"
<figcaption aria-hidden="true">image</figcaption> alt="spmenu logo" />
<figcaption aria-hidden="true">spmenu logo</figcaption>
</figure> </figure>
<h1 id="spmenu">spmenu</h1>
<h2 id="what-is-spmenu">What is spmenu?</h2> <h2 id="what-is-spmenu">What is spmenu?</h2>
<p>spmenu is an X11 menu application based on <a <p>spmenu is an X11 menu application which takes standard input, parses
href="https://tools.suckless.org/dmenu">dmenu</a> which takes standard it, and lets the user choose an option and sends the selected option to
input, parses it, and lets the user choose an option and sends the standard output.</p>
selected option to standard output.</p>
<p>In addition to this, it also serves as a run launcher through the <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 included shell script <code>spmenu_run</code>, which handles both $PATH
listing, .desktop entries and file listing.</p> listing, .desktop entries and file listing.</p>
<p>It is designed to integrate well with my <a <p>While spmenu is based on dmenu, and is also fully compatible with
href="https://dwm.suckless.org">dwm</a> fork, <a dmenu, spmenu introduces many new features which can be useful in shell
href="https://git.speedie.site/speedwm">speedwm</a>.</p> scripting. There are way too many to list, but spmenu has a <a
<h2 id="improvements-over-dmenu">Improvements over dmenu</h2> href="https://spmenu.speedie.site">wiki</a> which goes through features
<ul> in more detail.</p>
<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>
<h2 id="dependencies">Dependencies</h2> <h2 id="dependencies">Dependencies</h2>
<ul> <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>libXrender</li>
<li>freetype</li> <li>freetype</li>
<li>imlib2 <li>imlib2
<ul> <ul>
<li>Used for image support, can be disabled if you dont want this by: <li>Used for image support, can be disabled during compile time.</li>
<ul>
<li>build.sh: Setting <code>imlib2=false</code> in
<code>buildconf</code>.</li>
</ul></li>
</ul></li> </ul></li>
<li>libXinerama <li>libXinerama
<ul> <ul>
<li>Can be disabled if you dont want/need multi-monitor support by: <li>Used for multi-monitor support, can be disabled during compile
<ul> time.</li>
<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>
</ul></li> </ul></li>
<li>OpenSSL <li>OpenSSL
<ul> <ul>
<li>Used to calculate MD5 of images if image support is enabled, can be <li>Used to calculate MD5 of images if image support is enabled, can be
disabled if you dont want this by: disabled during compile time.</li>
<ul>
<li>build.sh: Setting <code>imlib2=false</code> and
<code>openssl=false</code> in <code>buildconf</code>.</li>
</ul></li>
</ul></li> </ul></li>
<li>Pango <li>Pango
<ul> <ul>
<li>Can be disabled if you dont want/need Pango markup by: <li>Can be disabled if you dont want/need Pango markup during compile
<ul> time.</li>
<li>build.sh: Setting <code>pango=false</code> and
<code>pangoxft=false</code> in <code>buildconf</code>.</li>
</ul></li>
</ul></li> </ul></li>
<li>libconfig <li>libconfig
<ul> <ul>
<li>Can be disabled if you dont want/need config file support by: <li>Can be disabled if you dont want/need config file support during
<ul> compile time.</li>
<li>build.sh: Setting <code>libconfig=false</code> in
<code>buildconf</code>.</li>
</ul></li>
</ul></li> </ul></li>
<li>meson <li>meson
<ul> <ul>
<li>Used to compile spmenu</li> <li>Used to compile spmenu, not optional unless youre experienced with
build systems.</li>
</ul></li> </ul></li>
</ul> </ul>
<h2 id="installation-gnulinux-bsd">Installation (GNU/Linux, *BSD)</h2> <h2 id="installation">Installation</h2>
<p><code>emerge dev-vcs/git</code>, <code>pacman -S git</code>, <ul>
<code>apt-get install git</code></p> <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>git clone https://git.speedie.site/spmenu</code></p>
<p><code>cd spmenu/</code></p> <p><code>cd spmenu/</code></p>
<p><code>./build.sh # Run as root. Install any missing dependencies.</code></p> <p>Configure the build by running these commands:</p>
<p>Report any issues with the build.sh script.</p> <p><code>mkdir -p build/ # Create a build/ directory, Meson will use this as the working directory</code></p>
<h2 id="installation-macosos-xmac-os-x">Installation (macOS/OS X/Mac OS <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>
X)</h2> <p>Now, to build it run <code>ninja -C build</code>. If all went well
<p>NOTE: Adds Xquartz as a dependency. I highly recommend you use you should have a binary in the <code>build/</code> directory.</p>
Homebrew to install all the dependencies.</p> <p>Finally, to install it all, run:</p>
<p>Follow Installation (GNU/Linux, *BSD) for the most part. macOS <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>
requires some minor changes though, such as disabling pango, pangoxft, <p>To generate documentation, which may be necessary if youre pushing
imlib2, and openssl. It is not possible to compile spmenu with these as new changes to your Git repository, run
of now, unless youre a developer.</p> <code>scripts/make/generate-docs.sh</code> <strong>in the current
<p>PREFIX must also be set to /usr/local instead of the default /usr if directory</strong>.</p>
youre using macOS Catalina or newer, because Apple made /usr <p>To generate a tarball, run <code>scripts/make/generate-pkg.sh</code>
read-only.</p> <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 <p>See <a
href="https://spmenu.speedie.site/index.php/Using+spmenu+on+macOS">this href="https://spmenu.speedie.site/index.php/Using+spmenu+on+macOS">this
wiki article</a> for more information.</p> 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> <h2 id="todo">TODO</h2>
<p>Pull requests would be greatly appreciated for any of these <p>Pull requests would be greatly appreciated for any of these
issues!</p> issues!</p>
@ -330,9 +296,6 @@ xprompt</li>
to avoid adding more external dependencies unless its a common to avoid adding more external dependencies unless its a common
dependency most people already have.</li> dependency most people already have.</li>
</ul></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> </ul>
<h3 <h3
id="unlikely-but-maybe-at-some-point-in-the-distant-future">Unlikely, 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? ## What is spmenu?
spmenu is an X11 menu application based on spmenu is an X11 menu application which takes standard input, parses
[dmenu](https://tools.suckless.org/dmenu) which takes standard input, parses
it, and lets the user choose an option and sends the it, and lets the user choose an option and sends the
selected option to standard output. 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 shell script `spmenu_run`, which handles both $PATH listing, .desktop entries
and file listing. and file listing.
It is designed to integrate well with my [dwm](https://dwm.suckless.org) fork, [speedwm](https://git.speedie.site/speedwm). 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.
## Improvements over dmenu There are way too many to list, but spmenu has a
[wiki](https://spmenu.speedie.site) which goes through features in more detail.
- 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.
## Dependencies ## Dependencies
- libX11 - libX11
- If you're using macOS, XQuartz is a dependency instead.
- If you're using Wayland, `xorg-xwayland` is a dependency.
- libXrender - libXrender
- freetype - freetype
- imlib2 - imlib2
- Used for image support, can be disabled if you don't want this by: - Used for image support, can be disabled during compile time.
- build.sh: Setting `imlib2=false` in `buildconf`.
- libXinerama - libXinerama
- Can be disabled if you don't want/need multi-monitor support by: - Used for multi-monitor support, can be disabled during compile time.
- 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)
- OpenSSL - OpenSSL
- Used to calculate MD5 of images if image support is enabled, can be - Used to calculate MD5 of images if image support is enabled, can be
disabled if you don't want this by: disabled during compile time.
- build.sh: Setting `imlib2=false` and `openssl=false` in `buildconf`.
- Pango - Pango
- Can be disabled if you don't want/need Pango markup by: - Can be disabled if you don't want/need Pango markup during compile time.
- build.sh: Setting `pango=false` and `pangoxft=false` in `buildconf`.
- libconfig - libconfig
- Can be disabled if you don't want/need config file support by: - Can be disabled if you don't want/need config file support during compile time.
- build.sh: Setting `libconfig=false` in `buildconf`.
- meson - 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` `git clone https://git.speedie.site/spmenu`
`cd 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 Now, to build it run `ninja -C build`. If all went well you should have a
to install all the dependencies. binary in the `build/` directory.
Follow 'Installation (GNU/Linux, \*BSD)' for the most part. macOS requires Finally, to install it all, run:
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.
PREFIX must also be set to /usr/local instead of the default /usr `meson install -C build --destdir /usr # /usr may be overriden to /usr/local
if you're using macOS Catalina or newer, because Apple made /usr read-only. 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) See [this wiki article](https://spmenu.speedie.site/index.php/Using+spmenu+on+macOS)
for more information. 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 ## TODO
Pull requests would be greatly appreciated for any of these issues! 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 - Probably use some minimal public domain library for this, I'd
like to avoid adding more external dependencies unless it's a like to avoid adding more external dependencies unless it's a
common dependency most people already have. 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 ### 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* rm -f spmenu spmenu-${version}.tar.gz spmenu-${version}.PKGBUILD *.o *zst*
mkdir -p spmenu-${version} mkdir -p spmenu-${version}
cp -rf LICENSE meson.build meson.options *.h *.c scripts/ docs/ libs/ themes/ PKGBUILD build.sh spmenu-${version} cp -rf LICENSE meson.build meson.options *.h *.c scripts/ docs/ libs/ themes/ PKGBUILD spmenu-${version}
[ -f buildconf ] && cp buildconf spmenu-${version} || :
[ -f Makefile ] && cp Makefile spmenu-${version} || : [ -f Makefile ] && cp Makefile spmenu-${version} || :
[ -f host.mk ] && cp host.mk spmenu-${version} || : [ -f host.mk ] && cp host.mk spmenu-${version} || :
[ -f toggle.mk ] && cp toggle.mk spmenu-${version} || : [ -f toggle.mk ] && cp toggle.mk spmenu-${version} || :