Compare commits

...

28 Commits

Author SHA1 Message Date
desolate 075406dfd5 add hardened_malloc package template 2026-06-23 10:07:15 +03:00
desolate 4d4816c775 add odin package template 2026-06-23 10:07:02 +03:00
desolate 037a9bf75c add yazi package template 2026-06-23 10:06:49 +03:00
desolate 76b6aa95c6 add some hardening 2026-06-22 12:22:40 +03:00
desolate 031a79f163 fix typo in wireplumber service script name 2026-06-12 23:00:25 +03:00
desolate de54e28460 restore missed wire plumbering 2026-06-01 13:17:41 +03:00
desolate 556724c5b4 refactor groups assignment to meet existing patterns 2026-06-01 12:42:34 +03:00
desolate 3337df5150 add apparmor parameters to grub 2026-06-01 12:33:20 +03:00
desolate fa4b94ee34 remove service scripts leftovers 2026-06-01 12:17:19 +03:00
desolate 0bef633b6b add network configurations 2026-06-01 10:41:12 +03:00
desolate cb6624f417 add alsa-pipewire package 2026-05-29 15:17:26 +03:00
desolate 9f7779d659 add alsa integration 2026-05-29 15:12:31 +03:00
desolate 41a983fb9f add rtkit package and service 2026-05-29 13:46:51 +03:00
desolate 1be6624a5d fix missing wireplumber sessison 2026-05-29 13:20:43 +03:00
desolate bb9df4eb14 fix mango config typos 2026-05-29 12:44:27 +03:00
desolate 7138a0da41 add xorg-server-xwayland package 2026-05-29 12:44:04 +03:00
desolate ac02b92b12 streamline services installation process 2026-05-29 12:11:35 +03:00
desolate 26c21e0eb5 remove river and sandbar 2026-05-29 10:38:40 +03:00
desolate 100fb11e94 add btop tui key map 2026-05-27 22:59:09 +03:00
desolate 5b1e1f92ba add tmux package and dotfiles 2026-05-27 22:56:43 +03:00
desolate c9399ce79c move mango exec scripts, set up wallpaper 2026-05-25 00:37:38 +03:00
desolate 1e3b32e415 remove nerd fonts package 2026-05-24 23:32:20 +03:00
desolate 1db83dfde5 add satty package 2026-05-24 23:31:36 +03:00
desolate 5690771db8 add wiremix and impalam tui key maps 2026-05-24 16:37:55 +03:00
desolate 84367ee7ae add volume and brightness key bindings to mango 2026-05-23 18:37:45 +03:00
desolate 6cb2f36f65 add screenshots functionallity 2026-05-23 18:03:52 +03:00
desolate e6033c5f3c fix fuzzel background color 2026-05-22 18:46:25 +03:00
desolate db284281b7 add awww package 2026-05-22 18:46:12 +03:00
80 changed files with 573 additions and 338 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ lines=8
inner-pad=8
[colors]
background=#00000000
background=#00000033
text=#888888FF
selection=#BBBBFFFF
selection-text=#000000FF
+21
View File
@@ -0,0 +1,21 @@
#
# Configuration file for GRUB.
#
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Void"
GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=0 apparmor=1 security=apparmor slab_nomerge init_on_alloc=1 init_on_free=1 page_alloc.shuffle=1 pti=on randomize_kstack_offset=on vsyscall=on debugfs=off ipv6.disable=1 random.trust_cpu=off"
# Uncomment to use basic console
#GRUB_TERMINAL_INPUT="console"
# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console
#GRUB_BACKGROUND=/usr/share/void-artwork/splash.png
#GRUB_GFXMODE=1920x1080x32
#GRUB_DISABLE_LINUX_UUID=true
#GRUB_DISABLE_RECOVERY=true
# Uncomment and set to the desired menu colors. Used by normal and wallpaper
# modes only. Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="light-blue/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
+7
View File
@@ -0,0 +1,7 @@
#!/bin/sh
if [ -e /etc/default/grub ]; then
sudo rm /etc/default/grub
fi
install_dotfiles "/" "$DOTFILES_DIR" "grub"
+7
View File
@@ -0,0 +1,7 @@
#!/bin/sh
if [ -e /etc/iwd/main.conf ]; then
sudo rm /etc/iwd/main.conf
fi
install_dotfiles "/" "$DOTFILES_DIR" "iwd"
+7
View File
@@ -0,0 +1,7 @@
#!/bin/sh
if [ -e /var/lib/dbus/machine-id ]; then
sudo rm /var/lib/dbus/machine-id
fi
install_dotfiles "/" "$DOTFILES_DIR" "machine-id"
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
install_dotfiles "$HOME" "$DOTFILES_DIR" "river"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
install_dotfiles "$HOME" "$DOTFILES_DIR" "tmux"
+4 -1
View File
@@ -6,11 +6,14 @@ INSTALLING DOTFILES:
. "$DOTFILES_DIR/install-emptty.sh"
. "$DOTFILES_DIR/install-fuzzel.sh"
. "$DOTFILES_DIR/install-grub.sh"
. "$DOTFILES_DIR/install-ghostty.sh"
. "$DOTFILES_DIR/install-helix.sh"
. "$DOTFILES_DIR/install-iwd.sh"
. "$DOTFILES_DIR/install-machine-id.sh"
. "$DOTFILES_DIR/install-mako.sh"
. "$DOTFILES_DIR/install-mango.sh"
. "$DOTFILES_DIR/install-river.sh"
. "$DOTFILES_DIR/install-scooter.sh"
. "$DOTFILES_DIR/install-tmux.sh"
. "$DOTFILES_DIR/install-yazi.sh"
. "$DOTFILES_DIR/install-zsh.sh"
+12
View File
@@ -0,0 +1,12 @@
[General]
EnableNetworkConfiguration=true
UseDefaultInterface=true
AddressRandomization=network
AddressRandomizationRange=full
[Network]
NameResolvingService=resolvconf
EnableIPv6=false
[Scan]
DisablePeriodicScan=true
@@ -0,0 +1 @@
b08dfa6083e7567a1921a715000001fb
+1 -1
View File
@@ -9,7 +9,7 @@ padding=10
border-size=3
border-radius=6
border-color=#BBBBFFFF
background-color=#00003311
background-color=#44443311
text-color=#BBBBFFFF
default-timeout=5000
@@ -10,10 +10,27 @@ bind=ALT+SHIFT,r,reload_config
bind=Alt,space,spawn,fuzzel
bind=Alt,Return,spawn,ghostty
# screenshot
bind=NONE,Print,spawn,$HOME/.config/mango/scripts/screenshot/fullscreen.sh
bind=NONE,XF86SelectiveScreenshot,spawn,$HOME/.config/mango/scripts/screenshot/region.sh
# exit
bind=SUPER,m,quit
bind=ALT,q,killclient,
# volume
bind=NONE,XF86AudioRaiseVolume,spawn,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bind=NONE,XF86AudioLowerVolume,spawn,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bind=NONE,XF86AudioMute,spawn,wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bind=SUPER,a,spawn,$HOME/.config/mango/scripts/tui/wiremix.sh
bind=SUPER,w,spawn,$HOME/.config/mango/scripts/tui/impala.sh
bind=SUPER,b,spawn,$HOME/.config/mango/scripts/tui/btop.sh
# brightness
bind=NONE,XF86MonBrightnessUp,spawn,light -A 5
bind=NONE,XF86MonBrightnessDown,spawn,light -U 5
# switch window focus
bind=SUPER,Tab,focusstack,next
bind=ALT,Left,focusdir,left
+2 -2
View File
@@ -1,7 +1,7 @@
# https://mangowm.github.io/docs/
exec-once=~/.config/mango/exec-once.sh
exec=~/.config/mango/exec.sh
exec-once=~/.config/mango/scripts/exec-once.sh
exec=~/.config/mango/scripts/exec.sh
source=./input/keyboard.conf
source=./input/mouse.conf
@@ -1,6 +0,0 @@
#!/bin/sh
pkill -9 pipewire
pipewire &
awww-daemon &
@@ -58,7 +58,7 @@ left_handed=0
middle_button_emulation=0
# Minimum swipe threshold when use gesture.
min_swipe_threshold=1
swipe_min_threshold=1
# 0 — 1/2/3 finger tap maps to left / right / middle.
# 1 — 1/2/3 finger tap maps to left / middle / right.
+3 -3
View File
@@ -6,10 +6,10 @@ blur=1
# Enable blur for layer surfaces (like bars/docks).
blur_layer=1
i# Caches the wallpaper and blur background, significantly reducing GPU usage.
# Caches the wallpaper and blur background, significantly reducing GPU usage.
# Disabling it will significantly increase GPU consumption and may cause rendering lag.
# Highly recommended.
blur_optimized=1
blur_optimized=0
# The strength (radius) of the blur.
blur_params_radius=10
@@ -17,7 +17,7 @@ blur_params_radius=10
# Number of passes. Higher = smoother but more expensive.
blur_params_num_passes=3
Blur noise level.
# Blur noise level.
blur_params_noise=0.02
# Blur brightness adjustment.
@@ -1,7 +1,8 @@
# https://mangowm.github.io/docs/visuals/theming#colors
# Background color of the root window
rootcolor=0x201B14FF
# rootcolor=0x201B14FF
rootcolor=0x000024FF
# Inactive window border
bordercolor=0x5555CCFF
@@ -1,4 +1,4 @@
# https://mangowm.github.io/docs/window-management/rules#layer-rules
layerrule=animation_type_open:zoom,layer_name:rofi
layerrule=animation_type_close:zoom,layer_name:rofi
# No blur or animation for slurp selection layer (avoids occlusion and ghosting in screenshots)
layerrule=noanim:1,noblur:1,layer_name:selection
@@ -1 +1,7 @@
# https://mangowm.github.io/docs/window-management/rules#window-rules
windowrule=noblur:1,appid:slurp
windowrule=isfloating:1,appid:satty
windowrule=isfloating:1,animation_type_open:fade,animation_type_close:fade,appid:ghostty,title:d.wiremix
windowrule=isfloating:1,animation_type_open:fade,animation_type_close:fade,appid:ghostty,title:d.impala
windowrule=isfloating:1,animation_type_open:fade,animation_type_close:fade,appid:ghostty,title:d.btop
+16
View File
@@ -0,0 +1,16 @@
#!/bin/sh
pkill -9 pipewire
pipewire &
sleep 0.25
pkill -9 wireplumber
wireplumber &
awww-daemon --no-cache &
if [ -f ~/.desolate/wallpaper/image.jpg ]; then
sleep 0.25
awww img ~/.desolate/wallpaper/image.jpg
fi
+19
View File
@@ -0,0 +1,19 @@
#!/bin/sh
set -eu pipefail
TARGET_DIR="$HOME/screenshots"
TARGET_FILE="$(date +%Y-%m-%d-%H%M%S-%2N).png"
TARGET_PATH="$TARGET_DIR/$TARGET_FILE"
ensure_target_dir()
{
if [ ! -d "$TARGET_DIR" ]; then
mkdir -p "$TARGET_DIR"
fi
}
is_slurping()
{
pgrep -x slurp >/dev/null
}
@@ -0,0 +1,11 @@
#!/bin/sh
set -eu pipefail
. ~/.config/mango/scripts/screenshot/common.sh
ensure_target_dir
grim - | satty --filename - \
--output-filename "$TARGET_PATH" \
--actions-on-enter "save-to-file","save-to-clipboard","exit" \
--actions-on-escape "save-to-clipboard","exit" \
--copy-command "wl-copy --type image/png" \
+17
View File
@@ -0,0 +1,17 @@
#!/bin/sh
set -eu pipefail
. ~/.config/mango/scripts/screenshot/common.sh
if is_slurping; then
exit 1
fi
ensure_target_dir
geometry=$(slurp -d); [ -z "$geometry" ] && exit 1
grim -g "$geometry" - | satty --filename - \
--output-filename "$TARGET_PATH" \
--actions-on-enter "save-to-file","save-to-clipboard","exit" \
--actions-on-escape "save-to-clipboard","exit" \
--copy-command "wl-copy --type image/png" \
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
set -eu pipefail
$HOME/.config/mango/scripts/tui/run.sh "btop"
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
set -eu pipefail
$HOME/.config/mango/scripts/tui/run.sh "impala"
+7
View File
@@ -0,0 +1,7 @@
#!/bin/sh
tui=$1
if ! pgrep -x "$tui" >/dev/null; then
ghostty --title="d.$tui" -e "$tui"
fi
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
set -eu pipefail
$HOME/.config/mango/scripts/tui/run.sh "wiremix"
-17
View File
@@ -1,17 +0,0 @@
#!/bin/sh
FIFO="$XDG_RUNTIME_DIR/sandbar"
[ -e "$FIFO" ] && rm -f "$FIFO"
mkfifo "$FIFO"
while cat "$FIFO"; do :; done | sandbar \
-font "Hack Nerd Font:size=15" \
-active-fg-color "#000000ff" \
-active-bg-color "#ccccccff" \
-inactive-fg-color "#888888ff" \
-inactive-bg-color "#000000ff" \
-urgent-fg-color "#000000" \
-urgent-bg-color "#cc241d" \
-title-fg-color "#aaaaaa" \
-title-bg-color "#000000ff" \
-vertical-padding 4
-24
View File
@@ -1,24 +0,0 @@
#!/bin/sh
# Tiled Layout
rivertile -view-padding 4 -outer-padding 0 -main-ratio 0.5 &
riverctl default-layout rivertile
riverctl default-attach-mode above
# Move cursor to the center of focused window
riverctl set-cursor-warp on-focus-change
. "$HOME/.config/river/init-keymaps"
. "$HOME/.config/river/init-input"
# Background Color
riverctl background-color 0x000000
pkill -9 pipewire
riverctl spawn 'pipewire'
riverctl spawn 'mako'
riverctl spawn "$HOME/.config/river/bar"
riverctl spawn "$HOME/.config/river/status"
-13
View File
@@ -1,13 +0,0 @@
#!/bin/sh
riverctl set-repeat 50 180
riverctl keyboard-layout -options ctrl:nocaps us
for device in $(riverctl list-inputs | grep -i touchpad); do
riverctl input "$device" tap-button-map left-right-middle
riverctl input "$device" tap enabled
riverctl input "$device" scroll-method two-finger
riverctl input "$device" natural-scroll enabled
riverctl input "$device" drag enabled
riverctl input "$device" disable-while-typing disabled
done
-64
View File
@@ -1,64 +0,0 @@
#!/bin/sh
# ---------------------
# MOUSE
# ---------------------
riverctl map-pointer normal Super BTN_LEFT move-view
riverctl map-pointer normal Super BTN_RIGHT resize-view
riverctl map-pointer normal Super BTN_MIDDLE toggle-float
# ---------------------
# KEYBOARD
# ---------------------
mod=Mod1
riverctl map normal $mod Return spawn 'sh -c "ghostty & sleep 0.2 && riverctl focus-view next"'
riverctl map normal $mod Space spawn 'fuzzel'
riverctl map normal $mod q close
riverctl map normal $mod m spawn 'riverctl exit'
riverctl map normal $mod+Shift l spawn 'waylock -init-color 0x000000 -input-color 0x111111 -fail-color 0x220000'
riverctl map normal $mod f toggle-float
# Screenshots
riverctl map normal None Print spawn '
FILE_NAME=$(date +"%Y-%m-%d-%H-%M-%S") &&
FILE="$HOME/$FILE_NAME.png" &&
grim - | wl-copy --type image/png &&
wl-paste --type image/png > "$FILE" &&
notify-send --icon="$FILE" "$FILE_NAME" "Full screen shot saved and copied"
'
riverctl map normal None XF86SelectiveScreenshot spawn '
FILE_NAME=$(date +"%Y-%m-%d-%H-%M-%S") &&
FILE="$HOME/$FILE_NAME.png" &&
grim -g "$(slurp)" - | wl-copy --type image/png &&
wl-paste --type image/png > "$FILE" &&
notify-send --icon="$FILE" "$FILE_NAME" "Screen region shot saved and copied"
'
# Volume
riverctl map normal None XF86AudioRaiseVolume spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+'
riverctl map normal None XF86AudioLowerVolume spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-'
riverctl map normal None XF86AudioMute spawn 'wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle'
# Brightness
riverctl map normal None XF86MonBrightnessUp spawn 'light -A 5'
riverctl map normal None XF86MonBrightnessDown spawn 'light -U 5'
# Navigation
riverctl map normal $mod h focus-view left
riverctl map normal $mod j focus-view down
riverctl map normal $mod k focus-view up
riverctl map normal $mod l focus-view right
riverctl map normal $mod Tab focus-view previous
riverctl map normal $mod+Shift Tab focus-view next
# Tags Navigation
for i in $(seq 1 9); do
tag=$((1 << ($i - 1)))
riverctl map normal $mod $i set-focused-tags $tag
riverctl map normal $mod+Shift $i spawn "riverctl set-view-tags $tag && riverctl set-focused-tags $tag"
done
-88
View File
@@ -1,88 +0,0 @@
#!/bin/env sh
MEM_FG_C="#CD95D7"
CPU_FG_C="#9EA7D9"
BAT_FG_C="#AED481"
VOL_FG_C="#EEEEEE"
BRG_FG_C="#FFCA28"
DAT_FG_C="#FE8964"
TIM_FG_C="#FE8964"
# 
cpu()
{
cpu=$(top -bn1 | awk '/Cpu\(s\):/ {print $2 + $4 "%"}')
}
memory()
{
memory=$(free -m | awk '/^Mem:/ {printf "%.1f", $3/2024}')
}
disk() {
disk="$(df -h | awk 'NR==2{print $4}')"
}
cdate()
{
cdate="$(date "+%a %d %b")"
}
ctime()
{
ctime="$(date "+%I:%M:%S %p")"
}
battery()
{
# read -r bat_status </sys/class/power_supply/BAT0/status
read -r bat_capacity </sys/class/power_supply/BAT0/capacity
battery="$bat_capacity"
}
vol()
{
vol=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{printf "%.0f\n", $2*100}')
}
brightness()
{
brightness=$(light -G | awk '{print int($1)}')
}
display()
{
memory_str="^fg($MEM_FG_C) $memory^fg()"
cpu_str="^fg($CPU_FG_C) $cpu^fg()"
battery_str="^fg($BAT_FG_C)󰁹$battery^fg()"
volume_str="^fg($VOL_FG_C)󰋋 $vol^fg()"
brightness_str="^fg($BRG_FG_C)󰛨 $brightness^fg()"
date_str="^fg($DAT_FG_C)󰃭 $cdate^fg()"
time_str="^fg($TIM_FG_C)󰥔 $ctime^fg()"
echo "all status $memory_str $cpu_str $battery_str $volume_str $brightness_str $date_str $time_str" >"$FIFO"
}
printf "%s" "$$" > "$XDG_RUNTIME_DIR/status_pid"
FIFO="$XDG_RUNTIME_DIR/sandbar"
[ -e "$FIFO" ] || mkfifo "$FIFO"
sec=0
while true; do
sleep 1 &
wait && {
[ $((sec % 1)) -eq 0 ] && memory
[ $((sec % 1)) -eq 0 ] && cpu
# [ $((sec % 1)) -eq 0 ] && disk
[ $((sec % 60)) -eq 0 ] && battery
[ $((sec % 1)) -eq 0 ] && vol
[ $((sec % 1)) -eq 0 ] && brightness
[ $((sec % 1)) -eq 0 ] && cdate
[ $((sec % 1)) -eq 0 ] && ctime
[ $((sec % 1)) -eq 0 ] && display
sec=$((sec + 1))
}
done
+7
View File
@@ -0,0 +1,7 @@
#!/bin/sh
set -eu pipefail
read -r bat_capacity </sys/class/power_supply/BAT0/capacity
battery="$bat_capacity"
echo "$battery"
+6
View File
@@ -0,0 +1,6 @@
#!/bin/sh
set -eu pipefail
brightness=$(light -G | awk '{print int($1)}')
echo "$brightness"
+5
View File
@@ -0,0 +1,5 @@
#!/bin/sh
set -eu pipefail
cpu=$(top -bn1 | awk '/Cpu\(s\):/ {print $2 + $4}' | tr -d '\n')
echo "$cpu"
+6
View File
@@ -0,0 +1,6 @@
#!/bin/sh
set -eu pipefail
date="$(date "+%a %d %b")"
echo "$date"
+6
View File
@@ -0,0 +1,6 @@
#!/bin/sh
set -eu pipefail
memory=$(free -m | awk '/^Mem:/ {printf "%.1f", $3/1024}')
echo "$memory"
+6
View File
@@ -0,0 +1,6 @@
#!/bin/sh
set -eu pipefail
time="$(date "+%I:%M %p")"
echo "$time"
+123
View File
@@ -0,0 +1,123 @@
# Enable 256-color and true-color (24-bit) support in tmux
set -g default-terminal "screen-256color" # Set terminal type for 256-color support
set -ga terminal-overrides ",*256col*:Tc" # Override to enable true-color for compatible terminals
unbind r
bind r source-file ~/.config/tmux/tmux.conf
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R
set-option -g status-position top
set -g mouse on
set -g set-clipboard on
set -g status-interval 1
set -g detach-on-destroy off
# Enable vi mode to allow vim movements
set-window-option -g mode-keys vi
# Start selecting text with "v"
bind-key -T copy-mode-vi 'v' send -X begin-selection
# Copy text with "y"
bind -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel "pbcopy"
# Do not exit copy mode when dragging with mouse
unbind -T copy-mode-vi MouseDragEnd1Pane
# Start windows and panes at 1 instead of 0
set -g base-index 1
set -g pane-base-index 1
set -g renumber-windows on # automatically renumber windows when one is closed
# DATA
cpu="#(~/.config/tmux/cpu.sh)"
mem="#(~/.config/tmux/mem.sh)"
bat="#(~/.config/tmux/bat.sh)"
volume="#(~/.config/tmux/volume.sh)"
bright="#(~/.config/tmux/brightness.sh)"
date="#(~/.config/tmux/date.sh)"
time="#(~/.config/tmux/time.sh)"
# STYLE
c_status_bg="default"
c_status_fg="#CCCCCC"
c_status_left_bg=$c_status_bg
c_status_left_fill="#A3BE8C"
c_status_left_fg="#000000"
c_session_bg=$c_status_left_bg
c_session_fill=$c_status_left_fill
c_session_fg=$c_status_left_fg
c_status_middle_bg=$c_status_bg
c_window_current_bg=$c_status_middle_bg
c_window_current_fill="#88C0D0"
c_window_current_fg="#000000"
c_window_bg=$c_status_middle_bg
c_window_fill="#224444"
c_window_fg="#88C0D0"
c_status_right_bg=$c_status_bg
c_status_right_fill="#CD96CD"
c_status_right_fg="#242424"
c_cpu_bg=$c_status_right_fill
c_cpu_fg=$c_status_right_fg
c_mem_bg=$c_status_right_fill
c_mem_fg=$c_status_right_fg
c_batt_bg=$c_status_right_fill
c_batt_fg=$c_status_right_fg
c_volume_bg=$c_status_right_fill
c_volume_fg=$c_status_right_fg
c_bright_bg=$c_status_right_fill
c_bright_fg=$c_status_right_fg
c_date_bg="#ABABAB"
c_date_fg=$c_status_right_fg
c_time_bg="#ABABAB"
c_time_fg=$c_status_right_fg
c_message_bg="#EEB422"
c_message_fg="#111111"
c_mode_bg="#CD96CD"
c_mode_fg="#101010"
c_pane_border="#5D478B"
c_pane_active_border="#B452CD"
session_pill="#[fg=${c_session_fg},bg=${c_session_fill}]  #S #[fg=${c_session_fill},bg=${c_session_bg}]"
window_current_pill="#[fg=${c_window_current_fill}]#[fg=${c_window_current_fg},bg=${c_window_current_fill}] #I #W #[fg=${c_window_current_fill},bg=${c_window_current_bg}]"
window_pill="#[fg=${c_window_fill}]#[fg=${c_window_fg},bg=${c_window_fill}] #I #W #[fg=${c_window_fill},bg=${c_window_bg}]"
cpu_pill="#[fg=${c_cpu_bg}]#[fg=${c_cpu_fg},bg=${c_cpu_bg}] ${cpu}%#[fg=${c_cpu_bg},bg=${c_status_right_bg}]"
mem_pill="#[fg=${c_mem_bg}]#[fg=${c_mem_fg},bg=${c_mem_bg}] ${mem}G#[fg=${c_mem_bg},bg=${c_status_right_bg}]"
batt_pill="#[fg=${c_batt_bg}]#[fg=${c_batt_fg},bg=${c_batt_bg}] ${bat}%#[fg=${c_batt_bg},bg=${c_status_right_bg}]"
volume_pill="#[fg=${c_volume_bg}]#[fg=${c_volume_fg},bg=${c_volume_bg}]󰋋 ${volume}%#[fg=${c_volume_bg},bg=${c_status_right_bg}]"
bright_pill="#[fg=${c_bright_bg}]#[fg=${c_bright_fg},bg=${c_bright_bg}]󰛨 ${bright}%#[fg=${c_bright_bg},bg=${c_status_right_bg}]"
date_pill="#[fg=${c_date_bg}]#[fg=${c_date_fg},bg=${c_date_bg}]󰃭 ${date}#[fg=${c_date_bg},bg=${c_status_right_bg}]"
time_pill="#[fg=${c_time_bg}]#[fg=${c_time_fg},bg=${c_time_bg}]󰥔 ${time}#[fg=${c_time_bg},bg=${c_status_right_bg}]"
set -g status-justify centre
set -g status-left-length 200
set -g status-right-length 200
set -g status-style "fg=${c_status_fg},bg=${c_status_bg}"
set -g status-left ${session_pill}
set -g status-right "${cpu_pill} ${mem_pill} ${batt_pill} ${volume_pill} ${bright_pill} ${date_pill} ${time_pill}"
set -g window-status-current-format $window_current_pill
set -g window-status-format $window_pill
set -g message-style "fg=${c_message_fg},bg=${c_message_bg}"
set -g mode-style "fg=${c_mode_fg},bg=${c_mode_bg}"
set -g pane-border-style "fg=${c_pane_border}"
set -g pane-active-border-style "fg=${c_pane_active_border}"
# Enable second level status line and make it empty
set -g status 2
set -g status-format[1] ''
+6
View File
@@ -0,0 +1,6 @@
#!/bin/sh
set -eu pipefail
volume=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{printf "%.0f\n", $2*100}')
echo "$volume"
+2 -2
View File
@@ -6,11 +6,11 @@ gum style --foreground 4 "
ASSIGNING GROUPS:
"
for file in "$GROUPS_DIR"/*; do
for file in "$GROUPS_DIR"/*.group; do
[ ! -f "$file" ] && continue
group="$(basename "$file")"
group="$(basename "${file%.group}")"
if sudo usermod -aG $group $USER; then
gum style --foreground 10 "$group"
View File
View File
-30
View File
@@ -25,15 +25,7 @@ install_service()
local service="$1"
if [ -e "/var/service/$service" ]; then
sudo rm -rf "/var/service/$service"
fi
if sudo ln -s "/etc/sv/$service" "/var/service/"; then
if [ ! -f "/etc/sv/$service/down" ]; then
sudo touch "/etc/sv/$service/down"
fi
gum style --foreground 10 "$service"
else
gum style --foreground 9 "$service"
@@ -56,28 +48,6 @@ remove_service()
fi
}
run_service()
{
if [ "$#" -eq 0 ]; then
echo echo "✗ no service provided!"
return 1
fi
local service="$1"
if [ -f "/etc/sv/$service/down" ]; then
sudo rm "/etc/sv/$service/down"
fi
if sudo sv up "$service"; then
gum style --foreground 10 "$service"
else
gum style --foreground 9 "$service"
fi
}
install_dotfiles()
{
if [ $# -ne 3 ]; then
+2 -8
View File
@@ -9,16 +9,10 @@ GROUPS_DIR="$DESOLATE_DIR/groups"
. "$HOME/.desolate/helpers.sh"
. "$PACKAGES_DIR/install.sh"
. "$SERVICES_DIR/install.sh"
. "$DOTFILES_DIR/install.sh"
. "$DESOLATE_DIR/assign-groups.sh"
. "$SERVICES_DIR/run.sh"
. "$GROUPS_DIR/assign.sh"
. "$SERVICES_DIR/install.sh"
gum style --foreground 15 "
Done!
"
if [ -f /tmp/reboot ]; then
sudo rm /tmp/reboot
sudo reboot
fi
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
install_package "alsa-pipewire"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
install_package "awww"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
install_package "impala"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
install_package "iwd"
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
install_package "nerd-fonts"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
install_package "openresolv"
-8
View File
@@ -1,8 +0,0 @@
#!/bin/sh
if install_package "river"; then
if [ ! -d "/run/user/$(id -u)" ]; then
sudo mkdir "/run/user/$(id -u)"
fi
sudo chmod 700 "/run/user/$(id -u)"
fi
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
install_package "rtkit"
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
install_package "sandbar"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
install_package "satty"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
install_package "tmux"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
install_package "xorg-server-xwayland"
-1
View File
@@ -12,7 +12,6 @@ if [ $(command -v zsh) >/dev/null 2>&1 ]; then
gum style --foreground 9 "✗ failed to change shell to zsh: $error"
else
gum style --foreground 15 "✓ changed shell to zsh"
sudo touch /tmp/reboot
fi
fi
fi
+9 -3
View File
@@ -6,7 +6,9 @@ gum style --foreground 4 "
INSTALLING PACKAGES:
"
. "$PACKAGES_DIR/install-alsa-pipewire.sh"
. "$PACKAGES_DIR/install-apparmor.sh"
. "$PACKAGES_DIR/install-awww.sh"
. "$PACKAGES_DIR/install-bash-completion.sh"
. "$PACKAGES_DIR/install-bat.sh"
. "$PACKAGES_DIR/install-btop.sh"
@@ -18,27 +20,31 @@ INSTALLING PACKAGES:
. "$PACKAGES_DIR/install-ghostty.sh"
. "$PACKAGES_DIR/install-grim.sh"
. "$PACKAGES_DIR/install-helix.sh"
. "$PACKAGES_DIR/install-impala.sh"
. "$PACKAGES_DIR/install-iwd.sh"
. "$PACKAGES_DIR/install-less.sh"
. "$PACKAGES_DIR/install-libnotify.sh"
. "$PACKAGES_DIR/install-light.sh"
. "$PACKAGES_DIR/install-mako.sh"
. "$PACKAGES_DIR/install-mangowc.sh"
. "$PACKAGES_DIR/install-mesa-dri.sh"
. "$PACKAGES_DIR/install-nerd-fonts.sh"
. "$PACKAGES_DIR/install-noto-fonts.sh"
. "$PACKAGES_DIR/install-openresolv.sh"
. "$PACKAGES_DIR/install-pipewire.sh"
. "$PACKAGES_DIR/install-ripgrep.sh"
. "$PACKAGES_DIR/install-river.sh"
. "$PACKAGES_DIR/install-sandbar.sh"
. "$PACKAGES_DIR/install-rtkit.sh"
. "$PACKAGES_DIR/install-satty.sh"
. "$PACKAGES_DIR/install-seatd.sh"
. "$PACKAGES_DIR/install-slurp.sh"
. "$PACKAGES_DIR/install-socklog-void.sh"
. "$PACKAGES_DIR/install-stow.sh"
. "$PACKAGES_DIR/install-tmux.sh"
. "$PACKAGES_DIR/install-tree.sh"
. "$PACKAGES_DIR/install-udisks2.sh"
. "$PACKAGES_DIR/install-usbutils.sh"
. "$PACKAGES_DIR/install-waylock.sh"
. "$PACKAGES_DIR/install-wiremix.sh"
. "$PACKAGES_DIR/install-wl-clipboard.sh"
. "$PACKAGES_DIR/install-xorg-server-xwayland.sh"
. "$PACKAGES_DIR/install-yazi.sh"
. "$PACKAGES_DIR/install-zsh.sh"
+6
View File
@@ -0,0 +1,6 @@
#!/bin/sh
if [ -e /etc/resolv.conf ]; then
sudo rm /etc/resolv.conf
fi
install_service "iwd"
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
install_service "river"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
install_service "rtkit"
+31
View File
@@ -0,0 +1,31 @@
#!/bin/sh
if [ ! -d /etc/pipewire/pipewire.conf.d ]; then
sudo mkdir -p /etc/pipewire/pipewire.conf.d
fi
# Session Manager
if [ -e /etc/pipewire/pipewire.conf.d/10-wireplumber.conf ]; then
sudo ln -s /usr/share/examples/wireplumber/10-wireplumber.conf /etc/pipewire/pipewire.conf.d/
fi
# PulseAudio Interface
if [ -e /etc/pipewire/pipewire.conf.d/20-pipewire-pulse.conf ]; then
sudo ln -s /usr/share/examples/pipewire/20-pipewire-pulse.conf /etc/pipewire/pipewire.conf.d/
fi
# ALSA Integration
if [ ! -d /etc/alsa/conf.d ]; then
sudo mkdir -p /etc/alsa/conf.d
fi
if [ -e /usr/share/alsa/alsa.conf.d/50-pipewire.conf ]; then
sudo ln -s /usr/share/alsa/alsa.conf.d/50-pipewire.conf /etc/alsa/conf.d/
fi
if [ -e /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf ]; then
sudo ln -s /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d/
fi
+5 -1
View File
@@ -8,7 +8,11 @@ INSTALLING SERVICES:
. "$SERVICES_DIR/install-chronyd.sh"
. "$SERVICES_DIR/install-dbus.sh"
. "$SERVICES_DIR/install-emptty.sh"
. "$SERVICES_DIR/install-iwd.sh"
. "$SERVICES_DIR/install-rtkit.sh"
. "$SERVICES_DIR/install-seatd.sh"
. "$SERVICES_DIR/install-socklog-unix.sh"
. "$SERVICES_DIR/install-nanoklogd.sh"
. "$SERVICES_DIR/install-wireplumber.sh"
. "$SERVICES_DIR/install-emptty.sh"
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
run_service "chronyd"
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
run_service "dbus"
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
run_service "emptty"
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
run_service "nanoklogd"
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
run_service "seatd"
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
run_service "socklog-unix"
-16
View File
@@ -1,16 +0,0 @@
if [ ! -d /etc/pipewire/pipewire.conf.d ]; then
sudo mkdir -p /etc/pipewire/pipewire.conf.d
fi
# Session Manager
if [ ! -e /etc/pipewire/pipewire.conf.d/10-wireplumber.conf ]; then
sudo ln -s /usr/share/examples/wireplumber/10-wireplumber.conf /etc/pipewire/pipewire.conf.d/
fi
# PulseAudio Interface
if [ ! -e /etc/pipewire/pipewire.conf.d/20-pipewire-pulse.conf ]; then
sudo ln -s /usr/share/examples/pipewire/20-pipewire-pulse.conf /etc/pipewire/pipewire.conf.d/
fi
-15
View File
@@ -1,15 +0,0 @@
#!/bin/sh
sudo true
gum style --foreground 4 "
RUNNING SERVICES:
"
. "$SERVICES_DIR/run-chronyd.sh"
. "$SERVICES_DIR/run-dbus.sh"
. "$SERVICES_DIR/run-emptty.sh"
. "$SERVICES_DIR/run-seatd.sh"
. "$SERVICES_DIR/run-wireplumber.sh"
. "$SERVICES_DIR/run-socklog-unix.sh"
. "$SERVICES_DIR/run-nanoklogd.sh"
+32
View File
@@ -0,0 +1,32 @@
The shared library will be installed at:
/usr/lib/libhardened_malloc.so
/usr/lib/libhardened_malloc-light.so
It's will NOT become active on its own. To enable it system-wide, you must preload it.
1. Test it first! Make sure a normal binary still runs:
LD_PRELOAD=/usr/lib/libhardened_malloc.so /bin/true && echo OK
LD_PRELOAD=/usr/lib/libhardened_malloc-light.so /bin/true && echo OK
If that prints OK, the library loads cleanly on this system.
2. Enable system-wide by adding this single line to /etc/ld.so.preload
(create if file doesn't exist):
/usr/lib/libhardened_malloc.so
for light variant:
/usr/lib/libhardened_malloc-light.so
Per-process alternative (safer to trial): just export LD_PRELOAD as above
for the programs you want, instead of editing ld.so.preload.
################ WARNING ################
/etc/ld.so.preload is loaded by EVERY dynamically-linked program.
If provided .so files are ever missing or broken while listed there, essential
tools (your shell, sudo , xbps) may fail to start and you can lock
yourself out of a running system.
+25
View File
@@ -0,0 +1,25 @@
# Template file for 'hardened_malloc'
pkgname=hardened_malloc
version=14
revision=1
build_style=gnu-makefile
short_desc="Hardened memory allocator from GrapheneOS"
maintainer="desolate.land"
license="MIT"
homepage="https://github.com/GrapheneOS/hardened_malloc"
distfiles="https://github.com/GrapheneOS/hardened_malloc/archive/refs/tags/${version}.tar.gz"
checksum=4cd95ff3b83c433ebc6269d0778d79eb3480b7d5bc873503e1cc3768546bdbec
do_build()
{
make ${makejobs} VARIANT=default
make ${makejobs} VARIANT=light
}
do_install()
{
vinstall out/libhardened_malloc.so 755 usr/lib
vinstall out-light/libhardened_malloc-light.so 755 usr/lib
vlicense LICENSE
}
+56
View File
@@ -0,0 +1,56 @@
# Template file for 'odin'
pkgname=odin
version=2026.06
revision=1
_tag="dev-${version//./-}"
archs="x86_64"
hostmakedepends="clang llvm22 llvm22-devel make which"
makedepends="llvm22-devel"
checkdepends="python3"
depends="clang"
short_desc="Data-oriented programming language"
maintainer="Desolate"
license="BSD-3-Clause"
homepage="https://odin-lang.org/"
nostrip=yes
distfiles="https://github.com/odin-lang/Odin/archive/refs/tags/${_tag}.tar.gz"
checksum=9f91df15e06e782bdd2825926efc256ad1a79b3e022a1398e4e10dcc4d4d95fa
wrksrc="Odin-${_tag}"
do_build() {
export CXX=clang++
export LLVM_CONFIG=llvm-config
make release
make -C vendor/cgltf/src
make -C vendor/miniaudio/src
make -C vendor/stb/src
}
do_check() {
./odin check examples/all -strict-style
python3 tests/core/download_assets.py tests/core/assets
./odin test tests/core/speed.odin -o:speed -file -all-packages
./odin test tests/vendor -all-packages
./odin test tests/internal -all-packages
}
do_install() {
vmkdir usr/lib/odin
vinstall odin 755 usr/lib/odin
for d in base core shared vendor; do
vcopy "$d" usr/lib/odin
done
# Create wrapper script to ensure ODIN_ROOT is set correctly
cat > odin.sh <<EOF
#!/bin/sh
export ODIN_ROOT=/usr/lib/odin
exec /usr/lib/odin/odin "\$@"
EOF
vbin odin.sh odin
vlicense LICENSE
vdoc PROPOSAL-PROCESS.md
vdoc README.md
}
+30
View File
@@ -0,0 +1,30 @@
# Template file for 'yazi'
pkgname=yazi
version=26.5.6
revision=1
build_style=cargo
hostmakedepends="pkg-config"
makedepends="oniguruma-devel lua54-devel"
depends="nerd-fonts-symbols-ttf"
short_desc="Blazing fast terminal file manager, based on async I/O"
maintainer="Bnyro <bnyro@tutanota.com>"
license="MIT"
homepage="https://yazi-rs.github.io"
changelog="https://github.com/sxyazi/yazi/releases"
distfiles="https://github.com/sxyazi/yazi/archive/refs/tags/v${version}.tar.gz"
checksum=a18445df86a20068f7b17609d12d6f635de488958579ae7a2b143a244ba7e63f
export VERGEN_GIT_SHA="${version}_${revision}"
# enable the generation of shell auto completions
export YAZI_GEN_COMPLETIONS=true
do_install() {
vbin target/${RUST_TARGET}/release/yazi
vbin target/${RUST_TARGET}/release/ya
vcompletion yazi-boot/completions/yazi.bash bash
vcompletion yazi-boot/completions/yazi.fish fish
vcompletion yazi-boot/completions/_yazi zsh
vinstall assets/yazi.desktop 644 /usr/share/applications
vinstall assets/logo.png 644 /usr/share/pixmaps yazi.png
vlicense LICENSE
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 770 KiB

+1
View File
@@ -0,0 +1 @@
https://w.wallhaven.cc/full/md/wallhaven-mdo2vk.jpg