dotfiles

dotfiles for my system
git clone git://git.evenfri.duckdns.org/dotfiles.git
Log | Files | Refs

commit 4278f3f0649121107dc2b8d9dab859244732f191
Author: evenfri <evenfri256@gmail.com>
Date:   Wed,  5 Aug 2026 03:57:02 +0800

initial commit

Diffstat:
A.gitignore | 3+++
Abin/polybar_launch | 4++++
Abin/screenlayout | 4++++
Abin/win_pos | 11+++++++++++
Abin/win_size | 24++++++++++++++++++++++++
Abin/zfetch | 118+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aclean-ln-sf.sh | 9+++++++++
Aconfigs/bspwm | 41+++++++++++++++++++++++++++++++++++++++++
Aconfigs/git | 18++++++++++++++++++
Aconfigs/gtk | 6++++++
Aconfigs/picom | 49+++++++++++++++++++++++++++++++++++++++++++++++++
Aconfigs/polybar | 92+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aconfigs/sxhkd | 80+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aconfigs/vim | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aconfigs/xinit | 17+++++++++++++++++
Aconfigs/xres | 2++
Aconfigs/zshrc | 47+++++++++++++++++++++++++++++++++++++++++++++++
Ainstall | 111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Awallpapers/1.png | 0
Awallpapers/10.png | 0
Awallpapers/11.png | 0
Awallpapers/12.png | 0
Awallpapers/13.png | 0
Awallpapers/14.png | 0
Awallpapers/15.png | 0
Awallpapers/2.png | 0
Awallpapers/3.png | 0
Awallpapers/4.png | 0
Awallpapers/5.png | 0
Awallpapers/6.png | 0
Awallpapers/7.png | 0
Awallpapers/8.png | 0
Awallpapers/9.png | 0
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.