gopher.lottalinuxlinks.com gopher://gopher.lottalinuxlinks.com/ gopher.lottalinuxlinks.com Description 01 24 Welcome To The Modcast Again.txt gopher://gopher.lottalinuxlinks.com/0/phlog/2025-01-24-welcome-to-the-modcast-again.txt Fri, 24 Jan 2025 20:25:00 -0500 ___________________________________________ title: Welcome to the MODcast (again) tags: MOD streaming retro music geekery SSL icecast letsencrypt jekyll date: 2025-01-24 ___________________________________________ Since updating and reviving my webpage, I noticed that the HTML5 embedded audio player had stop working on my MODcast page, where I serve a continuous playlist of 242,430 MOD files (think chiptune music if you do not know what MOD files are). [MODcast page]: /modcast What was weird about this was that the embedded audio player had been working just fine for 4 years–or so I thought. Sometime in last 48 months the html player on the page stopped working. The reason I had not noticed it had stopped working is that do not listen to the stream from my webpage, but from a terminal, an app on my phone or TV, from my icecast server URL, or in a browser tab directly linked to the icecast stream mountpoint. I guess the even weirder part was that when serving the Jekyll page locally the embedded audio player worked just fine, but stopped working once deployed on my website. I racked my brain over this for almost 2 days, thinking the cause had something to do with my updating Jekyll, or the new dark theme, That did not make sense, but was the first route I went down trying to fix this. I just could not figure out why the browser would open and play the stream from a new tab, but not from the html audio player. After eliminating Jekyll as the cause, I got to looking at icecast. Icecast is the only forward facing service I run without TLS/SSL. Thinking that perhaps browsers had become more secure in the last 48 months (forbidding unencrypted streams in embedded audio players), I decided to enable SSL on my icecast server. The hitch I ran into next was that icecast requires certificates to be bundled in one pem file–instead of separate fullkey and privkey pem files like apache. The solution was amazingly straight forward, and elegant. All I had to do was (as root) cat the contents on the fullkey.pem and privkey.pem files into one new file (e.g. bundle.pem) accessible to icecast; that and update my icecast.xml and .buttrc files, and change ports. Even better, in the /etc/letsencrypt/renewal/ directory I was able to append (prepended by post_hook = ) the cat command combining the two pem files to the conf file, at the end of the renewal parems section. Adding a && systemctl restart icecast2.service at the end of the cat command, ensures that when my letsencrypt certs are renewed, icecast will get renewed too. This solved my problem and now the embedded audio player works. The new https stream URL (now on port 8001) is now: https://lottalinuxlinks.com:8001/stream -dsyates (o_!_/o) ]]> 01 24 Qutebrowser Is Pretty Dang Awesome.txt gopher://gopher.lottalinuxlinks.com/0/phlog/2025-01-24-qutebrowser-is-pretty-dang-awesome.txt Fri, 24 Jan 2025 20:25:00 -0500 ___________________________________________ title: qutebrowser is pretty dang awesome tags: qutebrowser linux firefox links lynx w3m bitwarden pi-hole joplin date: 2025-01-24 ___________________________________________ I have used a lot of web browsers. My journey down the Information Super Highway actually started before there were paved roads i.e. before the WWW existed. My first use of the internet was mainly using tools like gopher, archie, veronica, ftp, email, and usenet. The first web browsers I can remember using were Cello and Mosaic, but I may have used an older text mode web browser on a BBS prior to that. I have been using linux for going on 31 (DANG, that’s over half my life) years now, and feel like the GUI web browsers I’ve spent the most time in are Netscape and Firefox. In the terminal, it’s been links, lynx, and w3m. I’ve happily used Firefox for the last I-don’t-know-how-many-years, with the extensions ublock origin, Joplin web clipper, Vimium (for Vim-style keybindings), and Bitwarden. The reasons I decided to try something else boil down mainly to needing something keyboard-focused (Vim-like keybindings), minimal GUI (less clunky), and light weight. Firefox with Vimium meets the Vim-like keybindings, but with my tendency to have a lot of tabs open, I was having to run a couple of extra extensions (OneTab and Auto Tab Discard) just to manage the amount of memory Firefox was consuming. As for the something-less-clunky requirement, Firefox even with the menu and bookmark toolbars disabled still uses more screen real estate than I would like. My search for a new alternative led me to the only browser that checked all the boxes, qutebrowser. From Wikipedia: qutebrowser is a free, open-source web browser that is keyboard-focused and minimal in design. Written in Python and using PyQt, qutebrowser aims to offer a lightweight browser that can be primarily operated with keyboard commands inspired by Vim-style keybindings. So two months ago, I decided to stop using Firefox, and for at least a week, do all my web browsing using qutebrowser; I figured I needed a week to fully acclimate myself to the keybindings. Qutebrowser, while new to me, is not new; it’s just recently turned 11 years old. The development team is very small, but what they’ve created is an extraordinary, useful, and hackable browser. There’s is NO way I will be able detail it’s many feature in this post, so a short synopsis of what makes qutebrowser awesome will have to do. Qutebrowser is WAY better at the Vim-like keybindings than Vimium. There are so many keyboard short cuts, and they are sane as well. There’s a cheat sheet online for default bindings, as well as a html page listing them accessible at the address qute://bindings. You can edit, add, and disable keybindings too. Basic keybindings to get you started (from qute://help): - Use the arrow keys or hjkl to move around a webpage (Vim-like syntax is used in quite a few places) - To zoom in or out of a webpage, use the + or - keys respectively - To go to a new webpage, press o, then type a url, then press Enter (Use O to open the url in a new tab, go to edit the current URL) - If what you’ve typed isn’t a url, then a search engine will be used instead (DuckDuckGo, by default) - To switch between tabs, use J (next tab) and K (previous tab), or press , where num is the position of the tab to switch to - To close the current tab, press d (and press u to undo closing a tab) - Use H and L to go back and forth in the history - To click on something without using the mouse, press f to show the hints, then type the keys next to what you want to click on (if that sounds weird, then just try pressing f and see what happens) - Press : to show the commandline - To search in a page, press /, type the phrase to search for, then press Enter. Use n and N to go back and forth through the matches, and press Esc to stop doing the search. - To close qutebrowser, press Alt-F4, or :q, :wq, (or :ZZ) to save the currently open tabs and quit (note that in the settings you can make qutebrowser always save the currently open tabs) Hints are another absolutely awesome thing about qutebrowser. Just hit the f key to list a hint for every clickable link the current page, then type the hint and you’ve clicked it without even using the mouse. Hit ; to enter hint mode and you’ll be greeted with a list of bindings with description for actions that can be taken in hint mode. [qutebrowser-hints] [qutebrowser-hints]: /assets/images/qutebrowser-hints.png Type : to enter command mode and you’ll be greeted with a fzf interface that list every command. From here you can set do a LOT. Set bindings, update the ad-blocker, configure qutebrowser, and more. [qutebrowser-command-fzf] [qutebrowser-command-fzf]: /assets/images/qutebrowser-command-fzf.png If you have not caught on yet, qutebrowser is modal. Modes include: Normal, Caret, Command, Hint, Insert, Passthrough, Prompt, Register, and Yesno. One of the things that drew me to Qutebrowser was it’s minimal UI. To say it doesn’t get in the way is an understatement. Other than the webpage itself, all you have is a minimal tab row, and a status bar, both of which can be disabled or toggled on and off. I really like how minimal the UI is, and find that because of it, qutebrowser is an excellent replacement for a TUI browser in one-off scripts and for use in TUI programs like newsboat, neomutt, and tuir. [qutebrowser-hide-tabs] [qutebrowser-hide-tabs]: /assets/images/qutebrowser-hide-tabs.png Qutebrowser has excellent documentation! All settings, commands, and shortcuts are described and or documented online, in the fzf finder pop-up interface, html pages accessible from the qute:// addresses, and from the built-in documentation accessible via the :help command. All commands can be started with the –help flag as well. You can configure qutebrowser in command mode, at the prompt, or from the address qute://settings [qutebrowser-settings] [qutebrowser-settings]: /assets/images/qutebrowser-settings.png Qutebrowser has built in ad-blocking, although not as effective as ublock origin. However, it is adequate, and coupled with my Raspberry Pi blocking ads network-wide with Pi-hole, my ad-blocking experience is equal to, or better than with Firefox and ublock origin. Bookmark (and quickmark) management is another thing qutebrowser got right. I was able to import my bookmarks, and searching through them using the built-in fzf make for a superior experience. I will not go into the differences between bookmarks and quickmarks, but will say that I have kept all my eggs in the quickmark basket so far. Qutebrowser has excellent fzf-integration, and truly feels built-in. It is very useful, intuitive, and takes the whole keyboard-focused thing to a whole new level. Qutebrowser is light weight(-ish). Lacking any sort of concrete data, and based solely on my experience so far, qutebrowser is lighter weight than Firefox. I do find memory usage creeping up slowly over long periods of time (weeks) if a lot of tabs have been opened and closed. Restarting qutebrowser solves this. I have also noticed an improvement with the latest release (3.4.0) in this regard. Really, the only thing that qutebrowser lacks for me is extension support; you cannot install any extensions (yet). This has not been an issue for me though. I do not need ublock-origin since the built-in ad-blocking (coupled with my pi-hole) are doing the job. Also I have not missed the Bitwarden extension, as I have found a more than adequate (and less clunky) replacement with a rofi/fzf script (rbw). The only extension I used in Firefox that I miss using in qutebrowser is the Joplin web clipper; but with the user script capabilities of qutebrowser, I can envision different ways to regain that functionality. I can highly recommend qutebrowser if you are looking for a minimal, lightweight, keyboard-focused, hackable web browser. Whether you are familiar with Vim-like keybindings or not, give it a try, explore the online help system, and you will be rewarded with what I think is a superior browsing experience. Once you have spent some time in qutebrowser, it is very hard to use another browser! Initially, this experiment was to last a week, but I am on week 10 now, and I do not see myself switching back. -dsyates (o_!_/o) ]]> 01 19 Update.txt gopher://gopher.lottalinuxlinks.com/0/phlog/2025-01-19-update.txt Fri, 24 Jan 2025 20:25:00 -0500 ___________________________________________ title: Update tags: jekyll arch debian linux i3 3d-printing TLLTS ramblings date: 2025-01-19 ___________________________________________ It’s been a while…actually, almost 40 months since my last post. In fact, it’s been so long I thought I should update Jekyll before posting this. It will be interesting to see if this thing still works. While a lot has changed since my last post, some things have not: I still use i3; still use X-org; still start my window manager with startx; and still run debian stable on everything but my daily driver laptop, which I moved from debian sid to arch 1332 days ago. But some things have changed: I’ve retired; become a grandfather; have started 3d-printing; added a computer and a couple of raspberry pi to my already large list of home server machines; started using some docker containers; and have rejoined The Linux Link Tech Show. [The Linux Link Tech Show]: https://tllts.org I hope to start posting here more often too. -dsyates (o_!_/o) ]]> 10 13 Sid To Arch.txt gopher://gopher.lottalinuxlinks.com/0/phlog/2021-10-13-sid-to-arch.txt Fri, 24 Jan 2025 20:21:00 -0500 ___________________________________________ title: Sid to Arch tags: arch aur debian sid linux pkgbuild date: 2021-10-13 ___________________________________________ 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? 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. 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. 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. 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. 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. 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. Overall I am very happy replacing debian sid with arch, and I don’t regret anything about it. YMMV -dsyates (o_!_/o) ]]> 10 13 2140_SID_TO_ARCH.txt gopher://gopher.lottalinuxlinks.com/0/phlog/2021-10-13-2140_SID_TO_ARCH.txt Fri, 24 Jan 2025 20:21:00 -0500 =================================================================== DATE : 2021.10.13 TIME : 21:40 AUTHOR : dsyates@lottalinuxlinks.com TITLE : SID TO ARCH =================================================================== 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? 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. 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. 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. 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. 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. 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. Overall I am very happy replacing debian sid with arch, and I don't regret anything about it. YMMV -dsyates (o\_!_/o) ]]> 03 13 Pen And Paper.txt gopher://gopher.lottalinuxlinks.com/0/phlog/2021-03-13-pen-and-paper.txt Fri, 24 Jan 2025 20:21:00 -0500 ___________________________________________ title: Pen and Paper tags: vim joplin syncthing git nextcloud notebook pen date: 2021-03-13 ___________________________________________ 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. 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. 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. 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. 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. 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. It may seem trivial, or an insignificant geeky thing, but my pen and paper pocket notebook make me happy. -dsyates (o_!_/o) ]]> 03 13 1155_PEN_AND_PAPER.txt gopher://gopher.lottalinuxlinks.com/0/phlog/2021-03-13-1155_PEN_AND_PAPER.txt Fri, 24 Jan 2025 20:21:00 -0500 =================================================================== DATE : 2021.03.13 TIME : 11:55 AUTHOR : dsyates@lottalinuxlinks.com TITLE : PEN AND PAPER =================================================================== 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. 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. 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. 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. 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. 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. It may seem trivial, or an insignificant geeky thing, but my pen and paper pocket notebook make me happy. -dsyates (o\_!_/o) ]]> 02 13 Adding A Repurposed Caps Lock As A Third Mod Key In I3.txt gopher://gopher.lottalinuxlinks.com/0/phlog/2021-02-13-adding-a-repurposed-caps-lock-as-a-third-mod-key-in-i3.txt Fri, 24 Jan 2025 20:21:00 -0500 ___________________________________________ title: Adding a repurposed caps lock as a third mod key in i3 tags: i3 i3-gaps debian linux FOSS setxkbmap xmodmap xev date: 2021-02-13 ___________________________________________ 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. 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. Here is the relevant excerpt from my i3 config file, from when I was using just two mod keys: set $mod Mod4 set $mod1 Mod1 And here is the xmodmap -pm command output (before repurposing the Caps Lock Key) showing the default assignments for mod1 through mod5: 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) As you can see in the above output, mod3 is empty and mod4, in addition to the Super key, also includes the Hyper key. The first thing I did was run the following setxkbmap command to change the Caps Lock key to the Hyper key: setxkbmap -option caps:hyper 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: clear mod4 keycode 66 = Hyper_L NoSymbol Hyper_L add mod3 = Hyper_L add mod4 = Super_L Super_R Note: the keycode for the Caps Lock key can be obtained using the xev command like this: xev -event keyboard 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: xmodmap ~/.Xmodmap After running that above command, re-running the xmodmap -pm command outputs the following: 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) As you can see mod4 now only includes Super, and mod3 is no longer empty, but contains Hyper. Next (since I don’t run a display manager) I added the following to my ~/.xinitrc: [[ -f ~/.Xmodmap ]] && xmodmap ~/.Xmodmap This will source my custom ~/.Xmodmap file when I run startx. And the last thing I did was add the following to my i3 config file: set $mod3 Mod3 exec --no-startup-id setxkbmap -option caps:hyper 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. 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. 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. Here is the excerpt from my i3 config with 30 workspaces: # 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 -dsyates (o_!_/o) ]]> 02 13 0135 ADDING_A_REPURPOSED_CAPS_LOCK_AS_A_THIRD_MOD_KEY_IN_I3.txt gopher://gopher.lottalinuxlinks.com/0/phlog/2021-02-13-0135-ADDING_A_REPURPOSED_CAPS_LOCK_AS_A_THIRD_MOD_KEY_IN_I3.txt Fri, 24 Jan 2025 20:21:00 -0500 ================================================================== DATE : 2021.02.13 TIME : 01:35 AUTHOR : dsyates@lottalinuxlinks.com TITLE : ADDING A REPURPOSED CAPS LOCK AS A THIRD MOD KEY IN I3 =================================================================== 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. 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. Here is the relevant excerpt from my i3 config file, from when I was using just two mod keys: set $mod Mod4 set $mod1 Mod1 And here is the xmodmap -pm command output (before repurposing the Caps Lock Key) showing the default assignments for mod1 through mod5: 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) As you can see in the above output, mod3 is empty and mod4, in addition to the Super key, also includes the Hyper key. The first thing I did was run the following setxkbmap command to change the Caps Lock key to the Hyper key: setxkbmap -option caps:hyper 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: clear mod4 keycode 66 = Hyper_L NoSymbol Hyper_L add mod3 = Hyper_L add mod4 = Super_L Super_R Note: the keycode for the Caps Lock key can be obtained using the xev command like this: xev -event keyboard 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: xmodmap ~/.Xmodmap After running that above command, re-running the xmodmap -pm command outputs the following: 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) As you can see mod4 now only includes Super, and mod3 is no longer empty, but contains Hyper. Next (since I don’t run a display manager) I added the following to my ~/.xinitrc: [[ -f ~/.Xmodmap ]] && xmodmap ~/.Xmodmap This will source my custom ~/.Xmodmap file when I run startx. And the last thing I did was add the following to my i3 config file: set $mod3 Mod3 exec --no-startup-id setxkbmap -option caps:hyper 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. 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. 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. Here is the excerpt from my i3 config with 30 workspaces: # 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 -dsyates (o_!_/o) ]]> 02 07 My Gemini Capsule Has Launched.txt gopher://gopher.lottalinuxlinks.com/0/phlog/2021-02-07-my-gemini-capsule-has-launched.txt Fri, 24 Jan 2025 20:21:00 -0500 ___________________________________________ title: My gemini capsule has launched. tags: gemini gopher FOSS date: 2021-02-07 ___________________________________________ And we have liftoff! I have a gemini capsule now. If you already have a gemini client enter in the following address: gemini://gemini.lottalinuxlinks.com 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 @Samsai, has a really good post about what makes gemini intriguing. [@Samsai]: https://mastodon.social/@Samsai [post]: https://samsai.eu/post/introduction-to-gemini/ Much like gopher, except way more modern, you will need a gemini client to view gemini content. Here is a list of clients, proxies, and servers that can be used with gemini. [list]: https://github.com/kr1sp1n/awesome-gemini If you don’t have a gemini client yet, you can use the gemini portal to access gemini capsules with a web browser. [gemini portal]: https://portal.mozz.us/gemini/gemini.circumlunar.space/ There isn’t a lot of information on the web about it, but Project Gemini, and of course wikipedia, have a little more information if you are interested in learning more. [Project Gemini]: https://gemini.circumlunar.space/ [wikipedia]: https://en.wikipedia.org/wiki/Gemini_(protocol) Special thanks to @ecliptik and his _scripts repository. [@ecliptik]: https://fosstodon.org/@ecliptik [_scripts repository]: https://github.com/ecliptik/ecliptik.github.io/tree/master/_scripts -dsyates (o_!_/o) ]]>