Jekyll2022-01-12T04:03:59-05:00https://lottalinuxlinks.com/feed.xmllottalinuxlinks.comThe lottalinuxlinks.com linux user web blog is where an old linux user rambles on about linux, FOSS, movies, books, and other geekery. Sid to Arch2021-10-13T00:00:00-04:002021-10-13T00:00:00-04:00https://lottalinuxlinks.com/sid-to-arch<p>I’ve been using debian linux since 1995; when I say using, I mean at
least one machine in my house has been running debian constantly
during that entire time, be it a server install running stable, a
laptop or desktop computer for the wife or one of my daughters
running stable, or maybe testing, and always my personal daily
driver laptop running sid. So when I changed my two personal daily
driver laptops (not any of my servers or other family member’s
computers) from debian sid to arch linux this past July, it could be
asked, why arch and why now?</p>
<p>I know and love debian. It works, I know all the ins and outs, and
it has never once broken, failed to update, or let me down in any
memorable way; these are the reasons debian is the only distro I
would ever install on a server. Debian is not just for servers;
debian is everything anybody needs, meaning if you need stable they
have you covered, if you need more recent, less “stale” programs,
they have that covered as well, and if you need the latest and
greatest, then they have that too! If you want a minimal install, or
a full fledged out of the box, everything included, just works
distro, you have those options too. And no matter what you need,
they have security covered too. Installing packages from the
appropriate official repo, no matter stable, testing, or sid, you
can rest easy knowing that security has been handled appropriately.</p>
<p>Debian sid is often called a rolling release, and it’s accurate to
do so; outside of the freeze before a stable release, debian sid is
constantly being updated. Other than that, if one sticks to the
official repos, and doesn’t mix repos, just about everything you
could possibly need is there, and can be safely downloaded and
installed with almost zero unexpected gotchas to be had.</p>
<p>So why even try something new? Was there an itch that debian sid
wasn’t scratching for me? The short and only answer to the question
is that for my personal daily driver computers running sid, I have
been for years maintaining a list (paper and electronic) of packages
that were installed from source and outside of the standard sid
repos. The itch that arch seemed to scratch that debian sid does
not, is a solution for installing packages outside of the standard
repos using the package manager. Debian doesn’t do this as easily,
and more times than not, it’s easier to just build and install from
source. With arch however, using the aur, and the pkgbuild system,
everything on my lists of things installed outside the package
manager on debain sid, could be installed using the package manager
and the aur.</p>
<p>Is it perfect? Is it safer? No to both questions. The aur doesn’t
feel as safe or secure as debian for sure; but it is just a safe as
installing from source on sid, if you take the time to read the
source –which is something you should be doing every time you
install anything from source. The main advantage with arch and the
aur is that you can install from source using the package manager.</p>
<p>So, for me it’s a win: if something is not in the official arch
repos, and it’s in the aur (which everything on my lists were) I can
install it with the package manager, which with arch is a superior
user experience.</p>
<p>Just from a more nebulous aspect though, having things installed
more close to source (less patches than with debian binaries) my
system seems a little more lean–it’s a feel thing but it seems a
little more lean and a little more snappy. One of the things I
really enjoy about a debian sid install is the minimal netinstall,
arch does this in spades, as you only install what you need and you
only enable or start the services you need as well. With arch I feel
more in control of every detail of my system.</p>
<p>Overall I am very happy replacing debian sid with arch, and I don’t
regret anything about it. YMMV</p>
<p>-dsyates</p>
<p>
(o\_!_/o)
</p>I’ve been using debian linux since 1995; when I say using, I mean at least one machine in my house has been running debian constantly during that entire time, be it a server install running stable, a laptop or desktop computer for the wife or one of my daughters running stable, or maybe testing, and always my personal daily driver laptop running sid. So when I changed my two personal daily driver laptops (not any of my servers or other family member’s computers) from debian sid to arch linux this past July, it could be asked, why arch and why now?Pen and Paper2021-03-13T00:00:00-05:002021-03-13T00:00:00-05:00https://lottalinuxlinks.com/pen-and-paper<p>Nothing earth shattering to see here, just a overdue, short post
about two things that I have carried with me everyday since since
graduating college in 1989: a pen and some kind of pocket notebook.</p>
<p>It really started earlier than that though, around 5th grade; I
evidently was lying about the amount of homework I had, and my mom
made me carry a notebook that I was to use to write down everything
that I had to do. She probably had the teacher sign it too; I
can’t remember the details, but it worked, and I have used and
carried notebooks ever since. In school I would carry it my bag,
but since then it has resided in my back pocket.</p>
<p>I take notes on my computer too of course. I have used a variety of
apps in the past; I am currently using a combination of Vim,
Joplin, syncthing, git, and nextcloud. Notes stored on my computer
are more often for procedural or repetitive task, or things that I
may want to copy and paste. In most cases these digital notes are
as important to me as config files, and other things I routinely
back up, but the pen and paper notes server a different purpose,
and are also just quicker, easier, and more convenient. My analog
notes tend to be more list-like in nature, compared to the ones I
keep on my computer, and almost never need to be digitized, as they
are a mainly a complementary supplement to my digital note taking.</p>
<p>Since graduating college and entering the work force, I have used a
variety of pocket sized notebooks, spiral bound flip books, pads of
paper in a cover, pocket calendars, and day-timers; but for the
last 20 years or so, I can say that of all the pen and paper
solutions I have carried, the best I have found is simply this: a
Fisher Bullet Space Pen coupled with 3.5”x 5.5” dotted, memo books,
carried in a leather cover.</p>
<p align="center"><a href="/assets/images/pen-and-paper.jpg"><img src="/assets/images/pen-and-paper.jpg" alt="pen and paper" width="75%" /></a></p>
<p>What I love about this notebook, is that the leather cover makes it
very durable and comfortable to carry in my back pocket, and it can
hold 3, 64 page notebooks. In one leather cover I can carry one
notebook for long term work-related things, one for mostly
linux-related things, and one for archived material from the
previous year.</p>
<p>The Fisher Bullet Space Pen is almost indestructible. The one I
carry now, I found near my driveway after losing it for over a
year. It had been run over by a car and exposed to the elements and
still serves as my everyday pen. It’s not the best writing pen, but
it is small and comfortable, and easily carried.</p>
<p>It may seem trivial, or an insignificant geeky thing, but my pen
and paper pocket notebook make me happy.</p>
<p>-dsyates</p>
<p>
(o\_!_/o)
</p>Nothing earth shattering to see here, just a overdue, short post about two things that I have carried with me everyday since since graduating college in 1989: a pen and some kind of pocket notebook.Adding a repurposed caps lock as a third mod key in i32021-02-13T00:00:00-05:002021-02-13T00:00:00-05:00https://lottalinuxlinks.com/adding-a-repurposed-caps-lock-as-a-third-mod-key-in-i3<p>When the i3 window manager is run for the first time, a
configuration wizard runs and allows you to set the modifier, or
mod key, that you want to use for your keybindings. The
configuration wizard allows you to choose either the Alt key or the
Super key, i.e. one or the other, but not more than one. i3 though
has support for all five modifier keys, and these can be set in
your i3 config file. My i3 config file was set up to use two mod
keys: mod4, the Super key, and mod1, the Alt key. For a while, I
was happily using two mod keys, but recently I have found myself
needing to use a third. This quick and dirty post will explain how,
and why I repurposed my Caps Lock key as mod3.</p>
<p>Disclaimer: what follows is what worked for me, and what I did, and
in the order I did it, to use the Caps Lock key for use as mod3 in
i3.</p>
<p>Here is the relevant excerpt from my i3 config file, from when I
was using just two mod keys:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>set $mod Mod4
set $mod1 Mod1
</code></pre></div></div>
<p>And here is the xmodmap -pm command output (before repurposing the
Caps Lock Key) showing the default assignments for mod1 through
mod5:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>xmodmap -pm
xmodmap: up to 5 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Hyper_L (0x42), Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
</code></pre></div></div>
<p>As you can see in the above output, mod3 is empty and mod4, in
addition to the Super key, also includes the Hyper key.</p>
<p>The first thing I did was run the following setxkbmap command to
change the Caps Lock key to the Hyper key:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>setxkbmap -option caps:hyper
</code></pre></div></div>
<p>This might seem like enough, but it’s not; next a ~/.Xmodmap file
needs to be created to clear out the mod4 designations, add the
mod3 designation, and then re-add the mod4 designations. Here is
the contents of the ~/.Xmodmap file I created:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>clear mod4
keycode 66 = Hyper_L NoSymbol Hyper_L
add mod3 = Hyper_L
add mod4 = Super_L Super_R
</code></pre></div></div>
<p>Note: the keycode for the Caps Lock key can be obtained using the
xev command like this:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>xev -event keyboard
</code></pre></div></div>
<p>After creating the .Xmodmap file you either need to restart X or
source the .Xmodmap file. Here is the command to source the new
file:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>xmodmap ~/.Xmodmap
</code></pre></div></div>
<p>After running that above command, re-running the xmodmap -pm
command outputs the following:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>xmodmap -pm
xmodmap: up to 3 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3 Hyper_L (0x42), Hyper_L (0xcf)
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
</code></pre></div></div>
<p>As you can see mod4 now only includes Super, and mod3 is no longer
empty, but contains Hyper.</p>
<p>Next (since I don’t run a display manager) I added the following to
my ~/.xinitrc:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[[ -f ~/.Xmodmap ]] && xmodmap ~/.Xmodmap
</code></pre></div></div>
<p>This will source my custom ~/.Xmodmap file when I run startx.</p>
<p>And the last thing I did was add the following to my i3 config
file:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>set $mod3 Mod3
exec --no-startup-id setxkbmap -option caps:hyper
</code></pre></div></div>
<p>For clarity, I put the set $mod3 Mod3 line in the same section of
the file where I had set $mod and $mod4; and I put the exec
–no-startup-id setxkbmap command in the section of the file where
I put the programs that I want started when i3 starts up.</p>
<p>With the above changes made, I now have three modifier keys that I
can use for keybindings in i3. This gives me another whole level of
keybinding flexibility.</p>
<p>The main reason I did this though, is that a third mod key made it
more simple and intuitive to add and use an additional 10
workspaces, for a easily accessed total of 30. With i3 configured
this way I can now access workspaces 1-10 with Super+numbers 1-0;
workspaces 11-20 with Alt+numbers 1-0; and workspaces 21-30 with
Caps Lock+numbers 1-0.</p>
<p>Here is the excerpt from my i3 config with 30 workspaces:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
set $ws11 "11"
set $ws12 "12"
set $ws13 "13"
set $ws14 "14"
set $ws15 "15"
set $ws16 "16"
set $ws17 "17"
set $ws18 "18"
set $ws19 "19"
set $ws20 "20"
set $ws21 "21"
set $ws22 "22"
set $ws23 "23"
set $ws24 "24"
set $ws25 "25"
set $ws26 "26"
set $ws27 "27"
set $ws28 "28"
set $ws29 "29"
set $ws30 "30"
# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
bindsym $mod1+1 workspace number $ws11
bindsym $mod1+2 workspace number $ws12
bindsym $mod1+3 workspace number $ws13
bindsym $mod1+4 workspace number $ws14
bindsym $mod1+5 workspace number $ws15
bindsym $mod1+6 workspace number $ws16
bindsym $mod1+7 workspace number $ws17
bindsym $mod1+8 workspace number $ws18
bindsym $mod1+9 workspace number $ws19
bindsym $mod1+0 workspace number $ws20
bindsym $mod3+1 workspace number $ws21
bindsym $mod3+2 workspace number $ws22
bindsym $mod3+3 workspace number $ws23
bindsym $mod3+4 workspace number $ws24
bindsym $mod3+5 workspace number $ws25
bindsym $mod3+6 workspace number $ws26
bindsym $mod3+7 workspace number $ws27
bindsym $mod3+8 workspace number $ws28
bindsym $mod3+9 workspace number $ws29
bindsym $mod3+0 workspace number $ws30
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
bindsym $mod1+Shift+1 move container to workspace number $ws11
bindsym $mod1+Shift+2 move container to workspace number $ws12
bindsym $mod1+Shift+3 move container to workspace number $ws13
bindsym $mod1+Shift+4 move container to workspace number $ws14
bindsym $mod1+Shift+5 move container to workspace number $ws15
bindsym $mod1+Shift+6 move container to workspace number $ws16
bindsym $mod1+Shift+7 move container to workspace number $ws17
bindsym $mod1+Shift+8 move container to workspace number $ws18
bindsym $mod1+Shift+9 move container to workspace number $ws19
bindsym $mod1+Shift+0 move container to workspace number $ws20
bindsym $mod3+Shift+1 move container to workspace number $ws21
bindsym $mod3+Shift+2 move container to workspace number $ws22
bindsym $mod3+Shift+3 move container to workspace number $ws23
bindsym $mod3+Shift+4 move container to workspace number $ws24
bindsym $mod3+Shift+5 move container to workspace number $ws25
bindsym $mod3+Shift+6 move container to workspace number $ws26
bindsym $mod3+Shift+7 move container to workspace number $ws27
bindsym $mod3+Shift+8 move container to workspace number $ws28
bindsym $mod3+Shift+9 move container to workspace number $ws29
bindsym $mod3+Shift+0 move container to workspace number $ws30
</code></pre></div></div>
<p>-dsyates</p>
<p>
(o\_!_/o)
</p>When the i3 window manager is run for the first time, a configuration wizard runs and allows you to set the modifier, or mod key, that you want to use for your keybindings. The configuration wizard allows you to choose either the Alt key or the Super key, i.e. one or the other, but not more than one. i3 though has support for all five modifier keys, and these can be set in your i3 config file. My i3 config file was set up to use two mod keys: mod4, the Super key, and mod1, the Alt key. For a while, I was happily using two mod keys, but recently I have found myself needing to use a third. This quick and dirty post will explain how, and why I repurposed my Caps Lock key as mod3.My gemini capsule has launched.2021-02-07T00:00:00-05:002021-02-07T00:00:00-05:00https://lottalinuxlinks.com/my-gemini-capsule-has-launched<p>And we have liftoff! I have a gemini capsule now.</p>
<p>If you already have a gemini client enter in the following address:</p>
<p><code class="language-plaintext highlighter-rouge">gemini://gemini.lottalinuxlinks.com</code></p>
<p>Gemini is a new privacy-respecting internet protocol that seeks to
fill the space between the web and gopher. It is still new to me,
so I am just getting into it; but
<a href="https://mastodon.social/@Samsai">@Samsai</a>, has a really good
<a href="https://samsai.eu/post/introduction-to-gemini/">post</a> about what
makes gemini intriguing.</p>
<p>Much like gopher, except way more modern, you will need a gemini
client to view gemini content.</p>
<p>Here is a <a href="https://github.com/kr1sp1n/awesome-gemini">list</a> of
clients, proxies, and servers that can be used with gemini.</p>
<p>If you don’t have a gemini client yet, you can use the <a href="https://portal.mozz.us/gemini/gemini.circumlunar.space/">gemini
portal</a> to
access gemini capsules with a web browser.</p>
<p>There isn’t a lot of information on the web about it, but <a href="https://gemini.circumlunar.space/">Project
Gemini</a>, and of course
<a href="https://en.wikipedia.org/wiki/Gemini_(protocol)">wikipedia</a>, have
a little more information if you are interested in learning more.</p>
<p>Special thanks to <a href="https://fosstodon.org/@ecliptik">@ecliptik</a> and his
<a href="https://github.com/ecliptik/ecliptik.github.io/tree/master/_scripts">_scripts
repository</a>.</p>
<p>-dsyates</p>
<p>
(o\_!_/o)
</p>And we have liftoff! I have a gemini capsule now.How to build and install i3-gaps from source on debian2021-02-06T00:00:00-05:002021-02-06T00:00:00-05:00https://lottalinuxlinks.com/how-to-build-and-install-i3-gaps-on-debian<p>i3-gaps is a fork of the i3 window manager that is kept up to date
with upstream i3, and adds the feature of allowing you to have
visible and configurable gaps between windows. This feature <strong>is</strong>
just eye candy, and may or may not actually aid the user by
providing some visible space between windows (at the expense of
some screen real estate) to make clearer the distinction between
adjacent windows. What cannot be argued though, is that i3-gaps
just looks better. Seriously though, it is just regular i3 but
with re-sizable gaps between windows that can be turned on or off.</p>
<p>Debian does not have i3-gaps in their repos, just plain i3. If you
are running debian, and already have i3 from the debian repos
installed, and you want to use i3-gaps, I recommend uninstalling
the version from the debian repos before proceeding. The reason you
want to do this is that the i3-gaps binary is actually named i3,
just like the non-gapped i3 from which it is forked.</p>
<p>I don’t know why the forked version has the same name, but that’s
OK. You either want the gap option, or you don’t. If you want them
bad enough, just uninstall the i3 from the repo before proceeding.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt purge i3
</code></pre></div></div>
<p>Before we go any further, and in the spirit of full disclosure, I
installed i3 in /usr/ instead of /usr/local/.<br />
<em>I know, I know</em>…the instructions that follow though will assume
that you want to install i3-gaps in /usr/local/.</p>
<p>So, here is how to build from source and install i3-gaps on debian:</p>
<p>First install the dependencies:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>apt install meson dh-autoreconf libxcb-keysyms1-dev libpango1.0-dev libxcb-util0-dev xcb libxcb1-dev libxcb-icccm4-dev libyajl-dev libev-dev libxcb-xkb-dev libxcb-cursor-dev libxkbcommon-dev libxcb-xinerama0-dev libxkbcommon-x11-dev libstartup-notification0-dev libxcb-randr0-dev libxcb-xrm0 libxcb-xrm-dev libxcb-shape0 libxcb-shape0-dev
</code></pre></div></div>
<p>Then cd to the directory where you want to download the i3-gaps
source code and the run the following commands in the order shown.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone https://github.com/Airblader/i3 i3-gaps
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd i3-gaps
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mkdir -p build && cd build
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>meson --prefix /usr/local
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ninja
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo ninja install
</code></pre></div></div>
<p>The meson –prefix option allows you to pick where you want to
install i3-gaps. In the above example, everything will be installed
in sub-directories of the /usr/local/ directory.</p>
<p>As I mentioned before, this binary will not be called i3-gaps, but
it will be called i3.</p>
<p>If you are like me, and don’t use a display manager, just edit your
.xinitrc file and comment out your current window manager and add
the following line:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>exec i3
</code></pre></div></div>
<p>If you are running a display manager you should be able to pick i3
from the login screen. Remember it will be called i3, not i3-gaps.</p>
<p>Once installed, you will need to edit your config file
(~/.config/i3/config) to enable the gaps feature, since the config
file that comes with i3-gaps is the same one as the default
non-gapped i3 from the repo. All you need to add is in the
README.md at the <a href="https://github.com/Airblader/i3">i3-gaps github
page</a>. Note that the i3-gaps
documentation states that window titlebars need to be disabled in
order for the gaps feature to work. I <em>think</em> that recommendation
may be out of date, as I have run gaps with window titlebars
enabled; but YMMV. I have since grown to love windows without
titlebars though, and keep my titlebars disabled..</p>
<p>Here is the pertinent part of my config file, and how I have the
gaps configured:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># gaps
# disable window titlebars
for_window [class="^.*"] border pixel 0
gaps inner 6
gaps outer 2
bindsym $mod+Shift+g gaps inner all set 6; gaps outer all set 2
bindsym $mod+Shift+n gaps inner all set 0; gaps outer all set 0
# Only enable gaps on a workspace when there is at least one container
smart_gaps on
# Activate smart borders (always)
#smart_borders on
# Activate smart borders (only when there are effectively no gaps)
#smart_borders no_gaps
# Hide edge borders only if there is one window with no gaps
hide_edge_borders smart_no_gaps
# What follows here is optional and defines a mode that allows you to resize the gaps on the fly.
# Press $mod1+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps.
# Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace).
# If you also press Shift with these keys, the change will be global for all workspaces.
set $mode_gaps Gaps: (o) outer, (i) inner
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
bindsym $mod1+Shift+g mode "$mode_gaps"
mode "$mode_gaps" {
bindsym o mode "$mode_gaps_outer"
bindsym i mode "$mode_gaps_inner"
bindsym Return mode "default"
bindsym Escape mode "default"
}
mode "$mode_gaps_inner" {
bindsym plus gaps inner current plus 5
bindsym minus gaps inner current minus 5
bindsym 0 gaps inner current set 0
bindsym Shift+plus gaps inner all plus 5
bindsym Shift+minus gaps inner all minus 5
bindsym Shift+0 gaps inner all set 0
bindsym Return mode "default"
bindsym Escape mode "default"
}
mode "$mode_gaps_outer" {
bindsym plus gaps outer current plus 5
bindsym minus gaps outer current minus 5
bindsym 0 gaps outer current set 0
bindsym Shift+plus gaps outer all plus 5
bindsym Shift+minus gaps outer all minus 5
bindsym Shift+0 gaps outer all set 0
bindsym Return mode "default"
bindsym Escape mode "default"
}
</code></pre></div></div>
<p>If you like i3, you’ll love i3-gaps; even if you don’t love gaps,
you can just turn them off and it will be just like regular i3.
That is a win-win-win scenario.</p>
<p>-dsyates</p>
<p>
(o\_!_/o)
</p>i3-gaps is a fork of the i3 window manager that is kept up to date with upstream i3, and adds the feature of allowing you to have visible and configurable gaps between windows. This feature is just eye candy, and may or may not actually aid the user by providing some visible space between windows (at the expense of some screen real estate) to make clearer the distinction between adjacent windows. What cannot be argued though, is that i3-gaps just looks better. Seriously though, it is just regular i3 but with re-sizable gaps between windows that can be turned on or off.Fosstodon2021-01-31T00:00:00-05:002021-01-31T00:00:00-05:00https://lottalinuxlinks.com/fosstodon<p>I have <a href="https://lottalinuxlinks.com/back-seat-dropout">posted
before</a> about my
experiences in the linux and FOSS community, and specifically about
getting in, fitting in, taking part in, and later dropping out of
the community. Since the recent rebirth of this dormant website, I
have revisited mastodon, and logged back in to my fosstodon account
again for the first time. I say the first time because I honestly
cannot remember the last time I had logged in, but thankfully
<a href="https://bitwarden.com/">bitwarden</a> had my password. In the short
two week period, at the time of this writing, that I have been back
on fosstodon, I can say it has been enjoyable and eye opening.</p>
<p>Mastodon is an open source, and Free as in freedom, privacy
respecting, own your data, social network server and micro blogging
platform. All mastodon servers can communicate with each other on a
federated network of decentralized servers; this means that if you
are have an account on one server, or instance, you can communicate
with all users on the server you are on, as well as users on other
servers. Additionally, mastodon is part of the larger fediverse and
can communicate with the other non-mastodon parts of the fediverse
too. That is the short and sweet, oversimplified explanation of
what mastodon is.</p>
<p>If you want to know why you should use mastodon, please read
<a href="https://fosstodon.org/@codesections">@codesections</a>’s
<a href="https://www.codesections.com/blog/mastodon-elevator-pitch/">post</a>
about how and why mastodon is better than twitter; he is one of the
moderators of the fosstodon mastodon instance, and he says it
better than I ever could.</p>
<p>So, after that brief, what, how, and why, I will get back to the
main purpose of the this post, and continue to gush a little about
the fosstodon mastodon instance. One of the things I love about
mastodon and it being federated, is that the instance you choose to
have an account with can, if you find the right instance, really
feel like a community. What I mean by that is if you are a Free and
open source linux geek, the fosstodon instance will feel like home
for you. The fosstodon instance is filled with people who care
about linux, Free and open source software, and all the various and
sundry geeky/nerdy things that those people are passionate about.
If you are passionate about something, being surrounded by, and
communicating with, people who are passionate about the same
things, puts you in an environment that both liberates and fosters
a healthy, fun, and engaging community.</p>
<p>I am living proof that, even someone like me who has suffered from
occasional impostor’s syndrome, can, and will, be accepted into the
linux and Free and open source software community. The fosstodon
instance is a place for people like me; an exciting, and engaging
place that allows anyone and everyone that is passionate about
these things to get in , fit in, and take part in, an accepting
community that feels like home.</p>
<p>Fosstodon, being just one instance of the larger mastodon federated
network, isn’t a particularity small instance with over 15,000
users (and don’t forget you can still communicate with the other
instances), but it still feels like a community, as well connected
part of a larger unique part of the internet. And that is because
it is part of the fediverse, the larger universe made up of all the
federated networks, that in addition to mastodon include diaspora,
Friendica, GNU Social, Hubzilla, Misskey, PeerTube, Pleroma,
Pixelfed, Funkwhale, and possibly more. Together, all of these
decentralized networks of federated servers make up the larger
fediverse. It is a small-feeling, interconnected corner of the
internet, that isn’t controlled by giant companies that mine your
data for their profits. It sort of reminds me of the internet
before the web became the way it is today; it somehow reminds me of
gopherspace and BBSs, when the internet felt, in a good way,
smaller–but more connected.</p>
<p>I told you I was gonna gush.</p>
<p>None of this is rocket science, and it may not even be that
eye-opening for most people reading this, but I have had my eyes
opened, again, by the linux and Free and open source software
community. Thanks fosstodon.</p>
<p>If you don’t have a home on mastodon yet, and especially, if you
are passionate about FOSS and linux, just click the link below to
sign up for an account on the fosstodon instance:</p>
<p><a href="https://fosstodon.org/invite/XrJRievw">Join fosstodon</a>.</p>
<p>And if fosstodon doesn’t sound like home to you, being able to
<a href="https://instances.social/">pick</a>, or even
<a href="https://github.com/tootsuite/mastodon">host</a>, your own instance
are just two more reasons that make mastodon, and the
<a href="https://fediverse.party/en/fediverse">fediverse</a> so awesome.</p>
<p>-dsyates</p>
<p>
(o\_!_/o)
</p>I have posted before about my experiences in the linux and FOSS community, and specifically about getting in, fitting in, taking part in, and later dropping out of the community. Since the recent rebirth of this dormant website, I have revisited mastodon, and logged back in to my fosstodon account again for the first time. I say the first time because I honestly cannot remember the last time I had logged in, but thankfully bitwarden had my password. In the short two week period, at the time of this writing, that I have been back on fosstodon, I can say it has been enjoyable and eye opening.Welcome to the MODcast2021-01-29T00:00:00-05:002021-01-29T00:00:00-05:00https://lottalinuxlinks.com/welcome-to-the-modcast<p>Shortly after I set up my gopher hole last year, I downloaded all
of the MOD files off of
<a href="http://artscene.textfiles.com/music/mods/">textfiles.com</a> thinking
I would mirror them on my gopher site. I decided not to once I had
finished the 54 gig download of over 140,000 MOD files. The
directory structure of the downloaded files was going to make it a
little cumbersome to be useful on a gopher site. As an aside, I
can’t remember the exact details, but I pretty sure I used wget, or
maybe it was curl, to grab the files; either way it was easy. I
kept the files and have enjoyed listening to them as background
music on several occasions since then.</p>
<p>But wait, what are MOD files? MOD is short for module, and
<a href="https://en.wikipedia.org/wiki/MOD_(file_format)">paraphrased from
wikipedia</a> is a
file format, first developed for the Amiga computer in 1987, and is
mainly used to represent music. A MOD file (including files with
the extension MOD, XM, IT, 669, MTM, and S3M) contains a set of
instruments in the form of samples and a number of patterns
indicating how and when the samples are played. More information
about MOD files can be found at the <a href="http://cd.textfiles.com/darkdomain/faqs/faq-mod_v28-part1.txt">alt.binaries.sounds.mods
FAQ</a>,
retrieved and stored at <a href="http://textfiles.com">textfiles.com</a>.</p>
<p>All that aside, MOD files are both plenty fun and geeky; I have
fond memories of editing MOD files back in the day, changing the
instrument samples and completely changing the sound of the music.
And you can still do that today with with the MOD tracking program
<a href="https://milkytracker.org/about/">MilkyTracker</a>.</p>
<p>So, back to the story, a couple of day ago I decided I would
stream a randomly shuffled, continuous playlist of 140,129 old
(from roughly 1987-1995) MOD files. That’s a lot of MOD files; 309
days, 6 hours, 2 minutes, and 48 seconds worth of mod files to be
exact! With this many files, there are sure to be some that are not
your cup of tea, but there will plenty of good ones too. So, if you
feel so inclined, tune in and give it a listen. I can pretty much
guarantee you won’t hear the same song twice in 309 day of
continuous listening.</p>
<p style="text-align: center;"><audio id="audioplayer" style="text-align: center;" src="http://lottalinuxlinks.com:8000/stream" preload="none" loop="loop" controls="controls">Your browser does not support audio players.</audio></p>
<p>Or simply just paste the following stream address in your media
player of choice:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>http://lottalinuxlinks.com:8000/stream.m3u
</code></pre></div></div>
<p>I don’t know for sure how much my daily internet usage will affect
the stream quality, but I know there will be times when the stream
is less than ideal. I really don’t think this is going to blow up
the internet or anything like that, but if it gets to be a hassle
bandwidth wise (or even if it doesn’t), there is a decent chance
that I may end up moving the stream to a slot on
<a href="https://anonradio.net/listen/">anonradio</a> over at
<a href="https://sdf.org/">SDF</a>, or maybe
<a href="https://tilderadio.org/">tilderadio</a>. We’ll see what happens.</p>
<p><strong>tl;dr</strong>: I set up a pretty awesome internet <a href="https://lottalinuxlinks.com/modcast/">audio
stream</a> of over 140,000 MOD
files.</p>
<p>-dsyates</p>
<p>
(o\_!_/o)
</p>Shortly after I set up my gopher hole last year, I downloaded all of the MOD files off of textfiles.com thinking I would mirror them on my gopher site. I decided not to once I had finished the 54 gig download of over 140,000 MOD files. The directory structure of the downloaded files was going to make it a little cumbersome to be useful on a gopher site. As an aside, I can’t remember the exact details, but I pretty sure I used wget, or maybe it was curl, to grab the files; either way it was easy. I kept the files and have enjoyed listening to them as background music on several occasions since then.Using Mastodon for comments on a static blog2021-01-23T00:00:00-05:002021-01-23T00:00:00-05:00https://lottalinuxlinks.com/using-mastodon-for-comments-on-a-static-blog<p>This is a static blog. As such, providing the means for readers to
add comments is not something that is built-in. This blog post is
really just a test to try out adding comment functionality using
mastodon as implemented and explained by
<a href="https://linuxrocks.online/@carl">@carl</a>:
<a href="https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/">here</a>,
on a Hugo static site; as well as by
<a href="https://toot.site/@xosem">@xosem</a>:
<a href="https://blog.xmgz.eu/jekyll-mastodon-comment/">here</a> on a Jekyll
static site.</p>
<p>The posting workflow is a bit cumbersome, as I have to republish
the post after publishing the toot, so there is that, but I like
the idea of using mastodon a little better than GitHub.</p>
<p>A couple of weeks ago I came across
<a href="https://utteranc.es">utteranc.es</a>, which is an open source,
privacy-respecting, comment widget that is built on GitHub issues
for blog comments. It works and beautifully and only requires and
additional 7 lines of code; but it does require the reader to have
a GitHub account though.</p>
<p>I thought I would try this mastodon solution out and see which one
I liked the best.</p>
<p>If you feel so inclined, please comment with your thoughts.</p>
<p>Thanks.</p>
<p>-dsyates</p>
<p>
(o\_!_/o)
</p>This is a static blog. As such, providing the means for readers to add comments is not something that is built-in. This blog post is really just a test to try out adding comment functionality using mastodon as implemented and explained by @carl: here, on a Hugo static site; as well as by @xosem: here on a Jekyll static site.i3 scratchpad and vim like marks2021-01-20T00:00:00-05:002021-01-20T00:00:00-05:00https://lottalinuxlinks.com/i3-scratchpad-and-vim-like-marks<p>I’ve been using linux a LONG time, and without a doubt the best and
most versatile graphical environment I have ever used is the i3
tiling window manger. Technically I use a fork called i3-gaps, but
I will talk about that in another post one day. What makes i3 the
best (for me) is that it fits the way I work, is easily customized,
and that all the navigation can be done with the keyboard. Two
really cool features of i3 are the scratchpad and vim like marks.</p>
<p align="center"><a href="/assets/images/i3-desktop.jpg"><img src="/assets/images/i3-desktop.jpg" alt="i3 desktop" width="100%" /></a></p>
<p>The scratchpad is a place you can send floating windows where you
can quickly retrieve them when needed. Think of it sort of like
minimizing a window–except that with i3 windows are not minimized.
i3 is a tiling window manager and all windows are by default opened
in the largest dimensions possible. If a window is the only window
opened on a workspace, then it is maximized; and if any more
windows are opened on that workspace they are tiled to take up half
the space of the previously opened window on that workspace. Any
tiled window can be turned into a floating window (and toggled back
into a tiled window) with the following keystroke (where the mod
key is either set to the windows key or the alt key, depending on
your i3 config file–in my case I have the mod key set to the
windows key and mod1 set to the alt key):</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mod+shift+space
</code></pre></div></div>
<p>mod+shift+space is a toggle, meaning repeating the keystroke will
disable floating for the window and return it to a tiling window.</p>
<p>Once a window is turned into a floating window it can be sent to
the scratchpad like this:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mod+shift+minus
</code></pre></div></div>
<p>Technically, you don’t have to turn a window into a floating window
before you send it the scratchpad; i3 does that for you when you
send something to the scratchpad. mod+shift+minus will send any
window, whether it is tiled, tabbed, or floating to the scratchpad;
but any window that is retrieved from the scratchpad is brought
back as a floating window.</p>
<p>When a window is sent to the scratchpad it disappears. Like I said,
it is sort of like minimizing a window, except that status bars in
i3 show workspace numbers, not windows; that means that there is no
status bar indicator showing where that window went. What good is a
disappearing window if you can’t bring it back? Any window sent to
the scratchpad can be retrieved like this:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mod+minus
</code></pre></div></div>
<p>What makes this cool is that you can take any window that you don’t
need right now, and set it aside, out of the way, until you need it
again, and then bring it right back to the front, where and when
you need it. You can even configure programs to start in a
floating window that is sent straight to the scratchpad at start
up. I have my i3 config file set up to automatically start the RPN
calculator orpie, and a urxvt terminal window opened in a floating
window and sent to the scratchpad as soon as I start i3. In the
case of urxvt, my config file has this in it:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>exec --no-startup-id urxvt -name scratchterm
for_window [instance="scratchterm"] move scratchpad
</code></pre></div></div>
<p>What if you decide that you no longer want a program to be in the
scratchpad? Simply retrieve it from the scratchpad (mod+minus),
and do a mod+shift+space to return it to a tiled window.</p>
<p>Once you have sent several windows to the scratchpad, you can bring
them back with a mod+minus; this will bring them back one (and only
one) at a time in a cycling sequence based on the order that they
were sent to the scratchpad. What that means is, if you have eight
windows in the scratchpad, you will have to repeat the mod+minus
keystroke until the one you are looking for cycles back around.
This can become a little bit of a time waster, and that is where
vim like marks come in.</p>
<p>Why are they called vim like marks? Marks in vim allow you to
record your current position so that you can return to it later. In
i3 marks can be applied to windows that allow you to directly
jump to a specific window. In the case of windows that don’t reside
in the scratchpad, going to a marked window will switch to the
appropriate workspace and focus the marked window. That is cool
enough all by itself, but combined with the scratchpad, it gets
even better.</p>
<p>I avoided using marks for a while, because I have i3 configured to
not draw window decorations (title bars and borders), and I though
this meant I couldn’t use marks. I have since found out two things,
marks do not have to be drawn on window decorations to use then,
and i3 can even be configured to not show marks in window
decorations.</p>
<p>So, how do you use marks, and what makes using them so great
coupled with the scratchpad? The way I use marks in i3 is by using
the i3-input tool to assign a mark to a window that can be used to
retrieve that specific window from the scratchpad. This allows me
to assign a keystroke to mark a window and another to later go to
that marked window whenever I choose. Simply adding the following
to your i3 config file will do the trick:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># read 1 character and mark the current window with this character
bindsym $mod+m exec i3-input -F 'mark %s' -l 1 -P 'Mark: '
# read 1 character and go to the window with the character
bindsym $mod+g exec i3-input -F '[con_mark="%s"] focus' -l 1 -P 'Goto: '
</code></pre></div></div>
<p>With this, when I type mod+m the i3-input tool will open a one line
terminal to accept input, and I can mark the focused window with a
one character mark. Then, I can send that window to the scratchpad
with all the other windows that are already there. Later I can just
type mod+g and then input the one character mark I assigned, and
boom, the marked window is retrieved from the scratchpad. I didn’t
have to type mod+minus, 8 times to cycle through the scratchpad
windows until I found it.</p>
<p>That’s just the way I use the scratchpad with marks, and that just
scratches the surface (see what I did there?). You can configure i3
to move containers and windows to a mark, use marks with a window’s
class and title (or named instance like I used in the urxvt example
above) to jump to a specific window, and marks can be be replaced
removed and even toggled.</p>
<p><em>Scratching</em> the itch where x <em>marks</em> the spot is something that
should never be typed in a blog.</p>
<p>-dsyates</p>
<p>
(o\_!_/o)
</p>I’ve been using linux a LONG time, and without a doubt the best and most versatile graphical environment I have ever used is the i3 tiling window manger. Technically I use a fork called i3-gaps, but I will talk about that in another post one day. What makes i3 the best (for me) is that it fits the way I work, is easily customized, and that all the navigation can be done with the keyboard. Two really cool features of i3 are the scratchpad and vim like marks.checkrestart and needrestart2021-01-18T00:00:00-05:002021-01-18T00:00:00-05:00https://lottalinuxlinks.com/checkrestart-needrestart<p>I saw a toot on mastodon today talking about the program
checkrestart. checkrestart, which is part of the debian-goodies
package, can check and see which processes need to be restarted
after an upgrade . So why is this cool, what does it do, and is it
worth installing?</p>
<p>Well, in general linux machines get a lot of updates, but don’t
need to be rebooted very often. When the ratio of updates to
required reboots is high, as it is especially in the case of debian
sid, there are going to be times where services may still use old
libraries after doing a apt upgrade. Running checkrestart as su
will list what processes and services are still using old versions
of new files. It will also list the total number of processes, the
number of distinct programs and packages affected, and if any of
these contain systemd definitions or init scripts that can be used
to restart them.</p>
<p>Looking into checkrestart, and installing and running it, led me to
finding out about a package, that was inspired by checkrestart,
called needrestart. needrestart checks which daemons need to be
restarted after library upgrades. needrestart, in addition to
scanning processes, will scan containers, interpreter based-daemons
(Java, Perl, Python, Ruby), processor microcode upgrades for Intel
CPUs, and the kernel, for cases where outdated libraries are being
run, and even if there are any user sessions where outdated
binaries are being run. The coolest part for me though, is that
needrestart is fully integrated with apt/dpkg and will prompt you
with a which services should be restarted dialog after an apt
upgrade.</p>
<p>Even though I have run debian sid on my daily driver for over 15
years, with a potential for available updates every 6 hours,
without either of these programs installed until today, I would
argue, that both of these are worth installing and using. With a
distro like sid, there are some <a href="https://wiki.debian.org/DebianUnstable#What_are_some_best_practices_for_testing.2Fsid_users.3F">best practices</a>;
and while neither checkrestart or needrestart make this best
practice list (like the must have apt-listbugs, and apt-listchanges
packeges), needrestart (and checkrestart) both provide useful
information (and the choice to act on the provided information)
that can help make your high update to reboot ratio machine more
secure. These are good things to have.</p>
<p>-dsyates</p>
<p>
(o\_!_/o)
</p>I saw a toot on mastodon today talking about the program checkrestart. checkrestart, which is part of the debian-goodies package, can check and see which processes need to be restarted after an upgrade . So why is this cool, what does it do, and is it worth installing?