1
0
Fork 0
blog
LEdoian 5 months ago
parent c3fa698a88
commit 120e8e610e

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/linux.html">linux</a></li>
<li><a href="./tag/relationships.html">relationships</a></li> <li><a href="./tag/relationships.html">relationships</a></li>
<li><a href="./tag/identity.html">identity</a></li> <li><a href="./tag/identity.html">identity</a></li>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/print.html">print</a></li> <li><a href="./tag/print.html">print</a></li>
<li><a href="./tag/comics.html">comics</a></li> <li><a href="./tag/comics.html">comics</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li> <li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="./tag/dns.html">dns</a></li> <li><a href="./tag/dns.html">dns</a></li>
<li><a href="./tag/meta.html">meta</a></li> <li><a href="./tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/linux.html">linux</a></li>
<li><a href="./tag/relationships.html">relationships</a></li> <li><a href="./tag/relationships.html">relationships</a></li>
<li><a href="./tag/identity.html">identity</a></li> <li><a href="./tag/identity.html">identity</a></li>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/print.html">print</a></li> <li><a href="./tag/print.html">print</a></li>
<li><a href="./tag/comics.html">comics</a></li> <li><a href="./tag/comics.html">comics</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li> <li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="./tag/dns.html">dns</a></li> <li><a href="./tag/dns.html">dns</a></li>
<li><a href="./tag/meta.html">meta</a></li> <li><a href="./tag/meta.html">meta</a></li>
@ -62,7 +63,8 @@
<main> <main>
<div> <div>
<h1>Archive</h1> <h1>Archive</h1>
<ul> <li><a href="./do-not-gossip-identities.html">You sure you want to hear the gossip?</a> <ul> <li><a href="./custom-xkb-tweaks.html">Creating own XKB tweaks</a>
<li><a href="./do-not-gossip-identities.html">You sure you want to hear the gossip?</a>
<li><a href="./mobius-print.html">Print your stuff on Möbius bands!</a> <li><a href="./mobius-print.html">Print your stuff on Möbius bands!</a>
<li><a href="./cbz-to-pdf.html">How to convert CBZ to PDF</a> <li><a href="./cbz-to-pdf.html">How to convert CBZ to PDF</a>
<li><a href="./forgetting-dns6.html">Do not forget about IPv6 DNS</a> <li><a href="./forgetting-dns6.html">Do not forget about IPv6 DNS</a>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/linux.html">linux</a></li>
<li><a href="./tag/relationships.html">relationships</a></li> <li><a href="./tag/relationships.html">relationships</a></li>
<li><a href="./tag/identity.html">identity</a></li> <li><a href="./tag/identity.html">identity</a></li>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/print.html">print</a></li> <li><a href="./tag/print.html">print</a></li>
<li><a href="./tag/comics.html">comics</a></li> <li><a href="./tag/comics.html">comics</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li> <li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="./tag/dns.html">dns</a></li> <li><a href="./tag/dns.html">dns</a></li>
<li><a href="./tag/meta.html">meta</a></li> <li><a href="./tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>
@ -62,7 +63,8 @@
<main> <main>
<div> <div>
<h1>Category: technology</h1> <h1>Category: technology</h1>
<ul> <li><a href="../mobius-print.html">Print your stuff on Möbius bands!</a> <ul> <li><a href="../custom-xkb-tweaks.html">Creating own XKB tweaks</a>
<li><a href="../mobius-print.html">Print your stuff on Möbius bands!</a>
<li><a href="../about-blog.html">About this blog</a> <li><a href="../about-blog.html">About this blog</a>
</ul> </ul>
</div> </div>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/linux.html">linux</a></li>
<li><a href="./tag/relationships.html">relationships</a></li> <li><a href="./tag/relationships.html">relationships</a></li>
<li><a href="./tag/identity.html">identity</a></li> <li><a href="./tag/identity.html">identity</a></li>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/print.html">print</a></li> <li><a href="./tag/print.html">print</a></li>
<li><a href="./tag/comics.html">comics</a></li> <li><a href="./tag/comics.html">comics</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li> <li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="./tag/dns.html">dns</a></li> <li><a href="./tag/dns.html">dns</a></li>
<li><a href="./tag/meta.html">meta</a></li> <li><a href="./tag/meta.html">meta</a></li>

@ -0,0 +1,163 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<meta name=generator content="Pelican 4.9.1">
<meta name=author content="LEdoian">
<meta name=description content="My personal webpage">
<meta name=referrer content=no-referrer>
<link rel=stylesheet href="./theme/css/theme.css">
<title>Creating own XKB tweaks LEdoian's Blog</title>
</head>
<body>
<header>
<h1>LEdoian's Blog</h1>
</header>
<div id=main>
<nav>
<div>
<!-- Main navigation -->
<!-- TODO! -->
</div>
<div>
<h2>Categories</h2>
<ul>
<li><a href="./category/networking.html">networking</a></li>
<li><a href="./category/queer.html">queer</a></li>
<li><a href="./category/talks.html">talks</a></li>
<li><a href="./category/technology.html">technology</a></li>
<li><a href="./category/til.html">til</a></li>
</ul>
<h2>Tags</h2>
<ul>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/linux.html">linux</a></li>
<li><a href="./tag/relationships.html">relationships</a></li>
<li><a href="./tag/identity.html">identity</a></li>
<li><a href="./tag/print.html">print</a></li>
<li><a href="./tag/comics.html">comics</a></li>
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="./tag/dns.html">dns</a></li>
<li><a href="./tag/meta.html">meta</a></li>
<li><a href="./tag/infrastructure.html">infrastructure</a></li>
<li><a href="./tag/smrst.html">smršť</a></li>
<li><a href="./tag/trains.html">trains</a></li>
<li><a href="./tag/software-engineering.html">software-engineering</a></li>
</ul>
</div>
<div>
<h2>Stalk me also at</h2>
TODO!
<h2>I stalk</h2>
TODO!
</nav>
<main>
<div>
<h1>Creating own XKB tweaks</h1>
<p>Debugging this took me a bit too long, so I want to write about the caveat.</p>
<p>My problem: My laptop does not have PageUp and PageDown keys, and many other
keyboards I use have similar deficiencies. And I use various environments and
various systems, some of which are shared with other people who don't need/want
my tweaks. IOW: I want something generic, but it must be confined to my user
no system-wide daemon, no udev remapping. (I mostly ended up with these
solutions when I searched for a way to remap keys on Wayland.)</p>
<p>Requirements: xkbcommon implementation of XKB with utilities. It is quite
common these days (duh…), but you could probably just compile this yourself if
you don't have it.</p>
<div class="section" id="the-tweaking">
<h2>The tweaking</h2>
<p>The <a class="reference external" href="https://xkbcommon.org/doc/current/user-configuration.html">xkbcommon guide</a> tells us that we
can inspect the files in <a class="footnote-reference" href="#lazy" id="footnote-reference-1">[1]</a> <tt class="docutils literal">/usr/share/X11/xkb</tt> for the source files
and just write our bits to <tt class="docutils literal"><span class="pre">~/.config/xkb/symbols/ledoian</span></tt>. In particular, I
added this snippet to remap keyboard brightness controls to PageUp/Down:</p>
<pre class="literal-block">
partial
xkb_symbols &quot;qs&quot; {
key &lt;I238&gt; {[ Prior ]};
key &lt;I237&gt; {[ Next ]};
};
</pre>
<p>The key identifiers are taken e.g. from <tt class="docutils literal">xkbcli <span class="pre">interactive-wayland</span></tt>.
However, this is KcCGST <a class="footnote-reference" href="#kccgst-vs-rmlvo" id="footnote-reference-2">[2]</a> description, but layouts are
configured using RMLVO, so I need to define an option and tell what it should
do. The guide wants me to create <tt class="docutils literal"><span class="pre">~/.config/xkb/rules/evdev</span></tt> with:</p>
<pre class="literal-block">
! option = symbols
ledoian:qs = +ledoian(qs)
! include %S/evdev
</pre>
<p>Now I just add <tt class="docutils literal">ledoian:qs</tt> <a class="footnote-reference" href="#option-vs-symbol" id="footnote-reference-3">[3]</a> to my keyboard configuration
and… it does not work. For this, at all, but if I remap e.g. the L key, that
gets applied. The problem? That included file says that the default keyboard
model always includes <tt class="docutils literal">inet(evdev)</tt> symbols. Those symbols set the default
meaning of the keys, but since that got applied later, it overrides my tweak.</p>
<p>Solution: first include, then add my option.</p>
<p>How to debug: read stuff that <tt class="docutils literal">xkbcli <span class="pre">compile-keymap</span> <span class="pre">--verbose</span></tt> tells you
(pass your config as <tt class="docutils literal"><span class="pre">--layout</span></tt>, <tt class="docutils literal"><span class="pre">--variant</span></tt>, <tt class="docutils literal"><span class="pre">--options</span></tt>, …). At the top
it says what it does:</p>
<pre class="literal-block">
xkbcommon: DEBUG: Include path added: /home/ledoian/.config/xkb
xkbcommon: DEBUG: Include path added: /usr/share/X11/xkb
xkbcommon: DEBUG: Compiling from RMLVO: rules 'evdev', model 'pc105', layout 'us', variant '(null)', options '(null)'
xkbcommon: DEBUG: Compiling from KcCGST: keycodes 'evdev+aliases(qwerty)', types 'complete', compat 'complete', symbols 'pc+us+inet(evdev)'
</pre>
<p>My option would appear before the <tt class="docutils literal">inet(evdev)</tt> part.</p>
</div>
<div class="section" id="a-note-about-x11">
<h2>A note about X11</h2>
<p>X11 uses a separate implementation of XKB (the original one, in fact), which
does _not_ look into the user directory, just the system ones. However, you can
compile the keymap yourself using <tt class="docutils literal">xkbcli <span class="pre">compile-keymap</span> [KEYMAP OPTIONS] &gt;
my_layout.xkb</tt> and load it into the X server with <tt class="docutils literal">xkbcomp my_layout.xkb $DISPLAY</tt>.</p>
<hr class="docutils" />
<table class="docutils footnote" frame="void" id="lazy" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#footnote-reference-1">[1]</a></td><td>This is not technically accurate, really the paths reference
<tt class="docutils literal">$XDG_something</tt> variables. I am lazy and just copied my system, so YMMV
(probably won't, though).</td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="kccgst-vs-rmlvo" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#footnote-reference-2">[2]</a></td><td>There are two levels of describing the keymap: the
lowlevel one is called KcCGST (short for keycodes, compat, geometry,
symbols, types) and is considered to be an implementation detail; the
user-facing one is RMLVO (rules, model, layout, variant, options) and that
is what you use in the configs, with <tt class="docutils literal">setxkbmap</tt> &amp;c.</td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="option-vs-symbol" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#footnote-reference-3">[3]</a></td><td>While both this example and the <a class="reference external" href="https://www.freedesktop.org/wiki/Software/XKeyboardConfig/">upstream</a> layouts name
the symbols and options similarly, I think they don't need to be related
you should be able to put whatever you want in your options to the left of
<tt class="docutils literal">=</tt>, the right hand side is the name of the symbol file and if a
non-default layout from that file is used, its name is put in the
parentheses.</td></tr>
</tbody>
</table>
</div>
</div>
</main>
</div> <!-- #main -->
<footer>
<hr>
Written using Pelican 4.9.1 by LEdoian.
</footer>
</body>
</html>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/linux.html">linux</a></li>
<li><a href="./tag/relationships.html">relationships</a></li> <li><a href="./tag/relationships.html">relationships</a></li>
<li><a href="./tag/identity.html">identity</a></li> <li><a href="./tag/identity.html">identity</a></li>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/print.html">print</a></li> <li><a href="./tag/print.html">print</a></li>
<li><a href="./tag/comics.html">comics</a></li> <li><a href="./tag/comics.html">comics</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li> <li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="./tag/dns.html">dns</a></li> <li><a href="./tag/dns.html">dns</a></li>
<li><a href="./tag/meta.html">meta</a></li> <li><a href="./tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/linux.html">linux</a></li>
<li><a href="./tag/relationships.html">relationships</a></li> <li><a href="./tag/relationships.html">relationships</a></li>
<li><a href="./tag/identity.html">identity</a></li> <li><a href="./tag/identity.html">identity</a></li>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/print.html">print</a></li> <li><a href="./tag/print.html">print</a></li>
<li><a href="./tag/comics.html">comics</a></li> <li><a href="./tag/comics.html">comics</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li> <li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="./tag/dns.html">dns</a></li> <li><a href="./tag/dns.html">dns</a></li>
<li><a href="./tag/meta.html">meta</a></li> <li><a href="./tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -1,5 +1,94 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>LEdoian's Blog</title><link href="https://blog.ledoian.cz/" rel="alternate"></link><link href="https://blog.ledoian.cz/feeds/all.atom.xml" rel="self"></link><id>https://blog.ledoian.cz/</id><updated>2024-03-11T22:49:00+01:00</updated><entry><title>You sure you want to hear the gossip?</title><link href="https://blog.ledoian.cz/do-not-gossip-identities.html" rel="alternate"></link><published>2024-03-11T22:49:00+01:00</published><updated>2024-03-11T22:49:00+01:00</updated><author><name>LEdoian</name></author><id>tag:blog.ledoian.cz,2024-03-11:/do-not-gossip-identities.html</id><summary type="html">&lt;p&gt;Sometimes, not knowing something about your friends is simpler than knowing <feed xmlns="http://www.w3.org/2005/Atom"><title>LEdoian's Blog</title><link href="https://blog.ledoian.cz/" rel="alternate"></link><link href="https://blog.ledoian.cz/feeds/all.atom.xml" rel="self"></link><id>https://blog.ledoian.cz/</id><updated>2024-04-17T15:18:00+02:00</updated><entry><title>Creating own XKB tweaks</title><link href="https://blog.ledoian.cz/custom-xkb-tweaks.html" rel="alternate"></link><published>2024-04-17T15:18:00+02:00</published><updated>2024-04-17T15:18:00+02:00</updated><author><name>LEdoian</name></author><id>tag:blog.ledoian.cz,2024-04-17:/custom-xkb-tweaks.html</id><summary type="html">&lt;p&gt;Debugging this took me a bit too long, so I want to write about the caveat.&lt;/p&gt;
&lt;p&gt;My problem: My laptop does not have PageUp and PageDown keys, and many other
keyboards I use have similar deficiencies. And I use various environments and
various systems, some of which are shared with …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Debugging this took me a bit too long, so I want to write about the caveat.&lt;/p&gt;
&lt;p&gt;My problem: My laptop does not have PageUp and PageDown keys, and many other
keyboards I use have similar deficiencies. And I use various environments and
various systems, some of which are shared with other people who don't need/want
my tweaks. IOW: I want something generic, but it must be confined to my user
no system-wide daemon, no udev remapping. (I mostly ended up with these
solutions when I searched for a way to remap keys on Wayland.)&lt;/p&gt;
&lt;p&gt;Requirements: xkbcommon implementation of XKB with utilities. It is quite
common these days (duh…), but you could probably just compile this yourself if
you don't have it.&lt;/p&gt;
&lt;div class="section" id="the-tweaking"&gt;
&lt;h2&gt;The tweaking&lt;/h2&gt;
&lt;p&gt;The &lt;a class="reference external" href="https://xkbcommon.org/doc/current/user-configuration.html"&gt;xkbcommon guide&lt;/a&gt; tells us that we
can inspect the files in &lt;a class="footnote-reference" href="#lazy" id="footnote-reference-1"&gt;[1]&lt;/a&gt; &lt;tt class="docutils literal"&gt;/usr/share/X11/xkb&lt;/tt&gt; for the source files
and just write our bits to &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.config/xkb/symbols/ledoian&lt;/span&gt;&lt;/tt&gt;. In particular, I
added this snippet to remap keyboard brightness controls to PageUp/Down:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
partial
xkb_symbols &amp;quot;qs&amp;quot; {
key &amp;lt;I238&amp;gt; {[ Prior ]};
key &amp;lt;I237&amp;gt; {[ Next ]};
};
&lt;/pre&gt;
&lt;p&gt;The key identifiers are taken e.g. from &lt;tt class="docutils literal"&gt;xkbcli &lt;span class="pre"&gt;interactive-wayland&lt;/span&gt;&lt;/tt&gt;.
However, this is KcCGST &lt;a class="footnote-reference" href="#kccgst-vs-rmlvo" id="footnote-reference-2"&gt;[2]&lt;/a&gt; description, but layouts are
configured using RMLVO, so I need to define an option and tell what it should
do. The guide wants me to create &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.config/xkb/rules/evdev&lt;/span&gt;&lt;/tt&gt; with:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
! option = symbols
ledoian:qs = +ledoian(qs)
! include %S/evdev
&lt;/pre&gt;
&lt;p&gt;Now I just add &lt;tt class="docutils literal"&gt;ledoian:qs&lt;/tt&gt; &lt;a class="footnote-reference" href="#option-vs-symbol" id="footnote-reference-3"&gt;[3]&lt;/a&gt; to my keyboard configuration
and… it does not work. For this, at all, but if I remap e.g. the L key, that
gets applied. The problem? That included file says that the default keyboard
model always includes &lt;tt class="docutils literal"&gt;inet(evdev)&lt;/tt&gt; symbols. Those symbols set the default
meaning of the keys, but since that got applied later, it overrides my tweak.&lt;/p&gt;
&lt;p&gt;Solution: first include, then add my option.&lt;/p&gt;
&lt;p&gt;How to debug: read stuff that &lt;tt class="docutils literal"&gt;xkbcli &lt;span class="pre"&gt;compile-keymap&lt;/span&gt; &lt;span class="pre"&gt;--verbose&lt;/span&gt;&lt;/tt&gt; tells you
(pass your config as &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;--layout&lt;/span&gt;&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;--variant&lt;/span&gt;&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;--options&lt;/span&gt;&lt;/tt&gt;, …). At the top
it says what it does:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
xkbcommon: DEBUG: Include path added: /home/ledoian/.config/xkb
xkbcommon: DEBUG: Include path added: /usr/share/X11/xkb
xkbcommon: DEBUG: Compiling from RMLVO: rules 'evdev', model 'pc105', layout 'us', variant '(null)', options '(null)'
xkbcommon: DEBUG: Compiling from KcCGST: keycodes 'evdev+aliases(qwerty)', types 'complete', compat 'complete', symbols 'pc+us+inet(evdev)'
&lt;/pre&gt;
&lt;p&gt;My option would appear before the &lt;tt class="docutils literal"&gt;inet(evdev)&lt;/tt&gt; part.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="a-note-about-x11"&gt;
&lt;h2&gt;A note about X11&lt;/h2&gt;
&lt;p&gt;X11 uses a separate implementation of XKB (the original one, in fact), which
does _not_ look into the user directory, just the system ones. However, you can
compile the keymap yourself using &lt;tt class="docutils literal"&gt;xkbcli &lt;span class="pre"&gt;compile-keymap&lt;/span&gt; [KEYMAP OPTIONS] &amp;gt;
my_layout.xkb&lt;/tt&gt; and load it into the X server with &lt;tt class="docutils literal"&gt;xkbcomp my_layout.xkb $DISPLAY&lt;/tt&gt;.&lt;/p&gt;
&lt;hr class="docutils" /&gt;
&lt;table class="docutils footnote" frame="void" id="lazy" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;This is not technically accurate, really the paths reference
&lt;tt class="docutils literal"&gt;$XDG_something&lt;/tt&gt; variables. I am lazy and just copied my system, so YMMV
(probably won't, though).&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="kccgst-vs-rmlvo" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-2"&gt;[2]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;There are two levels of describing the keymap: the
lowlevel one is called KcCGST (short for keycodes, compat, geometry,
symbols, types) and is considered to be an implementation detail; the
user-facing one is RMLVO (rules, model, layout, variant, options) and that
is what you use in the configs, with &lt;tt class="docutils literal"&gt;setxkbmap&lt;/tt&gt; &amp;amp;c.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="option-vs-symbol" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-3"&gt;[3]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;While both this example and the &lt;a class="reference external" href="https://www.freedesktop.org/wiki/Software/XKeyboardConfig/"&gt;upstream&lt;/a&gt; layouts name
the symbols and options similarly, I think they don't need to be related
you should be able to put whatever you want in your options to the left of
&lt;tt class="docutils literal"&gt;=&lt;/tt&gt;, the right hand side is the name of the symbol file and if a
non-default layout from that file is used, its name is put in the
parentheses.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
</content><category term="technology"></category><category term="lifehack"></category><category term="software"></category><category term="linux"></category></entry><entry><title>You sure you want to hear the gossip?</title><link href="https://blog.ledoian.cz/do-not-gossip-identities.html" rel="alternate"></link><published>2024-03-11T22:49:00+01:00</published><updated>2024-03-11T22:49:00+01:00</updated><author><name>LEdoian</name></author><id>tag:blog.ledoian.cz,2024-03-11:/do-not-gossip-identities.html</id><summary type="html">&lt;p&gt;Sometimes, not knowing something about your friends is simpler than knowing
something you know you aren't supposed to know…&lt;/p&gt; something you know you aren't supposed to know…&lt;/p&gt;
&lt;p&gt;TL;DR: If you are gossiping, please handle information which change attitude &lt;p&gt;TL;DR: If you are gossiping, please handle information which change attitude
towards others with care and maybe share them with consent of the &lt;em&gt;listener&lt;/em&gt;. &lt;a class="footnote-reference" href="#on-gossiping" id="footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/p&gt; towards others with care and maybe share them with consent of the &lt;em&gt;listener&lt;/em&gt;. &lt;a class="footnote-reference" href="#on-gossiping" id="footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/p&gt;

@ -1,5 +1,94 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>LEdoian's Blog - technology</title><link href="https://blog.ledoian.cz/" rel="alternate"></link><link href="https://blog.ledoian.cz/feeds/technology.atom.xml" rel="self"></link><id>https://blog.ledoian.cz/</id><updated>2024-03-03T14:59:00+01:00</updated><entry><title>Print your stuff on Möbius bands!</title><link href="https://blog.ledoian.cz/mobius-print.html" rel="alternate"></link><published>2024-03-02T18:07:00+01:00</published><updated>2024-03-03T14:59:00+01:00</updated><author><name>LEdoian</name></author><id>tag:blog.ledoian.cz,2024-03-02:/mobius-print.html</id><summary type="html">&lt;p&gt;I found a fun and useful way of printing stuff to ~~both~~all sides of a paper. <feed xmlns="http://www.w3.org/2005/Atom"><title>LEdoian's Blog - technology</title><link href="https://blog.ledoian.cz/" rel="alternate"></link><link href="https://blog.ledoian.cz/feeds/technology.atom.xml" rel="self"></link><id>https://blog.ledoian.cz/</id><updated>2024-04-17T15:18:00+02:00</updated><entry><title>Creating own XKB tweaks</title><link href="https://blog.ledoian.cz/custom-xkb-tweaks.html" rel="alternate"></link><published>2024-04-17T15:18:00+02:00</published><updated>2024-04-17T15:18:00+02:00</updated><author><name>LEdoian</name></author><id>tag:blog.ledoian.cz,2024-04-17:/custom-xkb-tweaks.html</id><summary type="html">&lt;p&gt;Debugging this took me a bit too long, so I want to write about the caveat.&lt;/p&gt;
&lt;p&gt;My problem: My laptop does not have PageUp and PageDown keys, and many other
keyboards I use have similar deficiencies. And I use various environments and
various systems, some of which are shared with …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Debugging this took me a bit too long, so I want to write about the caveat.&lt;/p&gt;
&lt;p&gt;My problem: My laptop does not have PageUp and PageDown keys, and many other
keyboards I use have similar deficiencies. And I use various environments and
various systems, some of which are shared with other people who don't need/want
my tweaks. IOW: I want something generic, but it must be confined to my user
no system-wide daemon, no udev remapping. (I mostly ended up with these
solutions when I searched for a way to remap keys on Wayland.)&lt;/p&gt;
&lt;p&gt;Requirements: xkbcommon implementation of XKB with utilities. It is quite
common these days (duh…), but you could probably just compile this yourself if
you don't have it.&lt;/p&gt;
&lt;div class="section" id="the-tweaking"&gt;
&lt;h2&gt;The tweaking&lt;/h2&gt;
&lt;p&gt;The &lt;a class="reference external" href="https://xkbcommon.org/doc/current/user-configuration.html"&gt;xkbcommon guide&lt;/a&gt; tells us that we
can inspect the files in &lt;a class="footnote-reference" href="#lazy" id="footnote-reference-1"&gt;[1]&lt;/a&gt; &lt;tt class="docutils literal"&gt;/usr/share/X11/xkb&lt;/tt&gt; for the source files
and just write our bits to &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.config/xkb/symbols/ledoian&lt;/span&gt;&lt;/tt&gt;. In particular, I
added this snippet to remap keyboard brightness controls to PageUp/Down:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
partial
xkb_symbols &amp;quot;qs&amp;quot; {
key &amp;lt;I238&amp;gt; {[ Prior ]};
key &amp;lt;I237&amp;gt; {[ Next ]};
};
&lt;/pre&gt;
&lt;p&gt;The key identifiers are taken e.g. from &lt;tt class="docutils literal"&gt;xkbcli &lt;span class="pre"&gt;interactive-wayland&lt;/span&gt;&lt;/tt&gt;.
However, this is KcCGST &lt;a class="footnote-reference" href="#kccgst-vs-rmlvo" id="footnote-reference-2"&gt;[2]&lt;/a&gt; description, but layouts are
configured using RMLVO, so I need to define an option and tell what it should
do. The guide wants me to create &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.config/xkb/rules/evdev&lt;/span&gt;&lt;/tt&gt; with:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
! option = symbols
ledoian:qs = +ledoian(qs)
! include %S/evdev
&lt;/pre&gt;
&lt;p&gt;Now I just add &lt;tt class="docutils literal"&gt;ledoian:qs&lt;/tt&gt; &lt;a class="footnote-reference" href="#option-vs-symbol" id="footnote-reference-3"&gt;[3]&lt;/a&gt; to my keyboard configuration
and… it does not work. For this, at all, but if I remap e.g. the L key, that
gets applied. The problem? That included file says that the default keyboard
model always includes &lt;tt class="docutils literal"&gt;inet(evdev)&lt;/tt&gt; symbols. Those symbols set the default
meaning of the keys, but since that got applied later, it overrides my tweak.&lt;/p&gt;
&lt;p&gt;Solution: first include, then add my option.&lt;/p&gt;
&lt;p&gt;How to debug: read stuff that &lt;tt class="docutils literal"&gt;xkbcli &lt;span class="pre"&gt;compile-keymap&lt;/span&gt; &lt;span class="pre"&gt;--verbose&lt;/span&gt;&lt;/tt&gt; tells you
(pass your config as &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;--layout&lt;/span&gt;&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;--variant&lt;/span&gt;&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;--options&lt;/span&gt;&lt;/tt&gt;, …). At the top
it says what it does:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
xkbcommon: DEBUG: Include path added: /home/ledoian/.config/xkb
xkbcommon: DEBUG: Include path added: /usr/share/X11/xkb
xkbcommon: DEBUG: Compiling from RMLVO: rules 'evdev', model 'pc105', layout 'us', variant '(null)', options '(null)'
xkbcommon: DEBUG: Compiling from KcCGST: keycodes 'evdev+aliases(qwerty)', types 'complete', compat 'complete', symbols 'pc+us+inet(evdev)'
&lt;/pre&gt;
&lt;p&gt;My option would appear before the &lt;tt class="docutils literal"&gt;inet(evdev)&lt;/tt&gt; part.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="a-note-about-x11"&gt;
&lt;h2&gt;A note about X11&lt;/h2&gt;
&lt;p&gt;X11 uses a separate implementation of XKB (the original one, in fact), which
does _not_ look into the user directory, just the system ones. However, you can
compile the keymap yourself using &lt;tt class="docutils literal"&gt;xkbcli &lt;span class="pre"&gt;compile-keymap&lt;/span&gt; [KEYMAP OPTIONS] &amp;gt;
my_layout.xkb&lt;/tt&gt; and load it into the X server with &lt;tt class="docutils literal"&gt;xkbcomp my_layout.xkb $DISPLAY&lt;/tt&gt;.&lt;/p&gt;
&lt;hr class="docutils" /&gt;
&lt;table class="docutils footnote" frame="void" id="lazy" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;This is not technically accurate, really the paths reference
&lt;tt class="docutils literal"&gt;$XDG_something&lt;/tt&gt; variables. I am lazy and just copied my system, so YMMV
(probably won't, though).&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="kccgst-vs-rmlvo" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-2"&gt;[2]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;There are two levels of describing the keymap: the
lowlevel one is called KcCGST (short for keycodes, compat, geometry,
symbols, types) and is considered to be an implementation detail; the
user-facing one is RMLVO (rules, model, layout, variant, options) and that
is what you use in the configs, with &lt;tt class="docutils literal"&gt;setxkbmap&lt;/tt&gt; &amp;amp;c.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="option-vs-symbol" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-3"&gt;[3]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;While both this example and the &lt;a class="reference external" href="https://www.freedesktop.org/wiki/Software/XKeyboardConfig/"&gt;upstream&lt;/a&gt; layouts name
the symbols and options similarly, I think they don't need to be related
you should be able to put whatever you want in your options to the left of
&lt;tt class="docutils literal"&gt;=&lt;/tt&gt;, the right hand side is the name of the symbol file and if a
non-default layout from that file is used, its name is put in the
parentheses.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
</content><category term="technology"></category><category term="lifehack"></category><category term="software"></category><category term="linux"></category></entry><entry><title>Print your stuff on Möbius bands!</title><link href="https://blog.ledoian.cz/mobius-print.html" rel="alternate"></link><published>2024-03-02T18:07:00+01:00</published><updated>2024-03-03T14:59:00+01:00</updated><author><name>LEdoian</name></author><id>tag:blog.ledoian.cz,2024-03-02:/mobius-print.html</id><summary type="html">&lt;p&gt;I found a fun and useful way of printing stuff to ~~both~~all sides of a paper.
I just need to find the right printer!&lt;/p&gt; I just need to find the right printer!&lt;/p&gt;
&lt;div class="section" id="quick-recap-how-to-conventionally-print-stuff-two-sided"&gt; &lt;div class="section" id="quick-recap-how-to-conventionally-print-stuff-two-sided"&gt;
&lt;h2&gt;Quick recap: how to conventionally print stuff two-sided&lt;/h2&gt; &lt;h2&gt;Quick recap: how to conventionally print stuff two-sided&lt;/h2&gt;

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/linux.html">linux</a></li>
<li><a href="./tag/relationships.html">relationships</a></li> <li><a href="./tag/relationships.html">relationships</a></li>
<li><a href="./tag/identity.html">identity</a></li> <li><a href="./tag/identity.html">identity</a></li>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/print.html">print</a></li> <li><a href="./tag/print.html">print</a></li>
<li><a href="./tag/comics.html">comics</a></li> <li><a href="./tag/comics.html">comics</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li> <li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="./tag/dns.html">dns</a></li> <li><a href="./tag/dns.html">dns</a></li>
<li><a href="./tag/meta.html">meta</a></li> <li><a href="./tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/linux.html">linux</a></li>
<li><a href="./tag/relationships.html">relationships</a></li> <li><a href="./tag/relationships.html">relationships</a></li>
<li><a href="./tag/identity.html">identity</a></li> <li><a href="./tag/identity.html">identity</a></li>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/print.html">print</a></li> <li><a href="./tag/print.html">print</a></li>
<li><a href="./tag/comics.html">comics</a></li> <li><a href="./tag/comics.html">comics</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li> <li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="./tag/dns.html">dns</a></li> <li><a href="./tag/dns.html">dns</a></li>
<li><a href="./tag/meta.html">meta</a></li> <li><a href="./tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/linux.html">linux</a></li>
<li><a href="./tag/relationships.html">relationships</a></li> <li><a href="./tag/relationships.html">relationships</a></li>
<li><a href="./tag/identity.html">identity</a></li> <li><a href="./tag/identity.html">identity</a></li>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/print.html">print</a></li> <li><a href="./tag/print.html">print</a></li>
<li><a href="./tag/comics.html">comics</a></li> <li><a href="./tag/comics.html">comics</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li> <li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="./tag/dns.html">dns</a></li> <li><a href="./tag/dns.html">dns</a></li>
<li><a href="./tag/meta.html">meta</a></li> <li><a href="./tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/linux.html">linux</a></li>
<li><a href="./tag/relationships.html">relationships</a></li> <li><a href="./tag/relationships.html">relationships</a></li>
<li><a href="./tag/identity.html">identity</a></li> <li><a href="./tag/identity.html">identity</a></li>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/print.html">print</a></li> <li><a href="./tag/print.html">print</a></li>
<li><a href="./tag/comics.html">comics</a></li> <li><a href="./tag/comics.html">comics</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li> <li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="./tag/dns.html">dns</a></li> <li><a href="./tag/dns.html">dns</a></li>
<li><a href="./tag/meta.html">meta</a></li> <li><a href="./tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>
@ -62,7 +63,8 @@
<main> <main>
<div> <div>
<h1>Articles tagged with lifehack</h1> <h1>Articles tagged with lifehack</h1>
<ul> <li><a href="../mobius-print.html">Print your stuff on Möbius bands!</a> <ul> <li><a href="../custom-xkb-tweaks.html">Creating own XKB tweaks</a>
<li><a href="../mobius-print.html">Print your stuff on Möbius bands!</a>
</ul> </ul>
</div> </div>
</main> </main>

@ -0,0 +1,78 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<meta name=generator content="Pelican 4.9.1">
<meta name=author content="LEdoian">
<meta name=description content="My personal webpage">
<meta name=referrer content=no-referrer>
<link rel=stylesheet href="../theme/css/theme.css">
<title>Tag: linux LEdoian's Blog</title>
</head>
<body>
<header>
<h1>LEdoian's Blog</h1>
</header>
<div id=main>
<nav>
<div>
<!-- Main navigation -->
<!-- TODO! -->
</div>
<div>
<h2>Categories</h2>
<ul>
<li><a href="../category/networking.html">networking</a></li>
<li><a href="../category/queer.html">queer</a></li>
<li><a href="../category/talks.html">talks</a></li>
<li><a href="../category/technology.html">technology</a></li>
<li><a href="../category/til.html">til</a></li>
</ul>
<h2>Tags</h2>
<ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li>
<li><a href="../tag/infrastructure.html">infrastructure</a></li>
<li><a href="../tag/smrst.html">smršť</a></li>
<li><a href="../tag/trains.html">trains</a></li>
<li><a href="../tag/software-engineering.html">software-engineering</a></li>
</ul>
</div>
<div>
<h2>Stalk me also at</h2>
TODO!
<h2>I stalk</h2>
TODO!
</nav>
<main>
<div>
<h1>Articles tagged with linux</h1>
<ul> <li><a href="../custom-xkb-tweaks.html">Creating own XKB tweaks</a>
</ul>
</div>
</main>
</div> <!-- #main -->
<footer>
<hr>
Written using Pelican 4.9.1 by LEdoian.
</footer>
</body>
</html>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>
@ -62,7 +63,8 @@
<main> <main>
<div> <div>
<h1>Articles tagged with software</h1> <h1>Articles tagged with software</h1>
<ul> <li><a href="../cbz-to-pdf.html">How to convert CBZ to PDF</a> <ul> <li><a href="../custom-xkb-tweaks.html">Creating own XKB tweaks</a>
<li><a href="../cbz-to-pdf.html">How to convert CBZ to PDF</a>
</ul> </ul>
</div> </div>
</main> </main>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/linux.html">linux</a></li>
<li><a href="../tag/relationships.html">relationships</a></li> <li><a href="../tag/relationships.html">relationships</a></li>
<li><a href="../tag/identity.html">identity</a></li> <li><a href="../tag/identity.html">identity</a></li>
<li><a href="../tag/lifehack.html">lifehack</a></li>
<li><a href="../tag/print.html">print</a></li> <li><a href="../tag/print.html">print</a></li>
<li><a href="../tag/comics.html">comics</a></li> <li><a href="../tag/comics.html">comics</a></li>
<li><a href="../tag/software.html">software</a></li>
<li><a href="../tag/ipv6-only.html">ipv6-only</a></li> <li><a href="../tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="../tag/dns.html">dns</a></li> <li><a href="../tag/dns.html">dns</a></li>
<li><a href="../tag/meta.html">meta</a></li> <li><a href="../tag/meta.html">meta</a></li>

@ -36,12 +36,13 @@
<h2>Tags</h2> <h2>Tags</h2>
<ul> <ul>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/linux.html">linux</a></li>
<li><a href="./tag/relationships.html">relationships</a></li> <li><a href="./tag/relationships.html">relationships</a></li>
<li><a href="./tag/identity.html">identity</a></li> <li><a href="./tag/identity.html">identity</a></li>
<li><a href="./tag/lifehack.html">lifehack</a></li>
<li><a href="./tag/print.html">print</a></li> <li><a href="./tag/print.html">print</a></li>
<li><a href="./tag/comics.html">comics</a></li> <li><a href="./tag/comics.html">comics</a></li>
<li><a href="./tag/software.html">software</a></li>
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li> <li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
<li><a href="./tag/dns.html">dns</a></li> <li><a href="./tag/dns.html">dns</a></li>
<li><a href="./tag/meta.html">meta</a></li> <li><a href="./tag/meta.html">meta</a></li>

Loading…
Cancel
Save