spmenu/README.html

348 lines
10 KiB
HTML
Raw Normal View History

<!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" />
2023-05-17 08:15:21 +02:00
<title>spmenu 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>
2023-05-17 08:15:21 +02:00
<header id="title-block-header">
<h1 class="title">spmenu README</h1>
</header>
<figure>
2023-06-07 01:06:54 +02:00
<img src="docs/spmenu-themes.gif" alt="preview" />
<figcaption aria-hidden="true">preview</figcaption>
</figure>
<h1 id="spmenu">spmenu</h1>
<p>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.</p>
<p>In addition to this, it also serves as a run launcher and desktop
launcher through the included shell script <code>spmenu_run</code>,
which handles both $PATH listing, .desktop entries, and file
listing.</p>
2023-05-13 21:27:12 +02:00
<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, and notably Wayland support. 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>
<p>spmenu also serves as a proper dmenu replacement for Wayland users,
and can be themed to look identical to dmenu.</p>
<h2 id="screenshots">Screenshots</h2>
<p><img src="screenshots/desktop-launcher.png"
alt=".desktop launcher" /> <img src="screenshots/typing.gif"
2023-06-07 02:33:24 +02:00
alt="typing" /> <img src="screenshots/bliss.png" alt="bliss" /></p>
2023-05-13 21:27:12 +02:00
<h2 id="dependencies">Dependencies</h2>
2023-04-02 18:22:32 +02:00
<ul>
<li>wayland-client
<ul>
<li>For Wayland support, which is optional.</li>
</ul></li>
<li>wayland-scanner
<ul>
<li>For Wayland support, which is optional.</li>
</ul></li>
<li>wayland-protocols
<ul>
<li>For Wayland support, which is optional.</li>
</ul></li>
<li>xkbcommon
<ul>
<li>For Wayland support, which is optional.</li>
</ul></li>
2023-05-13 21:27:12 +02:00
<li>libX11
2023-04-02 18:22:32 +02:00
<ul>
2023-06-06 22:06:06 +02:00
<li>For X11 support, which is optional.</li>
</ul></li>
<li>libXrender
<ul>
<li>For X11 support, which is optional.</li>
2023-04-02 18:22:32 +02:00
</ul></li>
<li>imlib2
<ul>
2023-06-06 22:06:06 +02:00
<li>Only a dependency if X11 support is enabled.</li>
2023-05-13 21:27:12 +02:00
<li>Used for image support, can be disabled during compile time.</li>
</ul></li>
<li>libXinerama
<ul>
2023-06-06 22:06:06 +02:00
<li>For X11 support, which is optional.</li>
2023-05-13 21:27:12 +02:00
<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
2023-05-13 21:27:12 +02:00
disabled during compile time.</li>
</ul></li>
<li>pango</li>
<li>cairo</li>
<li>libconfig
<ul>
2023-05-13 21:27:12 +02:00
<li>Can be disabled if you dont want/need config file support during
compile time.</li>
</ul></li>
2023-05-08 11:39:34 +02:00
<li>meson
<ul>
2023-05-13 21:27:12 +02:00
<li>Used to compile spmenu, not optional unless youre experienced with
build systems.</li>
2023-05-08 11:39:34 +02:00
</ul></li>
</ul>
2023-05-13 21:27:12 +02:00
<h2 id="installation">Installation</h2>
<ul>
<li><p>If you are on Arch GNU/Linux, you can add <a
2023-06-03 02:47:39 +02:00
href="https://git.speedie.site/speedie/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>
2023-05-13 21:27:12 +02:00
<li><p>Or if you are on Gentoo GNU/Linux, you can add <a
2023-06-03 02:47:39 +02:00
href="https://git.speedie.site/speedie/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>
2023-05-13 21:27:12 +02:00
</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>
2023-06-03 02:47:39 +02:00
<p><code>git clone https://git.speedie.site/speedie/spmenu</code></p>
<p><code>cd spmenu/</code></p>
2023-05-13 21:27:12 +02:00
<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>
2023-05-21 22:13:47 +02:00
<p>This is where you can enable/disable certain features, as well as set
compiler options.</p>
2023-05-13 21:27:12 +02:00
<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>
2023-06-06 22:06:06 +02:00
<p><code>meson install -C build --prefix /usr # /usr may be overriden to /usr/local or anything else</code></p>
2023-05-13 21:27:12 +02:00
<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>
2023-05-13 21:27:12 +02:00
instead.</p>
<h2 id="wayland-support">Wayland support</h2>
<p>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:</p>
<ul>
<li>Image support
<ul>
<li>Images simply will not be drawn on Wayland.</li>
<li>Will eventually be solved by replacing imlib2 with cairo.</li>
</ul></li>
<li><code>--x-position</code> and <code>--y-position</code> arguments
<ul>
<li>These arguments do not work under Wayland, because the layer_shell
protocol doesnt allow clients to be placed on a specific position.</li>
</ul></li>
<li>Embedding <code>-w</code> and window manager managed
<code>-wm</code>
<ul>
<li>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.</li>
</ul></li>
<li><code>--monitor</code> argument
<ul>
<li>Possible under Wayland, but not really useful.</li>
</ul></li>
<li><code>--vertical-padding</code> and
<code>--horizontal-padding</code> arguments
<ul>
<li>Not possible under Wayland due to layer_shell not supporting
it.</li>
</ul></li>
<li>Window borders</li>
<li>Pasting</li>
</ul>
<h2 id="scripts">Scripts</h2>
2023-05-06 15:02:25 +02:00
<p>Theres a page dedicated to user scripts <a
href="https://spmenu.speedie.site/index.php/User+scripts">over on the
wiki</a>. Feel free to contribute and try scripts on there.</p>
<h2 id="more-information">More information</h2>
<p>See the included spmenu(1) and spmenu_run(1) man pages.</p>
<h2 id="license">License</h2>
<p>spmenu is licensed under the MIT license. See the included LICENSE
file for more information!</p>
2023-04-30 01:00:49 +02:00
<h2 id="wiki">Wiki</h2>
<p>spmenu has <a href="https://spmenu.speedie.site">a wiki</a> for more
2023-06-06 22:06:06 +02:00
extensive documentation. Contributions to the wiki are appreciated, and
can be done through <a
href="https://git.speedie.site/speedie/spmenu-wiki">the Git
repository</a>.</p>
</body>
</html>