Initial push of current integrated configs and early stow skeleton

This commit is contained in:
bytequill 2025-06-24 23:42:27 +02:00
parent 36315f3bb4
commit 07434affb4
Signed by: bytequill
GPG Key ID: 1D929B3AA9873122
12 changed files with 4048 additions and 1 deletions

214
.config/i3/config Normal file
View File

@ -0,0 +1,214 @@
# Stored online on: https://git.codebased.xyz/bytequill/dotfiles/src/branch/main/.config/i3/config
# i3 config file (v4) - Edited by bytequill@codebased.xyz
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4
# Mod = Super
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:IosevkaTermNerdFont 10
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
# Start XDG autostart .desktop files using dex. See also
# https://wiki.archlinux.org/index.php/XDG_Autostart
exec --no-startup-id dex-autostart --autostart --environment i3
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock --transfer-sleep-lock -- /home/user/bin/i3lock-color/examples/my_lock.sh
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# start a terminal
## CUSTOM
bindsym $mod+Return exec kitty
bindsym $mod+Shift+Return exec --no-startup-id tdrop -ma kitty
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
#bindsym $mod+d exec --no-startup-id "dmenu_run -nf '#BBBBBB' -nb '#222222' -sb '#005577' -sf '#EEEEEE' -fn 'monospace-10'"
# A more modern dmenu replacement is rofi:
bindsym $mod+d exec "rofi -combi-modes drun#run -show combi"
# There also is i3-dmenu-desktop which only displays applications shipping a
# .desktop file. It is a wrapper around dmenu, so you need that installed.
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
#CUSTOM STUFF
bindsym $mod+c exec "rofi -modi calc -show calc"
bindsym $mod+Mod1+b exec --no-startup-id feh ~/Documents/wallpaper/* --recursive --randomize --bg-fill
bindsym $mod+l exec --no-startup-id betterlockscreen -l dim
bindsym Print exec --no-startup-id flameshot gui
for_window [class="ecode"] border pixel 0
exec --no-startup-id xwayland
exec --no-startup-id pipewire
exec --no-startup-id wireplumber
# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
#bindsym $mod+l focus up
bindsym $mod+semicolon focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+semicolon move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+h split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d focus child
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym semicolon resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape or $mod+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
# class border bground text indicator child_border
client.focused #83CAFA #51A2DA #FFFFFF #83CAFA #51A2DA
client.focused_inactive #8C8C8C #4C4C4C #FFFFFF #4C4C4C #8C8C8C
client.unfocused #4C4C4C #222222 #888888 #292D2E #222222
client.urgent #EC69A0 #DB3279 #FFFFFF #DB3279 #DB3279
client.placeholder #000000 #0C0C0C #FFFFFF #000000 #0C0C0C
client.background #FFFFFF
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
colors {
background #000000
statusline #FFFFFF
separator #666666
focused_workspace #83CAFA #51A2DA #FFFFFF
active_workspace #3C6EB4 #294172 #FFFFFF
inactive_workspace #8C8C8C #4C4C4C #888888
urgent_workspace #EC69A0 #DB3279 #FFFFFF
binding_mode #b691d3 #A07CBC #FFFFFF
}
position top
status_command $HOME/.config/i3/conky/runner.sh
}

View File

@ -0,0 +1,91 @@
#### Conky configuration file
## to replace the i3status for i3bar
# Only stdio output
out_to_x no
own_window no
out_to_console yes
background no
max_text_width 0
# Update interval in seconds
update_interval 0.5
# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0
# Shortens units to a single character (kiB->k, GiB->G, etc.). Default is off.
short_units yes
# How strict should if_up be when testing an interface for being up?
# The value is one of up, link or address, to check for the interface
# being solely up, being up and having link or being up, having link
# and an assigned IP address.
if_up_strictness link
# Add spaces to keep things from moving about? This only affects certain objects.
# use_spacer should have an argument of left, right, or none
use_spacer left
# Force UTF8? note that UTF8 support required XFT
override_utf8_locale no
# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2
# Stuff after 'TEXT' will be formatted on screen
TEXT
# JSON for i3bar
[
# Free storage space in /home
{ "full_text" : " ${fs_free /home} Free" , "color" : "\#ffffff" },
# RAM
{ "full_text" : " ${memperc}% (${mem}/${memmax})" , "color" : \
${if_match ${memperc}<90}"\#ffffff"${else}"\#ff0000"${endif} },
# CPU
{ "full_text" : " ${cpu}% ${freq_g 1}GHz", "color" : \
${if_match ${cpu}<90}"\#ffffff"${else}"\#ff0000"${endif}},
# Networking
# ${if_up wlp0s20f3} { "full_text" : " (${wireless_essid wlp0s20f3}) ${addr wlp0s20f3}" , "color" : "\#00ff00" },${endif}\
# ${if_up enp4so} { "full_text" : "Eth: ${addr enp4so}" , "color" : "\#00ff00" },${endif}\
# All the charges for the Battery
# This looks aweful because conky doesn't have an "else if"
# icon cheet sheet https://fortawesome.github.io/Font-Awesome/cheatsheet/
${if_existing /sys/class/power_supply/BAT0}\
${if_match ${battery_percent}>15}\
${if_match ${battery_percent}>35}\
${if_match ${battery_percent}>60}\
${if_match ${battery_percent}>80}\
# 100% ish
{ "full_text" : " ${battery_percent}%(${battery_time})", "color" : "\#ffffff" }, \
${else}\
# less than 75%
{ "full_text" : " ${battery_percent}%(${battery_time})", "color" : "\#ffffff" }, \
${endif}\
${else}\
# less than 50%
{ "full_text" : " ${battery_percent}%(${battery_time})", "color" : "\#ffffff" }, \
${endif}\
${else}\
# 20ish % charge
{ "full_text" : " ${battery_percent}%(${battery_time})", "color" : "\#ff8800" }, \
${endif}\
${else}\
#empty battery
{ "full_text" : " ${battery_percent}%(${battery_time})", "color" : "\#ff0000" }, \
${endif}\
${endif}\
# Volume
{ "full_text" : " ${exec amixer get Master -M | grep -oE -m1 "[[:digit:]]*%"}", "color" : "\#ffffff"},
# Time
{ "full_text" : " ${time %y/%m/%d (%a) %H:%M:%S}" , "color" : "\#ff8800"}
],

18
.config/i3/conky/runner.sh Executable file
View File

@ -0,0 +1,18 @@
#!/bin/sh
# TODO: find a better place for this auto-exec
xcompmgr -c -f -n &
scripts="$HOME/.config/i3/conky"
# Send the header so that i3bar knows we want to use JSON:
echo '{"version":1}'
# Begin the endless array.
echo '['
# We send an empty first array of blocks to make the loop simpler:
echo '[],'
# Now send blocks with information forever:
exec conky -c "$scripts/conkystatus.conf"

2534
.config/kitty/kitty.conf Normal file

File diff suppressed because it is too large Load Diff

1004
.config/nvim/init.lua Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
{
"LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" },
"blink.cmp": { "branch": "main", "commit": "9bcb14b43852a6f2bfd5ac9ef29cb5cf09b1b39b" },
"conform.nvim": { "branch": "master", "commit": "8132ec733eed3bf415b97b76797ca41b59f51d7d" },
"fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
"gitsigns.nvim": { "branch": "main", "commit": "1b0350ab707713b2bc6c236151f1a324175347b1" },
"guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "c4c84f4521d62de595c0d0f718a9a40c1890c8ce" },
"mason-tool-installer.nvim": { "branch": "main", "commit": "93a9ff9b34c91c0cb0f7de8d5f7e4abce51d8903" },
"mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" },
"mini.nvim": { "branch": "main", "commit": "01dce72f2177de6044bcab60ebb8f8e56ade0936" },
"nvim-lspconfig": { "branch": "master", "commit": "2d0ca00368742c0c7af802b9b2a920c4cd02303a" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-web-devicons": { "branch": "master", "commit": "19d6211c78169e78bab372b585b6fb17ad974e82" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
"telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" },
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
}

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule ".oh-my-zsh"]
path = .oh-my-zsh
url = https://github.com/ohmyzsh/ohmyzsh.git

1
.oh-my-zsh Submodule

@ -0,0 +1 @@
Subproject commit f8022980a3423f25e3d5e1b6a60d2372a2ba006b

15
.stow-local-ignore Normal file
View File

@ -0,0 +1,15 @@
# Comments and blank lines are allowed.
\.git
\.gitignore
\.gitmodules
.+~ # emacs backup files
\#.*\# # emacs autosave files
^/README.*
^/LICENSE.*
^/COPYING
# Custom files
stow.sh

119
.zshrc Normal file
View File

@ -0,0 +1,119 @@
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH
# Path to your Oh My Zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time Oh My Zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="mortalscumbag"
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment one of the following lines to change the auto-update behavior
# zstyle ':omz:update' mode disabled # disable automatic updates
# zstyle ':omz:update' mode auto # update automatically without asking
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
# Uncomment the following line to change how often to auto-update (in days).
# zstyle ':omz:update' frequency 13
# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# You can also set it to another string to have that shown instead of the default red dots.
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git)
source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='nvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch $(uname -m)"
# Set personal aliases, overriding those provided by Oh My Zsh libs,
# plugins, and themes. Aliases can be placed here, though Oh My Zsh
# users are encouraged to define aliases within a top-level file in
# the $ZSH_CUSTOM folder, with .zsh extension. Examples:
# - $ZSH_CUSTOM/aliases.zsh
# - $ZSH_CUSTOM/macos.zsh
# For a full list of active aliases, run `alias`.
#
# Example aliases
export PATH="$PATH:/home/$USER/.local/bin"
alias lsc="ls --color=tty" # Default ls behavior. "lsCompact"
alias ls="ls -lAh --color=tty"
function untargz() {
eval "tar -xvzf $1"
}
alias untarball="untargz"
alias untarx="untargz"
# Automatically added completion files for 3rd party programsi below this line
# bun completions
[ -s "/home/desktop/.bun/_bun" ] && source "/home/desktop/.bun/_bun"
# bun
export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$HOME/go/bin:$PATH"

View File

@ -1,3 +1,15 @@
# dotfiles
Universal config files for my linux desktop environments. Managed with GNU stow
Universal config files for my linux desktop environments. Managed with GNU stow
# Installation
## Applying config
Using [GNU Stow](https://www.gnu.org/software/stow/) you can easily apply configs provided by this repo
You can either run the script `stow.sh` or execute the below manually:
```sh
stow --target $HOME .
```
# note
## .oh-my-zsh inclusion
I would rather not have included the `.oh-my-zsh` submodule in this repo, however the official install script overwrites `.zshrc` and I wanted a plug-and-play experiance without having to do any manual intervention/extra steps

12
stow.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/sh
# TODO: Implement an auto update funtionality
# - Stow on file added?
# - Auto fetch vc and stow
# TODO: Implement cli arguments. Empty args should just stow:
# - Unstow
# - Handling of above mentioned auto functions
# - Adopt(Overwrite) option
stow --target $HOME .