commit 4278f3f0649121107dc2b8d9dab859244732f191
Author: evenfri <evenfri256@gmail.com>
Date: Wed, 5 Aug 2026 03:57:02 +0800
initial commit
Diffstat:
33 files changed, 704 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -0,0 +1,3 @@
+st
+mk-standalone
+pxplus-ibm-vga8
diff --git a/bin/polybar_launch b/bin/polybar_launch
@@ -0,0 +1,4 @@
+#!/bin/sh
+killall polybar
+while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
+polybar center &
diff --git a/bin/screenlayout b/bin/screenlayout
@@ -0,0 +1,4 @@
+#!/bin/sh
+xrandr \
+ --output HDMI-0 --mode 1920x1080 --rate 75 --pos 0x0 --rotate normal \
+ --output DP-4 --primary --mode 1920x1080 --rate 144 --pos 1920x0 --rotate normal
diff --git a/bin/win_pos b/bin/win_pos
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+DIRECTION="$1"
+SIZE=20
+
+case "$DIRECTION" in
+ left) bspc node -v -"$SIZE" 0 ;;
+ bottom) bspc node -v 0 "$SIZE" ;;
+ top) bspc node -v 0 -"$SIZE" ;;
+ right) bspc node -v "$SIZE" 0 ;;
+esac
diff --git a/bin/win_size b/bin/win_size
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+ACTION="$1"
+DIRECTION="$2"
+SIZE=20
+
+case "$ACTION" in
+ expand)
+ case "$DIRECTION" in
+ left) bspc node -z left "$SIZE" 0 ;;
+ bottom) bspc node -z bottom 0 "$SIZE" ;;
+ top) bspc node -z top 0 -"$SIZE" ;;
+ right) bspc node -z right -"$SIZE" 0 ;;
+ esac
+ ;;
+ squash)
+ case "$DIRECTION" in
+ left) bspc node -z left -"$SIZE" 0 ;;
+ bottom) bspc node -z bottom 0 -"$SIZE" ;;
+ top) bspc node -z top 0 "$SIZE" ;;
+ right) bspc node -z right "$SIZE" 0 ;;
+ esac
+ ;;
+esac
diff --git a/bin/zfetch b/bin/zfetch
@@ -0,0 +1,118 @@
+#!/bin/sh
+
+get_system() {
+ . /etc/os-release
+ echo "$PRETTY_NAME"
+}
+
+get_pkgs() {
+ echo $(pacman -Qq | wc -l)
+}
+
+get_mem() {
+ mem_total=$(grep MemTotal /proc/meminfo | awk '{print $2}')
+ mem_available=$(grep MemAvailable /proc/meminfo | awk '{print $2}')
+ mem_used=$((mem_total - mem_available))
+
+ total_mib=$((mem_total / 1024))
+ used_mib=$((mem_used / 1024))
+ echo "${used_mib} MiB / ${total_mib} MiB"
+}
+
+get_cpu () {
+ model=$(grep "model name" /proc/cpuinfo | head -1 | cut -d':' -f2 | sed 's/^[ \t]*//')
+ echo "$model"
+}
+
+get_init() {
+ if [ -f /proc/1/comm ]; then
+ local init_name=$(cat /proc/1/comm)
+ case "$init_name" in
+ systemd) echo "systemd" ;;
+ init) echo "sysvinit" ;;
+ upstart) echo "upstart" ;;
+ openrc) echo "openrc" ;;
+ runit) echo "runit" ;;
+ s6) echo "s6" ;;
+ *) echo "unknown ($init_name)" ;;
+ esac
+ else
+ echo "unknown"
+ fi
+}
+
+get_env() {
+ if command -v wmctrl &> /dev/null; then
+ local wm_name=$(wmctrl -m 2>/dev/null | grep "Name:" | awk '{print $2}')
+ if [ -n "$wm_name" ]; then
+ echo "$wm_name"
+ return
+ fi
+ fi
+}
+
+get_disk() {
+ echo "$(basename $(lsblk -no PKNAME $(findmnt -no SOURCE /)))"
+}
+
+get_part_size() {
+ used=$(df -h $1 | awk 'NR==2 {print $3}')
+ total=$(df -h $1 | awk 'NR==2 {print $2}')
+
+ echo "$used / $total"
+}
+
+get_disk_size() {
+ disk=$(get_disk)
+
+ used=$(df -h / | awk 'NR==2 {print $3}')
+ total=$(lsblk -dno SIZE /dev/"$disk")
+
+ echo "$total"
+}
+
+get_root_size() {
+ echo "$(get_part_size /)"
+}
+
+get_home_size() {
+ echo "$(get_part_size /home)"
+}
+
+user=$USER
+sysname=$(uname -n)
+os=$(get_system)
+cputype=$(uname -m)
+pkgs=$(get_pkgs)
+mem=$(get_mem)
+cpu=$(get_cpu)
+init=$(get_init)
+sh=$(basename $SHELL)
+env=$(get_env)
+disk=$(get_disk)
+storage=$(get_disk_size)
+storage_root=$(get_root_size)
+storage_home=$(get_home_size)
+
+echo " $user@$sysname"
+echo " -------------"
+echo " (\\(\\ os -> $os $cputype"
+echo " j\". .. pkg -> $pkgs"
+echo " ( . .) ram -> $mem"
+echo " | ° | cpu -> $cpu"
+echo " ¿ ; init -> $init"
+echo " c?\".UJ sh -> $sh"
+echo " env -> $env"
+echo " $disk -> $storage"
+
+# echo " "
+# echo " _ "
+# echo " | | "
+# echo " | | "
+# echo " | |___ "
+# echo " |_____| "
+# echo " "
+# echo " "
+
+# echo " root: $storage_root"
+# echo " /home: $storage_home"
diff --git a/clean-ln-sf.sh b/clean-ln-sf.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+find . -maxdepth 2 -type l -print0 | while IFS= read -r -d '' symlink; do
+ symlink="${symlink#./}"
+ target=$(readlink -- "$symlink")
+ if [ -n "$target" ] && [ -f "$target" ]; then
+ rm -f -- "$symlink"
+ cp -v -- "$target" "$symlink"
+ fi
+done
diff --git a/configs/bspwm b/configs/bspwm
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+bspc monitor DP-4 -d 1 2 3 4 5 6 7 8 9
+bspc monitor HDMI-0 -d 10
+
+bspc config border_width 1
+bspc config window_gap 17
+
+bspc config top_padding 0
+bspc config bottom_padding 0
+bspc config left_padding 0
+bspc config right_padding 0
+
+bspc config normal_border_color 0
+bspc config active_border_color 0
+bspc config focused_border_color 0
+bspc config presel_border_color 0
+
+bspc config borderless_monocle 1
+bspc config gapless_monocle 1
+bspc config focus_follows_pointer true
+bspc config pointer_follow_focus false
+
+bspc rule -a '*:qemu:*' state=floating
+bspc rule -a 'window' state=floating
+
+# mouse settings
+xinput set-prop 8 "libinput Accel Profile Enabled" 0 1 0
+xinput set-prop 10 "libinput Accel Profile Enabled" 0 1 0
+
+"$dotfiles/bin/screenlayout.sh" &
+
+# background script
+# hsetroot -solid "#008080"
+feh --no-fehbg --bg-fill "$dotfiles/wallpapers/14.png"
+
+# bar script
+# "$dotfiles/bin/polybar"
+
+# compositor
+picom &
diff --git a/configs/git b/configs/git
@@ -0,0 +1,18 @@
+[user]
+ email = evenfri256@gmail.com
+ name = evenfri
+[core]
+ pager = more
+[push]
+ autoSetupRemote = true
+[filter "lfs"]
+ required = true
+ clean = git-lfs clean -- %f
+ smudge = git-lfs smudge -- %f
+ process = git-lfs filter-process
+[credential]
+ helper = store
+[safe]
+ directory = *
+[init]
+ defaultBranch = master
diff --git a/configs/gtk b/configs/gtk
@@ -0,0 +1,6 @@
+[Settings]
+gtk-application-prefer-dark-theme=true
+gtk-theme-name=Adwaita
+gtk-icon-theme-name=breeze-dark
+gtk-cursor-theme-name=plan9
+gtk-cursor-theme-size=24
diff --git a/configs/picom b/configs/picom
@@ -0,0 +1,49 @@
+vsync = true;
+backend = "glx";
+use-damage = false;
+#fading = true;
+fade-out-step = 0.3;
+fade-ir-step = 0.3;
+fade-delta = 5;
+
+corner-radius = 5.0;
+round-borders = 5.0;
+
+shadow = false;
+shadow-radius = 0;
+shadow-offset-x = 5;
+shadow-offset-y = 5;
+shadow-opacity = 1;
+shadow-color = "#000000";
+
+rounded-corners-exclude = [
+ "class_g = 'Polybar'",
+ "class_g = 'rofi'",
+];
+round-borders-exclude = [
+ "class_g = 'rofi'",
+];
+
+shadow-exclude = [
+ "class_g = 'Polybar'",
+];
+
+animations = (
+ {
+ triggers = [ "open", "show" ];
+ preset = "appear";
+ scale = 0.8;
+ duration = 0.1;
+ },
+ {
+ triggers = [ "close", "hide" ];
+ preset = "fly-out";
+ direction = "down";
+ duration = 0.1;
+ },
+ {
+ triggers = [ "geometry" ];
+ preset = "geometry-change";
+ duration = 0.1;
+ }
+);
diff --git a/configs/polybar b/configs/polybar
@@ -0,0 +1,92 @@
+[colors]
+bg = #cc111111
+fg = #eaeaea
+border = #ffffff
+background = #282A2E
+background-alt = #373B41
+foreground = #C5C8C6
+primary = #F0C674
+secondary = #8ABEB7
+alert = #A54242
+disabled = #707880
+
+[conf]
+# offset-y = 10
+offset-y = 0
+radius = 0
+border-size = 2
+height = 21
+font = "Tamben:size=12;4"
+
+[bar/center]
+# width = 75%
+width = 100%
+height = ${conf.height}
+# offset-x = 12.5%
+offset-x = 0%
+offset-y = ${conf.offset-y}
+radius = ${conf.radius}
+wm-restack = bspwm
+
+background = ${colors.bg}
+foreground = ${colors.fg}
+
+border-size = ${conf.border-size}
+border-color = ${colors.border}
+
+override-redirect = false
+
+modules-left = bspwm sep cpu
+modules-center = date
+modules-right = tray
+
+padding-left = 0
+padding-right = 1
+
+font-0 = ${conf.font}
+
+[module/sep]
+type = custom/text
+label = " "
+
+[module/date]
+type = internal/date
+interval = 1
+date = %H:%M
+label = %date%
+
+[module/tray]
+type = internal/tray
+format = <tray>
+tray-spacing = 0
+tray-padding = 1
+tray-size = 80%
+
+[module/bspwm]
+type = internal/bspwm
+enable-click = true
+label-active = %name%
+label-active-background = ${colors.background-alt}
+label-active-padding = 1.0
+
+label-occupied = %name%
+label-occupied-padding = 1.0
+
+label-urgent = %name%
+label-urgent-background = ${colors.alert}
+label-urgent-padding = 1.0
+
+label-empty = %name%
+label-empty-foreground = ${colors.disabled}
+label-empty-padding = 1.0
+
+[module/xwindow]
+type = internal/xwindow
+label = %title:0:41...%
+
+[module/cpu]
+type = internal/cpu
+interval = 1
+format-prefix = "CPU "
+label = %percentage:2%%
+
diff --git a/configs/sxhkd b/configs/sxhkd
@@ -0,0 +1,80 @@
+# terminal
+super + Return
+ st
+
+# close window
+super + q
+ bspc node -c
+
+# exit from bspwm
+super + shift + Escape
+ pkill -x bspwm
+
+# reload sxhkd
+super + r
+ pkill -USR1 -x sxhkd
+
+# reload bspwm
+super + Escape
+ bspc wm -r
+
+# browser
+super + shift + w
+ firefox
+
+# telegram
+super + shift + t
+ AyuGram
+
+# rofi
+super + d
+# rofi -show drun
+ dmenu_run
+
+# switching desktops
+super + {comma,period}
+ bspc desktop -f {prev,next}
+
+# window modes
+super + {f,t}
+ bspc node -t {floating,tiled}
+
+# focus window
+super + {h,j,k,l}
+ bspc node -f {west,south,north,east}
+
+# change size window
+super + shift + {h,j,k,l}
+ "$dotfiles/bin/win_size" expand {left,bottom,top,right}
+
+super + ctrl + {h,j,k,l}
+ "$otfiles/bin/win_size" squash {left,bottom,top,right}
+
+# change position window
+super + alt + {h,j,k,l}
+ "$dotfiles/bin/win_pos" {left,bottom,top,right}
+
+# switching desktops
+super + {1-9,0}
+ bspc desktop -f {1,2,3,4,5,6,7,8,9,10}
+
+# move window in desktop
+super + shift + {1-9,0}
+ bspc node -d {1,2,3,4,5,6,7,8,9,10}
+
+# volume
+XF86Audio{RaiseVolume,LowerVolume}
+ pactl set-sink-volume @DEFAULT_SINK@ {+5%,-5%}
+
+XF86AudioMute
+ pactl set-sink-mute @DEFAULT_SINK@ toggle
+
+# fullscreen mode
+super + F11
+ bspc node -t "~fullscreen"
+
+# screenshot
+super + shift + s
+ scrot -s --freeze - | xclip -selection clipboard -t image/png
+
+
diff --git a/configs/vim b/configs/vim
@@ -0,0 +1,68 @@
+call plug#begin('~/.vim/plugged')
+
+Plug 'neoclide/coc.nvim', {'branch': 'release'}
+Plug 'preservim/nerdtree'
+Plug 'chriskempson/base16-vim'
+
+call plug#end()
+
+set background=dark
+syntax enable
+
+set mouse=
+"set number
+"set relativenumber
+set tabstop=2
+set shiftwidth=2
+set expandtab
+set softtabstop=2
+set hlsearch
+set ignorecase
+set smartcase
+set incsearch
+"set cursorline
+set noreadonly
+set termguicolors
+
+"let base16colorspace=256
+"colorscheme base16-monokai
+source $HOME/.vim/highlight.vim
+"highlight Comment guifg=#777777
+
+set hidden
+set updatetime=300
+set shortmess+=c
+
+let mapleader=" "
+
+inoremap jk <Esc>
+
+nnoremap <leader>s :%s//g<Left><Left>
+
+nnoremap <C-h> <C-w>h
+nnoremap <C-j> <C-w>j
+nnoremap <C-k> <C-w>k
+nnoremap <C-l> <C-w>l
+
+nnoremap <leader>sv :vsplit<CR>
+nnoremap <leader>sh :split<CR>
+nnoremap <leader>se <C-w>=
+nnoremap <leader>sx :close<CR>
+
+nnoremap <leader>h :set hlsearch!<CR>
+nnoremap <leader>f :call CocAction('format')<CR>
+nnoremap <leader>gd <Plug>(coc-definition)
+
+nnoremap <leader>tt :tabnew<CR>
+nnoremap <leader>tc :tabclose<CR>
+nnoremap <leader>tn :tabnext<CR>
+nnoremap <leader>tp :tabprevious<CR>
+nnoremap <leader>tr :tab term<CR>
+
+inoremap <silent><expr> <TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
+inoremap <silent><expr> <S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
+inoremap <silent><expr> <CR> pumvisible() ? coc#_select_confirm() : "\<CR>"
+
+tnoremap <Esc><Esc> <C-\><C-n>
+
+nnoremap <C-n> :NERDTreeToggle<CR>
diff --git a/configs/xinit b/configs/xinit
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+export dotfiles="$HOME/.dotfiles"
+
+"$dotfiles/bin/screenlayout"
+
+xrdb merge ~/.Xresources
+
+xset s off
+xset -dpms
+
+setxkbmap -option grp:alt_shift_toggle us,ru
+xsetroot -cursor_name left_ptr
+
+dunst &
+sxhkd &
+exec bspwm
diff --git a/configs/xres b/configs/xres
@@ -0,0 +1,2 @@
+Xcursor.theme: plan9
+Xcursor.size: 24
diff --git a/configs/zshrc b/configs/zshrc
@@ -0,0 +1,47 @@
+export PLAN9="$dotfiles/packages/plan9"
+
+export PATH="$PLAN9/bin:$PATH"
+export PATH="$HOME/.local/bin:$PATH"
+
+export HISTFILE=$HOME/.zsh_history
+setopt HIST_IGNORE_ALL_DUPS
+setopt INC_APPEND_HISTORY
+export HISTSIZE=10000
+export SAVEHIST=10000
+
+autoload -Uz compinit
+compinit
+zstyle ':completion:*' menu select
+zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
+
+autoload -Uz up-line-or-beginning-search
+autoload -Uz down-line-or-beginning-search
+zle -N up-line-or-beginning-search
+zle -N down-line-or-beginning-search
+bindkey '^[[A' up-line-or-beginning-search
+bindkey '^[[B' down-line-or-beginning-search
+
+alias grep='grep --color=auto'
+alias ls='ls --hide=lost+found -1p --group-directories-first --color=always'
+
+autoload -Uz promptinit
+promptinit
+
+# PROMPT='%n@%m:%F{15}%~%f %# '
+# PROMPT=': %~ ; '
+# PROMPT='%~ %# '
+PROMPT='$ '
+
+copy() {
+ cat "$1" | xclip -selection clipboard
+}
+
+mcdir() {
+ mkdir -p "$1" && cd "$1"
+}
+
+#acme() {
+# acme -f /home/oem/git/plan9port/font/fixed/unicode.9x18.font
+#}
+
+compdef don=sudo
diff --git a/install b/install
@@ -0,0 +1,111 @@
+#!/bin/sh
+
+set -e
+
+loc="$HOME/.dotfiles"
+package_install=(doas pacman -Sy)
+repo_url="git://git.evenfri.duckdns.org"
+aur_url="https://aur.archlinux.org"
+
+packages=(
+ "base-devel"
+ "git"
+ "xorg-server"
+ "xorg-xinit"
+ "xorg-xset"
+ "xorg-xinput"
+ "libxft"
+ "freetype2"
+ "libxinerama"
+ "bspwm"
+ "sxhkd"
+ "vim"
+ "feh"
+ "picom"
+ "xclip"
+ "scrot"
+ "pulseaudio"
+ "fakeroot"
+ "opendoas"
+)
+
+aur_packages=(
+ "xcursor-plan9"
+# "pxplus-ibm-vga8"
+)
+
+# setup local dotfiles directory
+mkdir -p "$HOME/.dotfiles"
+cp -r bin "$loc"
+cp -r configs "$loc"
+cp -r wallpapers "$loc"
+
+mkdir -p "$loc/packages"
+mkdir -p "$loc/packages/plan9"
+
+# cloning repositories
+rm -rf st mk-standalone xcursor-plan9
+
+git clone "$repo_url/st.git"
+git clone "$repo_url/mk-standalone.git"
+
+# linking configs
+ln -sf "$loc/configs/zshrc" "$HOME/.zshrc"
+ln -sf "$loc/configs/vim" "$HOME/.vimrc"
+ln -sf "$loc/configs/xinit" "$HOME/.xinitrc"
+ln -sf "$loc/configs/xres" "$HOME/.Xresources"
+ln -sf "$loc/configs/git" "$HOME/.gitconfig"
+ln -sf "$loc/configs/bspwm" "$HOME/.config/bspwm/bspwmrc"
+ln -sf "$loc/configs/sxhkd" "$HOME/.config/sxhkd/sxhkdrc"
+ln -sf "$loc/configs/picom" "$HOME/.config/picom/picom.conf"
+ln -sf "$loc/configs/polybar" "$HOME/.config/polybar/config.ini"
+ln -sf "$loc/configs/gtk" "$HOME/.config/gtk-3.0/settings.ini"
+ln -sf "$loc/configs/gtk" "$HOME/.config/gtk-4.0/settings.ini"
+
+
+# setup programs
+mkdir -p "$HOME/.local/bin"
+ln -sf "$loc/bin/zfetch" "$HOME/.local/bin"
+doas ln -sf "/usr/bin/doas" "/usr/local/bin/sudo"
+
+cd st
+make
+doas make install
+cd ..
+
+cd mk-standalone
+make -C lib9
+make -C mk
+
+mkdir -p "$loc/packages/plan9/bin"
+mkdir -p "$loc/packages/plan9/bin"
+mkdir -p "$loc/packages/plan9/src"
+mkdir -p "$loc/packages/plan9/lib"
+
+cp -r mk/mk "$loc/packages/plan9/bin/"
+cp -r templates/* "$loc/packages/plan9/src/"
+cp -r wrappers/* "$loc/packages/plan9/bin/"
+cp -r lib9/lib9.a "$loc/packages/plan9/lib/"
+
+echo
+echo "* please paste to your ~/.bashrc or ~/.zshrc"
+echo " export PLAN9=\"$output\""
+echo " export PATH=\"\$PLAN9/bin:\$PATH\""
+echo
+
+cd ..
+
+# packages
+${package_install[@]} "${packages[@]}"
+
+# aur packages
+doas pacman -Rdd sudo
+doas rm /usr/local/bin/sudo
+for aur_package in $aur_packages; do
+ git clone "$aur_url/$aur_package.git"
+ cd $aur_package
+ makepkg -si
+ cd ..
+done
+
+doas ln -sf "/usr/bin/doas" "/usr/local/bin/sudo"
diff --git a/wallpapers/1.png b/wallpapers/1.png
Binary files differ.
diff --git a/wallpapers/10.png b/wallpapers/10.png
Binary files differ.
diff --git a/wallpapers/11.png b/wallpapers/11.png
Binary files differ.
diff --git a/wallpapers/12.png b/wallpapers/12.png
Binary files differ.
diff --git a/wallpapers/13.png b/wallpapers/13.png
Binary files differ.
diff --git a/wallpapers/14.png b/wallpapers/14.png
Binary files differ.
diff --git a/wallpapers/15.png b/wallpapers/15.png
Binary files differ.
diff --git a/wallpapers/2.png b/wallpapers/2.png
Binary files differ.
diff --git a/wallpapers/3.png b/wallpapers/3.png
Binary files differ.
diff --git a/wallpapers/4.png b/wallpapers/4.png
Binary files differ.
diff --git a/wallpapers/5.png b/wallpapers/5.png
Binary files differ.
diff --git a/wallpapers/6.png b/wallpapers/6.png
Binary files differ.
diff --git a/wallpapers/7.png b/wallpapers/7.png
Binary files differ.
diff --git a/wallpapers/8.png b/wallpapers/8.png
Binary files differ.
diff --git a/wallpapers/9.png b/wallpapers/9.png
Binary files differ.