Linux installation checklist.

Install checklist of my preferred Arch based Linux operating systems Manjaro and EndeavourOS. Need help? Read the phenomenal ArchWiki.

Last updated on 4 June 2023.


  1. Backup what you don’t want to lose on a separate medium. It helps if you have a second PC in case something breaks and renders your current PC temporarily unusable.
  2. Download the OS and create the install medium with Ventoy.
  3. To launch the OS from the USB key: reboot and press F12, or some other F-key during the start up it usually mentions which button to push to change boot device), or DELETE during the startup to pick/edit the drive to boot from.
  4. Install the OS.
  5. Disable fast startup when dual-booting Windows!

Packages.

I have certain set of software I install on every new machine. Here follows a list I copy paste so I don't have to install everything individually each time.

Default:

sudo pacman -Syu --needed geany gnome-disk-utility gparted yakuake btop dnsutils redshift catfish vivaldi vivaldi-ffmpeg-codecs xscreensaver gufw playerctl hunspell hunspell-nl hunspell-en_GB smplayer okular xfce4-systemload-plugin xfce4-sensors-plugin kdeconnect base-devel peek yay hblock qalculate-gtk

Run hblock in commandline to activate it, and run "cat /etc/hosts" to verify.

Optional:

sudo pacman -Syu --needed imwheel element-desktop shotcut libreoffice-still calibre rssguard audacious spotify-launcher npm discord bluez bluez-utils blueberry pulseaudio-bluetooth gst-plugins-good linux-lts texlive-most texstudio sagemath sagemath-doc xsane boinc opencl-nvidia seahorse npm install -g live-server yay autokey-gtk lyx vscodium soulseekqt

To configure.

AutoKey.

.bashrc

alias xyz="xdg-open path/to/file.ods"
alias xyz="cd path/to/folder/"
alias upoff="yes | sudo pacman -Syu && shutdown now"
alias upd="yes | sudo pacman -Syu"
alias gimps="cd .GIMPS/p95v308b17.linux64/ && ./mprime -m"

Shortcuts.

Keyboard → Application Shortcuts: playerctl play-pause/next/previous, xscreensaver-command -activate, amixer set Master 10%+, xfce4-terminal -e btop

uBlock Origin.

Enhancer for YouTube.

Click to expand the exported backup content. {"version":"2.0.117.10","settings":{"blur":0,"brightness":100,"contrast":100,"grayscale":0,"huerotate":0,"invert":0,"saturate":100,"sepia":0,"applyvideofilters":false,"backgroundcolor":"#000000","backgroundopacity":85,"blackbars":false,"blockads":false,"blockadsexceptforsubs":false,"blockautoplay":true,"blockhfrformats":false,"blockwebmformats":false,"boostvolume":false,"cinemamode":true,"cinemamodewideplayer":false,"controlbar":{"active":true,"autohide":false,"centered":true,"position":"absolute"},"controls":["loop","volume-booster","cinema-mode","speed","screenshot","options"],"controlsvisible":false,"controlspeed":true,"controlspeedmousebutton":false,"controlvolume":false,"controlvolumemousebutton":false,"convertshorts":true,"customcolors":{"--dimmer-text":"#cccccc","--hover-background":"#232323","--main-background":"#111111","--main-color":"#00adee","--main-text":"#eff0f1","--second-background":"#181818","--shadow":"#000000"},"customcssrules":"","customscript":"","customtheme":false,"darktheme":true,"date":1648104330302,"defaultvolume":true,"disableautoplay":true,"executescript":false,"expanddescription":false,"filter":"none","hidecardsendscreens":false,"hidechat":false,"hidecomments":false,"hiderelated":false,"hideshorts":false,"ignoreplaylists":true,"ignorepopupplayer":true,"localecode":"en_GB","localedir":"ltr","message":false,"miniplayer":true,"miniplayerposition":"_top-left","miniplayersize":"_640x360","newestcomments":false,"overridespeeds":true,"pauseforegroundtab":false,"pausevideos":true,"popuplayersize":"1280x720","qualityembeds":"medium","qualityembedsfullscreen":"hd1080","qualityplaylists":"hd720","qualityplaylistsfullscreen":"hd1080","qualityvideos":"hd720","qualityvideosfullscreen":"hd1080","reload":false,"reversemousewheeldirection":false,"selectquality":true,"selectqualityfullscreenoff":false,"selectqualityfullscreenon":false,"speed":1,"speedvariation":0.25,"stopvideos":false,"theatermode":false,"theme":"default-dark","themevariant":"youtube-deep-dark.css","update":0,"volume":50,"volumemultiplier":3,"volumevariation":5,"whitelist":"","wideplayer":false,"wideplayerviewport":false}}

Reddit Enhancement Suite.

☑ “Hide All Child Comments”.

LanguageTool.

☐ “Enable rephrasing”.

Dual-boot and sharing a drive between Linux and Windows.

To share a drive between Linux and Windows (11?) on a dual-boot setup and ensure Microsoft's incompetence doesn't delete your files, disable Windows' enabled by default fast startup: Control Panel → Hardware and Sound → Power Options → “Choose what the power button does” → “Change settings that are currently unavailable” → disable “Turn on fast startup (recommended)”.

IMWheel.

Save the following config to “/home/x/.imwheelrc”:

"^vivaldi-bin$"
None, Up, Button4, 2
None, Down, Button5, 2

"^vivaldi-stable$"
None, Up, Button4, 2
None, Down, Button5, 2

Redshift.

Save the following config to “/.config/redshift.conf”:

Click to expand the Redshift configuration file content.
[redshift]
; Set the day and night screen temperatures
;temp-day=6500
temp-night=4000

; Disable the smooth fade between temperatures when Redshift starts and stops.
; 0 will cause an immediate change between screen temperatures.
; 1 will gradually apply the new screen temperature over a couple of seconds.
fade=1

; Solar elevation thresholds.
; By default, Redshift will use the current elevation of the sun to determine
; whether it is daytime, night or in transition (dawn/dusk). When the sun is
; above the degrees specified with elevation-high it is considered daytime and
; below elevation-low it is considered night.
;elevation-high=3
;elevation-low=-6

; Custom dawn/dusk intervals.
; Instead of using the solar elevation, the time intervals of dawn and dusk
; can be specified manually. The times must be specified as HH:MM in 24-hour
; format.
;dawn-time=6:00-7:45
;dusk-time=18:35-20:15

; Set the screen brightness. Default is 1.0.
;brightness=0.9
; It is also possible to use different settings for day and night
; since version 1.8.
;brightness-day=0.7
brightness-night=0.60
; Set the screen gamma (for all colors, or each color channel
; individually)
;gamma=0.8
;gamma=0.8:0.7:0.8
; This can also be set individually for day and night since
; version 1.10.
;gamma-day=0.8:0.7:0.8
;gamma-night=0.6

; Set the location-provider: 'geoclue2', 'manual'
; type 'redshift -l list' to see possible values.
; The location provider settings are in a different section.
location-provider=manual

; Set the adjustment-method: 'randr', 'vidmode'
; type 'redshift -m list' to see all possible values.
; 'randr' is the preferred method, 'vidmode' is an older API.
; but works in some cases when 'randr' does not.
; The adjustment method settings are in a different section.
adjustment-method=randr

; Configuration of the location-provider:
; type 'redshift -l PROVIDER:help' to see the settings.
; ex: 'redshift -l manual:help'
; Keep in mind that longitudes west of Greenwich (e.g. the Americas)
; are negative numbers.
[manual]
lat=33.67722
lon=-106.47527

; Configuration of the adjustment-method
; type 'redshift -m METHOD:help' to see the settings.
; ex: 'redshift -m randr:help'
; In this example, randr is configured to adjust only screen 0.
; Note that the numbering starts from 0, so this is actually the first screen.
; If this option is not specified, Redshift will try to adjust _all_ screens.
[randr]
screen=0

; --- I'm not using the below settings any more, but handy to know
; Global settings for redshift
; Place this file in .config/redshift/redshift.conf. Use the line below as startup command
; redshift-gtk -c ./.config/redshift/redshift.conf

Whisker Menu search actions.

Click to expand the whiskermenu-...rc file content.
//LOCATION: /home/x/.config/xfce4/panel/whiskermenu-….rc
//Add xfce4-popup-whiskermenu to application shortcuts in Keyboard settings (Arch)

search-actions=33

[action0]
name=Man Pages
pattern=#
command=exo-open --launch TerminalEmulator man %s
regex=false

[action1]
name=Run in Terminal
pattern=!
command=exo-open --launch TerminalEmulator %s
regex=false

[action2]
name=Open URI
pattern=^(file|http|https):\\/\\/(.*)$
command=exo-open \\0
regex=true

[action3]
name=Search for files
pattern=-
command=catfish --path=~ --start %s
regex=false

[action4]
name=Deepl & Google (EN > NL)
pattern=?tr
command=/home/x/MEGA/configuration/linux/scripts/search-translate-en.sh %u
regex=false

[action5]
name=Deepl & Google (NL > EN)
pattern=?trnl
command=/home/x/MEGA/configuration/linux/scripts/search-translate-nl.sh %u
regex=false

[action6]
name=Taaladvies, definities, synoniemen
pattern=?dnl
command=/home/x/MEGA/configuration/linux/scripts/search-definities.sh %u
regex=false

[action7]
name=Search DDG
pattern=?d
command=/home/x/MEGA/configuration/linux/scripts/search-duck.sh %u
regex=false

[action8]
name=WolframAlpha & Symbolab
pattern=?math
command=/home/x/MEGA/configuration/linux/scripts/search-math.sh %u
regex=false

[action9]
name=YouTube
pattern=?yt
command=exo-open --launch WebBrowser https://www.youtube.com/results?search_query=%u
regex=false

[action10]
name=Definition & thesaurus
pattern=?den
command=/home/x/MEGA/configuration/linux/scripts/search-dictionaries.sh %u
regex=false

[action11]
name=ytprivate
pattern=?yp
command=exo-open --launch WebBrowser https://invidious.namazso.eu/search?q=%u
regex=false

[action12]
name=Wiki and E. Britannica
pattern=?wibr
command=bash -c "exo-open https://www.britannica.com/search?query=%u && exo-open https://en.wikipedia.org/w/index.php?search=%u"
regex=false

[action13]
name=Goodreads
pattern=?gr
command=exo-open --launch WebBrowser https://www.goodreads.com/search?q=%u
regex=false

[action14]
name=Google Maps
pattern=?gm
command=exo-open --launch WebBrowser https://www.google.com/maps/search/%u
regex=false

[action15]
name=Bypass paywall
pattern=?12
command=exo-open --launch WebBrowser https://12ft.io/proxy?q=%u
regex=false

[action16]
name=Reddit
pattern=?red
command=bash -c exo-open https://www.reddit.com/search?q=%u
regex=false

[action17]
name=unicode, emojipedia
pattern=?uni
command=exo-open --launch WebBrowser https://emojipedia.org/search/?q=%u
regex=false

[action18]
name=Movie info
pattern=?mov
command=/home/x/MEGA/configuration/linux/scripts/search-movie.sh %u
regex=false

[action19]
name=Amazon (all)
pattern=?am
command=/home/x/MEGA/configuration/linux/scripts/search-amazon.sh %u
regex=false

[action20]
name=Search All
pattern=?sa
command=/home/x/MEGA/configuration/linux/scripts/search-all.sh %u
regex=false

[action21]
name=Spotify
pattern=?sp
command=exo-open --launch WebBrowser https://open.spotify.com/search/%u
regex=false

[action22]
name=Ebay
pattern=?eb
command=exo-open --launch WebBrowser https://www.ebay.com/sch/i.html?_nkw=%u&_sacat=0
regex=false

[action23]
name=Idioms
pattern=?idi
command=exo-open --launch WebBrowser https://idioms.thefreedictionary.com/%u
regex=false

[action24]
name=Freely-usable images
pattern=?fimg
command=exo-open --launch WebBrowser https://unsplash.com/s/photos/%u
regex=false

[action25]
name=Images (all)
pattern=?img
command=/home/x/MEGA/configuration/linux/scripts/search-images.sh %u
regex=false

[action26]
name=The Pirate Bay
pattern=?pb
command=exo-open --launch WebBrowser https://pirateproxy.live/search/%u/
regex=false

[action27]
name=Startpage
pattern=?s
command=/home/x/MEGA/configuration/linux/scripts/search-startpage.sh %u
regex=false

[action28]
name=Urban Dictionary
pattern=?ud
command=exo-open --launch WebBrowser https://www.urbandictionary.com/define.php?term=%u
regex=false

[action29]
name=Alternative to
pattern=?at
command=exo-open --launch WebBrowser https://alternativeto.net/browse/search/?q=%u
regex=false

[action30]
name=Wolfram Alpha
pattern=?wa
command=exo-open --launch WebBrowser https://www.wolframalpha.com/input/?i=%u
regex=false

[action31]
name=Symbolab
pattern=?sl
command=exo-open --launch WebBrowser https://www.symbolab.com/solver/step-by-step/%u
regex=false

[action32]
name=Wikipedia
pattern=?w
command=exo-open --launch WebBrowser https://en.wikipedia.org/w/index.php?search=%u
regex=false

XScreenSaver.

Click to expand the .xscreensaver file content.
# XScreenSaver Preferences File
# Written by xscreensaver-settings 6.06 for x on Sat Jun  3 11:27:34 2023.
# https://www.jwz.org/xscreensaver/

timeout:	0:11:00
cycle:		0:05:00
lock:		True
lockTimeout:	0:30:00
passwdTimeout:	0:00:30
visualID:	default
installColormap:    True
verbose:	False
splash:		True
splashDuration:	0:00:05
demoCommand:	xscreensaver-settings
nice:		10
fade:		True
unfade:		False
fadeSeconds:	0:00:01
ignoreUninstalledPrograms:False
dpmsEnabled:	False
dpmsQuickOff:	False
dpmsStandby:	2:00:00
dpmsSuspend:	2:00:00
dpmsOff:	4:00:00
grabDesktopImages:  False
grabVideoFrames:    False
chooseRandomImages: False
imageDirectory:	

mode:		random
selected:	-1

textMode:	url
textLiteral:	XScreenSaver
textFile:	
textProgram:	fortune
textURL:	https://en.wikipedia.org/w/index.php?title=Special:NewPages&feed=rss
dialogTheme:	greenblack
settingsGeom:	280,132 1380,408

programs:								      \
-				maze --root				    \n\
  GL: 				superquadrics --root			    \n\
-				attraction --root			    \n\
-				blitspin --root				    \n\
-				greynetic --root			    \n\
        helix --root				    \n\
-				hopalong --root				    \n\
-				imsmap --root				    \n\
-				noseguy --root				    \n\
-				pyro --root				    \n\
-				qix --root				    \n\
-				rocks --root				    \n\
-				rorschach --root			    \n\
-				decayscreen --root			    \n\
-				flame --root				    \n\
-				halo --root				    \n\
-				slidescreen --root			    \n\
-				pedal --root				    \n\
-				bouboule --root				    \n\
-				braid --root				    \n\
        coral --root				    \n\
-				deco --root				    \n\
-				drift --root				    \n\
-				fadeplot --root				    \n\
        galaxy --root				    \n\
-				goop --root				    \n\
-				grav --root				    \n\
        ifs --root				    \n\
- GL: 				jigsaw --root				    \n\
-				julia --root				    \n\
-				kaleidescope --root			    \n\
- GL: 				moebius --root				    \n\
-				moire --root				    \n\
- GL: 				morph3d --root				    \n\
-				mountain --root				    \n\
-				munch --root				    \n\
-				penrose --root				    \n\
- GL: 				pipes --root				    \n\
-				rd-bomb --root				    \n\
- GL: 				rubik --root				    \n\
-				sierpinski --root			    \n\
- any: 				slip --root				    \n\
- GL: 				sproingies --root			    \n\
-				starfish --root				    \n\
        strange --root				    \n\
-				swirl --root				    \n\
-				triangle --root				    \n\
-				xjack --root				    \n\
-				xlyap --root				    \n\
- GL: 				atlantis --root				    \n\
-				bsod --root				    \n\
- GL: 				bubble3d --root				    \n\
  GL: 				cage --root				    \n\
-				crystal --root				    \n\
-				cynosure --root				    \n\
-				discrete --root				    \n\
-				distort --root				    \n\
        epicycle --root				    \n\
        flow -root -no-box			    \n\
- GL: 				glplanet --root				    \n\
-				interference --root			    \n\
        kumppa --root				    \n\
- GL: 				lament --root				    \n\
-				moire2 --root				    \n\
- GL: 				sonar --root				    \n\
- GL: 				stairs --root				    \n\
-				truchet --root				    \n\
-				vidwhacker --root			    \n\
-				blaster --root				    \n\
-				bumps --root				    \n\
-				ccurve --root				    \n\
-				compass --root				    \n\
-				deluxe --root				    \n\
-				demon --root				    \n\
- GL: 				extrusion --root			    \n\
-				loop --root				    \n\
-				penetrate --root			    \n\
-				petri --root				    \n\
-				phosphor --root				    \n\
- GL: 				pulsar --root				    \n\
-				ripples --root				    \n\
-				shadebobs --root			    \n\
  GL: 				sierpinski3d --root			    \n\
-				spotlight --root			    \n\
-				squiral --root				    \n\
-				wander --root				    \n\
-				webcollage --root			    \n\
-				xflame --root				    \n\
-				xmatrix --root				    \n\
- GL: 				gflux --root				    \n\
-				nerverot --root				    \n\
        xrayswarm --root			    \n\
-				xspirograph --root			    \n\
- GL: 				circuit --root				    \n\
- GL: 				dangerball --root			    \n\
- GL: 				dnalogo --root				    \n\
- GL: 				engine --root				    \n\
- GL: 				flipscreen3d --root			    \n\
- GL: 				gltext --root				    \n\
  GL: 				menger --root				    \n\
- GL: 				molecule --root				    \n\
-				rotzoomer --root			    \n\
-				scooter --root				    \n\
-				speedmine --root			    \n\
- GL: 				starwars --root				    \n\
- GL: 				stonerview --root			    \n\
-				vermiculate --root			    \n\
        whirlwindwarp --root			    \n\
-				zoom --root				    \n\
-				anemone --root				    \n\
-				apollonian --root			    \n\
- GL: 				boxed --root				    \n\
- GL: 				cubenetic --root			    \n\
- GL: 				endgame --root				    \n\
        euler2d --root				    \n\
-				fluidballs --root			    \n\
- GL: 				flurry --root				    \n\
- GL: 				glblur --root				    \n\
- GL: 				glsnake --root				    \n\
-				halftone --root				    \n\
- GL: 				juggler3d --root			    \n\
- GL: 				lavalite --root				    \n\
-				polyominoes --root			    \n\
- GL: 				queens --root				    \n\
- GL: 				sballs --root				    \n\
- GL: 				spheremonics --root			    \n\
-				thornbird --root			    \n\
-				twang --root				    \n\
- GL: 				antspotlight --root			    \n\
-				apple2 --root				    \n\
- GL: 				atunnel --root				    \n\
-				barcode --root				    \n\
- GL: 				blinkbox --root				    \n\
- GL: 				blocktube --root			    \n\
- GL: 				bouncingcow --root			    \n\
-				cloudlife --root			    \n\
- GL: 				cubestorm --root			    \n\
-				eruption --root				    \n\
- GL: 				flipflop --root				    \n\
- GL: 				flyingtoasters --root			    \n\
-				fontglide --root			    \n\
- GL: 				gleidescope --root			    \n\
- GL: 				glknots --root				    \n\
  GL: 				glmatrix -root -no-rotate		    \n\
- GL: 				glslideshow --root			    \n\
  GL: 				hypertorus --root			    \n\
- GL: 				jigglypuff --root			    \n\
-				metaballs --root			    \n\
- GL: 				mirrorblob --root			    \n\
-				piecewise --root			    \n\
- GL: 				polytopes --root			    \n\
-				pong --root				    \n\
-				popsquares --root			    \n\
  GL: 				surfaces --root				    \n\
-				xanalogtv --root			    \n\
-				abstractile --root			    \n\
-				anemotaxis --root			    \n\
- GL: 				antinspect --root			    \n\
-				fireworkx --root			    \n\
-				fuzzyflakes --root			    \n\
-				interaggregate --root			    \n\
        intermomentary --root			    \n\
-				memscroller --root			    \n\
- GL: 				noof --root				    \n\
-				pacman --root				    \n\
- GL: 				pinion --root				    \n\
- GL: 				polyhedra --root			    \n\
- GL: 				providence --root			    \n\
-				substrate --root			    \n\
        wormhole --root				    \n\
- GL: 				antmaze --root				    \n\
- GL: 				boing --root				    \n\
-				boxfit --root				    \n\
- GL: 				carousel --root				    \n\
-				celtic --root				    \n\
- GL: 				crackberg --root			    \n\
- GL: 				cube21 --root				    \n\
-				fiberlamp --root			    \n\
- GL: 				fliptext --root				    \n\
- GL: 				glhanoi --root				    \n\
- GL: 				tangram --root				    \n\
- GL: 				timetunnel --root			    \n\
- GL: 				glschool --root				    \n\
- GL: 				topblock --root				    \n\
  GL: 				cubicgrid --root			    \n\
-				cwaves --root				    \n\
- GL: 				gears --root				    \n\
- GL: 				glcells --root				    \n\
- GL: 				lockward --root				    \n\
-				m6502 --root				    \n\
- GL: 				moebiusgears --root			    \n\
- GL: 				voronoi --root				    \n\
- GL: 				hypnowheel --root			    \n\
  GL: 				klein --root				    \n\
-				lcdscrub --root				    \n\
- GL: 				photopile --root			    \n\
- GL: 				skytentacles --root			    \n\
- GL: 				rubikblocks --root			    \n\
- GL: 				companioncube --root			    \n\
- GL: 				hilbert --root				    \n\
- GL: 				tronbit --root				    \n\
- GL: 				geodesic --root				    \n\
-				hexadrop --root				    \n\
- GL: 				kaleidocycle --root			    \n\
- GL: 				quasicrystal --root			    \n\
- GL: 				unknownpleasures --root			    \n\
-				binaryring --root			    \n\
- GL: 				cityflow --root				    \n\
- GL: 				geodesicgears --root			    \n\
  GL: 				projectiveplane --root			    \n\
- GL: 				romanboy --root				    \n\
-				tessellimage --root			    \n\
- GL: 				winduprobot --root			    \n\
- GL: 				splitflap --root			    \n\
- GL: 				cubestack --root			    \n\
  GL: 				cubetwist --root			    \n\
- GL: 				discoball --root			    \n\
- GL: 				dymaxionmap --root			    \n\
- GL: 				energystream --root			    \n\
- GL: 				hexstrut --root				    \n\
- GL: 				hydrostat --root			    \n\
- GL: 				raverhoop --root			    \n\
- GL: 				splodesic --root			    \n\
- GL: 				unicrud --root				    \n\
- GL: 				esper --root				    \n\
- GL: 				vigilance --root			    \n\
- GL: 				crumbler --root				    \n\
-				filmleader --root			    \n\
-				glitchpeg --root			    \n\
- GL: 				handsy --root				    \n\
- GL: 				maze3d --root				    \n\
- GL: 				peepers --root				    \n\
- GL: 				razzledazzle --root			    \n\
-				vfeedback --root			    \n\
- GL: 				deepstars --root			    \n\
  GL: 				gravitywell --root			    \n\
- GL: 				beats --root				    \n\
- GL: 				covid19 --root				    \n\
  GL: 				etruscanvenus --root			    \n\
- GL: 				gibson --root				    \n\
- GL: 				headroom --root				    \n\
- GL: 				sphereeversion --root			    \n\
-				binaryhorizon --root			    \n\
-				marbling --root				    \n\
- GL: 				mapscroller --root			    \n\
- GL: 				squirtorus --root			    \n\
- GL: 				chompytower --root			    \n\
- GL: 				nakagin --root				    \n\
- GL: 				hextrail --root				    \n\


pointerHysteresis:  10
authWarningSlack:   20

Steps to reinitialize git folder after format.

[Probably not the right way to do it any more.]

cd <repo-folder>
git init
git remote add origin <url>
git fetch
git reset origin/main

…or create a new repository on the command line.

echo "# REPONAME" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/USERNAME/REPONAME
git push -u origin main

…or push an existing repository from the command line.

git remote add origin https://github.com/USERNAME/REPONAME
git branch -M main
git push -u origin main


Clean.

Source: https://averagelinuxuser.com/clean-arch-linux.

Change the default browser for Telegram.

Even when choosing Vivaldi Browser as the default in “Settings → Default Applications” (xfce4-mime-settings), for some reasons some programs (Telegram) still use Firefox/Chromium. To work around this problem:

xdg-mime default vivaldi-stable.desktop x-scheme-handler/https x-scheme-handler/http

Source: ArchWiki, GitHub.

Miscellaneous.

Here's a nearly exhaustive list of software I use and recommend.


← Return | ⌂ Home | € Support | ☑ RSS