forked from speedie/spmenu
10495b48bf
profiles still need to be rewritten
222 lines
8.3 KiB
HTML
222 lines
8.3 KiB
HTML
<h1 id="spmenu">spmenu</h1>
|
||
<figure>
|
||
<img src="docs/preview.png" alt="image" />
|
||
<figcaption aria-hidden="true">image</figcaption>
|
||
</figure>
|
||
<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>In addition to this, it also serves as a run launcher through the
|
||
included shell script <code>spmenu_run</code>. Alternatively you may use
|
||
<code>spmenu_desktop</code> which lists .desktop entries instead of
|
||
$PATH.</p>
|
||
<p>It is designed to integrate well with my <a
|
||
href="https://dwm.suckless.org">dwm</a> fork, <a
|
||
href="https://git.speedie.gq/speedwm">speedwm</a>.</p>
|
||
<h2 id="special-features">Special features</h2>
|
||
<p>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.</p>
|
||
<ul>
|
||
<li>Proper configuration file support</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>IME support
|
||
<ul>
|
||
<li>Was removed from suckless dmenu years ago due to issues I’ve
|
||
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!</p>
|
||
<h2 id="other-features">Other features</h2>
|
||
<p>Note: This is an incomplete list, it’s just here to give you an idea
|
||
of what this build has to offer.</p>
|
||
<ul>
|
||
<li>Pango markup support</li>
|
||
<li>Alpha transparency</li>
|
||
<li>Pywal/.Xresources support</li>
|
||
<li>Grid</li>
|
||
<li>Colored Emoji/Font support</li>
|
||
<li>Highlighting</li>
|
||
<li>Right-to-left language support</li>
|
||
<li>Case-insensitive by default</li>
|
||
<li>Padding; useful with patched dwm with barpadding or speedwm.</li>
|
||
<li>Fuzzy-finding</li>
|
||
<li>Preselect support</li>
|
||
<li>Line-height</li>
|
||
<li>History support</li>
|
||
<li>Customizable bar height</li>
|
||
</ul>
|
||
<h2 id="dependencies">Dependencies</h2>
|
||
<ul>
|
||
<li>libX11</li>
|
||
<li>libXrender</li>
|
||
<li>freetype</li>
|
||
<li>imlib2
|
||
<ul>
|
||
<li>Used for image support, can be disabled if you don’t want this by:
|
||
<ul>
|
||
<li>build.sh: Setting <code>imlib2=false</code> in
|
||
<code>buildconf</code>.</li>
|
||
<li>Makefile: Editing <code>toggle.mk</code> and commenting out a few
|
||
lines.</li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li>libXinerama
|
||
<ul>
|
||
<li>Can be disabled if you don’t want/need multi-monitor support by:
|
||
<ul>
|
||
<li>build.sh: Setting <code>xinerama=false</code> in
|
||
<code>buildconf</code>.</li>
|
||
<li>Makefile: Editing <code>toggle.mk</code> and commenting out a few
|
||
lines.</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>Makefile: Passing <code>CC="gcc"</code> to the <code>make</code>
|
||
command.</li>
|
||
<li>build.sh: Adding <code>CC="gcc"</code> to the
|
||
<code>buildconf</code>. command if you want)</li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li>OpenSSL
|
||
<ul>
|
||
<li>Used to calculate MD5 of images if image support is enabled, can be
|
||
disabled if you don’t want this by:
|
||
<ul>
|
||
<li>build.sh: Setting <code>imlib2=false</code> and
|
||
<code>openssl=false</code> in <code>buildconf</code>.</li>
|
||
<li>Makefile: Editing <code>toggle.mk</code> and commenting out a few
|
||
lines.</li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li>Pango
|
||
<ul>
|
||
<li>Can be disabled if you don’t want/need Pango markup by:
|
||
<ul>
|
||
<li>build.sh: Setting <code>pango=false</code> and
|
||
<code>pangoxft=false</code> in <code>buildconf</code>.</li>
|
||
<li>Makefile: Editing <code>toggle.mk</code> and commenting out a few
|
||
lines.</li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li>libconfig
|
||
<ul>
|
||
<li>Can be disabled if you don’t want/need config file support by:
|
||
<ul>
|
||
<li>build.sh: Setting <code>libconfig=false</code> in
|
||
<code>buildconf</code>.</li>
|
||
<li>Makefile: Editing <code>toggle.mk</code> and commenting out a few
|
||
lines.</li>
|
||
</ul></li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="installation-gnulinux-bsd-macosos-xmac-os-x">Installation
|
||
(GNU/Linux, *BSD, macOS/OS X/Mac OS X)</h2>
|
||
<p><code>emerge dev-vcs/git # Install dev-vcs/git using your favorite package manager</code></p>
|
||
<p><code>git clone https://git.speedie.gq/spmenu</code></p>
|
||
<p><code>cd spmenu/</code></p>
|
||
<p><code>./build.sh # Run as root.</code></p>
|
||
<p>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.</p>
|
||
<h2 id="installation-gentoo-gnulinux">Installation (Gentoo
|
||
GNU/Linux)</h2>
|
||
<p>If you are on Gentoo GNU/Linux, you can add <a
|
||
href="https://git.speedie.gq/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.gq/speedie-repository">my repository</a> which
|
||
includes <code>spmenu</code> as well as other useful packages.</p>
|
||
<p>There’s also a PKGBUILD. To use it, simply
|
||
<code>make install_arch</code> in the directory the PKGBUILD is
|
||
located.</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>
|
||
<h3 id="general">General</h3>
|
||
<ul>
|
||
<li>Config file: Add configuration file using (probably) libconfig,
|
||
allowing keybinds to be configured without recompiling spmenu.</li>
|
||
<li>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.</li>
|
||
<li>Image support: Ability to display icons, similar to rofi</li>
|
||
<li>Matching: Add support for contextual completions similar to
|
||
xprompt</li>
|
||
<li>Text drawing: Use cairo for text drawing over Xft.</li>
|
||
<li>Matching: FIFO, used to dynamically refresh entries.</li>
|
||
</ul>
|
||
<h3
|
||
id="unlikely-but-maybe-at-some-point-in-the-distant-future">Unlikely,
|
||
but maybe at some point in the distant future</h3>
|
||
<ul>
|
||
<li>Wayland: Wayland support, but only if it doesn’t require writing any
|
||
extra code which as of now seems unlikely.
|
||
<ul>
|
||
<li>Before this can even be done, 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.</li>
|
||
<li>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.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h3 id="bugs">Bugs</h3>
|
||
<ul>
|
||
<li>Text drawing: Pango will sometimes spit out errors for invalid
|
||
markup. Silencing this would be a good idea.</li>
|
||
<li>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.</li>
|
||
<li>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</li>
|
||
</ul>
|
||
<h2 id="scripts">Scripts</h2>
|
||
<p>This build of spmenu should work with all spmenu/dmenu scripts. <a
|
||
href="https://git.speedie.gq/speedwm-extras">Here</a> 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!</p>
|
||
<h2 id="more-information">More information</h2>
|
||
<p>See the included <code>man</code> page.</p>
|
||
<h2 id="license">License</h2>
|
||
<p>spmenu is licensed under the MIT license. See the included LICENSE
|
||
file for more information!</p>
|
||
<h2 id="screenshots">Screenshots</h2>
|
||
<p>If you do something cool with spmenu, feel free to add yours
|
||
here!</p>
|
||
<p><img
|
||
src="https://codeberg.org/speedie/spmenu-screenshots/raw/branch/master/preview.png"
|
||
alt="image" /> <img
|
||
src="https://codeberg.org/speedie/spmenu-screenshots/raw/branch/master/spmenu-iron.png"
|
||
alt="image" /> <img
|
||
src="https://codeberg.org/speedie/spmenu-screenshots/raw/branch/master/spmenu-gruvbox.png"
|
||
alt="image" /> <img
|
||
src="https://codeberg.org/speedie/spmenu-screenshots/raw/branch/master/colorscheme3.png"
|
||
alt="image" /></p>
|