Skip to content

⌨️ Operating System environment focusing on cognitive ergonomics, cohesive keybindings, modal workflow, automation, human augmentation and battery efficiency.

License

Notifications You must be signed in to change notification settings

MidHunterX/Hunter-OS

Repository files navigation

Hunter OS

📜 Philosophy

Terminal Centric and Reliable: The terminal is the heart of this environment, providing CLI/TUI tools and utilities for efficient workflow tailored to personal preference. Even if the Display Server (central point of failure) fails, navigate comfortability in TTY interface without feeling homesick.

Lightweight, Optimized, and Battery Efficient: Perfectly engineered to be light on system resources, ensuring smooth performance. Every aspect is optimized for maximum efficiency, extending battery life and also have many features at disposal.

Cohesive Universal Interface with Vim Keybindings: Keyboard-centric approach, with standardized Vim-style keybindings deeply integrated into every tools, apps and utilities. This allows to navigate and interact with speed, precision and comfortability without even thinking about keybindings.

⚗️ Experimental Features

📖 Manifesto

  • Computers and tools should adapt to Humans and not vice versa.

  • Computers and tools should understand context and intent.

  • Environment should support cognitive flow, not disrupt or redirect it.

🔭 On-Going Experiments

Reduction of Cognitive Load by Intent based computing for context switching, Ambient notification system like Calm technology, Active Assistance and Automation.

Run: Automating project initialization and environment setup. Helps to maintain cognitive context of task without distracting yourself from manual setup.

Expression: Expressing a non-intrusive ambient notification of life events and schedules. Know time schedule without knowing the time. Useful for humans with low interoception who works on computers all day.

Intention: State your intent and let your computer change itself to adapt to your intention. Abstracts away Operating Systems to use it as specialized environment for a specific intent.

💼 Carefully Concocted Custom Configurations

Click the links below for a detailed documentation.

Name Description Preview

🎹 KeyD

Keyboard Layout/Mapping

📁 ViFM

File Manager

vifm

📝 NeoVim

TUI Code Editor

nvim dashboard

🦊 FireFox

Web Browser

firefox

🐟 Fish

Shell

fish lscd

🍱 Tmux

Terminal Multiplexer

tmux

📄 Zathura

PDF Frontend

zathura

📊 Cava

Music Visualizer

cava

🌄 Feh

Image Viewer

feh

📜 Fuzzel

App Launcher

fuzzel

💧 Hyprland

Wayland Compositor

hypr

🐱 Kitty

Terminal Emulator

kitty nvim

😴 LazyGit

TUI Git Frontend

lazygit

🎬 Mpv

Video Player

mpv

⚙️ Scripts

Scripts

script fetch

🚀 Starship

Shell Prompt Engine

prompt

🆚 VSCode

GUI Code Editor

code

🍫 WayBar

Status Bar

waybar

🌳 Wlogout

Logout Menu

wlogout

🍇 Directed Diagram Denoting Documented Dependencies

🔴

Required Dependency

🟡

Optional Dependency

flowchart LR

subgraph XOSCRP Layer
  intention(<a href='https://github.com/MidHunterX/Intention'>Intention</a>)
  linux(Linux OS)
  windows(Windows OS)
  grub{GRUB Bootloader}
  keyd{{<a href='https://github.com/MidHunterX/Hunter-OS/tree/master/.config/keyd/'>KeyD</a>}}
end

intention --> grub --> linux & windows
linux & windows --> intention
keyd --> linux


subgraph Orchestration Layer
  hypr(<a href='https://github.com/MidHunterX/Hunter-OS/tree/master/.config/hypr'>Hyprland</a>)
  run(<a href='https://github.com/MidHunterX/Project-Launcher'>Project Launcher</a>)
  expression(<a href='https://github.com/MidHunterX/Expression'>Expression</a>)
  swww{{🔴 swww}}
end

linux ==> hypr


vifm(<a href='https://github.com/MidHunterX/Hunter-OS/tree/master/.config/vifm'>VIFM</a>)
ls{{🟡 lsd / ls}}
cat{{🟡 bat / cat}}
find{{🟡 fd / find}}
grep{{🟡 ripgrep / grep}}
exif{{🟡 exiv2}}
tmux{{🔴 tmux}}
syntax{{🔴 highlight}}
nvim(<a href='https://github.com/MidHunterX/HunterX-PDE'>NeoVim</a>)
kitty(<a href='https://github.com/MidHunterX/Hunter-OS/tree/master/.config/kitty/'>Kitty</a>)
fish(<a href='https://github.com/MidHunterX/Hunter-OS/tree/master/.config/fish/'>Fish Shell</a>)
vos(VOS)
cd{{🟡 zoxide / cd}}
volume{{🔴 pamixer}}
brs(BRS)
brillo{{🔴 brillo}}
waybar(<a href='https://github.com/MidHunterX/Hunter-OS/tree/master/.config/waybar/'>Waybar</a>)
nf(Nerd Font)
fzf{{🔴 fzf}}
git{{🟡 git / lazygit}}
prompt(<a href='https://github.com/MidHunterX/Hunter-OS/tree/master/.config/starship/'>Starship Prompt</a>)

hypr --> kitty & expression
expression --> swww
hypr <--> swww & waybar
run --> tmux & nvim

kitty --> nvim & fish
fish --> ls & vifm & nvim & cd & git & vos & brs & cat & find & prompt
cd --> ls --> nf
prompt & fish --> subshell[[VIFM_MODE]] --> vifm
vifm --> ls & exif & syntax & nf & fzf & find
nvim <--> vifm
nvim --> nf & find & git & grep & kitty
waybar --> volume & brillo & nf
vos --> volume
brs --> brillo
Loading

📦 Preeminently Preferred Primary Packages

Click the following categories to toggle the list of packages in that category.

🐧 Linux System

🐧 Linux System

Package Name Description Src

base

Base Arch Installation

pacman

base-devel

Basic tools to build Arch Linux packages

pacman

linux

The Linux kernel and modules

pacman

linux-firmware

Firmware files for Linux

pacman

linux-headers

Headers and scripts for building modules

pacman

pacman-contrib

Scripts and tools for pacman systems (paccache)

pacman

👢 Boot

👢 Boot

Package Name Description Src

dosfstools

DOS Filesystem Utilities

pacman

efibootmgr

Utility to modify the EFI Boot Manager

pacman

grub

GNU GRand Unified Bootloader

pacman

ntfs-3g

NTFS filesystem driver and utilities

pacman

os-prober

Utility to detect other OSes

pacman

plymouth

Graphical boot splash screen

pacman

cantarell-fonts

Humanist sans serif font (for plymouth)

pacman

💾 Hardware

💾 Hardware

Package Name Description Src

acpi

Client for battery, power and thermal readings

pacman

acpi_call

Kernel module call ACPI (/proc/acpi/call)

pacman

acpid

Daemon for ACPI power management events

pacman

amd-ucode

Microcode update image for AMD CPUs

pacman

amdvlk

AMD’s standalone Vulkan driver

pacman

mesa-utils

Essential Utilities for Open-source OpenGL

pacman

📦 Development

📦 Development

Package Name Description Src

git

Version control system

pacman

lazygit

TUI for Git

pacman

git-delta

Git Syntax Highlighted Pager

pacman

meson

Nice build system

pacman

nodejs

Node Java Script Runtime Env

pacman

npm

Node JS package manager

pacman

python

Python Interpreter

pacman

sqlitebrowser

DB Browser for SQLite

pacman

⚙️ Utilities

⚙️ Utilities

Package Name Description Src

sudo

Run commands as root

pacman

bat

cat with syntax highlighting

pacman

zoxide

Better alternative to cd command

pacman

dust

Disk usage analyzer (static)

pacman

ncdu

Disk space cleaner (interactive)

pacman

exiv2

Image EXIF Manipulation Tool

pacman

fd

Faster alternative to find command

pacman

ffmpegthumbnailer

Video Thumbnailer

pacman

fzf

Fuzzy Finder Utility

pacman

highlight

Syntax Highlighter

pacman

jq

CLI JSON Processor

pacman

libqalculate

CLI NLP Calculator

pacman

lsd

ls with Nerd Font support

pacman

man-db

Utility for reading man pages

pacman

poppler

PDF Rendering Engine

pacman

ripgrep

Text Search Tool

pacman

speech-dispatcher

Speech Synthesis (spd-say)

pacman

xsv

CLI CSV Processor

pacman

fastfetch

Fetch System Information

pacman

onefetch

Fetch Git Project Information

aur

brillo

Brightness based on human perception

aur

tgpt

CLI AI Chat without API keys

aur

wl-kbptr

Cursor Modal Keyboard Driven Pointer

aur

wlrctl

Cursor Control Utility

aur

📷 Audio, Video and Image

📢 Audio

Package Name Description Src

pamixer

CLI Volume Control Tool

pacman

pavucontrol

GUI Volume Control Tool

pacman

pipewire

Audio and Video streaming server

pacman

pipewire-pulse

A/V router & processor - PulseAudio replacement

pacman

wireplumber

PipeWire session/policy manager - wpctl

pacman

easyeffects

Loudness Equalization

pacman

lsp-plugins-lv2

easyeffects: equalizer, compressor, loudness

pacman

calf

easyeffects: limiter, exciter, bass enhancer

pacman

cava

Cross Platform Audio Visualizer

aur

🎬 Video

Package Name Description Src

ffmpeg

Super advanced library for handling Audio / Video

pacman

handbrake

GUI Video Transcoder

pacman

mpv

Video Player - Minimal and integrates well with WM

pacman

yt-dlp

Video Downloader

pacman

🌄 Image

Package Name Description Src

feh

Image Viewer - Super light weight

pacman

nomacs

Image Viewer - Touch screen friendly

aur

🌐 Network and Security

🌐 Network and Security

Package Name Description Src

android-file-transfer

Mount Android Device

pacman

blueman

GUI Bluetooth Manager

pacman

bluez

Bluetooth Protocol Daemon

pacman

bluez-utils

Bluetooth Utilities - bluetoothctl

pacman

curlftpfs

FUSE mount ftp sites

pacman

termscp

TUI client for SCP, FTP, Kube, S3

pacman

dhcpcd

DHCP Client Daemon

pacman

firefox-developer-edition

Internet Browser

pacman

keepassxc

Password Manager

pacman

networkmanager

CLI Network Manager - nmcli, nmtui

pacman

openssh

SSH protocol implementation

pacman

torbrowser-launcher

Anonnymous Onion Browser

pacman

transmission-gtk

GUI Torrent Client

pacman

wpa_supplicant

WLAN Daemon

pacman

FUSE Mounted FTP File Transfer Issue

When using curlftpfs to FUSE mount and copy files over FTP, there’s a common issue with not being able to copy over file names/paths containing spaces because of how the FTP protocol and the FUSE layer handle escaping (files should be URL-encoded). As a workaround you can: * Just rename the file before copying * Use termscp but you’ll have to use their TUI interface instead of direct filesystem access.

🌲 Desktop

🌲 Desktop

Package Name Description Src

libnotify

Notification library

pacman

dunst

Notification Daemon

pacman

fuzzel

Wayland App Launcher

pacman

hyprland

Wayland compositor

pacman

xdg-desktop-portal-hyprland

Desktop Integration Portal

pacman

swayidle

Wayland Idle Manager

pacman

waybar

Wayland Status Bar

pacman

wl-clipboard

wl-copy + wl-paste

pacman

wtype

Wayland Keystrokes Emulation

pacman

wf-recorder

Wayland Screen Recorder

aur

keyd

Key Remapping Daemon

aur

swww

Wayland Wallpaper Daemon

aur

wlogout

Logout Screen

aur

ℹ️
wl-screenrec might be optimized, fast, efficient and Lightweight but it doesn’t work in battery saver mode unlike wf-recorder.
⚠️
xdg-desktop-portal-hyprland enables features like screen sharing. There is a bug when the display is rotated, screen sharing shows it as default landscape mode. This is because SPA_META_VideoTransform is not present in the buffer metadata for PipeWire streams. This is what many apps, including browsers use to determine if and how the captured image needs to be rotated and Browser WebRTC doesn’t support the SPA_META_VideoTransform metadata as well. This issue can be tracked here: issue 292 and in WebRTC: issue 42226058. Have to wait until WebRTC fixes it.
💻 2-in-1 Laptop Specific

💻 2-in-1 Laptop Specific

Package Name Description Src

iio-sensor-proxy

Accelerometer Sensor Driver

pacman

tlp

Laptop Power Optimization

pacman

auto-cpufreq

Dynamic CPU Clock Cycle Frequency

aur

detect-tablet-mode-git

Tablet mode scripts - watch_tablet

aur

iio-hyprland-git

Set Hyprland Orientation automatically

aur

yoga-usage-mode-dkms-git

ACPI driver for Tablet mode detection

aur

📄 Document viewers and editors

📄 Document viewers and editors

Package Name Description Src

neovim

Text Editor

pacman

code

Open Source build of VSCode

pacman

obsidian

MarkDown Note taker

pacman

pdfarranger

PDF Page Arranger

pacman

xournalpp

PDF Annotation / Drawing

pacman

zathura

PDF Graphical Viewer

pacman

zathura-pdf-poppler

Zathura Poppler Backend

pacman

📁 Archivers and File Manager

📁 Archivers and File Manager

Package Name Description Src

fuse-zip

FUSE mount zip files

pacman

nemo

GUI File Manager

pacman

p7zip

CLI 7 Zip Archiver

pacman

unzip

Unzip .zip archives

pacman

vifm

TUI File Manager

pacman

docx2txt

View .docx files

pacman

odt2txt

View .odt files

pacman

📊 System Monitors and Managers

📊 System Monitors and Managers

Package Name Description Src

nvtop

GPU process monitor

pacman

powertop

Battery usage monitor

pacman

htim

CPU process monitor

aur

🖥️ Terminal

🖥️ Terminal

Package Name Description Src

fish

Modern Shell used as a Commandline

pacman

kitty

best of all terminals out there

pacman

starship

Cross Platform Prompt

pacman

tmux

Terminal Multiplexer

pacman

🖋️ Fonts

🖋️ Fonts

Package Name Description Src

fontconfig

Font Configuration

pacman

noto-fonts

Google Font for Unicode Support

pacman

noto-fonts-cjk

Google Font for Unicode Support

pacman

ttf-jetbrains-mono-nerd

Nerd Font Icons patch

pacman

😀 Emojis

With no emoji fonts installed, all of the emojis should look like boxes. Install any one of the following to use systemwide:

Package Name Description Src

noto-fonts-emoji

Emoji by Google

pacman

ttf-joypixels

High quality emojis

pacman

ttf-twemoji

Emoji by Twitter

yay

  • noto-fonts-emoji emojis are easily distinguishable from each other when font size is small; like on terminals. Uses COLRv1.

  • ttf-twemoji is perfect for bigger font size. Perfect for Web Browsers.

  • ttf-joypixels has that premium feel. Search it up.

My Recommendation: Install ttf-joypixels and noto-fonts-emoji

  • On every GUI apps, high quality ttf-joypixels is used.

  • On Kitty terminal, it will fallback to using noto-fonts-emoji.

To make ttf-twemoji take precedence over noto-fonts-emoji on GUI:
sudo ln -s /usr/share/fontconfig/conf.avail/75-twemoji.conf /etc/fonts/conf.d/
🥃 Screenshot

🥃 Screenshot

Package Name Description Src

grim

Screenshot Utility for Wayland

pacman

slurp

Region Selector for Wayland

pacman

tesseract

OCR Utility

pacman

tesseract-data-eng

Tesseract OCR Data English

pacman

tesseract-data-mal

Tesseract OCR Data Malayalam

pacman

🚙 Extra Utility Tools

Yay - Yet Another Yogurt AUR Helper

sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si

🛎️ Sustained System Services

Service Description

NetworkManager.service

Network connection manager

dhcpcd.service

DHCP/ IPv4LL/ IPv6RA/ DHCPv6 client

keyd.service

A key remapping daemon for linux

💽 Core Computational Configurations

GRUB Bootloader

cyberexs

sudo cp -R ~/.config/GRUB/CyberEXS /boot/grub/themes
sudoedit /etc/default/grub
sudo grub-mkconfig -o /boot/grub/grub.cfg
📝 /etc/default/grub [add]
GRUB_THEME=/boot/grub/themes/CyberEXS/theme.txt
📝 /etc/default/grub [replace]
GRUB_TIMEOUT=1
# Setting "splash" for boot splash screen with plymouth
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet splash"
# Read other EFI with os-prober
GRUB_DISABLE_OS_PROBER=false

Plymouth Splash Screen

cuts alt

sudo cp -R ~/.config/PLYMOUTH/cuts_alt /usr/share/plymouth/themes
sudo plymouth-set-default-theme -R cuts_alt
ℹ️
The splash screen included here is one from the 80+ plymouth splash screens from adi1090x/plymouth-themes.

Usergroups

List all available groups that you can assign:

cat /etc/group
sudo usermod -G wheel,audio,video,power,input,storage midhunter
Group Purpose

wheel

Grants sudo privileges

audio

Access to audio devices

video

Access to GPU and hardware acceleration.

power

Control power states (suspend, reboot, etc.)

input

Access to input devices

storage

Raw access to storage devices

Verify currently active groups:

groups midhunter

KeyD Setup

sudo ln -s ~/.config/keyd/default.conf /etc/keyd/default.conf
systemctl enable keyd.service
systemctl start keyd.service

Sudoers

sudoedit /etc/sudoers
📝 /etc/sudoers [add]
# Sudo Stuff
Defaults timestamp_type=global      # Activate Sudo across terminals
Defaults timestamp_timeout = 10     # Activate Sudo for 10 minutes
Defaults passwd_timeout = 5         # Sudo prompt timeout after 5 minutes
# Login Stuff
Defaults insults                    # Incorrect Password Easteregg
Defaults pwfeedback                 # Visible Password Feedback

Skip Username

sudo mkdir -p /etc/systemd/system/[email protected]/
sudo touch /etc/systemd/system/[email protected]/skip-username.conf
sudoedit /etc/systemd/system/[email protected]/skip-username.conf
📝 /etc/systemd/system/[email protected]/skip-username.conf [add]
[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -- midhunter' --noclear --skip-login - $TERM

or use this line if you want to auto login to a specific user on TTY1

📝 /etc/systemd/system/[email protected]/skip-username.conf [add]
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noissue --autologin 'midhunter' - $TERM

Colorful Pacman

sudoedit /etc/pacman.conf
📝 /etc/pacman.conf [add]
ParallelDownloads = 5
Color
ILoveCandy

Personal Notes

🗒️ Partition Sizes

Partition Recommended Size Max Used

/

> 50G

45G

/boot

= 256M

230M

/tmp (swap)

= 4G

200M

/home

> 128G

40G

🤫 SSH

Create separate SSH keys for separate stuff.

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519          # Personal Key
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_company  # Work Key

Work-Life Separation (Multiple GitHub Accounts)

📝 $HOME/.ssh/config
Host github.com
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

Host github-company
  IdentityFile ~/.ssh/id_ed25519_company
  IdentitiesOnly yes
📝 $HOME/.gitconfig-company
[url "git@github-company:"]
  insteadOf = [email protected]:
  insteadOf = https://github.com/
📝 $HOME/.gitconfig
[includeIf "gitdir:~/projects/work/"]
  path = ~/.gitconfig-company
  • ~/projects/personal/ → personal account

  • ~/projects/work/ → work account

Now you just clone normally. Git and SSH handle the rest. No more manual switching, no more mistakes.

About

⌨️ Operating System environment focusing on cognitive ergonomics, cohesive keybindings, modal workflow, automation, human augmentation and battery efficiency.

Topics

Resources

License

Stars

Watchers

Forks