spmenu/README.html

384 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>README</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
</head>
<body>
<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>, which handles both $PATH
listing and .desktop entries.</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="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, 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>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!</p>
<h2 id="other-features">Other features</h2>
<p>Note: This is an incomplete list, its 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 dont 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 dont 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 dont 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 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>
<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 dont 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.site/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. Theres 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.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
<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>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 doesnt 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
its 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>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.site/speedwm-extras">Here</a> are a few Ive
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>
</body>
</html>