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
-
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.
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: An implementation of Proactive computing where you simply state your intent and let your computer change and modify its environment to adapt to your intention. Abstracts away Operating Systems to use it as specialized environment for a specific intent.
Adaptive Window Contrast: An adaptive interface design solution for UI contrast issues with transparent windows. It makes the window text readable against both light and dark wallpapers by detecting the brightness of the Wallpaper and adjusting the perceived transparency of the window (via blur brightness + contrast).
Click the links below for a detailed documentation.
| Name | Description | Preview |
|---|---|---|
Keyboard Layout/Mapping |
||
File Manager |
||
TUI Code Editor |
||
Web Browser |
||
Shell |
||
Terminal Multiplexer |
||
PDF Frontend |
||
Music Visualizer |
||
Image Viewer |
||
App Launcher |
||
Wayland Compositor |
||
Terminal Emulator |
||
TUI Git Frontend |
||
Video Player |
||
Scripts |
||
Shell Prompt Engine |
||
GUI Code Editor |
||
Status Bar |
||
Logout Menu |
🔴 |
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{<a href='https://github.com/MidHunterX/Hunter-OS?tab=readme-ov-file#-grub-bootloader'>GRUB</a>}
keyd{{<a href='https://github.com/MidHunterX/Hunter-OS/tree/master/.config/keyd/'>KeyD</a>}}
end
intention --> grub --> linux & windows
linux --> 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>)
kitty(<a href='https://github.com/MidHunterX/Hunter-OS/tree/master/.config/kitty/'>Kitty</a>)
end
linux ==> hypr
swww{{🔴 swww}}
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/NvME'>NeoVim</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
hypr --startup--> expression --> swww --wayland--> hypr
hypr --startup--> swww & waybar
waybar --submap--> hypr
run --> tmux & nvim
kitty --scrollback pager--> nvim
kitty --default shell--> fish
fish --> ls & vifm & nvim & cd & git & vos & brs & cat & find & prompt
cd --> ls --> nf
prompt & fish --$VIFM_MODE--> vifm
vifm --> ls & exif & nf
vifm --syntax highlighting--> syntax
vifm --file search--> fzf & find
nvim --vifm.vim--> vifm
vifm --$editor--> nvim
nvim --> nf & find & git & grep
nvim --graphics_protocol--> kitty
waybar --> volume & brillo & nf
vos --> volume
brs --> brillo
Click the following categories to toggle the list of packages in that category.
🐧 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
| 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
| 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
| 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
| 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
| 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 |
| 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 |
| Package Name | Description | Src |
|---|---|---|
feh |
Image Viewer - Super light weight |
pacman |
nomacs |
Image Viewer - Touch screen friendly |
aur |
🌐 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 |
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 |
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
| 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 |
swayosd |
On Screen Display Window |
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
| 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
| Package Name | Description | Src |
|---|---|---|
neovim |
Text Editor |
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 |
vscodium-bin |
Open Source build of VSCode |
yay |
📁 Archivers and File Manager
📊 System Monitors and Managers
🖥️ Terminal
🖋️ 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 |
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.
sudo ln -s /usr/share/fontconfig/conf.avail/75-twemoji.conf /etc/fonts/conf.d/🥃 Screenshot
| Service Name | Description |
|---|---|
dhcpcd.service |
DHCP/ IPv4LL/ IPv6RA/ DHCPv6 client |
NetworkManager.service |
Network connection manager |
A key remapping daemon for linux |
|
swayosd-libinput-backend.service |
Libinput daemon for sway OSD server |
systemctl enable <Service_Name>sudo cp -R ~/.config/GRUB/CyberEXS /boot/grub/themes
sudoedit /etc/default/grub
sudo grub-mkconfig -o /boot/grub/grub.cfgGRUB_THEME=/boot/grub/themes/CyberEXS/theme.txtGRUB_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=falsesudo 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. |
List all available groups that you can assign:
cat /etc/groupsudo 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 midhuntersudo ln -s ~/.config/keyd/default.conf /etc/keyd/default.conf
systemctl enable keyd.service
systemctl start keyd.servicesudoedit /etc/sudoers# 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 Feedbacksudo mkdir -p /etc/systemd/system/getty@tty1.service.d/
sudo touch /etc/systemd/system/getty@tty1.service.d/skip-username.conf
sudoedit /etc/systemd/system/getty@tty1.service.d/skip-username.conf[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -- midhunter' --noclear --skip-login - $TERMor use this line if you want to auto login to a specific user on TTY1
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noissue --autologin 'midhunter' - $TERMsudoedit /etc/pacman.confParallelDownloads = 5
Color
ILoveCandydhcpcd brings up the networking interface (wlp2s0/eth0), assigns IP and other host configurations.
NetworkManager gives tools like nmcli and nmtui to connect to WiFi and manage network related tasks more easily.
Both dhcpcd and NetworkManager have the ability to configure DNS nameservers from your ISP in /etc/resolv.conf.
Since we are going to use our own custom DNS config, we need to tell them both to stop auto-generating DNS configurations.
Tell dhcpcd:
sudoedit /etc/dhcpcd.conf
sudo systemctl restart dhcpcdnohook resolv.confTell NetworkManager:
sudoedit /etc/NetworkManager/conf.d/dns.conf
sudo systemctl restart NetworkManager[main]
dns=noneNow, set all the DNS nameservers you want to use instead.
sudoedit /etc/resolv.conf# Custom static DNS configuration
nameserver 1.1.1.1 # Cloudflare
nameserver 1.0.0.1 # Cloudflare secondary
nameserver 8.8.8.8 # Google
nameserver 8.8.4.4 # Google secondary|
ℹ️
|
systemd-resolved can also set DNS config but since we are not enabling that service, it will not do anything. |
| Partition | Recommended Size | Max Used |
|---|---|---|
/ |
> 50G |
45G |
/boot |
= 256M |
230M |
/tmp (swap) |
= 4G |
200M |
/home |
> 128G |
40G |
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 KeyHost github.com
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
Host github-company
IdentityFile ~/.ssh/id_ed25519_company
IdentitiesOnly yes[url "git@github-company:"]
insteadOf = git@github.com:
insteadOf = https://github.com/[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.



















