Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
43fe707
feat: migrate to kojarchy automated installer
princejoogie Feb 10, 2026
29f31b5
docs: rewrite README for kojarchy installer, fix yazi hyprpaper refer…
princejoogie Feb 10, 2026
ac42b4f
feat: add update.sh for reloading configs and document update workflow
princejoogie Feb 10, 2026
2858187
chore: update base packages
princejoogie Feb 10, 2026
cc66c3d
feat: add check-upstream.sh to track omarchy changes via opencode
princejoogie Feb 10, 2026
2c5f204
fix: error handling in run_logged, guard.sh, and optional packages
princejoogie Feb 10, 2026
5faad41
fix: split NVIDIA/virtualization out of base packages, add GPU detection
princejoogie Feb 10, 2026
b79ef79
fix: enable multilib repo before package install (needed for lib32-* …
princejoogie Feb 10, 2026
99807dc
feat: add interactive 4-phase workflow to check-upstream.sh
princejoogie Feb 10, 2026
026bf5f
refactor: simplify check-upstream to single interactive opencode session
princejoogie Feb 10, 2026
d7d0a12
fix: use dev branch for omarchy upstream in check-upstream.sh
princejoogie Feb 10, 2026
2c81bcc
fix: have opencode auto-update baseline hash in check-upstream.sh
princejoogie Feb 10, 2026
7404db7
feat: add mac/ helper scripts for macOS config deployment
princejoogie Feb 10, 2026
8f1eae8
fix: clear stale pacman db lock in preflight guard
princejoogie Feb 10, 2026
f303308
feat: add 11 omarchy-inspired system tweaks and utilities
princejoogie Feb 10, 2026
9f1d0d2
fix: replace -git packages with official repo equivalents
princejoogie Feb 10, 2026
43a195a
feat: add omarchy-inspired system utilities, update system, and hardw…
princejoogie Feb 10, 2026
7f66d4a
feat: consolidate dmenu scripts into bin/ with kojarchy- prefix and a…
princejoogie Feb 10, 2026
6ab484c
fix: replace blender-bin and telegram-desktop-bin with official repo …
princejoogie Feb 10, 2026
98c4dc9
fix: drop adwaita-qt5 and adwaita-qt6, kvantum handles Qt theming
princejoogie Feb 10, 2026
e798587
docs: add archinstall guide, update README with new menu and utility …
princejoogie Feb 10, 2026
7f31cc2
fix: resolve logging/error handling drifts from omarchy audit
princejoogie Feb 10, 2026
567c02b
fix: source finished.sh directly so reboot prompt is visible to user
princejoogie Feb 10, 2026
3f240c5
fix: add temporary NOPASSWD sudoers during install to prevent sudo ti…
princejoogie Feb 10, 2026
3938819
fix: add space in j logo
princejoogie Feb 10, 2026
57fe897
fix: pause log tail during interactive prompts to prevent screen corr…
princejoogie Feb 10, 2026
7af3845
fix: logo
princejoogie Feb 10, 2026
73e063a
fix: replace cargo builds with prebuilt packages to speed up install
princejoogie Feb 10, 2026
6dadfb2
add sudo for chsh
princejoogie Feb 10, 2026
e7597be
fix: standardize fonts on FiraCode, adopt omarchy base packages
princejoogie Feb 10, 2026
e0ccb46
fix: remove printing packages from base
princejoogie Feb 10, 2026
487a29a
fix: waybar style.css
princejoogie Feb 10, 2026
5a09a25
feat: unify Catppuccin Mocha theming across all apps
princejoogie Feb 10, 2026
e6e9929
fix: add PATH to Hyprland envs, fix Kvantum theme name, remove old ke…
princejoogie Feb 10, 2026
b3e2dd0
fix: add delay before screenshot/screenrecord so menu closes first
princejoogie Feb 10, 2026
2dfdfcd
feat: replace gum menu with walker dmenu, add wayfreeze to screenshots
princejoogie Feb 10, 2026
d00a7d6
fix: update fileManager to nautilus in hyprland.conf
princejoogie Feb 10, 2026
4628d2e
fix: symlink GTK4 theme for libadwaita apps (Nautilus, etc.)
princejoogie Feb 10, 2026
7e1154b
feat: migrate power-menu/keybindings to walker, improve nightlight to…
princejoogie Feb 10, 2026
e0d08f3
fix: port main config and tooling updates
princejoogie Apr 12, 2026
7b4ba29
fix: move worktrees skill into config/opencode
princejoogie Apr 12, 2026
a39f977
feat: sync selected omarchy upstream improvements
princejoogie Apr 12, 2026
7b1e703
feat: symlink managed config files
princejoogie Apr 12, 2026
a66d25e
feat: persist waybar and hyprland toggle state
princejoogie Apr 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 1 addition & 12 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,15 +1,4 @@
nvim/.config/nvm/
nvim/.config/gh/
nvim/.config/devcert/
nvim/.config/zsh/
nvim/.config/github-copilot/
nvim/.config/nextjs-nodejs/
nvim/.config/wslu/
nvim/.config/nvim/plugin/
shell/.local/share
shell/.local/state
shell/.local/bin
claude/.claude/
config/nvim/plugin/

.private.sh

Expand Down
317 changes: 257 additions & 60 deletions README.md

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions applications/hidden/avahi-discover.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/bssh.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/btop.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/bvnc.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/cmake-gui.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/cups.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/electron34.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/electron36.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/electron37.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/fcitx5-configtool.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/fcitx5-wayland-launcher.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/java-java-openjdk.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/jconsole-java-openjdk.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/jshell-java-openjdk.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/kbd-layout-viewer5.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/kcm_fcitx5.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/kcm_kaccounts.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/kvantummanager.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/org.fcitx.Fcitx5.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/org.fcitx.fcitx5-config-qt.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/org.fcitx.fcitx5-migrator.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/org.fcitx.fcitx5-qt5-gui-wrapper.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/org.fcitx.fcitx5-qt6-gui-wrapper.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/qv4l2.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/qvidcap.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/uuctl.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/xgps.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
2 changes: 2 additions & 0 deletions applications/hidden/xgpsspeed.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
73 changes: 0 additions & 73 deletions arch-post.sh

This file was deleted.

2 changes: 1 addition & 1 deletion shell/.local/custom/bin/_wt → bin/_wt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ wt_root() {

# Replace $HOME with ~ in a path
wt_short_path() {
case "$1" in
case "$1" in
"$HOME"*) printf '%s' "~${1#"$HOME"}" ;;
*) printf '%s' "$1" ;;
esac
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 4 additions & 0 deletions bin/kojarchy-calculator
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

# Launch wofi calculator
wofi-calc
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
#!/bin/bash

# Open camera feed or show which app is using it

device=$(v4l2-ctl --list-devices | grep -E '/dev/video[0-9]+' | head -n1 | xargs)

Expand All @@ -22,7 +24,7 @@ if [ -n "$pids" ]; then
fi
fi
done

if [ -n "$apps" ]; then
notify-send "Camera" "Camera is in use by:\n$apps"
exit 1
Expand Down
67 changes: 67 additions & 0 deletions bin/kojarchy-cmd-audio-switch
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/bin/bash

# Switch between audio outputs while preserving the mute status.
# Shows volume/mute icon feedback via swayosd.

focused_monitor="$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"

sinks=$(pactl -f json list sinks | jq '[.[] | select((.ports | length == 0) or ([.ports[]? | .availability != "not available"] | any))]')
sinks_count=$(echo "$sinks" | jq '. | length')

if [ "$sinks_count" -eq 0 ]; then
if command -v swayosd-client &>/dev/null; then
swayosd-client \
--monitor "$focused_monitor" \
--custom-message "No audio devices found"
else
notify-send "No audio devices found" -u critical -t 3000
fi
exit 1
fi

current_sink_name=$(pactl get-default-sink)
current_sink_index=$(echo "$sinks" | jq -r --arg name "$current_sink_name" 'map(.name) | index($name)')

if [ "$current_sink_index" != "null" ]; then
next_sink_index=$(((current_sink_index + 1) % sinks_count))
else
next_sink_index=0
fi

next_sink=$(echo "$sinks" | jq -r ".[$next_sink_index]")
next_sink_name=$(echo "$next_sink" | jq -r '.name')

next_sink_description=$(echo "$next_sink" | jq -r '.description')
if [ "$next_sink_description" = "(null)" ] || [ "$next_sink_description" = "null" ] || [ -z "$next_sink_description" ]; then
sink_id=$(echo "$next_sink" | jq -r '.properties."object.id"')
next_sink_description=$(wpctl status | grep -E "\s+\*?\s+${sink_id}\." | sed -E 's/^.*[0-9]+\.\s+//' | sed -E 's/\s+\[.*$//')
fi

next_sink_volume=$(echo "$next_sink" | jq -r \
'.volume | to_entries[0].value.value_percent | sub("%"; "")')
next_sink_is_muted=$(echo "$next_sink" | jq -r '.mute')

if [ "$next_sink_is_muted" = "true" ] || [ "$next_sink_volume" -eq 0 ]; then
icon_state="muted"
elif [ "$next_sink_volume" -le 33 ]; then
icon_state="low"
elif [ "$next_sink_volume" -le 66 ]; then
icon_state="medium"
else
icon_state="high"
fi

next_sink_volume_icon="sink-volume-${icon_state}-symbolic"

if [ "$next_sink_name" != "$current_sink_name" ]; then
pactl set-default-sink "$next_sink_name"
fi

if command -v swayosd-client &>/dev/null; then
swayosd-client \
--monitor "$focused_monitor" \
--custom-message "$next_sink_description" \
--custom-icon "$next_sink_volume_icon"
else
notify-send "Audio Output" "$next_sink_description" -t 2000
fi
13 changes: 13 additions & 0 deletions bin/kojarchy-cmd-reboot
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash

# Gracefully close all Hyprland windows before rebooting.
# Schedules reboot, then closes windows to give apps time to save state.

kojarchy-state clear re*-required

# Schedule the reboot to happen after closing windows (detached from terminal)
nohup bash -c "sleep 2 && systemctl reboot --no-wall" >/dev/null 2>&1 &

# Now close all windows
kojarchy-hyprland-window-close-all
sleep 1 # Allow apps like Chrome to shutdown correctly
89 changes: 89 additions & 0 deletions bin/kojarchy-cmd-screenrecord
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
#!/bin/bash

# Start and stop a screen recording, saved to ~/Videos by default.
# Alternative location can be set via KOJARCHY_SCREENRECORD_DIR or XDG_VIDEOS_DIR.

[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${KOJARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}"

if [[ ! -d "$OUTPUT_DIR" ]]; then
mkdir -p "$OUTPUT_DIR" || {
notify-send "Screen recording directory does not exist: $OUTPUT_DIR" -u critical -t 3000
exit 1
}
fi

DESKTOP_AUDIO="false"
MICROPHONE_AUDIO="false"
STOP_RECORDING="false"

for arg in "$@"; do
case "$arg" in
--with-desktop-audio) DESKTOP_AUDIO="true" ;;
--with-microphone-audio) MICROPHONE_AUDIO="true" ;;
--stop-recording) STOP_RECORDING="true" ;;
esac
done

start_screenrecording() {
local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
local audio_args=""

if [[ "$DESKTOP_AUDIO" == "true" ]] || [[ "$MICROPHONE_AUDIO" == "true" ]]; then
local audio_devices=""
[[ "$DESKTOP_AUDIO" == "true" ]] && audio_devices+="default_output"
if [[ "$MICROPHONE_AUDIO" == "true" ]]; then
[[ -n "$audio_devices" ]] && audio_devices+="|"
audio_devices+="default_input"
fi
audio_args="-a $audio_devices"
fi

if command -v gpu-screen-recorder &>/dev/null; then
gpu-screen-recorder -w portal -f 60 -fallback-cpu-encoding yes -o "$filename" $audio_args -ac aac &
elif command -v wf-recorder &>/dev/null; then
local wf_audio=""
[[ "$DESKTOP_AUDIO" == "true" ]] && wf_audio="--audio"
wf-recorder $wf_audio -f "$filename" &
else
notify-send "No screen recorder found" "Install gpu-screen-recorder or wf-recorder" -u critical -t 3000
exit 1
fi

notify-send "Screen recording started" -t 2000
}

stop_screenrecording() {
if pgrep -f "^gpu-screen-recorder" >/dev/null; then
pkill -SIGINT -f "^gpu-screen-recorder"
elif pgrep -f "^wf-recorder" >/dev/null; then
pkill -SIGINT -f "^wf-recorder"
fi

# Wait up to 5 seconds for clean exit
local count=0
while (pgrep -f "^gpu-screen-recorder" >/dev/null || pgrep -f "^wf-recorder" >/dev/null) && [ $count -lt 50 ]; do
sleep 0.1
count=$((count + 1))
done

if pgrep -f "^gpu-screen-recorder" >/dev/null || pgrep -f "^wf-recorder" >/dev/null; then
pkill -9 -f "^gpu-screen-recorder" 2>/dev/null
pkill -9 -f "^wf-recorder" 2>/dev/null
notify-send "Screen recording error" "Recording had to be force-killed. Video may be corrupted." -u critical -t 5000
else
notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000
fi
}

screenrecording_active() {
pgrep -f "^gpu-screen-recorder" >/dev/null || pgrep -f "^wf-recorder" >/dev/null
}

if screenrecording_active; then
stop_screenrecording
elif [[ "$STOP_RECORDING" == "false" ]]; then
start_screenrecording
else
exit 1
fi
Loading