feat: add some ZSH config

This commit is contained in:
2026-08-21 17:03:57 +02:00
parent 1a97f301c2
commit 66f85fe590
26 changed files with 200 additions and 619 deletions
-8
View File
@@ -1,8 +0,0 @@
# TODOs
- [ ] Remove `decman` because it's a pain and use smaller scope `archmgr` (only copy all files to locations always and package diff)
- [ ] Generate matugen stuff from colour in new script
- [X] Finish decman config
- [ ] Yazi theming
- [X] Kitty theming
- [ ] Fish theming
- [ ] Fastfetch theming
-10
View File
@@ -1,10 +0,0 @@
grub_theme = {
"desktop": "/usr/share/grub/themes/monterey-grub-theme/theme.txt",
"laptop": "/usr/share/grub/themes/monterey-grub-theme/theme.txt",
}
grub_os_prober = {"desktop": True, "laptop": False}
kernel_args_all = {"desktop": "", "laptop": ""}
kernel_args_debug_only = {"desktop": "", "laptop": ""}
kernel_args_normal_only = {"desktop": "", "laptop": ""}
user = "janis"
+1 -1
View File
@@ -1,6 +1,6 @@
[general] [general]
import = [ import = [
"~/.config/alacritty/dank-theme.toml" "~/.config/alacritty/theme.toml"
] ]
[font] [font]
-31
View File
@@ -1,31 +0,0 @@
[colors.primary]
background = '#0e1513'
foreground = '#dde4e1'
[colors.selection]
text = '#dde4e1'
background = '#005049'
[colors.cursor]
text = '#0e1513'
cursor = '#82d5c9'
[colors.normal]
black = '#0e1513'
red = '#f49c6e'
green = '#6ad571'
yellow = '#fff372'
blue = '#6bcabc'
magenta = '#1c6258'
cyan = '#82d5c9'
white = '#d2dfdd'
[colors.bright]
black = '#808a88'
red = '#ffc09f'
green = '#a5ffab'
yellow = '#fff7a5'
blue = '#9ceadf'
magenta = '#b9fff4'
cyan = '#d2fff8'
white = '#f8fffe'
+4
View File
@@ -30,6 +30,10 @@ output_path = '~/.local/share/color-schemes/Matugen.colors'
input_path = '~/.config/matugen/templates/kitty/colors.conf' input_path = '~/.config/matugen/templates/kitty/colors.conf'
output_path = '~/.config/kitty/colors.conf' output_path = '~/.config/kitty/colors.conf'
[templates.alacritty]
input_path = '~/.config/matugen/templates/alacritty/theme.toml'
output_path = '~/.config/alacritty/colors.toml'
# My own # My own
[templates.hyprland] [templates.hyprland]
@@ -0,0 +1,68 @@
[colors.primary]
background = '{{colors.background.default.hex}}'
foreground = '{{colors.on_surface.default.hex}}'
[colors.cursor]
text = '{{colors.on_surface.default.hex}}'
cursor = '{{colors.on_surface_variant.default.hex}}'
[colors.vi_mode_cursor]
text = '{{colors.background.default.hex}}'
cursor = '{{colors.primary.default.hex}}'
[colors.search.matches]
foreground = '{{colors.surface_variant.default.hex}}'
background = '{{colors.tertiary.default.hex}}'
[colors.search.focused_match]
foreground = '{{colors.surface_variant.default.hex}}'
background = '{{colors.primary.default.hex}}'
[colors.footer_bar]
foreground = '{{colors.surface_variant.default.hex}}'
background = '{{colors.inverse_surface.default.hex}}'
[colors.hints.start]
foreground = '{{colors.surface_variant.default.hex}}'
background = '{{colors.secondary.default.hex}}'
[colors.hints.end]
foreground = '{{colors.surface_variant.default.hex}}'
background = '{{colors.secondary.default.hex}}'
[colors.selection]
text = '{{colors.background.default.hex}}'
background = '{{colors.primary.default.hex}}'
[colors.normal]
black = '#181818'
red = '{{colors.error.default.hex}}'
green = '{{colors.primary.default.hex}}'
yellow = '{{colors.inverse_primary.default.hex}}'
blue = '{{colors.primary.default.hex}}'
magenta = '{{colors.tertiary.default.hex}}'
cyan = '{{colors.secondary.default.hex}}'
white = '#BAC2DE'
[colors.bright]
black = '#585B70'
red = '#F38BA8'
green = '#A6E3A1'
yellow = '#F9E2AF'
blue = '#89B4FA'
magenta = '#F5C2E7'
cyan = '#94E2D5'
white = '#A6ADC8'
[colors.dim]
black = '#45475A'
red = '#F38BA8'
green = '#A6E3A1'
yellow = '#F9E2AF'
blue = '#89B4FA'
magenta = '#F5C2E7'
cyan = '#94E2D5'
white = '#BAC2DE'
+4 -2
View File
@@ -109,11 +109,13 @@
"cpu": { "cpu": {
"tooltip-format": "<big>CPU</big>\n<tt>Total: {usage}</tt>", "tooltip-format": "<big>CPU</big>\n<tt>Total: {usage}</tt>",
"format": "\uf4bc {usage}", "format": "\uf4bc {usage}",
"interval": 5 "interval": 5,
"on-click": "alacritty -e dgop -T dgop"
}, },
"memory": { "memory": {
"format": "\uefc5 {percentage}", "format": "\uefc5 {percentage}",
"interval": 5 "interval": 5,
"on-click": "alacritty -e dgop -T dgop"
}, },
"pulseaudio": { "pulseaudio": {
"format": "{icon} {volume}", "format": "{icon} {volume}",
+80
View File
@@ -0,0 +1,80 @@
# Lines configured by zsh-newuser-install
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
bindkey -e
# End of lines configured by zsh-newuser-install
# The following lines were added by compinstall
zstyle :compinstall filename '/home/janis/.zshrc'
autoload -Uz compinit
compinit
autoload -U promptinit
promptinit
# End of lines added by compinstall
ENABLE_CORRECTION=true
# Handy aliases
alias ls='ls -l --color'
alias ll='ls -la --color'
alias v='nvim'
alias c='clear'
alias cv='clear && nvim'
alias fm='thunar .'
alias gl='git ls-files --others --exclude-standard'
alias gm='git ls-files -m'
alias gp='git pull'
alias cfh='nvim ~/projects/system/dotfiles/config/hypr/'
alias cfn='nvim ~/projects/system/nvim/'
alias cff='nvim ~/projects/system/dotfiles/config/fish/'
alias cfa='nvim ~/projects/system/dotfiles/config/astal/'
alias cf='nvim ~/projects/system/dotfiles/'
alias g='lazygit'
alias ff='fastfetch'
alias p='nvimpager -p'
alias latexdocs='zathura ~/projects/latex/docs/docs.pdf &>> /dev/null & disown'
alias gccerr='gcc -Wall -Wextra -Wpedantic -Werror -Wmissing-prototypes -std=c99'
alias linecount='cloc --vcs git .'
# Aliases from ohmyzsh
alias cp='nocorrect cp'
alias man='nocorrect man'
alias mkdir='nocorrect mkdir'
alias mv='nocorrect mv'
alias sudo='nocorrect sudo'
alias su='nocorrect su'
alias rm='nocorrect rm'
alias -g ...='../..'
alias -g ....='../../..'
alias -g .....='../../../..'
alias -g ......='../../../../..'
alias -- -='cd -'
alias 1='cd -1'
alias 2='cd -2'
alias 3='cd -3'
alias 4='cd -4'
alias 5='cd -5'
alias 6='cd -6'
alias 7='cd -7'
alias 8='cd -8'
alias 9='cd -9'
export PATH=$PATH:~/projects/system/dotfiles/scripts/
# Yazi wrapper
function y() {
local tmp cwd; tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
command yazi "$@" --cwd-file="$tmp"
IFS= read -r -d '' cwd < "$tmp"
[ "$cwd" != "$PWD" ] && [ -d "$cwd" ] && builtin cd -- "$cwd" || builtin true
command rm -f -- "$tmp"
}
source ~/.config/zsh/theme.zsh
eval "$(zoxide init --cmd j zsh)"
# for file in ~/projects/system/dotfiles/system/completions/*
# do
# source $file
# done
+15
View File
@@ -0,0 +1,15 @@
local return_code="%F{9}%? ↵%{$reset_color%})"
local user_host="%B%F{9}%n%F{15}@%F{172}%m%f "
local user_symbol='%(!.#.$)'
local current_dir="%B%F{2}%1~ %f"
local vcs_info=''
local venv_prompt=''
precmd () {
vcs_info='git status'
}
PS1="╭─${user_host}${current_dir}${vcs_info}${venv_prompt}
╰─%B${user_symbol}%b "
RPROMPT="%B${return_code}%b"
-29
View File
@@ -1,29 +0,0 @@
import decman
from modules.core import utilities
from modules.core.system import base, pipewire
from modules.core.applications import dev_tools, games, steering_wheel, virtual_machines
from modules.core.ui import file_manager, fonts, hyprland, login, shell
from modules.coding import latex, neovim
if decman.aur:
decman.aur.ignored_packages |= {"yay"}
if decman.pacman:
decman.pacman.ignored_packages |= {"yay", "aylurs-gtk-shell"}
decman.modules += [
base.BasePackages("desktop"),
pipewire.Pipewire(),
dev_tools.DevTools(),
games.Games(),
steering_wheel.SteeringWheel(),
file_manager.FileManager(),
fonts.Fonts(),
hyprland.Hyprland(),
login.LoginManager("desktop"),
shell.DesktopShell(),
neovim.Neovim(),
latex.Latex(),
utilities.UtilPackages(),
virtual_machines.VirtualMachines(),
]
-50
View File
@@ -1,50 +0,0 @@
import decman
from decman.plugins import pacman
import config
class Latex(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("latex")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"biber",
"perl-yaml-tiny",
"perl-file-homedir",
"python-pygments",
"texlab",
"texlive-basic",
"texlive-bibtexextra",
"texlive-binextra",
"texlive-context",
"texlive-fontsextra",
"texlive-fontsrecommended",
"texlive-fontutils",
"texlive-formatsextra",
"texlive-games",
"texlive-humanities",
"texlive-latex",
"texlive-latexextra",
"texlive-latexrecommended",
"texlive-luatex",
"texlive-mathscience",
"texlive-metapost",
"texlive-music",
"texlive-pictures",
"texlive-plaingeneric",
"texlive-pstricks",
"texlive-publishers",
"texlive-xetex",
"texlive-langgerman",
}
def files(self) -> dict[str, decman.File]:
return {
f"/home/{config.user}.indentconfig.yaml": decman.File(
source_file="./linters/indentconfig.yaml"
)
}
-26
View File
@@ -1,26 +0,0 @@
import decman
from decman.plugins import pacman, aur
class Neovim(decman.Module):
def __init__(self):
"""Neovim Packages"""
super().__init__("neovim")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"neovim",
"lua",
"lua-language-server",
"tree-sitter",
"tree-sitter-cli",
"stylua",
}
# def directories(self) -> dict[str, decman.Directory]:
# return { "": decman.Directory() }
@aur.packages
def aurpkgs(self) -> set[str]:
return {"shell-color-scripts-git", "nvimpager"}
-51
View File
@@ -1,51 +0,0 @@
import decman
import config
from decman.plugins import pacman
class DevTools(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("dev-tools")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"act",
"cronie",
"cloc",
"cmake",
"dart-sass",
"docker",
"docker-buildx",
"docker-compose",
"filezilla",
"git-lfs",
"hugo",
"helm",
"kitty",
"kubectl",
"lazygit",
"meld",
"meson",
"minisign",
"python-argcomplete",
"python-black",
"python-build",
"python-colorama",
"python-installer",
"python-jsonschema",
"python-pip",
"python-pyaml",
"python-numpy",
"python-scipy",
"python-sympy",
"serpl",
"terminator",
}
def directories(self) -> dict[str, decman.Directory]:
return {
f"/home/{config.user}/.config/lazygit": decman.Directory("./config/lazygit", owner=config.user, group=config.user),
f"/home/{config.user}/.config/kitty": decman.Directory("./config/kitty", owner=config.user, group=config.user),
}
-29
View File
@@ -1,29 +0,0 @@
import decman
from decman.plugins import pacman, aur
class Games(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("games")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"android-udev",
"android-tools",
"gamemode",
"gamescope",
# "lib32-vulkan-radeon",
"obs-studio",
"obs-studio-plugin-browser",
"prismlauncher",
"steam",
"vulkan-radeon",
"v4l2loopback-dkms",
}
@aur.packages
def aurpkgs(self) -> set[str]:
# Consider switching to WiVRN
return {"bs-manager-bin", "alvr-bin"}
@@ -1,15 +0,0 @@
import decman
from decman.plugins import aur
class SteeringWheel(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("steering-wheel")
@aur.packages
def aurpkgs(self) -> set[str]:
return {"oversteer", "hid-tmff2-dkms-git"}
def on_enable(self, store: decman.Store):
return super().on_enable(store)
@@ -1,27 +0,0 @@
import decman
from decman.plugins import pacman
import config
class VirtualMachines(decman.Module):
def __init__(self):
"""Set up virtual machines"""
super().__init__("virtualmachines")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"dnsmasq",
"libayatana-appindicator",
"libvirt-python",
"lvm2",
"qemu-base",
"vde2",
"virt-manager",
"virt-viewer",
}
def on_enable(self, store: decman.Store):
# TODO: Everywhere, make user configurable
decman.prg(["usermod", "-G", "libvirt", "-a", config.user])
-74
View File
@@ -1,74 +0,0 @@
from typing import Literal
import decman
from decman.plugins import pacman, aur
class BasePackages(decman.Module):
def __init__(self, platform: Literal["desktop", "laptop"]):
"""Base packages that should never be uninstalled"""
self._platform: Literal["desktop", "laptop"] = platform
super().__init__("base")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"base",
"base-devel",
"cifs-utils",
"cups",
"dosfstools",
"efibootmgr",
"exfatprogs",
"git",
"grub",
"gsl",
"libisoburn",
"libguestfs",
"libmicrohttpd",
"linux",
"linux-firmware",
"linux-headers",
"lzop",
"mesa",
"mesa-utils",
"mtools",
"ntfs-3g",
"ntfsprogs",
"networkmanager",
"pacman-contrib",
"plymouth",
"reflector",
"samba",
"sdl12-compat",
"sdl2-compat",
"sudo",
"systemd-resolvconf",
"trash-cli",
}
@aur.packages
def aurpkgs(self) -> set[str]:
return {"decman"}
# TODO:
# def file_variables(self) -> dict[str, str]:
# return super().file_variables()
def files(self) -> dict[str, decman.File]:
# TODO: File substitutions (for PC and laptop)
if self._platform == "desktop":
return {
"/etc/mkinitcpio.conf": decman.File(
source_file="./system/mkinitcpio.conf"
),
"/etc/pacman.conf": decman.File(source_file="./system/pacman.conf"),
"/etc/default/grub": decman.File(source_file="./system/grub"),
"/etc/environment": decman.File(source_file="./system/environment"),
}
else:
return {}
def on_change(self, store):
decman.prg(["mkinitcpio", "-P"])
decman.prg(["grub-mkconfig", "-o", "/boot/grub/grub.cfg"])
-20
View File
@@ -1,20 +0,0 @@
import decman
from decman.plugins import pacman
class Pipewire(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("pipewire")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"gst-plugin-pipewire",
"pavucontrol",
"pipewire",
"pipewire-alsa",
"pipewire-pulse",
"pipewire-jack",
"wireplumber",
}
-37
View File
@@ -1,37 +0,0 @@
import decman
from decman.plugins import pacman, aur
import config
class FileManager(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("filemanager")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"ifuse",
"libimobiledevice",
"fuse2",
"movit",
"ouch",
"resvg",
"yazi",
}
@aur.packages
def aurpkgs(self) -> set[str]:
return {"xdg-desktop-portal-termfilechooser-hunkyburrito-git"}
def directories(self) -> dict[str, decman.Directory]:
return {
f"/home/{config.user}/.config/xdg-desktop-portal": decman.Directory(
"./config/xdg-desktop-portal", owner=config.user, group=config.user
),
f"/home/{config.user}/.config/xdg-desktop-portal-termfilechooser": decman.Directory(
"./config/xdg-desktop-portal-termfilechooser", owner=config.user, group=config.user
),
f"/home/{config.user}/.config/yazi": decman.Directory("./config/yazi", owner=config.user, group=config.user),
}
-23
View File
@@ -1,23 +0,0 @@
import decman
from decman.plugins import pacman, aur
class Fonts(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("fonts")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"adobe-source-code-pro-fonts",
"ttf-fantasque-nerd",
"ttf-jetbrains-mono-nerd",
"ttf-iosevka-nerd",
"ttf-nerd-fonts-symbols-common",
"inter-font",
}
@aur.packages
def aurpkgs(self) -> set[str]:
return {"ttf-comfortaa"}
-40
View File
@@ -1,40 +0,0 @@
import decman
from decman.plugins import pacman
import config
class Hyprland(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("hyprland")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"cliphist",
# "grimblast",
"hyprland",
"hyprlock",
"hypridle",
"hyprshutdown",
"hyprpwcenter",
"hyprtoolkit",
"hyprpolkitagent",
"hyprpaper",
"libappindicator",
"rtkit",
"wl-clipboard",
"wev",
"xdg-desktop-portal-hyprland",
}
def directories(self) -> dict[str, decman.Directory]:
return {
f"/home/{config.user}/.config/hypr": decman.Directory(
"./config/hypr", owner=config.user, group=config.user
),
f"/home/{config.user}/.config/wlogout": decman.Directory(
"./config/wlogout", owner=config.user, group=config.user
)
}
-38
View File
@@ -1,38 +0,0 @@
from typing import Literal
import decman
from decman.plugins import pacman, systemd
class LoginManager(decman.Module):
def __init__(self, platform: Literal["desktop", "laptop"]):
"""Base packages that should never be uninstalled"""
self._platform: Literal["desktop", "laptop"] = platform
super().__init__("login")
@pacman.packages
def pkgs(self) -> set[str]:
if self._platform == "desktop":
return {
"greetd",
"greetd-tuigreet",
}
else:
return {"gdm"}
@systemd.units
def units(self) -> set[str]:
if self._platform == "desktop":
return {"greetd.service"}
else:
return {"gdm.service"}
def files(self) -> dict[str, decman.File]:
if self._platform == "desktop":
return {
"/etc/greetd/config.toml": decman.File("./system/greetd/config.toml"),
"/etc/pam.d/greetd": decman.File("./system/greetd/pam"),
}
else:
# TODO: GDM config files
return {}
-21
View File
@@ -1,21 +0,0 @@
# NOTE: Bar may eventually be replaced by custom bar
import decman
from decman.plugins import pacman
import config
class DesktopShell(decman.Module):
def __init__(self):
"""DesktopShell"""
super().__init__("desktopshell")
@pacman.packages
def pkgs(self) -> set[str]:
return {"dms-shell", "cava", "matugen", "papirus-icon-theme", "adw-gtk-theme", "power-profiles-daemon", "qt6ct"}
# TODO: Copy the config of dms, once done
def directories(self) -> dict[str, decman.Directory]:
return {
f"/home/{config.user}/.config/matugen": decman.Directory("./config/matugen", owner=config.user, group=config.user)
}
-78
View File
@@ -1,78 +0,0 @@
import decman
from decman.plugins import pacman, aur
import config
class UtilPackages(decman.Module):
def __init__(self):
"""Util packages"""
super().__init__("util")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"bashtop",
"brightnessctl",
"bind",
"bluez",
"clamav",
"evince",
"fastfetch",
"fd",
"ffmpeg",
"ffmpegthumbnailer",
"fish",
"fzf",
"gdu",
"gimp",
"go",
"gnome-disk-utility",
"gwenview",
"handbrake",
"iptables",
"libdvdcss",
"man-pages",
"man-db",
"mpv",
"nextcloud-client",
"okular",
"openconnect",
"os-prober",
"qalculate-qt",
"ripgrep",
"simple-scan",
"smartmontools",
"thunderbird",
"tldr",
"unzip",
"wget",
"wine",
"xclip",
"zathura",
"zathura-pdf-poppler",
"zip",
"zoxide",
"networkmanager-openconnect",
}
@aur.packages
def aurpkgs(self) -> set[str]:
return {
"librewolf-bin",
"brave-bin",
"vesktop-bin",
"uxplay",
"git-credential-manager-bin",
"gradia",
"parabolic",
}
def directories(self) -> dict[str, decman.Directory]:
return {
f"/home/{config.user}/.config/fish": decman.Directory("./config/fish", owner=config.user, group=config.user),
f"/home/{config.user}/.config/fastfetch": decman.Directory(
"./config/fastfetch", owner=config.user, group=config.user
),
f"/home/{config.user}/.config/mpv": decman.Directory("./config/mpv", owner=config.user, group=config.user),
}
+23
View File
@@ -0,0 +1,23 @@
hyprland
hyprlock
hypridle
hyprpaper
hyprpolkitagent
waybar
wlogout
rofi
alacritty
dgop
btui
nmtui
qt6ct-kde
yazi
swaync
xdg-desktop-portal-hyprland
zsh
fd
rg
rga
resvg
wl-clipboard
nextcloud-client
+5 -9
View File
@@ -22,11 +22,6 @@ if ! [[ -f ~/.config/janishutz/platform ]]; then
fi fi
echo "$platform" >~/.config/janishutz/platform echo "$platform" >~/.config/janishutz/platform
echo "n" >~/.config/janishutz/docked echo "n" >~/.config/janishutz/docked
else
platform=$(cat ~/.config/janishutz/platform)
if [ $platform == "l" ]; then
sed --in-place 's/dpi: 100/dpi: 160' ~/.config/rofi/config.rasi
fi
fi fi
confirmation="" confirmation=""
@@ -36,12 +31,13 @@ if [[ "$confirmation" == "y" ]]; then
fi fi
rm -rf ~/.config/hypr/*.conf rm -rf ~/.config/hypr/*.conf
rm ~/.config/platform rm ~/.config/platform || true
rm -rf ~/.config/rofi rm -rf ~/.config/ags || true
rm -rf ~/.config/ags rm -rf ~/.config/astal || true
rm -rf ~/.config/astal
cp -r ./config/* ~/.config cp -r ./config/* ~/.config
cp ./config/zsh/.zshrc ~/.zshrc
# Makes kitty use the matugen theme config # Makes kitty use the matugen theme config
rm ~/.config/kitty/current-theme.conf rm ~/.config/kitty/current-theme.conf
cp ./linters/indentconfig_import.yaml ~/.indentconfig.yaml cp ./linters/indentconfig_import.yaml ~/.indentconfig.yaml