aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2025-07-09 22:10:02 +0200
committerLoek Le Blansch <loek@pipeframe.xyz>2025-07-09 22:10:02 +0200
commit419882a889df4198f1af811381f1958e23211ceb (patch)
treeeb611322296b785d74628234fb64eff93fda9ed2
parentddb547694fbc649933328effd1ae08dab5eb1eea (diff)
added i18n + wip software postHEADmaster
-rw-r--r--_config.yml2
-rw-r--r--_data/i18n.yml29
-rw-r--r--_includes/footer.html28
-rw-r--r--_includes/i18n/footer.ja.html16
-rw-r--r--_includes/i18n/footer.nl.html16
-rw-r--r--_includes/i18n/outdated.ja.html2
-rw-r--r--_includes/i18n/outdated.nl.html3
-rw-r--r--_includes/links.md81
-rw-r--r--_includes/outdated.html6
-rw-r--r--_includes/search.html5
-rw-r--r--_items/avanswifi.md24
-rw-r--r--_items/software.md408
-rw-r--r--_layouts/default.html34
-rw-r--r--_plugins/i18n.rb26
-rw-r--r--_sass/color.scss2
-rw-r--r--_sass/theme.scss2
-rw-r--r--_sass/typography.scss13
-rw-r--r--ja.md18
-rw-r--r--nl.md20
-rw-r--r--readme.md5
-rw-r--r--tags.html13
21 files changed, 494 insertions, 259 deletions
diff --git a/_config.yml b/_config.yml
index 99573cc..64fd89e 100644
--- a/_config.yml
+++ b/_config.yml
@@ -10,7 +10,7 @@ collections:
output: true
defaults:
- scope:
- type: items
+ path: ""
values:
layout: default
lang: en
diff --git a/_data/i18n.yml b/_data/i18n.yml
new file mode 100644
index 0000000..370d9bc
--- /dev/null
+++ b/_data/i18n.yml
@@ -0,0 +1,29 @@
+# header
+home:
+ en: home
+ ja: ホーム
+posts:
+ en: posts
+ ja: 記事
+tags:
+ en: tags
+ ja: タグ
+top:
+ en: top
+ nl: kop
+ ja: 先頭
+bottom:
+ en: bottom
+ nl: staart
+ ja: 末尾
+
+# posts/search page
+search:
+ en: search
+ nl: zoekterm
+ ja: キーワード
+go:
+ en: go
+ nl: zoeken
+ ja: 検索
+
diff --git a/_includes/footer.html b/_includes/footer.html
new file mode 100644
index 0000000..a05e70a
--- /dev/null
+++ b/_includes/footer.html
@@ -0,0 +1,28 @@
+<footer id="footer" class="plainlink">
+ <div class="limitwidth">
+ <div class="autocolumn">
+ {% if page.lang == "ja" %}
+ {% include i18n/footer.ja.html %}
+ {% elsif page.lang == "nl" %}
+ {% include i18n/footer.nl.html %}
+ {% else %}
+ <div class="column">
+ <span class="title">post info</span>
+ <ul>
+ <li>written by {{ page.authors | map: 'nick' | sentence_join: 'nobody?' }}</li>
+ <li>initially published on {{ page.meta.date_initial | datefmt }}</li>
+ <li>edited {{ page.meta.edits | plural: 'time' }}</li>
+ <li>last revised on {{ page.meta.date | datefmt }}</li>
+ </ul>
+ </div>
+ <div class="column">
+ <a href="/" class="title">{{ site.domain }}</a>
+ <ul>
+ <li>version <code>{{ site.data.meta.slug }}</code> (<a href="https://git.pipeframe.xyz/lonkaars/blog">git</a>)</li>
+ <li>built {{ site.data.meta.build_date | datefmt }}</li>
+ </ul>
+ </div>
+ {% endif %}
+ </div>
+ </div>
+</footer>
diff --git a/_includes/i18n/footer.ja.html b/_includes/i18n/footer.ja.html
new file mode 100644
index 0000000..8ec1a9b
--- /dev/null
+++ b/_includes/i18n/footer.ja.html
@@ -0,0 +1,16 @@
+<div class="column">
+ <span class="title">記事メタデータ</span>
+ <ul>
+ <li>{{ page.authors | map: 'nick' | sentence_join: 'nobody?' }}が書いた</li>
+ <li>最初{{ page.meta.date_initial | datefmt }}に投稿された</li>
+ <li>{{ page.meta.edits }}回変更された</li>
+ <li>最後{{ page.meta.date | datefmt }}にアップした</li>
+ </ul>
+</div>
+<div class="column">
+ <a href="/" class="title">{{ site.domain }}</a>
+ <ul>
+ <li>バージョン<code>{{ site.data.meta.slug }}</code> (<a href="https://git.pipeframe.xyz/lonkaars/blog">git</a>)</li>
+ <li>{{ site.data.meta.build_date | datefmt }}でビルドされた</li>
+ </ul>
+</div>
diff --git a/_includes/i18n/footer.nl.html b/_includes/i18n/footer.nl.html
new file mode 100644
index 0000000..1d7ae8a
--- /dev/null
+++ b/_includes/i18n/footer.nl.html
@@ -0,0 +1,16 @@
+<div class="column">
+ <span class="title">post info</span>
+ <ul>
+ <li>geschreven door {{ page.authors | map: 'nick' | sentence_join: 'niemand?' }}</li>
+ <li>voor het eerst op {{ page.meta.date_initial | datefmt }} gepubliceerd</li>
+ <li>{{ page.meta.edits }} keer bewerkt</li>
+ <li>laatste (huidige) versie {{ page.meta.date | datefmt }}</li>
+ </ul>
+</div>
+<div class="column">
+ <a href="/" class="title">{{ site.domain }}</a>
+ <ul>
+ <li>versie <code>{{ site.data.meta.slug }}</code> (<a href="https://git.pipeframe.xyz/lonkaars/blog">git</a>)</li>
+ <li>op {{ site.data.meta.build_date | datefmt }} voor het laatst gebouwd</li>
+ </ul>
+</div>
diff --git a/_includes/i18n/outdated.ja.html b/_includes/i18n/outdated.ja.html
new file mode 100644
index 0000000..9f987e8
--- /dev/null
+++ b/_includes/i18n/outdated.ja.html
@@ -0,0 +1,2 @@
+<p class="title">注意</p>
+<p>この記事は{{ include.date | datefmt }}以降更新されていないため、情報が正確でない可能性があります。ご了承いただきありがとうございます。</p>
diff --git a/_includes/i18n/outdated.nl.html b/_includes/i18n/outdated.nl.html
new file mode 100644
index 0000000..aa056b8
--- /dev/null
+++ b/_includes/i18n/outdated.nl.html
@@ -0,0 +1,3 @@
+<p class="title">Pas op</p>
+<p>Deze post is voor het laatst op {{ include.date | datefmt }} geupdatet, en kan daardoor
+mogelijk incorrecte of niet langer actuele informatie bevatten.</p>
diff --git a/_includes/links.md b/_includes/links.md
new file mode 100644
index 0000000..f27e10e
--- /dev/null
+++ b/_includes/links.md
@@ -0,0 +1,81 @@
+[AdAway]: https://adaway.org
+[Aurora Droid]: https://gitlab.com/AuroraOSS/auroradroid
+[Aurora Store]: https://gitlab.com/AuroraOSS/AuroraStore
+[BetterDiscord]: https://github.com/rauenzi/BetterDiscordApp
+[Bitwarden]: https://bitwarden.com
+[Brave]: https://brave.com
+[Bromite]: https://www.bromite.org
+[CalyxOS]: https://calyxos.org
+[Code OSS]: https://appimage.github.io/Code_OSS
+[Dark Reader]: https://darkreader.org
+[Dovecot]: https://www.dovecot.org
+[Droid-ify]: https://droidify.eu.org
+[EteSync]: https://www.etesync.com
+[Figma]: https://figma.com
+[Firefox]: https://www.mozilla.org/firefox
+[Jellyfin]: https://jellyfin.org
+[K-9 Mail]: https://k9mail.app
+[LaTeX]: https://www.latex-project.org
+[Leaflet]: https://github.com/PotatoProject/Leaflet
+[LineageOS]: https://lineageos.org
+[Magisk]: https://github.com/topjohnwu/Magisk
+[Material Files]: https://github.com/zhanghai/MaterialFiles
+[MoeList]: https://github.com/axiel7/MoeList
+[NeoMutt]: https://neomutt.org
+[Neovim]: https://neovim.io
+[OpenDKIM]: http://www.opendkim.org
+[OsmAnd]: https://osmand.net
+[Persephone]: https://persephone.fm
+[Polybar]: https://github.com/polybar/polybar
+[Postfix]: http://www.postfix.org
+[Radicale]: https://radicale.org/v3.html
+[Shuttle]: https://www.shuttlemusicplayer.com
+[Signal]: https://signal.org
+[SpamAssassin]: https://spamassassin.apache.org
+[Stylus]: https://github.com/openstyles/stylus
+[Sync for Reddit]: https://play.google.com/store/apps/details?id=com.laurencedawson.reddit_sync
+[Syncthing]: https://syncthing.net
+[Tachiyomi]: https://tachiyomi.org
+[Tampermonkey]: https://www.tampermonkey.net
+[Tasks.org]: https://tasks.org
+[Thunderbird]: https://www.thunderbird.net
+[Transmission]: https://transmissionbt.com
+[Violentmonkey]: https://violentmonkey.github.io
+[XeTeX]: http://xetex.sourceforge.net
+[Yomitan]: https://github.com/yomidevs/yomitan
+[andOTP]: https://github.com/andOTP/andOTP
+[cgit]: https://git.zx2c4.com/cgit/about
+[cgit]: https://git.zx2c4.com/cgit/about
+[dotfiles]: https://git.pipeframe.xyz/lonkaars/dots
+[dunst]: https://dunst-project.org
+[dwm]: https://dwm.suckless.org
+[emailwiz]: https://github.com/LukeSmithxyz/emailwiz
+[etar]: https://github.com/Etar-Group/Etar-Calendar
+[fzf]: https://github.com/junegunn/fzf
+[fzmp]: https://github.com/DanielFGray/fzf-scripts/blob/master/fzmp
+[gitolite]: https://gitolite.com/gitolite
+[gitolite]: https://gitolite.com/gitolite/index.html
+[hass]: https://www.home-assistant.io
+[i3-gaps]: https://github.com/Airblader/i3
+[i3]: https://i3wm.org
+[imapnotify]: https://gitlab.com/shackra/goimapnotify
+[latexmk]: https://www.cantab.net/users/johncollins/latexmk/index.html
+[lf]: https://github.com/gokcehan/lf
+[mbsync]: http://isync.sf.net
+[mpd]: https://www.musicpd.org
+[ncmpcpp]: https://github.com/ncmpcpp/ncmpcpp
+[nginx]: https://nginx.org
+[oh-my-zsh]: https://ohmyz.sh
+[pass]: https://www.passwordstore.org
+[picom]: https://github.com/yshui/picom
+[ranger]: https://github.com/ranger/ranger
+[rofi]: https://github.com/davatorium/rofi
+[st-upstream]: https://st.suckless.org
+[st]: https://git.pipeframe.xyz/fork/st
+[substratum]: https://github.com/substratum/substratum
+[sxiv]: https://github.com/xyb3rt/sxiv
+[uBlock Origin]: https://ublockorigin.com
+[unar]: https://github.com/MacPaw/XADMaster
+[xbindkeys]: https://www.nongnu.org/xbindkeys/xbindkeys.html
+[zathura]: https://pwmt.org/projects/zathura
+[zsh]: https://www.zsh.org
diff --git a/_includes/outdated.html b/_includes/outdated.html
index a1c5489..954ad14 100644
--- a/_includes/outdated.html
+++ b/_includes/outdated.html
@@ -1,5 +1,11 @@
<blockquote class="admonition warning" hidden x-unhide-after="{{ include.date | date: "%s" | plus: site.stale_threshold }}">
+ {% if page.lang == "ja" %}
+ {% include i18n/outdated.ja.html %}
+ {% elsif page.lang == "nl" %}
+ {% include i18n/outdated.nl.html %}
+ {% else %}
<p class="title">Warning</p>
<p>This post was last updated on {{ include.date | datefmt }}, and may no
longer contain accurate or up-to-date information.</p>
+ {% endif %}
</blockquote>
diff --git a/_includes/search.html b/_includes/search.html
index cc8cd56..ae48353 100644
--- a/_includes/search.html
+++ b/_includes/search.html
@@ -1,6 +1,5 @@
<form id="search" method="get" action="https://google.com/search">
- <input type="text" placeholder="search" name="q" spellcheck="false" autocomplete="off">
+ <input type="text" placeholder="{% i18n search %}" name="q" spellcheck="false" autocomplete="off">
<input type="hidden" name="q" value="site:{{ site.domain }}">
- <input type="submit">
+ <input type="submit" value="{% i18n go %}">
</form>
-
diff --git a/_items/avanswifi.md b/_items/avanswifi.md
index 7576f65..26d6e3b 100644
--- a/_items/avanswifi.md
+++ b/_items/avanswifi.md
@@ -3,13 +3,16 @@ title: Avans eduroam wifi setup
tags: software phone
---
-I wasted 2 hours trying to set up my school's WiFi on my laptop, so here's a
-quick reference for other students who might've tried connecting but ended up
-giving up.
+I wasted 2 hours trying to set up my school's WiFi on my laptop, so here's a quick reference
+for other students who might've tried connecting but ended up giving up.
-Keep in mind that your username isn't your student e-mail, but the first letter
-of your first name, and 7 characters from your last name (not including a
-middle name if you have one), i.e. `Loek Le Blansch -> lblansch`.
+{:.admonition.info}
+> {:.title}
+> Note
+>
+> Keep in mind that your username isn't your student email, but the first letter of your first
+> name, and 7 characters from your last name (not including a middle name if you have one),
+> i.e. `Loek Le Blansch -> lblansch`.
# Linux with NetworkManager
@@ -29,9 +32,8 @@ nmcli> activate
# Android
-You can connect to eduroam without installing any additional apps by manually
-adding a network in the Android WiFi settings using the following connection
-settings:
+You can connect to eduroam without installing any additional apps by manually adding a network
+in the Android WiFi settings using the following connection settings:
|field|value|
|-|-|
@@ -43,9 +45,9 @@ settings:
|**Minimum TLS version**|TLS v1.0|
|**Online Certificate Status**|Do not verify|
|**Domain**|`wifi.avans.nl`|
-|**Identity**|\<username\>|
+|**Identity**|*\<username\>*|
|**Anonymous identity**|anonymous|
-|**Password**|\<password\>|
+|**Password**|*\<password\>*|
diff --git a/_items/software.md b/_items/software.md
index 6aa1efc..4babc13 100644
--- a/_items/software.md
+++ b/_items/software.md
@@ -3,270 +3,248 @@ title: software that I use
tags: [software, open source, server, phone]
---
-## PC software
-
-All of the software on this page is cool and I think you should try it. I also
-use all of this software, and will update this page when I find new, *even
-cooler* software to use instead. Most if not all of my configuration files
-(dotfiles) are on my [github](https://github.com/lonkaars/dotfiles). You can
-clone these and edit them to fit your needs, or you can use them as a reference
-for when you can't figure out how to configure something.
-
-### Regular software
-
-- **Email client**: [neomutt](https://neomutt.org/). It's fast and simple,
- though configuring it was a pain in the ass. I'm currently using it in
- combination with mbsync and imapnotify to get notifications for new emails,
- and sync my mailbox for fast email viewing.
-
-- **Music player**: [mpd](https://www.musicpd.org/) with
- [ncmpcpp](https://github.com/ncmpcpp/ncmpcpp). This is the best music setup
- I've ever used. I download all my music in .flac format and mpd *just works*.
- Since mpd has a server-client structure, I could also use this to set up
- multiple devices that can add music to a central queue at a party or
- something, but I just use it to launch [an fzf mpc
- wrapper](https://github.com/DanielFGray/fzf-scripts/blob/master/fzmp) to
- quickly add music while I'm doing something else.
-
-- **Text editor**: [nvim](https://neovim.io/). It's vim. If you don't like vim,
- you should try using it longer. If you still don't like vim, you can use
- [code oss](https://appimage.github.io/Code_OSS/) which is visual studio code
- but without Microsoft's creepy telemetry features.
-
-- **PDF viewer**: [zathura](https://pwmt.org/projects/zathura/). It's a pdf
- viewer with vim bindings, and it works with my TeX editing setup's live
- reload thingy.
-
-- **Image viewer**: [sxiv](https://github.com/muennich/sxiv). It's like zathura
- but for images, but it also does a bunch of other stuff that I don't use very
+This page contains a list of open source software that I have used and have strong opinions
+about. I'll try to keep this page up-to-date when I find new, *even cooler* software to use
+instead.
+
+# Linux (Desktop)
+
+{:.admonition.info}
+> {:.title}
+> Note
+>
+> Most of the software listed here is configured using configuration files (dotfiles). Mine can
+> be found [here][dotfiles].
+
+## Regular software
+
+- **Email client**: [NeoMutt] or [Thunderbird]
+
+ I generally use NeoMutt to check my inbox and read short messages. It's fast and simple,
+ though configuring it was a pain in the ass. I'm currently using it in combination with
+ [mbsync] and [imapnotify] to get notifications for new emails and sync my mailbox for fast
+ (offline) email viewing.
+
+ NeoMutt's default keybinds are weird, and it's unresponsive while an error message is
+ visible? Whenever I need to search through archived messages or actually send mail I tend to
+ use Thunderbird instead.
+
+- **Music player**: [mpd] with [ncmpcpp]
+
+ Hands-down the best music player I've ever used. I collect music in `.flac` format and mpd
+ *just works*. The only thing that sucks about mpd is the lack of graphical client
+ applications that don't look bad. The only graphical client I know of that doesn't suck is
+ [Persephone], which sadly only runs on MacOS.
+
+- **Text editor**: [Neovim]
+
+ It's vim. If you don't like vim, you should try using it longer. If you still don't like vim,
+ I would recommend [Code OSS], which is Visual Studio Code but without Microsoft's creepy
+ telemetry features.
+
+- **PDF viewer**: [zathura]
+
+ It's a pdf viewer with vim bindings, and it reloads files automatically when they're updated,
+ which is nice when writing LaTeX documents.
+
+- **Image viewer**: [sxiv]
+
+ It's like zathura but for images. It also does a bunch of other stuff that I don't use very
often.
-- **Browser**: [brave](https://brave.com/). It's a normie-friendly chromium
- fork with extra privacy features! I of course use brave (or any
- chromium-based browser) with [tampermonkey](https://www.tampermonkey.net/),
- [ublock origin](https://ublockorigin.com/),
- [stylus](https://github.com/openstyles/stylus) and [dark
- reader](https://darkreader.org/).
-
-- **Terminal**: [st](https://st.suckless.org/). It's fast and simple, nothing
- to complain about. I have my [own st fork](https://github.com/lonkaars/st),
- with a bunch of patches that make me happy.
-
-- **Password manager**: [bitwarden](https://bitwarden.com/). Open source
- password manager that you can host yourself. It also has public servers which
- are mostly free, but some features like time-based one-time passwords are
- paid. All the clients are also open source.
-
-- **Document typesetting**: [LaTeX](https://www.latex-project.org/) (using
- [latexmk](https://personal.psu.edu/~jcc8/software/latexmk/) with the
- [XeTeX](http://xetex.sourceforge.net/) compiler).
-
-- **File browser**: [ranger](https://github.com/ranger/ranger). It's kind of
- slow, but I use the bulkrename feature very often, and I haven't gotten used
- to the perl `rename` script yet.
-
-- [unar](https://github.com/MacPaw/XADMaster). I like running `unar [archive]`
- instead of using `7z`, `tar`, `unzip`, etc. It creates a new folder to unpack
- to automatically so it does exactly what I need.
-
-### OS stuff
-
-- **Window manager**: [i3-gaps](https://github.com/Airblader/i3). I tried it
- once and didn't switch back so this is a winner I guess. I've also heard good
- things about [dwm](https://dwm.suckless.org/), though I haven't used it
- myself. Most people complain about i3's limited configurability, but I
- haven't ran into something that it doesn't do for me.
-
-- **Application launcher**: [rofi](https://github.com/davatorium/rofi). I've
- been using rofi since I started using linux, and haven't switched to anything
- else because it's *very* configurable, and has a dmenu mode for using it
- instead of dmenu with other scripts. I use it primarily as my application
- launcher, but I also have a hotkey setup to launch `bwmenu` which is a script
- that fills in bitwarden passwords using rofi.
-
-- **Shell**: [zsh](https://www.zsh.org/) with [oh-my-zsh](https://ohmyz.sh/).
- It's zsh, all the cool kids use it already. I do have `/usr/bin/sh` `ln -s`'d
- to `/usr/bin/bash`, but I'd like to change that to `/usr/bin/dash`. Eh, I'll
- get around to it someday.
-
-- **Status Bar**: [polybar](https://github.com/polybar/polybar). Simple bar,
- gets the job done, the configuration files make me go insane though. It took
- me a good half year of ricing to understand the polybar configuration files,
- and I'm still not sure if I do.
-
-- **Notification daemon**: [dunst](https://dunst-project.org/). I used to use
- deadd-notification-center, but that has waaaay too many haskell dependencies
- on arch, so I don't use that anymore.
+- **Browser**: [Brave]
+
+ Yet another chromium fork, but with extra privacy features. I have a half-baked [Firefox]
+ rice, but still don't use it as my main browser due to the horrible trackpad support on X11.
-- **Global keybinds**:
- [xbindkeys](https://www.nongnu.org/xbindkeys/xbindkeys.html). Simple
- configuration, works flawlessly, 10/10.
+- **Terminal**: [st]
-- **Compositor**: [picom](https://github.com/yshui/picom). It's a simple
- compositor. I use it to enable vsync for desktop windows, and I have it set
- up to only show a drop shadow on floating i3 windows.
+ The only fast and simple terminal emulator that does what I want and doesn't get in my way. I
+ forked [the upstream st source][st-upstream] and merged in a bunch of patches that make me
+ happy.
-### Closed source
+- **Password manager**: [pass]
-- [discord](https://discord.com/). Gamer. The only reason this is listed here
- is because I use discord with
- [betterdiscord](https://github.com/rauenzi/BetterDiscordApp) (which *is*
- open-source). Betterdiscord allows you to use custom css themes, custom
- plugins and a whole bunch of other cool stuff that regular discord doesn't
- do. It's technically against TOS, but I don't really care as I only use
- quality of life improvement plugins.
+ TODO
-- [figma](https://figma.com). It's the designing software that I use to create
- user interface or website mockups. It's easily accessible though a browser,
- and it uses webassembly so it's also decently fast. It's free for personal
- use.
+- **Document typesetting**: [LaTeX] with [latexmk] and the [XeTeX] compiler
-## Server software
+ TODO
-This is the software that runs on my home server.
+## Utilities
-### Email
+- [fzmp]
-I used [Luke Smith's](http://lukesmith.xyz/)
-[emailwiz](https://github.com/LukeSmithxyz/emailwiz) to set up my email server.
-The script installs and configures an email setup with
-[postfix](http://www.postfix.org/), [dovecot](https://www.dovecot.org/),
-[spamassassin](https://spamassassin.apache.org/) and
-[opendkim](http://www.opendkim.org/).
+ This is a client for [mpd], which allows you to search your library using [fzf]. I sometimes
+ randomly think of a very specific song in my library, and fzmp allows me to find and queue
+ any song extremely efficiently.
-### Etesync
+- [lf] (terminal file manager)
+- [unar]
-I run my own [etesync](https://www.etesync.com/) server for synchronizing my
-to-do lists, calendar and contacts. It's relatively easy to set up, and has a
-web interface that you can use with your own self-hosted instance.
+ I like running `unar [archive]` instead of using `7z`, `tar`, `unzip`, etc. It creates a new
+ folder to unpack to automatically so it does exactly what I need.
-### Bitwarden
+- [BetterDiscord]
-I also run my own [bitwarden](https://github.com/bitwarden/server) server. It
-uses docker with docker-compose, which are two things that I'm supposed to know
-about, but I don't.
+ BetterDiscord allows you to use custom css themes, custom plugins and a whole bunch of other
+ cool stuff that regular Discord doesn't do. It's technically against TOS, but I don't really
+ care as I only use quality of life improvement plugins.
-I'm working on a connect 4 website myself, and I'm planning on learning to use
-docker with docker-compose to make it easier to run the seperate parts that are
-needed to host the project.
+### Browser extensions
-### Git
+- [Violentmonkey]
+- [uBlock Origin]
+- [Stylus]
+- [Dark Reader]
+- [Yomitan]
-I have a [cgit](https://git.zx2c4.com/cgit/about/) server to host my git
-repositories on <https://git.pipeframe.xyz>, and I use
-[gitolite](https://gitolite.com/gitolite/) for ssh git push access. Cgit is
-very easy to set up, and I like it very much. Gitolite on the other hand is a
-pain in the ass to set up, because the documentation is not that great. If
-you're planning on using gitolite on your own server, set the umask in
-`~/.gitolite.rc` of your server's git account to `0022`.
+## OS stuff
-### SFTP
+- **Window manager**: [i3]
-I have two semi-public sftp accounts set up on my server: `media` and `sftp`.
-`sftp` is for generic file sharing, and `media` is for my media. Both accounts
-have tty login disabled and are chroot-jailed to /var/media and /var/sftp.
+ I tried it once and didn't switch back so this is a winner I guess. I've also heard good
+ things about [dwm], though I haven't used it myself. Most people complain about i3's limited
+ configurability, but I haven't ran into something that it doesn't do for me.
-## Phone apps
+- **Application launcher**: [rofi]
-These are the apps that I use on my phone. I recently upgraded my 2017 Nokia 6
-to a Google Pixel 4a (sunfish). It's a great phone! You can root it or flash
-custom rom's very easily, and it gave me new appreciation for the basic
-features of a smartphone. The Pixel 4a has really good haptics. They're almost
-iPhone level, though I won't be using iPhones any time soon.
+ I've been using rofi since I started using linux, and haven't switched to anything else
+ because it's *very* configurable, and has a dmenu mode for using it instead of dmenu with
+ other scripts. I use it primarily as my application launcher, but I also have a hotkey setup
+ to launch `bwmenu` which is a script that fills in bitwarden passwords using rofi.
-I flashed [CalyxOS](https://calyxos.org/) as soon as it was 5 minutes out of
-the box, but ended up not liking it because of it's nonexistant root support.
-I'm currently using [LineageOS](https://lineageos.org/) 18.1, rooted using
-[magisk](https://github.com/topjohnwu/Magisk).
+- **Shell**: [zsh] with [oh-my-zsh]
-### Open source
+ It's zsh, all the cool kids use it already. I do have `/usr/bin/sh` `ln -s`'d to
+ `/usr/bin/bash`, but I'd like to change that to `/usr/bin/dash`. Eh, I'll get around to it
+ someday.
-- **One-time password generator**: [andotp](https://github.com/andOTP/andOTP)
+- **Status Bar**: [polybar]
-- **App store**: [aurora store](https://gitlab.com/AuroraOSS/AuroraStore). This
- app works better when you're rooted, but it's way better than the google play
- store.
+ Simple bar, gets the job done, the configuration files make me go insane though. It took me a
+ good half year of ricing to understand the polybar configuration files, and I'm still not
+ sure if I do.
-- **App store**: [aurora f-droid](https://gitlab.com/AuroraOSS/auroradroid)
+- **Notification daemon**: [dunst]
-- **Password manager**: [bitwarden](https://github.com/bitwarden/mobile)
+ I used to use `deadd-notification-center`, but that has waaaay too many haskell dependencies
+ on arch, so I don't use that anymore.
-- **Browser**: [bromite](https://www.bromite.org/). This is basically ungoogled
- chromium but for mobile.
+- **Global keybinds**: [xbindkeys]
-- **Calendar**: [etar](https://github.com/Etar-Group/Etar-Calendar)
+ Simple configuration, works flawlessly, 10/10.
-- [etesync](https://github.com/etesync/android)
+- **Compositor**: [picom]
-- **File browser**: [material
- files](https://github.com/zhanghai/MaterialFiles). It looks sexy, it's free,
- it's awesome.
+ It's a simple compositor. I use it to enable vsync for desktop windows, and I have it set up
+ to only show a drop shadow on floating i3 windows.
-- **Email client**: [k-9](https://k9mail.app/).
+- [Figma] (**CLOSED SOURCE**)
-- **Maps**: [osmand](https://osmand.net/).
+ It's the designing software that I use to create user interface or website mockups. It's
+ easily accessible though a browser, and it uses webassembly so it's also decently fast. It's
+ free for personal use.
-- **Music player**: [shuttle](https://www.shuttlemusicplayer.com/). It looks
- sexy, it's free, it's awesome.
+# Linux (Server)
-- **Instant messenger**: [signal](https://signal.org/).
+- **Email server**: [dovecot] and [postfix] with [opendkim] and [spamassassin]
+
+ I used [Luke Smith's emailwiz][emailwiz] to set up my email server and tweaked some settings
+ afterwards.
+- **Contacts/calendar sync**: [Radicale]
+
+ I used to self-host [EteSync] for synchronizing my to-do lists, calendar and contacts, but
+ moved to Radicale because CalDAV is generally supported better. EteSync has some neat
+ built-in journalling features, but is primarily built for privacy. I would still recommend it
+ if you don't have the option to self-host and want your data to remain private, but Radicale
+ is significantly easier to set up and works out-of-the box with all the CalDAV/CardDav
+ clients I tried, while EteSync mostly relies on an EteSync↔DAV adapter for compatibility.
+
+- **File sync**: [Syncthing]
+- **Static HTTP host**: [nginx]
+- **WebDAV**: [nginx]
+- **Git**: [gitolite] and [cgit] ([see full post](/post/git))
+- **Media server**: [Jellyfin]
+- **BitTorrent Client**: [Transmission]
+
+# Android
+
+These are the apps that I use on my phone. I've been daily driving a Google Pixel 4a (sunfish)
+running [LineageOS]. It's honestly a great phone, and the only complaints I have about it are
+software-related (and therefore self-inflicted). Pixel devices can easily be rooted or flashed
+with custom roms.
+
+When I first got this phone I immediately tried flashing [CalyxOS], but I ended up switching to
+LineageOS because CalyxOS doesn't have great root support.
+
+- **One-time password generator**: [andotp]
+
+- **App store**: [aurora]. This app works
+ better when you're rooted, but it's way better than the google play store.
+
+- **App store**: [aurora-fdroid]
+
+- **Password manager**: [Bitwarden]
+
+- **Browser**: [bromite]. This is basically ungoogled chromium but
+ for mobile.
+
+- **Calendar**: [etar]
+
+- [etesync]
+
+- **File browser**: [materialfiles]. It looks sexy,
+ it's free, it's awesome.
+
+- **Email client**: [K-9 mail][k9mail].
+
+- **Maps**: [osmand].
+
+- **Music player**: [shuttle]. It looks sexy, it's free,
+ it's awesome.
-- **Manga reader**: [tachiyomi](https://tachiyomi.org/)
+- **Instant messenger**: [signal].
-- **To-do lists**: [tasks.org](https://tasks.org/). This is easily the best
- to-do app I've ever used, and it integrated very well with etesync.
+- **Manga reader**: [tachiyomi]
- If you're cheap (like me), you can get 'free' pro by downloading this app
- through f-droid instead of the play store. It's still nice to donate.
+- **To-do lists**: [tasks.org]. This is easily the best to-do app I've ever used, and it
+ integrated very well with etesync.
-- **Smart home control**: [home assistant](https://www.home-assistant.io/).
- [the whole spiel](/post/homeauto).
+ If you're cheap (like me), you can get 'free' pro by downloading this app through f-droid
+ instead of the play store. It's still nice to donate.
-- **Notes**: [leaflet](https://github.com/PotatoProject/Leaflet). It's
- basically Google Keep but open source and without Google. It's part of the
- PotatoProject which is a custom Android rom, and there were plans for an open
- source notes sync server that you could host yourself, but I haven't seen
- that pop up yet.
+- **Smart home control**: [home assistant][hass].
- The app is written in Flutter, and did have choppy scrolling animations on my
- old phone. I'm not sure if that was a bug or my old phone just being
- underpowered, but it's something I want to mention anyways.
+- **Weather**: [geometric weather]. It's really good. Good animations, live
+ wallpaper, fast, etc.
-- **Weather**: [geometric
- weather](https://f-droid.org/en/packages/wangdaye.com.geometricweather/).
- It's really good. Good animations, live wallpaper, fast, etc.
+- **Myanimelist client**: [MoeList]. I don't know how I found this app but it's a real gem. If
+ you use MAL you should download this app.
-- **RSS Reader**: [tiny tiny
- rss](https://www.f-droid.org/en/packages/org.fox.tttrss/). This app requires
- that you host your own tiny tiny rss server, but I do and the app works
- great!
+- **PDF reader**: [pdf viewer plus]. This is the only one that's actually
+ decent. Good UI, good UX, pretty fast rendering. 9/10
-- **Myanimelist client**: [moelist](https://github.com/axiel7/MoeList). I don't
- know how I found this app but it's a real gem. If you use MAL you should
- download this app.
+## Requires root
-- **PDF reader**: [pdf viewer
- plus](https://f-droid.org/en/packages/com.gsnathan.pdfviewer/). This is the
- only one that's actually decent. Good UI, good UX, pretty fast rendering.
- 9/10
+- [adaway]
-### Requires root
+ Blocks ads system-wide! It does have a rootless mode, though the app warns you that it's
+ slower and impacts your battery life negatively.
-- **Ad-blocker**: [adaway](https://adaway.org/). It does have a rootless mode,
- though the app warns you that it's slower and impacts your battery life
- negatively.
+# Sucks
-- **Theme engine**: [substratum](https://github.com/substratum/substratum).
- Substratum requires root on android 9+, unless you're on stock samsung (one
- ui). Android 8 and under users can buy
- [andromeda](https://play.google.com/store/apps/details?id=projekt.andromeda).
- Samsung users can buy
- [synergy](https://play.google.com/store/apps/details?id=projekt.samsung.theme.compiler).
- They're both developed by the same people behind substratum, but they're not
- open source.
+This is software that I used before but have moved away from or recommend you stay away from
+too.
-### Closed source
+- [Sync for Reddit] (Android) (**CLOSED SOURCE**)
-- **Reddit client**:
- [sync](https://play.google.com/store/apps/details?id=com.laurencedawson.reddit_sync)
+ Used to work fine on rooted devices with MicroG, but completely broke after the Material You
+ support update. I was able to restore an older version of the app without reinstalling, but
+ completely stopped using Reddit after [the whole 2023 API pricing
+ thing](https://en.wikipedia.org/wiki/2023_Reddit_API_controversy) anyways so never bothered
+ to find a good replacement app.
+- [Bitwarden]
+- [ranger]
+{% include links.md %}
diff --git a/_layouts/default.html b/_layouts/default.html
index 09790ba..9688091 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -12,6 +12,7 @@
<title>{{ site.title }}</title>
{% endif %}
<link rel="stylesheet" href="/style.css">
+ <noscript><style>.dispjs { display:none; }</style></noscript>
<script src="/script.js" defer></script>
</head>
<body>
@@ -22,12 +23,12 @@
</header>
<nav class="plainlink">
<div class="limitwidth">
- <a href="/" class="item {% if page.id == "index" %}active{% endif %}">home</a>
- <a href="/posts/by-date" class="item {% if page.id == "posts" %}active{% endif %}">posts</a>
- <a href="/tags" class="item {% if page.id == "tags" %}active{% endif %}">tags</a>
+ <a href="/" class="item {% if page.id == "index" %}active{% endif %}">{% i18n home %}</a>
+ <a href="/posts/by-date" class="item {% if page.id == "posts" %}active{% endif %}">{% i18n posts %}</a>
+ <a href="/tags" class="item {% if page.id == "tags" %}active{% endif %}">{% i18n tags %}</a>
<span class="right">
- {% if page.toc %}<a href="#" class="item">top</a>{% endif %}
- {% if page.post %}<a href="#footer" class="item">bottom</a>{% endif %}
+ {% if page.toc %}<a href="#" class="item">{% i18n top %}</a>{% endif %}
+ {% if page.post %}<a href="#footer" class="item">{% i18n bottom %}</a>{% endif %}
</span>
</div>
</nav>
@@ -37,28 +38,7 @@
{{ content }}
</article>
{% if page.post %}
- <footer id="footer" class="plainlink">
- <div class="limitwidth">
- <div class="autocolumn">
- <div class="column">
- <span class="title">post info</span>
- <ul>
- <li>last published on {{ page.meta.date | datefmt }}</li>
- <li>written by {{ page.authors | map: 'nick' | sentence_join: 'nobody?' }}</li>
- <li>first published on {{ page.meta.date_initial | datefmt }}</li>
- <li>edited {{ page.meta.edits | plural: 'time' }}</li>
- </ul>
- </div>
- <div class="column">
- <a href="/" class="title">{{ site.domain }}</a>
- <ul>
- <li>version <code>{{ site.data.meta.slug }}</code> (<a href="https://git.pipeframe.xyz/lonkaars/blog">git</a>)</li>
- <li>built {{ site.data.meta.build_date | datefmt }}</li>
- </ul>
- </div>
- </div>
- </div>
- </footer>
+ {% include footer.html %}
{% endif %}
</body>
</html>
diff --git a/_plugins/i18n.rb b/_plugins/i18n.rb
new file mode 100644
index 0000000..1bfb8ce
--- /dev/null
+++ b/_plugins/i18n.rb
@@ -0,0 +1,26 @@
+class I18N < Liquid::Tag
+ def initialize(tag_name, text, tokens)
+ super
+ @key = text.strip()
+ end
+
+ def render(context)
+ # see _data/i18n.yml
+ db = context.registers[:site].data['i18n']
+ lang = context.registers[:page]['lang']
+
+ entry = db[@key]
+ return @key if entry == nil
+
+ # first translation is the preferred translation
+ translation = entry.values[0]
+ # return key as-is if the entry is an empty map
+ return @key if translation == nil
+ # return the correct translation if it is in the entry
+ return entry[lang] if entry.key?(lang)
+ # else, return the first translation
+ return translation
+ end
+end
+
+Liquid::Template.register_tag('i18n', I18N)
diff --git a/_sass/color.scss b/_sass/color.scss
index 9a5caff..3b45c28 100644
--- a/_sass/color.scss
+++ b/_sass/color.scss
@@ -26,7 +26,7 @@
--bg-2: var(--bg-1);
--fg-2: var(--fg-1);
- --code-comment: #808b9bd9;
+ --code-comment: #abbfddde;
--code-keyword: #d25a76;
--code-string: #e4a87e;
--code-number: #fa7d57;
diff --git a/_sass/theme.scss b/_sass/theme.scss
index a844858..b220ceb 100644
--- a/_sass/theme.scss
+++ b/_sass/theme.scss
@@ -117,5 +117,5 @@ input, button {
display: inline-block;
padding: 2px 8px;
}
-input[type=submit], buttom { cursor: pointer; }
+input[type=submit], button { cursor: pointer; }
diff --git a/_sass/typography.scss b/_sass/typography.scss
index 335e433..db82dc9 100644
--- a/_sass/typography.scss
+++ b/_sass/typography.scss
@@ -15,3 +15,16 @@ aside,
header { text-wrap: balance; }
article { text-align: justify; }
+
+h1 { font-size: 2em; }
+
+html[lang^="ja"] {
+ * { font-style: normal !important; }
+ article { text-align: left; }
+ & {
+ line-height: 1.6;
+ font-size: 9pt;
+ hyphens: none;
+ }
+}
+
diff --git a/ja.md b/ja.md
new file mode 100644
index 0000000..c6dc8da
--- /dev/null
+++ b/ja.md
@@ -0,0 +1,18 @@
+---
+title: blog.pipeframe.xyz
+layout: default
+id: index
+lang: ja
+---
+
+俺のブログへようこそ!
+
+気が向いて何か書こうとしたら多分ここに投稿します。開発者あるあるの[バイク小屋の色][bikeshed]に気を使いすぎるので、未完成のプロジェクトや古い記事にご注意ください。
+
+[bikeshed]: https://ja.wikipedia.org/wiki/パーキンソンの凡俗法則
+
+RSS/atom:
+```
+https://{{ site.domain }}/atom.xml
+```
+
diff --git a/nl.md b/nl.md
new file mode 100644
index 0000000..ac4d479
--- /dev/null
+++ b/nl.md
@@ -0,0 +1,20 @@
+---
+title: blog.pipeframe.xyz
+layout: default
+id: index
+lang: nl
+---
+
+Welkom op mijn blog!
+
+Als ik ooit zin heb om iets te schrijven is het redelijk waarschijnlijk dat ik het hier zal
+posten. Zoals gebruikelijk bij programmeurs heb ik moeite met [bikeshedding][bikeshed], dus het
+kan zijn dat er verwijzingen naar verouderde posts of onafgemaakte projecten zijn.
+
+[bikeshed]: https://nl.wikipedia.org/wiki/Trivialiteitswet_van_Parkinson
+
+RSS/atom:
+```
+https://{{ site.domain }}/atom.xml
+```
+
diff --git a/readme.md b/readme.md
index f757713..f9f587d 100644
--- a/readme.md
+++ b/readme.md
@@ -2,3 +2,8 @@
Live at <https://blog.pipeframe.xyz>
+
+## TODO
+
+- generate build manifest with link dump (to check if dead links)
+
diff --git a/tags.html b/tags.html
index 88a04f0..84a24b0 100644
--- a/tags.html
+++ b/tags.html
@@ -6,6 +6,19 @@ toc: false
post: false
---
+<div class="dispjs">
+ <button onclick="toggle_open(this)" type="button">open all</button>
+</div>
+<script defer>
+ function toggle_open(btn) {
+ const open = btn.hasAttribute("open");
+ btn[open ? "removeAttribute" : "setAttribute"]("open", "");
+ for (let el of document.getElementsByTagName("details")) {
+ el[open ? "removeAttribute" : "setAttribute"]("open", "");
+ }
+ btn.innerText = `${open ? "open" : "close"} all`;
+ }
+</script>
<ul>
{% assign tags = site.data.tags %}
{% for tag in tags %}