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 comfortably 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 comfort without even thinking about keybindings.
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 |
||
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)
windows(Windows)
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 -.SEND.-> intention -.RECV.-> linux & windows
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
keyd --- linux ==Bash Shell==> 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 & cd & git & vos & brs & cat & find & prompt
cd --> ls --> nf
prompt & fish --$VIFM_MODE--> vifm
fish --$editor--> nvim
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 |
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si👢 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 |
localsend-bin |
Air-drop like Local File Transfer |
aur |
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 |
matugen |
Material You Color Generator |
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 |
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 (most likely a decade or two) 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
📁 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/
| 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.txt
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
sudo cp -R ~/.config/PLYMOUTH/cuts_alt /usr/share/plymouth/themes
sudo plymouth-set-default-theme -R cuts_altList 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
sudo ln -s ~/.config/keyd/default.conf /etc/keyd/default.conf systemctl enable keyd.service systemctl start keyd.service
sudoedit /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 Feedback
sudo 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 - $TERM
or use this line if you want to auto login to a specific user on TTY1
[Service] ExecStart= ExecStart=-/sbin/agetty --noissue --autologin 'midhunter' - $TERM
sudoedit /etc/pacman.conf
ParallelDownloads = 5 Color ILoveCandy
dhcpcd 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 dhcpcd
nohook resolv.conf
Tell NetworkManager:
sudoedit /etc/NetworkManager/conf.d/dns.conf sudo systemctl restart NetworkManager
[main] dns=none
Now, 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
Exploring reduction of Cognitive Load by Intent based context switching, Calm technology inspired ambient nudging, Automation and Proactive Computing.
-
Computers and tools should understand context, intent and work for humans.
-
Environment should support cognitive flow, not disrupt or redirect it.
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).
Fig: Window brightness (perceived) adapted to 60% across wallpapers with varying brightness| 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 Key
Host 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.