Skip to content

myTerminal/dotfiles

Repository files navigation

dotfiles

The “replicable” heart of my personal workstations

Init (Note for my future self)

Simply run the below on the new computer to be “adopted”:

/bin/bash -c "$(curl https://raw.githubusercontent.com/myTerminal/dotfiles/master/bootstrap)"

OR the lazy version

/bin/bash -c "$(curl https://gh.myterminal.me/setup)"

For macOS, the shell needs to be changed from Zsh to Bash and there needs to be a sudo xcode-select --install before anything else.

Setup

Software setup for multiple operating platforms is included and it is performed if a known OS is detected.

To start the setup, run the following command in a terminal running bash: (provided forge was fetched as a part of the init)

( cd ~/.forge; ./start debug ~/.setup/forge-config.lisp )

Software selection

Core packages

VoidPop OSmacOS
BaseVoidPop!_OSMacOS
Package managersxbps, flatpakapt(native), Homebrew, Cask
Bootloadergrub, os-prober(native)(native)
Encryptioncryptsetup, cryfscryptsetup, cryfs–, cryfs
Process authorizationpolkit(native)(native)
Message bus systemdbus(native)
UEFI managementefibootmgr
Interfacetmuxtmuxtmux
Shellfishfishfish
File system toolsfd, lsd, bat, ncdufd, lsd, bat, ncdufd, lsd, bat, ncdu
Text Searcherripgrepripgrepripgrep
Fuzzy finderfzffzffzf
Text editorGNU Emacs, vimGNU Emacs, vimGNU Emacs^
Audio playermpvmpvmpv
Spell checkerAspellAspellAspell
GNU Makemakemakemake
SCMGit, TigGit, TigGit*, Tig
File manager
Archive managerszip, unzip, 7zip, unrarzip, unzip, 7zip, unrar(native), 7zip, unrar
Process managementbtop, psmiscbtop, psmiscbtop
Disk managementudisksudisksudisks
Network toolsnetworkmanager, bind-utilsnetworkmanager, bind-utils
Communication toolWeeChatWeeChatWeeChat
VirtualizationDockerDockerDocker
Language runtimesNode.js, sbcl, rustupNode.js, sbcl, rustupNode.js, sbcl, rustup
Hardwarebrightnessctl, acpi, numlockx, fprintdacpi, fprintd
System clockchrony
Filesystem toolsbtrfs-progs, ntfs-3g, dosfstools, mtools, exfat-utilsbtrfs-progs, ntfs-3g, dosfstools, mtools, exfat-utils
Mobile deviceandroid-platform-toolsandroid-platform-system-coreandroid-platform-tools
Cron daemoncronie(native)(native)
Miscrlwrap, sed, jq, neofetch, wget, curl, ssh, avahirlwrap, sed, jq, neofetch, wget, curl, ssh, avahirlwrap, sed, jq, curl, neofetch, avahi

Graphical packages

Void (Xorg)Void (Wayland)Pop OSmacOS
Desktop utilsxdg-utilsxdg-utilsxdg-utils
Display serverXorg(native)(native)
Display drivers(machine-dependent)(machine-dependent)(machine-dependent)(native)
Display manager(native)(native)
Screen color temperaturesctgammastep(native)
Onscreen keyboardonboard??
Compositorpicom(native)
Graphical environmentsi3sway(native)(native)
Status bari3statuswaybar(native)
Output managerxrandrwlr-randr(native)
Wallpaper managerfehswaybg(native)
Application launcherRofifuzzel(native), Rofi(native)
Dock(native)(native)
Desktop widgets[pending][pending](native)
Desktop themeObsidianObsidian(native)(native)
Icon packsObsidianObsidian(native)(native)
Mouse cursorBibataBibata(native)(native)
Lockscreeni3lock, xs-lockswaylock(native)(native)
Terminalrxvtfoot(native)Terminal (native), Alacritty
Clipboard helperxselwl-clipboard(native)pbcopy/pbpaste (native)
Notification daemondunstmako(native)(native)
Disk managementudiskie, GPartedudiskie, GParted^udiskie, GPartedDisk Utility (native), Mounty
File managersthunar (with gvfs)thunar (with gvfs)(native)Finder (native)
File sync clientSyncthingSyncthingSyncthingSyncthing
File/folder compareMeldMeldMeldMeld
Web browsersFirefoxFirefoxFirefoxFirefox
Password managerKeePassXCKeePassXCKeePassXCKeePassXC
Email clientsThunderbirdThunderbird^ThunderbirdMail (native)
MessengersSchildiSchildi^SchildiSchildi
Cloud storage clientspCloudpCloud^pCloudpCloud
Torrent clientTransmissionTransmissionTransmissionTransmission
REST clientPostmanPostman^PostmanPostman
VirtualizationVirt-ManagerVirt-ManagerVirt-ManagerVirtualBox
Office suiteLibreOfficeLibreOfficeLibreOfficeLibreOffice
Bluetooth interfacebluemanblueman(native)(native)
Drawing toolkritakritakritakrita
Picture viewersShotwellShotwellShotwellPreview (native), XNView MP
Picture editorGIMP, darktableGIMP, darktable^GIMP, darktableGIMP, darktable
Audio playerClementineClementineClementineClementine
Audio frontendpavucontrolpavucontrolpavucontrol(native)
Audio backendGStreamer, pipewire, easyeffectsGStreamer, pipewire, easyeffects(native)LAME, FFmpeg
Audio editorAudacityAudacityAudacityAudacity
Video playerVLCVLC^VLCVLC
Video editorHandBrake, BlenderHandBrake, BlenderHandBrake, BlenderHandBrake, Blender
YouTube video downloaderyt-dlpyt-dlpyt-dlpyt-dlp
Multimedia toolKODIKODIKODIKODI
Screenshot toolflameshotgrim, slurp, swappy(native)(native)
Screencast toolOBS Studio, peekOBS Studio^, ??OBS Studio, peekOBS Studio, LICEcap
Keystroke echoing tool??keycastr
Startup disk creatorsbalenaEtcherbalenaEtcher^balenaEtcherbalenaEtcher
Gaming clientsSteam, lutris, GameHubSteam^, lutris, GameHubSteam, lutris, GameHubSteam, Origin, Sony Remote Play
MiscqFlipperqFlipper^qFlipperqFlipper

Fonts

Font
Font Awesome
Open Sans
Inconsolata
Roboto Mono
Droid
Fira Code
Liberation

Legend

* - in-built, ** - through web-client, ^ - through XWayland

Background

What started as a home for my Emacs config, quickly began to shift its shape, soon turning into a comprehensive dotfiles project to host configuration for much more than just Emacs. The majority of it still mostly comprised of Emacs configuration, so to make things simpler, I decided to extract it into an independent project of its own. At one point, I even extracted the setup scripts into their separate projects here and then later here. Maintaining it was still tricky with its complex arrangement of configuration files for four operating platforms at once at one point in time!

What you see now is an attempt to keep only what is relevant to my primary configuration across all my active workstations This helps make updates less painful and effortless. There is more than one reason to keep scripts for macOS around. One obvious reason is to use it on my work computers that barely align with my preferred setup, and the other is to continuously compare my “custom” setup with a fully functional operating system like macOS and fill in the gaps iteratively.

There still is some inseparable residue related to other platforms. This might either eventually disappear, or otherwise bring in more complexity in the future, leading to another project branching out of this one.

Open Gaps

  • Missing alternative for peek in Wayland
  • onboard doesn’t work in Wayland
  • No screen recording tools in Wayland
  • Broken sharing in Wayland
  • No way to set Numlock for Wayland
  • Wallpaper doesn’t randomize after Wayland load
  • Need to set shell colors in Wayland?