Compare commits

...

19 Commits

Author SHA1 Message Date
alvinlollo f71c4c3816 Install nvm fish plugin properly and reload 2026-07-19 21:18:23 +10:00
alvinlollo 5d2c403f3d Add NVM LTS install 2026-07-17 19:54:04 +10:00
alvinlollo fc5eb7a943 Add fisher plugin manager 2026-07-17 19:49:07 +10:00
alvinlollo 0112c73e02 Indent 2026-07-17 19:48:33 +10:00
alvinlollo 7541db9354 Update hyprland config 2026-07-17 18:38:15 +10:00
alvinlollo 20dfacce3e Update hyprland config 2026-07-17 18:35:31 +10:00
alvinlollo 3020201a9d Add more depenencies and remove gdoc.vim 2026-07-12 18:00:55 +10:00
alvinlollo c4c26404b1 Add bat install with catppucchin 2026-07-12 17:51:32 +10:00
alvinlollo 663f18d4f7 Merge remote-tracking branch 2026-07-12 14:32:43 +10:00
alvinlollo 9dfcfcce07 Fix no monitor function added 2026-06-21 12:26:34 +10:00
alvinlollo 3b72e59529 Remove tree function from .zshrc change exec with Sudo into alt+S
Removed the tree function from .zshrc configuration.
2026-06-20 23:47:25 +10:00
alvinlollo fcd61b1ee9 Fix monitor patch 2026-06-20 23:19:12 +10:00
alvinlollo 8d0f64d305 Add fish shell install and config 2026-06-20 23:13:24 +10:00
alvinlollo 30cc51cb2f Add fix for nwg displays 2026-06-20 23:12:22 +10:00
alvinlollo 75a29f8d47 Made beta version stable 2026-05-08 21:26:41 +10:00
alvinlollo 3d4731e61e Added fish shell config 2026-05-08 21:21:33 +10:00
alvinlollo 0d8a50e8bd Added ghostty intergration 2026-05-03 22:08:45 +10:00
alvinlollo 8ae028f1c7 Merge branch 'main' of github.com:alvinlollo/Single-install-script 2026-04-15 20:06:02 +10:00
alvinlollo e3ed7c31d9 Added homebrew 2026-04-15 20:05:36 +10:00
54 changed files with 920 additions and 3513 deletions
+61 -27
View File
@@ -1,19 +1,19 @@
#!/usr/bin/bash
if ! command -v pacman >/dev/null; then
echo "Cannot proceed: Not a arch based system"
echo "This script does not have debian support"
echo "+ sleep 10" && sleep 10
exit 1
echo "Cannot proceed: Not a arch based system"
echo "This script does not have debian support"
echo "+ sleep 10" && sleep 10
exit 1
fi
# Install prerequisetes
sudo pacman -S --needed --noconfirm git curl wget python3 python-pip
sudo pacman -S --needed --noconfirm git curl wget python3 python-pip neovim jdk-openjdk base-devel ripgrep fd lazygit curl tectonic tree-sittter sclip julia luarocks shfmt ast-grep nvm
echo ""
echo 'This script will move your current nvim config to ~/.config/nvim.bak'
echo "Press CTRL+C within 20 secconds if you don't want these actions to be made"
sleep 20
echo "Press CTRL+C within 10 secconds if you don't want these actions to be made"
sleep 10
echo ""
# Remove old backups
@@ -22,58 +22,92 @@ echo " Checking for and removing old Neovim backup directories..."
# Use $HOME for reliable path expansion
if [ -e "$HOME/.config/nvim.bak" ]; then
echo "Path $HOME/.config/nvim.bak exists. Removing..."
rm -rf "$HOME/.config/nvim.bak"
echo "Path $HOME/.config/nvim.bak exists. Removing..."
rm -rf "$HOME/.config/nvim.bak"
fi
if [ -e "$HOME/.local/share/nvim.bak" ]; then
echo "Path $HOME/.local/share/nvim.bak exists. Removing..."
rm -rf "$HOME/.local/share/nvim.bak"
echo "Path $HOME/.local/share/nvim.bak exists. Removing..."
rm -rf "$HOME/.local/share/nvim.bak"
fi
if [ -e "$HOME/.local/state/nvim.bak" ]; then
echo "Path $HOME/.local/state/nvim.bak exists. Removing..."
rm -rf "$HOME/.local/state/nvim.bak"
echo "Path $HOME/.local/state/nvim.bak exists. Removing..."
rm -rf "$HOME/.local/state/nvim.bak"
fi
if [ -e "$HOME/.cache/nvim.bak" ]; then
echo "Path $HOME/.cache/nvim.bak exists. Removing..."
rm -rf "$HOME/.cache/nvim.bak"
echo "Path $HOME/.cache/nvim.bak exists. Removing..."
rm -rf "$HOME/.cache/nvim.bak"
fi
# Remove the current nvim config and create a new backup
echo ""
echo " Backing up current Neovim configuration..."
if [ -d "$HOME/.config/nvim" ]; then # Check if nvim config exists before moving
mv "$HOME/.config/nvim" "$HOME/.config/nvim.bak"
mv "$HOME/.config/nvim" "$HOME/.config/nvim.bak"
else
echo "No existing ~/.config/nvim found to back up."
echo "No existing ~/.config/nvim found to back up."
fi
echo ""
echo " Backing up Neovim share, state, and cache directories..."
if [ -d "$HOME/.local/share/nvim" ]; then
mv "$HOME/.local/share/nvim" "$HOME/.local/share/nvim.bak"
mv "$HOME/.local/share/nvim" "$HOME/.local/share/nvim.bak"
fi
if [ -d "$HOME/.local/state/nvim" ]; then
mv "$HOME/.local/state/nvim" "$HOME/.local/state/nvim.bak"
mv "$HOME/.local/state/nvim" "$HOME/.local/state/nvim.bak"
fi
if [ -d "$HOME/.cache/nvim" ]; then
mv "$HOME/.cache/nvim" "$HOME/.cache/nvim.bak"
mv "$HOME/.cache/nvim" "$HOME/.cache/nvim.bak"
fi
# Remove any leftover
if [ -e "$HOME/.config/.nvim" ]; then
echo ""
echo "Removing ~/.config/.nvim..."
rm -rf "$HOME/.config/.nvim"
echo ""
echo "Removing ~/.config/.nvim..."
rm -rf "$HOME/.config/.nvim"
fi
# Install LazyVim
echo ""
git clone https://github.com/alvinlollo/LazyVim ~/.config/nvim
# Dependencys for Gdoc.vim
#wget https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/requirements.txt
#pip3 install -r requirements.txt --break-system-packages && rm requirements.txt
#echo "pip3 install -r requirements.txt"
# Check if nvm is in shell path
if command -v nvm &>/dev/null; then
# Get current shell name
CURRENT_SHELL=$(basename -- "$SHELL")
# 2. Source the correct configuration file safely
if [ "$CURRENT_SHELL" = "fish" ] && [ -f ~/.bashrc ]; then
# Check if fish is installed first, then check for fisher
if command -v fish &>/dev/null && fish -c "functions -q fisher" &>/dev/null; then
fisher install jorgebucaran/nvm.fish
source ~/.config/fish/config.fish
else
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source
fisher install jorgebucaran/fisher
fisher install jorgebucaran/nvm.fish
source ~/.config/fish/config.fish
fi
elif [ "$CURRENT_SHELL" = "zsh" ] && [ -f ~/.zshrc ]; then
echo -e "export NVM_DIR=\"$HOME/.nvm\"\n[ -s \"/usr/share/nvm/nvm.sh\" ] && \. \"/usr/share/nvm/nvm.sh\"\n[ -s \"/usr/share/nvm/init-nvm.sh\" ] && \. \"/usr/share/nvm/init-nvm.sh\"" >>~/.zshrc
source ~/.zshrc
elif [ "$CURRENT_SHELL" = "bash" ] && [ -f ~/.config/fish/config.fish ]; then
echo "source /usr/share/nvm/init-nvm.sh" >>~/.bashrc
source ~/.bashrc
else
echo "Unsupported or unreadable shell configuration: $CURRENT_SHELL"
echo "Failed to add NVM to shell path. Please add it manually to your shell configuration file."
fi
fi
# Use NVM to install the latest LTS version of Node.js
nvm install lts
nvm use lts
Executable
+82
View File
@@ -0,0 +1,82 @@
#!/usr/bin/bash
skip_watermark=false
if [ "$1" = "--skip-watermark" ]; then
skip_watermark=true
fi
if [ "$skip_watermark" = false ]; then
echo '
____ _ _ _ _ _
| __ ) _ _ __ _| |_ _(_)_ __ | | ___ | | | ___
| _ \| | | | / _ | \ \ / / | _ \| |/ _ \| | |/ _ \
| |_) | |_| | | (_| | |\ V /| | | | | | (_) | | | (_) |
|____/ \__ | \__ _|_| \_/ |_|_| |_|_|\___/|_|_|\___/
|___/
--------------- bat Install Script ---------------
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE UNDER THE GPL-2.0 LICENCE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. See the LICENCE for more detail
'
fi
# Install prerequisites
if ! command -v git >/dev/null && command -v curl >/dev/null; then
if command -v pacman >/dev/null; then
echo "pacman detected. Installing prerequisites"
sudo pacman -S zsh git curl --noconfirm
fi
if command -v apt >/dev/null; then
echo "apt detected. Installing prerequisites"
sudo apt install git curl -y
fi
fi
# Install bat
if ! command -v bat >/dev/null; then
if ! command -v zsh >/dev/null && command -v git >/dev/null && command -v curl >/dev/null && command -v fzf >/dev/null; then
if command -v pacman >/dev/null; then
echo "pacman detected. Installing bat"
sudo pacman -S bat batman --noconfirm
fi
if command -v apt >/dev/null; then
echo "apt detected. Installing bat"
sudo apt install bat batman -y
fi
fi
# 1. Detect the actual active shell name (not just the login default)
CURRENT_SHELL=$(basename -- "$SHELL")
# 2. Source the correct configuration file safely
if [ "$CURRENT_SHELL" = "bash" ] && [ -f ~/.bashrc ]; then
source ~/.bashrc
elif [ "$CURRENT_SHELL" = "zsh" ] && [ -f ~/.zshrc ]; then
source ~/.zshrc
elif [ "$CURRENT_SHELL" = "fish" ] && [ -f ~/.config/fish/config.fish ]; then
source ~/.config/fish/config.fish
else
echo "Unsupported or unreadable shell configuration: $CURRENT_SHELL"
fi
fi
# Install Catppuccin themes
source ~/.bashrc
mkdir -p "$(bat --config-dir)/themes"
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Macchiato.tmTheme
bat cache --build
echo "--theme="Catppuccin Mocha"" >>"$(bat --config-dir)/themes"
# Detect shell name via POSIX standard
CURRENT_SHELL=$(basename "$0" 2>/dev/null || echo "$0")
CURRENT_SHELL="${CURRENT_SHELL#-}"
case "$CURRENT_SHELL" in
"bash") [ -f ~/.bashrc ] && echo "export MANPAGER="bat -plman"" >>~/.bashrc ;;
"zsh") [ -f ~/.zshrc ] && echo "export MANPAGER="bat -plman"" >>~/.zshrc ;;
"fish") exec fish -c "echo "export MANPAGER="bat -plman"" >> ~/.config/fish/config.fish" ;;
*) echo "Unsupported shell: $CURRENT_SHELL" ;;
esac
+12 -10
View File
@@ -5,6 +5,16 @@ export PATH="$HOME/.local/bin:$PATH"
export WAYLAND_DISPLAY=$WAYLAND_DISPLAY
export XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR
# Homebrew (If installed)
if [[ -f "/home/linusbrew/.linuxbrew/bin/brew" ]]; then
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv zsh)"
fi
# Ghostty (If exists)
if [ -n "${GHOSTTY_RESOURCES_DIR}" ]; then
builtin source "${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash"
fi
# Path to your oh-my-zsh installation.
export ZSH=~/.oh-my-zsh
@@ -142,14 +152,6 @@ update () {
omz update
}
tree () {
if [ "$1" >/dev/null ]; then
eza --tree --git --no-time --no-permissions --level $1
else
eza --tree --git --no-time --no-permissions
fi
}
# Sudo last command with control + u
zle -N sudo-last-command-execute
@@ -159,8 +161,8 @@ sudo-last-command-execute() {
}
# Bind the widget to Control+U
bindkey '^U' sudo-last-command-execute
# Bind the widget to Alt+S
bindkey '^[S' sudo-last-command-execute
# Ydotool
if [[ -f "/tmp/.ydotool_socket" ]]; then
+5
View File
@@ -0,0 +1,5 @@
# Auto start Hyprland on tty1
if test -z "$DISPLAY" ;and test "$XDG_VTNR" -eq 1
mkdir -p ~/.cache
exec start-hyprland > ~/.cache/hyprland.log 2>&1
end
@@ -0,0 +1,14 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# the 'fish_key_bindings' variable from its old default scope (universal)
# to its new default scope (global). We recommend you delete this file
# and configure key bindings in ~/.config/fish/config.fish if needed.
# set --global fish_key_bindings fish_default_key_bindings
# Prior to version 4.3, fish shipped an event handler that runs
# `set --universal fish_key_bindings fish_default_key_bindings`
# whenever the fish_key_bindings variable is erased.
# This means that as long as any fish < 4.3 is still running on this system,
# we cannot complete the migration.
# As a workaround, erase the universal variable at every shell startup.
set --erase --universal fish_key_bindings
@@ -0,0 +1,14 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# the 'fish_key_bindings' variable from its old default scope (universal)
# to its new default scope (global). We recommend you delete this file
# and configure key bindings in ~/.config/fish/config.fish if needed.
# set --global fish_key_bindings fish_default_key_bindings
# Prior to version 4.3, fish shipped an event handler that runs
# `set --universal fish_key_bindings fish_default_key_bindings`
# whenever the fish_key_bindings variable is erased.
# This means that as long as any fish < 4.3 is still running on this system,
# we cannot complete the migration.
# As a workaround, erase the universal variable at every shell startup.
set --erase --universal fish_key_bindings
@@ -0,0 +1,37 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# theme variables from universal to global scope.
# Don't edit this file, as it will be written by the web-config tool (`fish_config`).
# To customize your theme, delete this file and see
# help interactive#syntax-highlighting
# or
# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING
# for appropriate commands to add to ~/.config/fish/config.fish instead.
# See also the release notes for fish 4.3.0 (run `help relnotes`).
set --global fish_color_autosuggestion 555 brblack
set --global fish_color_cancel -r
set --global fish_color_command blue
set --global fish_color_comment red
set --global fish_color_cwd green
set --global fish_color_cwd_root red
set --global fish_color_end green
set --global fish_color_error brred
set --global fish_color_escape brcyan
set --global fish_color_history_current --bold
set --global fish_color_host normal
set --global fish_color_host_remote yellow
set --global fish_color_normal normal
set --global fish_color_operator brcyan
set --global fish_color_param cyan
set --global fish_color_quote yellow
set --global fish_color_redirection cyan --bold
set --global fish_color_search_match --background=111
set --global fish_color_selection white --bold --background=brblack
set --global fish_color_status red
set --global fish_color_user brgreen
set --global fish_color_valid_path --underline
set --global fish_pager_color_completion normal
set --global fish_pager_color_description B3A06D yellow -i
set --global fish_pager_color_prefix cyan --bold --underline
set --global fish_pager_color_progress brwhite --background=cyan
set --global fish_pager_color_selected_background -r
@@ -0,0 +1,37 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# theme variables from universal to global scope.
# Don't edit this file, as it will be written by the web-config tool (`fish_config`).
# To customize your theme, delete this file and see
# help interactive#syntax-highlighting
# or
# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING
# for appropriate commands to add to ~/.config/fish/config.fish instead.
# See also the release notes for fish 4.3.0 (run `help relnotes`).
set --global fish_color_autosuggestion 555 brblack
set --global fish_color_cancel -r
set --global fish_color_command blue
set --global fish_color_comment red
set --global fish_color_cwd green
set --global fish_color_cwd_root red
set --global fish_color_end green
set --global fish_color_error brred
set --global fish_color_escape brcyan
set --global fish_color_history_current --bold
set --global fish_color_host normal
set --global fish_color_host_remote yellow
set --global fish_color_normal normal
set --global fish_color_operator brcyan
set --global fish_color_param cyan
set --global fish_color_quote yellow
set --global fish_color_redirection cyan --bold
set --global fish_color_search_match --background=111
set --global fish_color_selection white --bold --background=brblack
set --global fish_color_status red
set --global fish_color_user brgreen
set --global fish_color_valid_path --underline
set --global fish_pager_color_completion normal
set --global fish_pager_color_description B3A06D yellow -i
set --global fish_pager_color_prefix cyan --bold --underline
set --global fish_pager_color_progress brwhite --background=cyan
set --global fish_pager_color_selected_background -r
+48
View File
@@ -0,0 +1,48 @@
# Commands to run in interactive sessions can go here
if status is-interactive
# No greeting
set fish_greeting
# Use starship
function starship_transient_prompt_func
starship module character
end
if test "$TERM" != "linux"
starship init fish | source
enable_transience
end
# Colors
if test -f ~/.local/state/quickshell/user/generated/terminal/sequences.txt
cat ~/.local/state/quickshell/user/generated/terminal/sequences.txt
end
# Aliases
# kitty doesn't clear properly so we need to do this weird printing
alias clear "printf '\033[2J\033[3J\033[1;1H'"
alias celar "printf '\033[2J\033[3J\033[1;1H'"
alias claer "printf '\033[2J\033[3J\033[1;1H'"
alias pamcan pacman
alias q 'qs -c ii'
if test "$TERM" != "linux"
alias ls 'eza --icons'
end
if test "$TERM" = "xterm-kitty"
alias ssh 'kitten ssh'
end
end
set -gx PATH $HOME/.local/bin $HOME/bin /usr/local/bin /usr/bin $PATH
export WAYLAND_DISPLAY=$WAYLAND_DISPLAY
export XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR
# Homebrew (If installed)
if test -f "/home/linusbrew/.linuxbrew/bin/brew"
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv zsh)"
end
# Ydotool
if test -f "/tmp/.ydotool_socket"
set -gx YDOTOOL_SOCKET /tmp/.ydotool_socket
end
+6
View File
@@ -0,0 +1,6 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:4300
SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
SETUVAR _fisher_plugins:jorgebucaran/fisher
SETUVAR _fisher_upgraded_to_4_4:\x1d
+3
View File
@@ -0,0 +1,3 @@
function edit --wraps=nvim --description 'alias edit=nvim'
nvim $argv
end
+3
View File
@@ -0,0 +1,3 @@
function lzd --wraps=lazydocker --description 'alias lzd=lazydocker'
lazydocker $argv
end
+3
View File
@@ -0,0 +1,3 @@
function precmd --wraps="print -Pn '\\e]133;D;%?\\a\\e]133;A\\a'" --description "alias precmd=print -Pn '\\e]133;D;%?\\a\\e]133;A\\a'"
print -Pn '\e]133;D;%?\a\e]133;A\a' $argv
end
+3
View File
@@ -0,0 +1,3 @@
function preexec --wraps="print -Pn '\\e]133;B\\a\\e]133;C\\a'" --description "alias preexec=print -Pn '\\e]133;B\\a\\e]133;C\\a'"
print -Pn '\e]133;B\a\e]133;C\a' $argv
end
+41
View File
@@ -0,0 +1,41 @@
function update --description 'Automatically finds binarys and uses update commands'
if command -v pacman >/dev/null && command -v yay >/dev/null
echo "✅ 'pacman' and 'yay' found. Updating."
sudo pacman -Syu --noconfirm
yay -Syu --sudoloop --save --answerclean None --answerdiff None --noconfirm
else if command -v pacman >/dev/null
echo "✅ 'pacman' found. Updating."
sudo pacman -Syu --noconfirm
end
if command -v paru >/dev/null
echo "✅ 'paru' found. Updating."
paru -Syu
end
if command -v apt >/dev/null
echo "✅ 'apt' found. Updating."
sudo apt update && sudo apt full-upgrade -y
end
if command -v hyprpm >/dev/null
echo "✅ 'hyprpm' found. Updating."
hyprpm reload
sleep 2
hyprpm update
end
if command -v flatpak >/dev/null
echo "✅ 'flatpak' found. Updating."
flatpak update -y
end
if command -v npm >/dev/null
echo "✅ 'npm' found. Updating."
sudo npm install -g npm-check-updates
end
if command -v omz >/dev/null
omz update
end
end
@@ -0,0 +1,5 @@
# This directory is a Syncthing folder marker.
# Do not delete.
folderID: wguai-uzdes
created: 2026-07-12T15:54:28+10:00
-22
View File
@@ -1,22 +0,0 @@
# You can put extra environment variables here
# https://wiki.hyprland.org/Configuring/Environment-variables/
# ######### Input method ##########
# See https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland
#env = QT_IM_MODULE, fcitx
#env = XMODIFIERS, @im=fcitx
#env = SDL_IM_MODULE, fcitx
#env = GLFW_IM_MODULE, ibus
#env = INPUT_METHOD, fcitx
# ######## Wayland #########
# Tearing
# env = WLR_DRM_NO_ATOMIC, 1
# ?
# env = WLR_NO_HARDWARE_CURSORS, 1
# ######## EDITOR #########
#https://wiki.archlinux.org/title/Category:Text_editors
# for example: vi nano nvim ...
#env = EDITOR, vim
+10
View File
@@ -0,0 +1,10 @@
-- This file will not be overwritten across dots-hyprland updates.
-- The file name is for the sake of organization and does not matter
-- See the corresponding files in ~/.config/hypr/hyprland for examples
--
hl.env("XCURSOR_THEME", "Catppuccin Macchiato Dark")
hl.env("XCURSOR_SIZE", "24")
hl.env("HYPRCURSOR_THEME", "Catppuccin Macchiato Dark")
hl.env("HYPRCURSOR_SIZE", "24")
hl.env("WEBKIT_DISABLE_DMABUF_RENDERER", "1")
-6
View File
@@ -1,6 +0,0 @@
# You can make apps auto-start here
# Relevant Hyprland wiki section: https://wiki.hyprland.org/Configuring/Keywords/#executing
# Input method
# exec-once = fcitx5
+16
View File
@@ -0,0 +1,16 @@
-- This file will not be overwritten across dots-hyprland updates.
-- The file name is for the sake of organization and does not matter
-- See the corresponding files in ~/.config/hypr/hyprland for examples
hl.on("hyprland.start", function()
hl.exec_cmd("hyprctl setcursor 'Catppuccin Macchiato Dark' 24")
hl.exec_cmd("kdeconnectd &")
hl.exec_cmd("zen-browser &")
hl.exec_cmd("sleep 5 && syncthingtray-qt6 --wait &")
hl.exec_cmd("mages &")
hl.exec_cmd("sleep 30 && trayscale --hide-window &")
hl.exec_cmd("rclone mount SchoolGdrive: /mnt/SchoolGdrive --dir-cache-time 10s --poll-interval 10s --attr-timeout 10s --size-only")
hl.exec_cmd("rclone mount PersonalGdrive: /mnt/PersonalGdrive --dir-cache-time 10s --poll-interval 10s --attr-timeout 10s --size-only")
hl.exec_cmd("rclone mount gcrypt: /mnt/gcrypt --dir-cache-time 10s --poll-interval 10s --attr-timeout 10s --size-only")
hl.exec_cmd("trayscale --hide-window")
end)
-6
View File
@@ -1,6 +0,0 @@
# Put general config stuff here
# Here's a list of every variable: https://wiki.hyprland.org/Configuring/Variables/
# monitor=,addreserved, 0, 0, 0, 0 # Custom reserved area
# HDMI port: mirror display. To see device name, use `hyprctl monitors`
+3
View File
@@ -0,0 +1,3 @@
-- This file will not be overwritten across dots-hyprland updates.
-- The file name is for the sake of organization and does not matter
-- See the corresponding files in ~/.config/hypr/hyprland for examples
-24
View File
@@ -1,24 +0,0 @@
# See https://wiki.hyprland.org/Configuring/Binds/
#!
##! User
bind = Ctrl+Super, Slash, exec, xdg-open ~/.config/illogical-impulse/config.json # Edit shell config
bind = Ctrl+Super+Alt, Slash, exec, xdg-open ~/.config/hypr/custom/keybinds.conf # Edit extra keybinds
##! Apps
# bind = Super, Return, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "${TERMINAL}" "kitty -1" "foot" "alacritty" "wezterm" "konsole" "kgx" "uxterm" "xterm" # Terminal
# bind = Super, T, exec, alacritty
# bind = Ctrl+Alt, T, exec, alacritty
# bind = Super, E, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "dolphin" "nautilus" "nemo" "thunar" "${TERMINAL}" "kitty -1 fish -c yazi" # File manager
# bind = Super, W, exec, zen-browser # Browser
# bind = Super, C, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "code" "codium" "cursor" "zed" "zedit" "zeditor" "kate" "gnome-text-editor" "emacs" "command -v nvim && kitty -1 nvim" "command -v micro && kitty -1 micro" # Code editor
# bind = Ctrl+Super+Shift+Alt, W, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "wps" "onlyoffice-desktopeditors" "libreoffice" # Office software
# bind = Super, X, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "kate" "gnome-text-editor" "emacs" # Text editor
# bind = Ctrl+Super, V, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "pavucontrol-qt" "pavucontrol" # Volume mixer
# bind = Super, I, exec, XDG_CURRENT_DESKTOP=gnome ~/.config/hypr/hyprland/scripts/launch_first_available.sh "qs -p ~/.config/quickshell/$qsConfig/settings.qml" "systemsettings" "gnome-control-center" "better-control" # Settings app
# bind = Ctrl+Shift, Escape, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "gnome-system-monitor" "plasma-systemmonitor --page-name Processes" "command -v btop && kitty -1 fish -c btop" # Task manager
# Add stuff here
# Use #! to add an extra column on the cheatsheet
# Use ##! to add a section in that column
# Add a comment after a bind to add a description, like above
+63
View File
@@ -0,0 +1,63 @@
-- This file will not be overwritten across dots-hyprland updates.
-- The file name is for the sake of organization and does not matter
-- See the corresponding files in ~/.config/hypr/hyprland for examples
--##! Overrides
--# Unbind upstream binds we want to replace
hl.unbind("SUPER + B") -- sidebar toggle -> we use this for browser
hl.unbind("SUPER + T") -- terminal (we don't want this combo)
hl.unbind("CTRL + ALT + T") -- terminal (we don't want this combo)
hl.unbind("SUPER + W") -- browser (we use B instead)
hl.unbind("SUPER + ALT + Page_Up")
hl.unbind("SUPER + ALT + Page_Down")
hl.unbind("SUPER + SHIFT + Page_Up")
hl.unbind("SUPER + SHIFT + Page_Down")
hl.unbind("SUPER + O")
--# Unbind workspace focus with named keys (we use code: keys)
for i = 0, 9 do
hl.unbind("SUPER + " .. i)
end
--# Rebind browser on B (previously sidebar toggle)
hl.bind("SUPER + B", hl.dsp.exec_cmd(browser), { description = "App: Browser" })
--##! Workspace
--# Switching with raw keycodes (layout-independent)
for i = 1, 10 do
local numberkey = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
hl.bind("SUPER + code:" .. numberkey[i], function()
hl.dispatch(hl.dsp.focus({ workspace = workspace_in_group(i) }))
end)
end
--# keypad numbers
for i = 1, 10 do
local numpadkey = { 87, 88, 89, 83, 84, 85, 79, 80, 81, 90 }
hl.bind("SUPER + code:" .. numpadkey[i], function()
hl.dispatch(hl.dsp.focus({ workspace = workspace_in_group(i) }))
end)
end
--#/# bind = SUPER+CTRL, code:,, -- Send to workspace & switch
for i = 1, 10 do
local numberkey = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
hl.bind("SUPER + CTRL + code:" .. numberkey[i], function()
hl.dispatch(hl.dsp.window.move({ workspace = workspace_in_group(i), follow = true }))
end)
end
--# keypad numbers
for i = 1, 10 do
local numpadkey = { 87, 88, 89, 83, 84, 85, 79, 80, 81, 90 }
hl.bind("SUPER + CTRL + code:" .. numpadkey[i], function()
hl.dispatch(hl.dsp.window.move({ workspace = workspace_in_group(i), follow = true }))
end)
end
--#/# bind = SUPER+ALT+SHIFT, Page_↑/↓,, -- Send to workspace left/right
for i = 1, 6 do
local key = { "SUPER + ALT + Page_", "SUPER + SHIFT + Page_", "CTRL + SUPER + SHIFT + " }
local keycombos =
{ key[1] .. "down", key[1] .. "up", key[2] .. "down", key[2] .. "up", key[3] .. "Right", key[3] .. "Left" }
local prefix = { "+", "-", "r+", "r-", "r+", "r-" }
hl.bind(keycombos[i], hl.dsp.window.move({ workspace = prefix[i] .. "1" })) -- # [hidden]
end
-11
View File
@@ -1,11 +0,0 @@
# You can put custom rules here
# Window/layer rules: https://wiki.hyprland.org/Configuring/Window-Rules/
# Workspace rules: https://wiki.hyprland.org/Configuring/Workspace-Rules/
# ######## Window rules ########
# Uncomment to apply global transparency to all windows:
# windowrule = opacity 0.89 override 0.89 override, match:class .*
# Disable blur for all xwayland apps
# windowrule = no_blur on, match:xwayland 1
+3
View File
@@ -0,0 +1,3 @@
-- This file will not be overwritten across dots-hyprland updates.
-- The file name is for the sake of organization and does not matter
-- See the corresponding files in ~/.config/hypr/hyprland for examples
+8
View File
@@ -0,0 +1,8 @@
-- This file will not be overwritten across dots-hyprland updates.
-- The file name is for the sake of organization and does not matter
-- See the corresponding files in ~/.config/hypr/hyprland for examples
terminal = "kitty"
browser = "zen-browser"
codeEditor = "nvim"
textEditor = "obsidian"
-26
View File
@@ -1,26 +0,0 @@
$lock_cmd = hyprctl dispatch global quickshell:lock & pidof qs quickshell hyprlock || hyprlock
# $lock_cmd = pidof hyprlock || hyprlock
$suspend_cmd = systemctl suspend || loginctl suspend
general {
lock_cmd = $lock_cmd
before_sleep_cmd = loginctl lock-session
after_sleep_cmd = hyprctl dispatch global quickshell:lockFocus
inhibit_sleep = 3
}
listener {
timeout = 300 # 5mins
on-timeout = loginctl lock-session
}
listener {
timeout = 600 # 10mins
on-timeout = hyprctl dispatch dpms off
on-resume = hyprctl dispatch dpms on
}
listener {
timeout = 900 # 15mins
on-timeout = $suspend_cmd
}
-38
View File
@@ -1,38 +0,0 @@
# This file sources other files in `hyprland` and `custom` folders
# You wanna add your stuff in files in `custom`
$qsConfig = ii
exec = hyprctl dispatch submap global # DO NOT REMOVE THIS OR YOU WON'T BE ABLE TO USE ANY KEYBIND
submap = global # This is required for catchall to work
# Defaults
source=hyprland/env.conf
source=hyprland/execs.conf
source=hyprland/general.conf
source=hyprland/rules.conf
source=hyprland/colors.conf
source=hyprland/keybinds.conf
#source=hyprland/windowrules.conf
# Custom
source=custom/env.conf
source=custom/execs.conf
source=custom/general.conf
source=custom/rules.conf
source=custom/keybinds.conf
source=workspace.conf
# nwg-displays support
#source=workspaces.conf
source=monitors.conf
# Add this to your ~/.config/hypr/hyprland.conf
device {
name = cougar-gaming-keyboard-cougar-gaming-keyboard-consumer-control-1
scroll_factor = 0.0
}
device {
name = ydotoold-virtual-device-1
scroll_factor = 0.0
}
-32
View File
@@ -1,32 +0,0 @@
general {
col.active_border = rgba(8e909977)
col.inactive_border = rgba(43474e55)
}
misc {
background_color = rgba(111318FF)
}
plugin {
hyprbars {
# Honestly idk if it works like css, but well, why not
bar_text_font = Google Sans Flex Medium, Rubik, Geist, AR One Sans, Reddit Sans, Inter, Roboto, Ubuntu, Noto Sans, sans-serif
bar_height = 30
bar_padding = 10
bar_button_padding = 5
bar_precedence_over_border = true
bar_part_of_window = true
bar_color = rgba(111318FF)
col.text = rgba(e2e2e9FF)
# example buttons (R -> L)
# hyprbars-button = color, size, on-click
hyprbars-button = rgb(e2e2e9), 13, 󰖭, hyprctl dispatch killactive
hyprbars-button = rgb(e2e2e9), 13, 󰖯, hyprctl dispatch fullscreen 1
hyprbars-button = rgb(e2e2e9), 13, 󰖰, hyprctl dispatch movetoworkspacesilent special
}
}
windowrule = border_color rgba(a9c7ffAA) rgba(a9c7ff77), match:pin 1
-16
View File
@@ -1,16 +0,0 @@
# ############ Wayland #############
env = ELECTRON_OZONE_PLATFORM_HINT,auto
######### Applications #########
env = XDG_DATA_DIRS,$HOME/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
# ############ Themes #############
env = QT_QPA_PLATFORM, wayland;xcb
env = QT_QPA_PLATFORMTHEME, kde
env = XDG_MENU_PREFIX, plasma-
# ######## Virtual envrionment #########
env = ILLOGICAL_IMPULSE_VIRTUAL_ENV, ~/.local/state/quickshell/.venv
# ######## Terminal application #########
env = TERMINAL,kitty -1
-37
View File
@@ -1,37 +0,0 @@
# Bar, wallpaper
exec-once = ~/.config/hypr/hyprland/scripts/start_geoclue_agent.sh
exec-once = qs -c $qsConfig &
exec-once = ~/.config/hypr/custom/scripts/__restore_video_wallpaper.sh
# Core components (authentication, lock screen, notification daemon)
exec-once = gnome-keyring-daemon --start --components=secrets
exec-once = hypridle
exec-once = dbus-update-activation-environment --all
exec-once = sleep 1 && dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # Some fix idk
#exec-once = hyprpm reload
# Audio
exec-once = easyeffects --hide-window --service-mode
# Clipboard: history
# exec-once = wl-paste --watch cliphist store &
exec-once = wl-paste --type text --watch bash -c 'cliphist store && qs -c $qsConfig ipc call cliphistService update'
exec-once = wl-paste --type image --watch bash -c 'cliphist store && qs -c $qsConfig ipc call cliphistService update'
# Cursor
exec-once = hyprctl setcursor Bibata-Modern-Classic 24
# Fix dock pinned apps not launching properly (https://github.com/end-4/dots-hyprland/issues/2200)
# This causes https://github.com/end-4/dots-hyprland/issues/2427
# exec-once = sleep 3.5 && hyprctl reload && sleep 0.5 && touch ~/.config/quickshell/ii/shell.qml
# User
#exec-once = voxtype &
exec-once = kdeconnectd
exec-once = zen-browser
exec-once = syncthing &
exec-once = rclone mount SchoolGdrive: /mnt/SchoolGdrive --dir-cache-time 10s --poll-interval 10s --attr-timeout 10s --size-only
exec-once = rclone mount PersonalGdrive: /mnt/PersonalGdrive --dir-cache-time 10s --poll-interval 10s --attr-timeout 10s --size-only
#exec-once = rclone mount AltGdrive: /mnt/AltGdrive --dir-cache-time 10s --poll-interval 10s --attr-timeout 10s --size-only
exec-once = rclone mount gcrypt: /mnt/gcrypt --dir-cache-time 10s --poll-interval 10s --attr-timeout 10s --size-only
exec-once = steam %U -silent
-168
View File
@@ -1,168 +0,0 @@
# MONITOR CONFIG
monitor=,preferred,auto,1
gesture = 3, swipe, move,
gesture = 3, pinch, float
gesture = 4, horizontal, workspace
gesture = 4, up, dispatcher, global, quickshell:overviewWorkspacesToggle
gesture = 4, down, dispatcher, global, quickshell:overviewWorkspacesClose
gestures {
workspace_swipe_distance = 700
workspace_swipe_cancel_ratio = 0.2
workspace_swipe_min_speed_to_force = 5
workspace_swipe_direction_lock = true
workspace_swipe_direction_lock_threshold = 10
workspace_swipe_create_new = true
}
general {
# Gaps and border
gaps_in = 4
gaps_out = 5
gaps_workspaces = 50
border_size = 1
col.active_border = rgba(0DB7D455)
col.inactive_border = rgba(31313600)
resize_on_border = true
no_focus_fallback = true
allow_tearing = true # This just allows the `immediate` window rule to work
snap {
enabled = true
window_gap = 4
monitor_gap = 5
respect_gaps = true
}
}
dwindle {
preserve_split = true
smart_split = false
smart_resizing = false
# precise_mouse_move = true
}
decoration {
# 2 = circle, higher = squircle, 4 = very obvious squircle
# Clear squircles look really off; we use only extra .4 here to make the rounding feel more continuous
rounding_power = 2
rounding = 18
blur {
enabled = true
xray = true
special = false
new_optimizations = true
size = 10
passes = 3
brightness = 1
noise = 0.05
contrast = 0.89
vibrancy = 0.5
vibrancy_darkness = 0.5
popups = false
popups_ignorealpha = 0.6
input_methods = true
input_methods_ignorealpha = 0.8
}
shadow {
enabled = true
ignore_window = true
range = 50
offset = 0 4
render_power = 10
color = rgba(00000027)
}
# Dim
dim_inactive = true
dim_strength = 0.05
dim_special = 0.2
}
animations {
enabled = true
# Curves
bezier = expressiveFastSpatial, 0.42, 1.67, 0.21, 0.90
bezier = expressiveSlowSpatial, 0.39, 1.29, 0.35, 0.98
bezier = expressiveDefaultSpatial, 0.38, 1.21, 0.22, 1.00
bezier = emphasizedDecel, 0.05, 0.7, 0.1, 1
bezier = emphasizedAccel, 0.3, 0, 0.8, 0.15
bezier = standardDecel, 0, 0, 0, 1
bezier = menu_decel, 0.1, 1, 0, 1
bezier = menu_accel, 0.52, 0.03, 0.72, 0.08
bezier = stall, 1, -0.1, 0.7, 0.85
# Configs
# windows
animation = windowsIn, 1, 3, emphasizedDecel, popin 80%
animation = fadeIn, 1, 3, emphasizedDecel
animation = windowsOut, 1, 2, emphasizedDecel, popin 90%
animation = fadeOut, 1, 2, emphasizedDecel
animation = windowsMove, 1, 3, emphasizedDecel, slide
animation = border, 1, 10, emphasizedDecel
# layers
animation = layersIn, 1, 2.7, emphasizedDecel, popin 93%
animation = layersOut, 1, 2.4, menu_accel, popin 94%
# fade
animation = fadeLayersIn, 1, 0.5, menu_decel
animation = fadeLayersOut, 1, 2.7, stall
# workspaces
animation = workspaces, 1, 7, menu_decel, slide
## specialWorkspace
animation = specialWorkspaceIn, 1, 2.8, emphasizedDecel, slidevert
animation = specialWorkspaceOut, 1, 1.2, emphasizedAccel, slidevert
# zoom
animation = zoomFactor, 1, 3, standardDecel
}
input {
kb_layout = us
numlock_by_default = true
repeat_delay = 250
repeat_rate = 35
follow_mouse = 1
off_window_axis_events = 2
touchpad {
natural_scroll = yes
disable_while_typing = true
clickfinger_behavior = true
scroll_factor = 0.7
}
}
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
vfr = 1
vrr = 1
mouse_move_enables_dpms = true
key_press_enables_dpms = true
animate_manual_resizes = false
animate_mouse_windowdragging = false
enable_swallow = false
swallow_regex = (foot|kitty|allacritty|Alacritty)
on_focus_under_fullscreen = 2
allow_session_lock_restore = true
session_lock_xray = true
initial_workspace_tracking = false
focus_on_activate = true
}
binds {
scroll_event_delay = 0
hide_special_on_workspace_change = true
}
cursor {
zoom_factor = 1
zoom_rigid = false
zoom_disable_aa = true
hotspot_padding = 1
}
-253
View File
@@ -1,253 +0,0 @@
# Lines ending with `# [hidden]` won't be shown on cheatsheet
# Lines starting with #! are section headings
#!
##! Shell
# These absolutely need to be on top, or they won't work consistently
bindid = Super, Super_L, Toggle search, global, quickshell:searchToggleRelease # Toggle search
bindid = Super, Super_R, Toggle search, global, quickshell:searchToggleRelease # [hidden] Toggle search
bind = Super, Super_L, exec, qs -c $qsConfig ipc call TEST_ALIVE || pkill fuzzel || fuzzel # [hidden] Launcher (fallback)
bind = Super, Super_R, exec, qs -c $qsConfig ipc call TEST_ALIVE || pkill fuzzel || fuzzel # [hidden] Launcher (fallback)
binditn = Super, catchall, global, quickshell:searchToggleReleaseInterrupt # [hidden]
bind = Ctrl, Super_L, global, quickshell:searchToggleReleaseInterrupt # [hidden]
bind = Ctrl, Super_R, global, quickshell:searchToggleReleaseInterrupt # [hidden]
bind = Super, mouse:272, global, quickshell:searchToggleReleaseInterrupt # [hidden]
bind = Super, mouse:273, global, quickshell:searchToggleReleaseInterrupt # [hidden]
bind = Super, mouse:274, global, quickshell:searchToggleReleaseInterrupt # [hidden]
bind = Super, mouse:275, global, quickshell:searchToggleReleaseInterrupt # [hidden]
bind = Super, mouse:276, global, quickshell:searchToggleReleaseInterrupt # [hidden]
bind = Super, mouse:277, global, quickshell:searchToggleReleaseInterrupt # [hidden]
bind = Super, mouse_up, global, quickshell:searchToggleReleaseInterrupt # [hidden]
bind = Super, mouse_down,global, quickshell:searchToggleReleaseInterrupt # [hidden]
bindit = ,Super_L, global, quickshell:workspaceNumber # [hidden]
bindit = ,Super_R, global, quickshell:workspaceNumber # [hidden]
bind = Super, Tab, global, quickshell:overviewWorkspacesToggle # Toggle overview
bindd = Super, V, Clipboard history >> clipboard, global, quickshell:overviewClipboardToggle # Clipboard history >> clipboard
bindd = Super, Period, Emoji >> clipboard, global, quickshell:overviewEmojiToggle # Emoji >> clipboard
bind = Super, A, global, quickshell:sidebarLeftToggle # Toggle left sidebar
bind = Super+Alt, A, global, quickshell:sidebarLeftToggleDetach # [hidden]
bind = Super, O, global, quickshell:sidebarLeftToggle # [hidden]
bindd = Super, N, Toggle right sidebar, global, quickshell:sidebarRightToggle # Toggle right sidebar
bindd = Super, Slash, Toggle cheatsheet, global, quickshell:cheatsheetToggle # Toggle cheatsheet
bindd = Super, K, Toggle on-screen keyboard, global, quickshell:oskToggle # Toggle on-screen keyboard
bindd = Super, M, Toggle media controls, global, quickshell:mediaControlsToggle # Toggle media controls
bind = Super, G, global, quickshell:overlayToggle # Toggle overlay
bindd = Ctrl+Alt, Delete, Toggle session menu, global, quickshell:sessionToggle # Toggle session menu
bindd = Super, J, Toggle bar, global, quickshell:barToggle # Toggle bar
bind = Ctrl+Alt, Delete, exec, qs -c $qsConfig ipc call TEST_ALIVE || pkill wlogout || wlogout -p layer-shell # [hidden] Session menu (fallback)
bind = Shift+Super+Alt, Slash, exec, qs -p ~/.config/quickshell/$qsConfig/welcome.qml # [hidden] Launch welcome app
bindle=, XF86MonBrightnessUp, exec, qs -c $qsConfig ipc call brightness increment || brightnessctl s 5%+ # [hidden]
bindle=, XF86MonBrightnessDown, exec, qs -c $qsConfig ipc call brightness decrement || brightnessctl s 5%- # [hidden]
bindle=, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+ -l 1.5# [hidden]
bindle=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- # [hidden]
bindl = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_SINK@ toggle # [hidden]
bindld = Super+Shift,M, Toggle mute, exec, wpctl set-mute @DEFAULT_SINK@ toggle # [hidden]
bindl = Alt ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle # [hidden]
bindl = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle # [hidden]
bindld = Super+Alt,M, Toggle mic, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle # [hidden]
bindd = Ctrl+Super, T, Toggle wallpaper selector, global, quickshell:wallpaperSelectorToggle # Wallpaper selector
bindd = Ctrl+Super+Alt, T, Select random wallpaper, global, quickshell:wallpaperSelectorRandom # Random wallpaper
bindd = Ctrl+Super, T, Change wallpaper, exec, qs -c $qsConfig ipc call TEST_ALIVE || ~/.config/quickshell/$qsConfig/scripts/colors/switchwall.sh # [hidden] Change wallpaper (fallback)
bind = Ctrl+Super, R, exec, killall ags agsv1 gjs ydotool qs quickshell; qs -c $qsConfig & # Restart widgets
bind = Ctrl+Super, P, global, quickshell:panelFamilyCycle # Cycle panel family
##! Utilities
# Screenshot, Record, OCR, Color picker, Clipboard history
bindd = Super, V, Copy clipboard history entry, exec, qs -c $qsConfig ipc call TEST_ALIVE || pkill fuzzel || cliphist list | fuzzel --match-mode fzf --dmenu | cliphist decode | wl-copy # [hidden] Clipboard history >> clipboard (fallback)
bindd = Super, Period, Copy an emoji, exec, qs -c $qsConfig ipc call TEST_ALIVE || pkill fuzzel || ~/.config/hypr/hyprland/scripts/fuzzel-emoji.sh copy # [hidden] Emoji >> clipboard (fallback)
bind = Super+Shift, S, global, quickshell:regionScreenshot # Screen snip
bind = Super+Shift, S, exec, qs -c $qsConfig ipc call TEST_ALIVE || pidof slurp || hyprshot --freeze --clipboard-only --mode region --silent # [hidden] Screen snip (fallback)
bind = Super+Shift, A, global, quickshell:regionSearch # Google Lens
bind = Super+Shift, A, exec, qs -c $qsConfig ipc call TEST_ALIVE || pidof slurp || ~/.config/hypr/hyprland/scripts/snip_to_search.sh # [hidden] Google Lens (fallback)
# OCR
bind = Super+Shift, X, global, quickshell:regionOcr # Character recognition >> clipboard
bind = Super+Shift, T, global, quickshell:regionOcr # [hidden]
bind = Super+Shift, X,exec, qs -c $qsConfig ipc call TEST_ALIVE || pidof slurp || grim -g "$(slurp $SLURP_ARGS)" "/tmp/ocr_image.png" && tesseract "/tmp/ocr_image.png" stdout -l $(tesseract --list-langs | awk 'NR>1{print $1}' | tr '\n' '+' | sed 's/\+$/\n/') | wl-copy && rm "/tmp/ocr_image.png" # [hidden]
bind = Super+Shift, T,exec, qs -c $qsConfig ipc call TEST_ALIVE || pidof slurp || grim -g "$(slurp $SLURP_ARGS)" "/tmp/ocr_image.png" && tesseract "/tmp/ocr_image.png" stdout -l $(tesseract --list-langs | awk 'NR>1{print $1}' | tr '\n' '+' | sed 's/\+$/\n/') | wl-copy && rm "/tmp/ocr_image.png" # [hidden]
# Color picker
bindd = Super+Shift, C, Color picker, exec, hyprpicker -a # Pick color (Hex) >> clipboard
# Fullscreen screenshot
bindl = ,Print,exec,grim - | wl-copy # Screenshot >> clipboard
bindln = Ctrl,Print, exec, mkdir -p $(xdg-user-dir PICTURES)/Screenshots && grim $(xdg-user-dir PICTURES)/Screenshots/Screenshot_"$(date '+%Y-%m-%d_%H.%M.%S')".png # Screenshot >> clipboard & file (file)
bindln = Ctrl,Print,exec,grim - | wl-copy # [hidden] Screenshot >> clipboard & file (clipboard)
# Recording stuff
bindl = Super+Shift, R, global, quickshell:regionRecord # Record region (no sound)
bindl = Super+Shift, R, exec, qs -c $qsConfig ipc call TEST_ALIVE || ~/.config/quickshell/$qsConfig/scripts/videos/record.sh # [hidden] Record region (no sound) (fallback)
bindl = Super+Alt, R, global, quickshell:regionRecord # [hidden] Record region (no sound)
bindl = Super+Alt, R, exec, qs -c $qsConfig ipc call TEST_ALIVE || ~/.config/quickshell/$qsConfig/scripts/videos/record.sh # [hidden] Record region (no sound) (fallback)
bindl = Ctrl+Alt, R, exec, ~/.config/quickshell/$qsConfig/scripts/videos/record.sh --fullscreen # [hidden] Record screen (no sound)
bindl = Super+Shift+Alt, R, exec, ~/.config/quickshell/$qsConfig/scripts/videos/record.sh --fullscreen --sound # Record screen (with sound)
# AI
bindd = Super+Shift+Alt, mouse:273, Generate AI summary for selected text, exec, ~/.config/hypr/hyprland/scripts/ai/primary-buffer-query.sh # AI summary for selected text
#!
##! Window
# Focusing
bindm = Super, mouse:272, movewindow # Move
bindm = Super, mouse:274, movewindow # [hidden]
bindm = Super, mouse:273, resizewindow # Resize
#/# bind = Super, ←/↑/→/↓,, # Focus in direction
bind = Super, Left, movefocus, l # [hidden]
bind = Super, Right, movefocus, r # [hidden]
bind = Super, Up, movefocus, u # [hidden]
bind = Super, Down, movefocus, d # [hidden]
bind = Super, BracketLeft, movefocus, l # [hidden]
bind = Super, BracketRight, movefocus, r # [hidden]
#/# bind = Ctrl+Super, ←/↑/↓/→, # Move Focused window
bind = Ctrl+Super, Left, movewindow, l # [hidden]
bind = Ctrl+Super, Right, movewindow, r # [hidden]
bind = Ctrl+Super, Up, movewindow, u # [hidden]
bind = Ctrl+Super, Down, movewindow, d # [hidden]
# Window Resize
binde = Super+Shift, Right, resizeactive, 20 0 # [hidden]
binde = Super+Shift, Left, resizeactive, -20 0 # [hidden]
binde = Super+Shift, Up, resizeactive, 0 -20 # [hidden]
binde = Super+Shift, Down, resizeactive, 0 20 # [hidden]
#/# bind = Super+Shift, ←/↑/→/↓,, # Resize
# bind = Super+Shift, Left, movewindow, l # [hidden] (Disabled for resizing)
# bind = Super+Shift, Right, movewindow, r # [hidden] (Disabled for resizing)
# bind = Super+Shift, Up, movewindow, u # [hidden] (Disabled for resizing)
# bind = Super+Shift, Down, movewindow, d # [hidden] (Disabled for resizing)
bind = Alt, F4, killactive, # [hidden] Close (Windows)
bind = Super, Q, killactive, # Close
bind = Super+Ctrl+Shift, Q, exec, hyprctl kill # Forcefully kill a window
# Window split ratio
#/# binde = Super, ;/',, # Adjust split ratio
binde = Super, Semicolon, splitratio, -0.1 # [hidden]
binde = Super, Apostrophe, splitratio, +0.1 # [hidden]
# Positioning mode
bind = Super+Alt, Space, togglefloating, # Float/Tile
bind = Super, W, fullscreen, 1 # Maximize
bind = Super, F, fullscreen, 0 # Fullscreen
bind = Super+Alt, F, fullscreenstate, 0 3 # Fullscreen spoof
bind = Super, P, pin # Pin
#/# bind = Super+Alt, Hash,, # Send to workspace # (1, 2, 3,...)
bind = Super+Alt, code:10, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 1 # [hidden]
bind = Super+Alt, code:11, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 2 # [hidden]
bind = Super+Alt, code:12, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 3 # [hidden]
bind = Super+Alt, code:13, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 4 # [hidden]
bind = Super+Alt, code:14, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 5 # [hidden]
bind = Super+Alt, code:15, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 6 # [hidden]
bind = Super+Alt, code:16, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 7 # [hidden]
bind = Super+Alt, code:17, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 8 # [hidden]
bind = Super+Alt, code:18, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 9 # [hidden]
bind = Super+Alt, code:19, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 10 # [hidden]
#/# bind = Super+Ctrl, Hash,, # Send to workspace and focus # (1, 2, 3,...)
bind = Super+Ctrl, code:10, movetoworkspace, 1 # [hidden]
bind = Super+Ctrl, code:11, movetoworkspace, 2 # [hidden]
bind = Super+Ctrl, code:12, movetoworkspace, 3 # [hidden]
bind = Super+Ctrl, code:13, movetoworkspace, 4 # [hidden]
bind = Super+Ctrl, code:14, movetoworkspace, 5 # [hidden]
bind = Super+Ctrl, code:15, movetoworkspace, 6 # [hidden]
bind = Super+Ctrl, code:16, movetoworkspace, 7 # [hidden]
bind = Super+Ctrl, code:17, movetoworkspace, 8 # [hidden]
bind = Super+Ctrl, code:18, movetoworkspace, 9 # [hidden]
bind = Super+Ctrl, code:19, movetoworkspace, 10 # [hidden]
# #/# bind = Super+Shift, Scroll ↑/↓,, # Send to workspace left/right
bind = Super+Shift, mouse_down, movetoworkspace, r-1 # [hidden]
bind = Super+Shift, mouse_up, movetoworkspace, r+1 # [hidden]
bind = Super+Alt, mouse_down, movetoworkspace, -1 # [hidden]
bind = Super+Alt, mouse_up, movetoworkspace, +1 # [hidden]
#/# bind = Super+Shift, Page_↑/↓,, # Send to workspace left/right
bind = Super+Alt, Page_Down, movetoworkspace, +1 # [hidden]
bind = Super+Alt, Page_Up, movetoworkspace, -1 # [hidden]
bind = Super+Shift, Page_Down, movetoworkspace, r+1 # [hidden]
bind = Super+Shift, Page_Up, movetoworkspace, r-1 # [hidden]
bind = Ctrl+Super+Shift, Right, movetoworkspace, r+1 # [hidden]
bind = Ctrl+Super+Shift, Left, movetoworkspace, r-1 # [hidden]
bind = Super+Alt, S, movetoworkspacesilent, special # Send to scratchpad
bind = Ctrl+Super, S, togglespecialworkspace, # [hidden]
##! Workspace
# Switching
bind = Super, code:10, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 1 # [hidden]
bind = Super, code:11, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 2 # [hidden]
bind = Super, code:12, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 3 # [hidden]
bind = Super, code:13, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 4 # [hidden]
bind = Super, code:14, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 5 # [hidden]
bind = Super, code:15, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 6 # [hidden]
bind = Super, code:16, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 7 # [hidden]
bind = Super, code:17, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 8 # [hidden]
bind = Super, code:18, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 9 # [hidden]
bind = Super, code:19, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 10 # [hidden]
#bind = Ctrl+Super, Right, workspace, r+1 # [hidden]
#bind = Ctrl+Super, Left, workspace, r-1 # [hidden]
#/# bind = Ctrl+Super+Alt, ←/→,, # [hidden] Focus busy left/right
bind = Ctrl+Super+Alt, Right, workspace, m+1 # [hidden]
bind = Ctrl+Super+Alt, Left, workspace, m-1 # [hidden]
#/# bind = Super, Page_↑/↓,, # Focus left/right
bind = Super, Page_Down, workspace, +1 # [hidden]
bind = Super, Page_Up, workspace, -1 # [hidden]
bind = Ctrl+Super, Page_Down, workspace, r+1 # [hidden]
bind = Ctrl+Super, Page_Up, workspace, r-1 # [hidden]
#/# bind = Super, Scroll ↑/↓,, # Focus left/right
bind = Super, mouse_up, workspace, +1 # [hidden]
bind = Super, mouse_down, workspace, -1 # [hidden]
bind = Ctrl+Super, mouse_up, workspace, r+1 # [hidden]
bind = Ctrl+Super, mouse_down, workspace, r-1 # [hidden]
## Special
bind = Super, S, togglespecialworkspace, # Toggle scratchpad
bind = Super, mouse:275, togglespecialworkspace, # [hidden]
bind = Ctrl+Super, BracketLeft, workspace, -1 # [hidden]
bind = Ctrl+Super, BracketRight, workspace, +1 # [hidden]
bind = Ctrl+Super, Up, workspace, r-5 # [hidden]
bind = Ctrl+Super, Down, workspace, r+5 # [hidden]
##! Virtual machines
bind = Super+Alt, F1, exec, notify-send 'Entered Virtual Machine submap' 'Keybinds disabled. Hit Super+Alt+F1 to escape' -a 'Hyprland' && hyprctl dispatch submap virtual-machine # Disable keybinds
submap = virtual-machine
bind = Super+Alt, F1, exec, notify-send 'Exited Virtual Machine submap' 'Keybinds re-enabled' -a 'Hyprland' && hyprctl dispatch submap global # [hidden]
submap = global
#!
# Testing
bind = Super+Alt, f11, exec, bash -c 'RANDOM_IMAGE=$(find ~/Pictures -type f | grep -v -i "nipple" | grep -v -i "pussy" | shuf -n 1); ACTION=$(notify-send "Test notification with body image" "This notification should contain your user account <b>image</b> and <a href=\"https://discord.com/app\">Discord</a> <b>icon</b>. Oh and here is a random image in your Pictures folder: <img src=\"$RANDOM_IMAGE\" alt=\"Testing image\"/>" -a "Hyprland keybind" -p -h "string:image-path:/var/lib/AccountsService/icons/$USER" -t 6000 -i "discord" -A "openImage=Profile image" -A "action2=Open the random image" -A "action3=Useless button"); [[ $ACTION == *openImage ]] && xdg-open "/var/lib/AccountsService/icons/$USER"; [[ $ACTION == *action2 ]] && xdg-open \"$RANDOM_IMAGE\"' # [hidden]
bind = Super+Alt, f12, exec, bash -c 'RANDOM_IMAGE=$(find ~/Pictures -type f | grep -v -i "nipple" | grep -v -i "pussy" | shuf -n 1); ACTION=$(notify-send "Test notification" "This notification should contain a random image in your <b>Pictures</b> folder and <a href=\"https://discord.com/app\">Discord</a> <b>icon</b>.\n<i>Flick right to dismiss!</i>" -a "Discord (fake)" -p -h "string:image-path:$RANDOM_IMAGE" -t 6000 -i "discord" -A "openImage=Profile image" -A "action2=Useless button"); [[ $ACTION == *openImage ]] && xdg-open "/var/lib/AccountsService/icons/$USER"' # [hidden]
bind = Super+Alt, Equal, exec, notify-send "Urgent notification" "Ah hell no" -u critical -a 'Hyprland keybind' # [hidden]
#!
##! Session
bindd = Super, L, Lock, exec, loginctl lock-session # Lock
bindld = Super+Shift, L, Suspend system, exec, systemctl suspend || loginctl suspend # Sleep
bindd = Ctrl+Shift+Alt+Super, Delete, Shutdown, exec, systemctl poweroff || loginctl poweroff # [hidden] Power off
##! Screen
binde = Super, Minus, exec, ~/.config/hypr/hyprland/scripts/zoom.sh decrease 0.3 # Zoom out
binde = Super, Equal, exec, ~/.config/hypr/hyprland/scripts/zoom.sh increase 0.3 # Zoom in
# Zoom with keypad
binde = Super, code:82, exec, qs -c $qsConfig ipc call zoom zoomOut # [hidden] Zoom out
binde = Super, code:86, exec, qs -c $qsConfig ipc call zoom zoomIn # [hidden] Zoom in
binde = Super, code:82, exec, qs -c $qsConfig ipc call TEST_ALIVE || ~/.config/hypr/hyprland/scripts/zoom.sh decrease 0.1 # [hidden] Zoom out
binde = Super, code:86, exec, qs -c $qsConfig ipc call TEST_ALIVE || ~/.config/hypr/hyprland/scripts/zoom.sh increase 0.1 # [hidden] Zoom in
##! Media
bindl= Super+Shift, N, exec, playerctl next || playerctl position `bc <<< "100 * $(playerctl metadata mpris:length) / 1000000 / 100"` # Next track
bindl= Super+Shift, B, exec, playerctl previous # Previous track
bindl= Super+Shift, P, exec, playerctl play-pause # Play/pause media
##! Apps
bind = Super, Return, exec, alacritty # Terminal
bind = Super, E, exec, dolphin # File manager
bind = Super, B, exec, zen-browser # Browser
bind = Super, C, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "code" "codium" "cursor" "zed" # Code editor
bind = Super, I, exec, XDG_CURRENT_DESKTOP=gnome ~/.config/hypr/hyprland/scripts/launch_first_available.sh "systemsettings" "gnome-control-center" # Settings app
bind = Ctrl+Shift, Escape, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "gnome-system-monitor" "btop" # Task manager
bind = SUPER, F2, exec, ~/.config/hypr/hyprland/scripts/toggle_scroll.sh # Lock/Unlock mouse scroll
# Cursed stuff
bind = Ctrl+Super, Backslash, resizeactive, exact 640 480 # [hidden]
-168
View File
@@ -1,168 +0,0 @@
# ######## Window rules ########
# Disable blur for xwayland context menus
windowrule = match:class ^()$, match:title ^()$, no_blur on
# Disable blur for every window
windowrule = match:class .*, no_blur on
# Floating
windowrule = match:title ^(Open File)(.*)$, center on
windowrule = match:title ^(Open File)(.*)$, float on
windowrule = match:title ^(Select a File)(.*)$, center on
windowrule = match:title ^(Select a File)(.*)$, float on
windowrule = match:title ^(Choose wallpaper)(.*)$, center on
windowrule = match:title ^(Choose wallpaper)(.*)$, float on
windowrule = match:title ^(Choose wallpaper)(.*)$, size (monitor_w*.60) (monitor_h*.65)
windowrule = match:title ^(Open Folder)(.*)$, center on
windowrule = match:title ^(Open Folder)(.*)$, float on
windowrule = match:title ^(Save As)(.*)$, center on
windowrule = match:title ^(Save As)(.*)$, float on
windowrule = match:title ^(Library)(.*)$, center on
windowrule = match:title ^(Library)(.*)$, float on
windowrule = match:title ^(File Upload)(.*)$, center on
windowrule = match:title ^(File Upload)(.*)$, float on
windowrule = match:title ^(.*)(wants to save)$, center on
windowrule = match:title ^(.*)(wants to save)$, float on
windowrule = match:title ^(.*)(wants to open)$, center on
windowrule = match:title ^(.*)(wants to open)$, float on
windowrule = match:class ^(blueberry\.py)$, float on
windowrule = match:class ^(guifetch)$ , float on # FlafyDev/guifetch
windowrule = match:class ^(pavucontrol)$, float on
windowrule = match:class ^(pavucontrol)$, size (monitor_w*.45) (monitor_h*.45)
windowrule = match:class ^(pavucontrol)$, center on
windowrule = match:class ^(org.pulseaudio.pavucontrol)$, float on
windowrule = match:class ^(org.pulseaudio.pavucontrol)$, size (monitor_w*.45) (monitor_h*.45)
windowrule = match:class ^(org.pulseaudio.pavucontrol)$, center on
windowrule = match:class ^(nm-connection-editor)$, float on
windowrule = match:class ^(nm-connection-editor)$, size (monitor_w*.45) (monitor_h*.45)
windowrule = match:class ^(nm-connection-editor)$, center on
windowrule = match:class .*plasmawindowed.*, float on
windowrule = match:class kcm_.*, float on
windowrule = match:class .*bluedevilwizard, float on
windowrule = match:title .*Welcome, float on
windowrule = match:title ^(illogical-impulse Settings)$, float on
windowrule = match:title .*Shell conflicts.*, float on
windowrule = match:class org.freedesktop.impl.portal.desktop.kde, float on
windowrule = match:class org.freedesktop.impl.portal.desktop.kde, size (monitor_w*.60) (monitor_h*.65)
windowrule = match:class ^(Zotero)$, float on
windowrule = match:class ^(Zotero)$, size (monitor_w*.45) (monitor_h*.45)
# Move
# kde-material-you-colors spawns a window when changing dark/light theme. This is to make sure it doesn't interfere at all.
windowrule = match:class ^(plasma-changeicons)$, float on
windowrule = match:class ^(plasma-changeicons)$, no_initial_focus on
windowrule = match:class ^(plasma-changeicons)$, move 999999 999999
# stupid dolphin copy
windowrule = match:title ^(Copying — Dolphin)$, move 40 80
# Tiling
windowrule = match:class ^dev\.warp\.Warp$, tile on
# Picture-in-Picture
windowrule = match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, float on
windowrule = match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, keep_aspect_ratio on
windowrule = match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, move (monitor_w*.73) (monitor_h*.72)
windowrule = match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, size (monitor_w*.25) (monitor_h*.25)
windowrule = match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, float on
windowrule = match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, pin on
# --- Tearing ---
windowrule = match:title .*\.exe, immediate on
windowrule = match:title .*minecraft.*, immediate on
windowrule = match:class ^(steam_app).*, immediate on
# Fix Jetbrain IDEs focus/rerendering problem
windowrule = match:class ^jetbrains-.*$, match:float 1, match:title ^$|^\s$|^win\d+$, no_initial_focus on
# No shadow for tiled windows (matches windows that are not floating).
windowrule = match:float 0, no_shadow on
# ######## Workspace rules ########
workspace = special:special, gapsout:30
# ######## Layer rules ########
layerrule = match:namespace .*, xray on
# layerrule = match:namespace .*, no_anim on
layerrule = match:namespace walker, no_anim on
layerrule = match:namespace selection, no_anim on
layerrule = match:namespace overview, no_anim on
layerrule = match:namespace anyrun, no_anim on
layerrule = match:namespace indicator.*, no_anim on
layerrule = match:namespace osk, no_anim on
layerrule = match:namespace hyprpicker, no_anim on
layerrule = match:namespace noanim, no_anim on
layerrule = match:namespace gtk-layer-shell, blur on
layerrule = match:namespace gtk-layer-shell, ignore_alpha 0
layerrule = match:namespace launcher, blur on
layerrule = match:namespace launcher, ignore_alpha 0.5
layerrule = match:namespace notifications, blur on
layerrule = match:namespace notifications, ignore_alpha 0.69
layerrule = match:namespace logout_dialog # wlogout, blur on
# ags
layerrule = match:namespace sideleft.*, animation slide left
layerrule = match:namespace sideright.*, animation slide right
layerrule = match:namespace session[0-9]*, blur on
layerrule = match:namespace bar[0-9]*, blur on
layerrule = match:namespace bar[0-9]*, ignore_alpha 0.6
layerrule = match:namespace barcorner.*, blur on
layerrule = match:namespace barcorner.*, ignore_alpha 0.6
layerrule = match:namespace dock[0-9]*, blur on
layerrule = match:namespace dock[0-9]*, ignore_alpha 0.6
layerrule = match:namespace indicator.*, blur on
layerrule = match:namespace indicator.*, ignore_alpha 0.6
layerrule = match:namespace overview[0-9]*, blur on
layerrule = match:namespace overview[0-9]*, ignore_alpha 0.6
layerrule = match:namespace cheatsheet[0-9]*, blur on
layerrule = match:namespace cheatsheet[0-9]*, ignore_alpha 0.6
layerrule = match:namespace sideright[0-9]*, blur on
layerrule = match:namespace sideright[0-9]*, ignore_alpha 0.6
layerrule = match:namespace sideleft[0-9]*, blur on
layerrule = match:namespace sideleft[0-9]*, ignore_alpha 0.6
layerrule = match:namespace indicator.*, blur on
layerrule = match:namespace indicator.*, ignore_alpha 0.6
layerrule = match:namespace osk[0-9]*, blur on
layerrule = match:namespace osk[0-9]*, ignore_alpha 0.6
# Quickshell
# Quickshell: illogical-impulse
layerrule = match:namespace quickshell:.*, blur_popups on
layerrule = match:namespace quickshell:.*, blur on
layerrule = match:namespace quickshell:.*, ignore_alpha 0.79
layerrule = match:namespace quickshell:bar, animation slide
layerrule = match:namespace quickshell:actionCenter, no_anim on
layerrule = match:namespace quickshell:cheatsheet, animation slide bottom
layerrule = match:namespace quickshell:dock, animation slide bottom
layerrule = match:namespace quickshell:screenCorners, animation popin 120%
layerrule = match:namespace quickshell:lockWindowPusher, no_anim on
layerrule = match:namespace quickshell:notificationPopup, animation fade
layerrule = match:namespace quickshell:overlay, no_anim on
layerrule = match:namespace quickshell:overlay, ignore_alpha 1
layerrule = match:namespace quickshell:overview, no_anim on
layerrule = match:namespace quickshell:osk, animation slide bottom
layerrule = match:namespace quickshell:polkit, no_anim on
layerrule = match:namespace quickshell:popup, xray off # No weird color for bar tooltips (this in theory should suffice)
layerrule = match:namespace quickshell:popup, ignore_alpha 1 # No weird color for bar tooltips (but somehow this is necessary)
layerrule = match:namespace quickshell:mediaControls, ignore_alpha 1 # Same as above
layerrule = match:namespace quickshell:reloadPopup, animation slide
layerrule = match:namespace quickshell:regionSelector, no_anim on
layerrule = match:namespace quickshell:screenshot, no_anim on
layerrule = match:namespace quickshell:session, blur on
layerrule = match:namespace quickshell:session, no_anim on
layerrule = match:namespace quickshell:session, ignore_alpha 0
layerrule = match:namespace quickshell:sidebarRight, animation slide right
layerrule = match:namespace quickshell:sidebarLeft, animation slide left
layerrule = match:namespace quickshell:verticalBar, animation slide
layerrule = match:namespace quickshell:osk, order -1
# Quickshell: waffles
layerrule = match:namespace quickshell:wallpaperSelector, animation slide top
layerrule = match:namespace quickshell:wNotificationCenter, no_anim on
layerrule = match:namespace quickshell:wOnScreenDisplay, no_anim on
layerrule = match:namespace quickshell:wStartMenu, no_anim on
layerrule = match:namespace quickshell:wTaskView, ignore_alpha 0
layerrule = match:namespace quickshell:wTaskView, no_anim on
# Launchers need to be FAST
layerrule = match:namespace gtk4-layer-shell, no_anim on
@@ -1,201 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -1,43 +0,0 @@
#!/usr/bin/env bash
# Default system prompt
SYSTEM_PROMPT="You are a helpful, quick assistant that provides brief and concise explanation \
to given content in at most 100 characters. If the given content is not in English, translate \
it to English. If the content is an English word, provide its meaning. If the content is a name, \
provide some info about it. For a math expression, provide a simplification, \
each step on a line following this style: \`2x=11 (subtract 7 from both sides)\`. \
If you do not know the answer, simply say 'No info available'. \
Only respond for the appropriate case and use as little text as possible.\
The content:"
first_loaded_model=$("$(dirname "$0")/show-loaded-ollama-models.sh" -j | jq -r '.[0].model' 2>/dev/null) || first_loaded_model=""
model=${first_loaded_model:-"llama3.2"}
# Parse command-line arguments
while [[ "$#" -gt 0 ]]; do
case $1 in
--model) model="$2"; shift ;; # Set the model from the flag
*) echo "Unknown parameter: $1"; exit 1 ;;
esac
shift
done
# Combine the system prompt with the clipboard content
content=$(wl-paste -p | tr '\n' ' ' | head -c 2000) # 2000 char limit to prevent overflow
# Properly escape content for JSON using jq
prompt_json=$(jq -n --arg system_prompt "$SYSTEM_PROMPT" --arg content "$content" '$system_prompt + " " + $content')
# Make the API call with the specified or default model
api_payload=$(jq -n --arg model "$model" --argjson prompt "$prompt_json" --argjson stream false \
'{model: $model, prompt: $prompt, stream: $stream}')
response=$(curl -s http://localhost:11434/api/generate -d "$api_payload" | jq -r '.response' 2>/dev/null)
# Check if content is a single line and no longer than 30 characters
if [[ ${#content} -le 30 && "$content" != *$'\n'* ]]; then
notify-send --app-name="Text selection query" --expire-time=10000 \
"$content" "$response"
else
notify-send --app-name="Text selection query" --expire-time=10000 \
"AI Response" "$response"
fi
@@ -1,99 +0,0 @@
#!/bin/bash
# From strikeoncmputrz/LLM_Scripts
# License: Apache-2.0, can be found in the same folder as this script
# Global Vars
ollama_url=http://localhost
port="11434"
blobs=()
model_name_paths=()
#Parse arguments
while [ "$#" -gt 0 ]; do
case $1 in
-h|--help)
echo
echo " Identifies Ollama models running on this operating system by parsing running processes."
echo
echo " Usage: $0 [options]"
echo
echo " Options:"
echo " -j, --json_output Prints result as a json object. Other output disabled. (Default: false)"
echo " -p, --port [port number] Specify Ollama Server port (Default: 11434)"
echo " -u, --ollama_url [url] Specify Ollama Server URL (Default: http://localhost)"
echo
echo " Dependencies: jq"
exit 0
;;
-j|--json_output)
json_out=1
shift 1
;;
-u|--ollama_url)
ollama_url=$2
shift 2
;;
-p|--port)
port=$2
shift 2
;;
*)
echo "Unknown option: $1"
exit 1
;;
esac
done
compare_running_models_and_modelfiles() {
json_match=()
json_output=()
local matching_models=()
OLDIFS=$IFS
for ((i=0; i<${#model_name_paths[@]}; i++)); do # Iterate over the array of modelname,blob-path
for blob in "${blobs[@]}"; do
IFS=',', read -ra fields <<< "${model_name_paths[i]}" # Split the string into parts
if [ "${fields[1]}" == "$blob" ]; then # Check if current 'field' matches a blob
matching_models+=( '{ "model": "'"${fields[0]}"'", "path": "'"${fields[1]}"'"}') # Add to list of matching models
fi
done
done
if [ -z "$json_out" ]; then
echo -e "\nModel Found: \n $(echo ${matching_models[*]} | jq '.' | sed s/[{}]//g) \n"
else
local json_match="${matching_models[*]}"
json_output=$(echo $json_match | jq -c -s .)
echo "$json_output"
fi
IFS=$OLDIFS
}
get_running_model_paths() {
blobs=$(ps aux | grep -- '--model' | grep -v grep | grep -Po '(?<=--model\s).*' | cut -d ' ' -f1)
if [ -z "$blobs" ]; then
echo -e "\n\n Warning: No running Ollama models detected!\n"
exit 0
fi
}
parse_modelfiles() {
if [ -z "$json_out" ]; then
echo -e "\nConnecting to $ollama_url:$port\n"
if [ -z "$(curl -s $ollama_url:$port)" ]; then
echo -e "Could not connect to Ollama. Check the ollama_url parameter and that the server is running\n"
exit 1
fi
curl -s "$ollama_url:$port"
fi
local models=( $(curl -s "$ollama_url:$port/api/tags" | jq -r '.models[].name') )
for model in "${models[@]}"; do
local modelfile=$(curl -s "$ollama_url:$port/api/show" -d '{ "name": "'"$model"'", "modelfile": true }' | jq -r '.modelfile')
model_name_paths+=($model,$(echo "$modelfile" | awk '/^FROM/{print $2}'))
done
}
parse_modelfiles
get_running_model_paths
compare_running_models_and_modelfiles
File diff suppressed because it is too large Load Diff
@@ -1,7 +0,0 @@
#!/usr/bin/env bash
for cmd in "$@"; do
[[ -z "$cmd" ]] && continue
eval "command -v ${cmd%% *}" >/dev/null 2>&1 || continue
eval "$cmd" &
exit
done
@@ -1,5 +0,0 @@
#!/usr/bin/env bash
grim -g "$(slurp)" /tmp/image.png
imageLink=$(curl -sF files[]=@/tmp/image.png 'https://uguu.se/upload' | jq -r '.files[0].url')
xdg-open "https://lens.google.com/uploadbyurl?url=${imageLink}"
rm /tmp/image.png
@@ -1,30 +0,0 @@
#!/usr/bin/env bash
# Check if GeoClue agent is already running
if pgrep -f 'geoclue-2.0/demos/agent' > /dev/null; then
echo "GeoClue agent is already running."
exit 0
fi
# List of known possible GeoClue agent paths
AGENT_PATHS=(
/usr/libexec/geoclue-2.0/demos/agent
/usr/lib/geoclue-2.0/demos/agent
"$HOME/.nix-profile/libexec/geoclue-2.0/demos/agent"
"$HOME/.nix-profile/lib/geoclue-2.0/demos/agent"
/run/current-system/sw/libexec/geoclue-2.0/demos/agent
)
# Find the first valid agent path
for path in "${AGENT_PATHS[@]}"; do
if [ -x "$path" ]; then
echo "Starting GeoClue agent from: $path"
"$path" & # starts in the background
exit 0
fi
done
# If we got here, none of the paths worked
echo "GeoClue agent not found in known paths."
echo "Please install GeoClue or update the script with the correct path."
exit 1
@@ -1,18 +0,0 @@
#!/usr/bin/env bash
curr_workspace="$(hyprctl activeworkspace -j | jq -r ".id")"
dispatcher="$1"
shift ## The target is now in $1, not $2
if [[ -z "${dispatcher}" || "${dispatcher}" == "--help" || "${dispatcher}" == "-h" || -z "$1" ]]; then
echo "Usage: $0 <dispatcher> <target>"
exit 1
fi
if [[ "$1" == *"+"* || "$1" == *"-"* ]]; then ## Is this something like r+1 or -1?
hyprctl dispatch "${dispatcher}" "$1" ## $1 = workspace id since we shifted earlier.
elif [[ "$1" =~ ^[0-9]+$ ]]; then ## Is this just a number?
target_workspace=$((((curr_workspace - 1) / 10 ) * 10 + $1))
hyprctl dispatch "${dispatcher}" "${target_workspace}"
else
hyprctl dispatch "${dispatcher}" "$1" ## In case the target in a string, required for special workspaces.
exit 1
fi
-54
View File
@@ -1,54 +0,0 @@
#!/usr/bin/env bash
# Controls Hyprland's cursor zoom_factor, clamped between 1.0 and 3.0
# Get current zoom level
get_zoom() {
hyprctl getoption -j cursor:zoom_factor | jq '.float'
}
# Clamp a value between 1.0 and 3.0
clamp() {
local val="$1"
awk "BEGIN {
v = $val;
if (v < 1.0) v = 1.0;
if (v > 3.0) v = 3.0;
print v;
}"
}
# Set zoom level
set_zoom() {
local value="$1"
clamped=$(clamp "$value")
hyprctl keyword cursor:zoom_factor "$clamped"
}
case "$1" in
reset)
set_zoom 1.0
;;
increase)
if [[ -z "$2" ]]; then
echo "Usage: $0 increase STEP"
exit 1
fi
current=$(get_zoom)
new=$(awk "BEGIN { print $current + $2 }")
set_zoom "$new"
;;
decrease)
if [[ -z "$2" ]]; then
echo "Usage: $0 decrease STEP"
exit 1
fi
current=$(get_zoom)
new=$(awk "BEGIN { print $current - $2 }")
set_zoom "$new"
;;
*)
echo "Usage: $0 {reset|increase STEP|decrease STEP}"
exit 1
;;
esac
-93
View File
@@ -1,93 +0,0 @@
source=~/.config/hypr/hyprlock/colors.conf
background {
color = rgba(181818FF)
}
input-field {
monitor =
size = 250, 50
outline_thickness = 2
dots_size = 0.1
dots_spacing = 0.3
outer_color = $entry_border_color
inner_color = $entry_background_color
font_color = $entry_color
fade_on_empty = true
position = 0, 20
halign = center
valign = center
}
label {
monitor =
text = $LAYOUT
color = $text_color
font_size = 14
font_family = $font_family
position = -30, 30
halign = right
valign = bottom
}
label { # Caps Lock Warning
monitor =
text = cmd[update:250] ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock/check-capslock.sh
color = $text_color
font_size = 13
font_family = $font_family
position = 0, -25
halign = center
valign = center
}
label { # Clock
monitor =
text = $TIME
color = $text_color
font_size = 65
font_family = $font_family_clock
position = 0, 300
halign = center
valign = center
}
label { # Date
monitor =
text = cmd[update:5000] date +"%A, %B %d"
color = $text_color
font_size = 17
font_family = $font_family_clock
position = 0, 240
halign = center
valign = center
}
label { # User
monitor =
text =  $USER
color = $text_color
outline_thickness = 2
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
font_size = 20
font_family = $font_family
position = 0, 50
halign = center
valign = bottom
}
label { # Status
monitor =
text = cmd[update:5000] ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock/status.sh
color = $text_color
font_size = 14
font_family = $font_family
position = 30, -30
halign = left
valign = top
}
-12
View File
@@ -1,12 +0,0 @@
# This configuration is generated by matugen
# Changing these variables with matugen still enabled will overwrite them.
$text_color = rgba(d6e3ffFF)
$entry_background_color = rgba(001b3d11)
$entry_border_color = rgba(8e909955)
$entry_color = rgba(d6e3ffFF)
$font_family = Google Sans Flex Medium
$font_family_clock = Google Sans Flex Medium
$font_material_symbols = Material Symbols Rounded
$background_image = /home/alvin/Pictures/Wallpapers/Dynamic-Wallpapers/Dark/japan-street-Dark.png
-4
View File
@@ -1,4 +0,0 @@
# Generated by nwg-displays on 2026-02-19 at 19:29:54. Do not edit manually.
monitor=DVI-I-1,1920x1080@60.0,1920x0,1.0
monitor=DP-1,1920x1080@60.0,0x0,1.0
-11
View File
@@ -1,11 +0,0 @@
workspace=1, monitor:true
workspace=2, monitor:true
workspace=3, monitor:true
workspace=4, monitor:true
workspace=5, monitor:true
workspace=6, monitor:true
workspace=7, monitor:true
workspace=8, monitor:true
workspace=9, monitor:true
workspace=10, monitor:true
workspace=11, monitor:false
Executable
+108
View File
@@ -0,0 +1,108 @@
#!/usr/bin/bash
skip_watermark=false
if [ "$1" = "--skip-watermark" ]; then
skip_watermark=true
fi
if [ "$skip_watermark" = false ]; then
echo '
____ _ _ _ _ _
| __ ) _ _ __ _| |_ _(_)_ __ | | ___ | | | ___
| _ \| | | | / _ | \ \ / / | _ \| |/ _ \| | |/ _ \
| |_) | |_| | | (_| | |\ V /| | | | | | (_) | | | (_) |
|____/ \__ | \__ _|_| \_/ |_|_| |_|_|\___/|_|_|\___/
|___/
--------------- FISH Install Script ---------------
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE UNDER THE GPL-2.0 LICENCE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. See the LICENCE for more detail
'
fi
# Show disclaimer
echo "This script will add fish functions and install fish"
# Enable exit on error
set -eu
# Install prerequisites if installed skips
if ! command -v zsh >/dev/null && command -v git >/dev/null && command -v curl >/dev/null && command -v fzf >/dev/null; then
if command -v pacman >/dev/null; then
echo "pacman detected. Installing prerequisites"
sudo pacman -S fish git curl fzf --noconfirm
fi
if command -v apt >/dev/null; then
echo "apt detected. Installing prerequisites"
sudo apt install git curl fish fzf -y
fi
fi
# Clone or pull end-4 dotfiles repository
if [ -d dots-hyprland ]; then
cd dots-hyprland && git pull && cd ..
else
git clone https://github.com/end-4/dots-hyprland.git
fi
# Copy fish config files from end-4 to git repo if they don't exist
if [ ! -f configs/fish/config.fish ]; then
cp dots-hyprland/dots/.config/fish/config.fish configs/fish/config.fish
fi
if [ ! -f configs/fish/auto-Hypr.fish ]; then
cp dots-hyprland/dots/.config/fish/auto-Hypr.fish configs/fish/auto-Hypr.fish
fi
if [ ! -f configs/fish/fish_variables ]; then
cp dots-hyprland/dots/.config/fish/fish_variables configs/fish/fish_variables
fi
# Copy color configs from end-4 to git repo if they don't exist
if [ ! -f configs/hypr/hyprland/colors.conf ]; then
cp dots-hyprland/dots/.config/hypr/hyprland/colors.conf configs/hypr/hyprland/colors.conf
fi
if [ ! -f configs/hypr/hyprlock/colors.conf ]; then
cp dots-hyprland/dots/.config/hypr/hyprlock/colors.conf configs/hypr/hyprlock/colors.conf
fi
# Run end-4 setup script with flags to skip unnecessary components
dots-hyprland/setup install --force --skip-plasmaintg --skip-backup --skip-quickshell --skip-hyprland --skip-hyprland-entry
# Create fish config directory
mkdir -p "$HOME/.config/fish"
# Copy fish config files to user config if they don't exist
if [ ! -f "$HOME/.config/fish/config.fish" ]; then
cp configs/fish/config.fish "$HOME/.config/fish/config.fish"
fi
if [ -d configs/fish/functions ] && [ ! -d "$HOME/.config/fish/functions" ]; then
cp -r configs/fish/functions "$HOME/.config/fish/"
fi
if [ -d configs/fish/conf.d ] && [ ! -d "$HOME/.config/fish/conf.d" ]; then
cp -r configs/fish/conf.d "$HOME/.config/fish/"
fi
if [ ! -f "$HOME/.config/fish/auto-Hypr.fish" ]; then
cp configs/fish/auto-Hypr.fish "$HOME/.config/fish/"
fi
# Copy color configs to user config if they don't exist
if [ ! -f "$HOME/.config/hypr/hyprland/colors.conf" ]; then
cp configs/hypr/hyprland/colors.conf "$HOME/.config/hypr/hyprland/colors.conf"
fi
if [ ! -f "$HOME/.config/hypr/hyprlock/colors.conf" ]; then
cp configs/hypr/hyprlock/colors.conf "$HOME/.config/hypr/hyprlock/colors.conf"
fi
# Install Fisher plugin manager for fish shell
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
# Install plugins using Fisher
fisher install jorgebucaran/nvm.fish
+131
View File
@@ -0,0 +1,131 @@
#!/usr/bin/env bash
set -euo pipefail
# Fixes nwg-displays not auto-updating monitor/workspace configs on hyprctl reload
# in Hyprland 0.55+ Lua-based configs.
#
# Problem: require() caches modules in package.loaded, so updated monitors.lua
# is ignored on config reload. Solution: clear the cache before require().
# Also auto-generates workspaces.lua from nwg-displays' workspace.conf if missing.
# See https://lua.org/manual/5.1/manual.html#pdf-require
HYPR_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
MAIN_LUA="$HYPR_DIR/hyprland.lua"
if [ ! -f "$MAIN_LUA" ]; then
echo "Error: $MAIN_LUA not found. Is Hyprland 0.55+ configured with Lua?"
exit 1
fi
# Create a backup (only if none exists)
if [ ! -f "$MAIN_LUA.bak" ]; then
cp "$MAIN_LUA" "$MAIN_LUA.bak"
echo "Backup saved: $MAIN_LUA.bak"
fi
patched=0
# Fix monitors
if grep -q 'require("monitors")' "$MAIN_LUA" && \
! grep -q 'package.loaded\["monitors"\]' "$MAIN_LUA"; then
sed -i 's/^\s*--\s*require("monitors")/package.loaded["monitors"] = nil\nrequire("monitors")/' "$MAIN_LUA"
echo "Patched: monitors.lua require() cache cleared"
patched=1
else
echo "Skipped monitors: already patched or not found"
fi
# Fix workspaces
if grep -q 'require("workspaces")' "$MAIN_LUA" && \
! grep -q 'package.loaded\["workspaces"\]' "$MAIN_LUA"; then
sed -i 's/^\s*--\s*require("workspaces")/package.loaded["workspaces"] = nil\nrequire("workspaces")/' "$MAIN_LUA"
echo "Patched: workspaces.lua require() cache cleared"
patched=1
else
echo "Skipped workspaces: already patched or not found"
fi
# ---------------------------------------------------------------------------
# Generate workspaces.lua from nwg-displays' workspace.conf if it's missing
# ---------------------------------------------------------------------------
WORKSPACES_LUA="$HYPR_DIR/workspaces.lua"
WORKSPACE_CONF="$HYPR_DIR/workspace.conf"
if [ ! -f "$WORKSPACES_LUA" ]; then
if [ -f "$WORKSPACE_CONF" ]; then
echo "Generating $WORKSPACES_LUA from $WORKSPACE_CONF ..."
# Read header comment (first line if it starts with #)
HEADER_LINE=$(head -1 "$WORKSPACE_CONF")
if [[ "$HEADER_LINE" =~ ^#(.*)$ ]]; then
COMMENT_LINE="--${BASH_REMATCH[1]}"
fi
{
[ -n "${COMMENT_LINE:-}" ] && echo "$COMMENT_LINE"
echo ""
while IFS=',' read -ra fields; do
line="${fields[*]}"
[[ "$line" =~ ^#.*$ ]] && continue
[[ -z "$line" ]] && continue
ws_id=""
monitor_val=""
# Parse workspace=N
for field in "${fields[@]}"; do
field="$(echo "$field" | xargs)"
if [[ "$field" =~ ^workspace=([0-9]+)$ ]]; then
ws_id="${BASH_REMATCH[1]}"
elif [[ "$field" =~ ^monitor:(.+)$ ]]; then
monitor_val="${BASH_REMATCH[1]}"
fi
done
[ -z "$ws_id" ] && continue
# Skip disabled workspaces (monitor:false)
[ "$monitor_val" = "false" ] && continue
if [ "$monitor_val" = "true" ] || [ -z "$monitor_val" ]; then
echo "hl.workspace_rule({ workspace = \"$ws_id\" })"
else
echo "hl.workspace_rule({ workspace = \"$ws_id\", monitor = \"$monitor_val\" })"
fi
done < <(sed 's/,\s*/,/g' "$WORKSPACE_CONF")
} > "$WORKSPACES_LUA"
echo "Generated $WORKSPACES_LUA"
patched=1
else
echo "Warning: $WORKSPACE_CONF not found. Creating default $WORKSPACES_LUA ..."
cat > "$WORKSPACES_LUA" <<- 'LUA'
-- Default workspaces generated by fix-nwg-hyprland-lua.sh
-- Workspaces 1-10 are available on all monitors
for i = 1, 10 do
hl.workspace_rule({ workspace = tostring(i) })
end
LUA
echo "Created default $WORKSPACES_LUA"
patched=1
fi
else
echo "Skipped workspaces.lua: already exists"
fi
# When monitors.lua is missing, only warn (conversion from monitors.conf is
# non-trivial; run nwg-displays to generate it, or `cp monitors.conf monitors.lua`
# is not valid because the formats differ).
if [ ! -f "$HYPR_DIR/monitors.lua" ]; then
echo "Warning: $HYPR_DIR/monitors.lua not found."
echo " Run nwg-displays to generate it, or create it manually with hl.monitor() calls."
fi
if [ "$patched" -eq 1 ]; then
echo ""
echo "Done! Run 'hyprctl reload' or restart Hyprland for the fix to take effect."
echo "nwg-displays changes should now apply immediately."
else
echo ""
echo "No changes needed."
fi
+177 -151
View File
@@ -3,12 +3,12 @@
PreviousWD=$(pwd)
skip_watermark=false
if [ "$1" = "--skip-watermark" ]; then
skip_watermark=true
skip_watermark=true
fi
if [ "$skip_watermark" = false ]; then
clear
echo '
clear
echo '
____ _ _ _ _ _
| __ ) _ _ __ _| |_ _(_)_ __ | | ___ | | | ___
| _ \| | | | / _ | \ \ / / | _ \| |/ _ \| | |/ _ \
@@ -16,7 +16,7 @@ echo '
|____/ \__ | \__ _|_| \_/ |_|_| |_|_|\___/|_|_|\___/
|___/
--------------- Single Download script ---------------
--------------- Single Download script (Stable) ---------------
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE UNDER THE GPL-2.0 LICENCE,
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
See the LICENCE for more detail
@@ -33,67 +33,74 @@ function error_handler() {
trap error_handler ERR
#Install prerequisites
sudo pacman -Syu git zsh curl wget whiptail --noconfirm --needed
sudo pacman -Syu git zsh curl wget libnewt --noconfirm --needed
if command -v pacman >/dev/null; then
echo "pacman detected. Installing prerequisites"
sudo pacman -Syu git zsh curl wget whiptail --noconfirm --needed
echo "pacman detected. Installing prerequisites"
sudo pacman -Syu git zsh curl wget whiptail --noconfirm --needed
fi
if command -v apt >/dev/null; then
echo "apt detected. Installing prerequisites"
sudo apt update
sudo apt full-upgrade -y
sudo apt install git zsh curl wget whiptail -y
echo "apt detected. Installing prerequisites"
sudo apt update
sudo apt full-upgrade -y
sudo apt install git zsh curl wget whiptail -y
fi
# Ensure whiptail is installed
if ! command -v whiptail >/dev/null; then
echo "whiptail is not installed. Installing it now..."
echo "whiptail is not installed. Installing it now..."
if command -v pacman >/dev/null; then
echo "pacman detected. Installing prerequisites"
sudo pacman -S whiptail --noconfirm || { echo "Failed to install whiptail. Exiting."; exit 1; }
# Reload zsh if it exists
if command -v zsh -h >/dev/null; then
source ~/.zshrc
fi
# Reload Bash
source ~/.bashrc
fi
if command -v pacman >/dev/null; then
echo "pacman detected. Installing prerequisites"
sudo pacman -S whiptail --noconfirm || {
echo "Failed to install whiptail. Exiting."
exit 1
}
# Reload zsh if it exists
if command -v zsh -h >/dev/null; then
source ~/.zshrc
fi
# Reload Bash
source ~/.bashrc
fi
if command -v apt >/dev/null; then
echo "apt detected. Installing prerequisites"
sudo apt install whiptail -y || { echo "Failed to install whiptail. Exiting."; exit 1; }
# Reload zsh if it exists
if command -v zsh -h >/dev/null; then
source ~/.zshrc
fi
# Reload Bash
source ~/.bashrc
fi
if command -v apt >/dev/null; then
echo "apt detected. Installing prerequisites"
sudo apt install whiptail -y || {
echo "Failed to install whiptail. Exiting."
exit 1
}
# Reload zsh if it exists
if command -v zsh -h >/dev/null; then
source ~/.zshrc
fi
# Reload Bash
source ~/.bashrc
fi
fi
# Options for the whiptail menu
OPTIONS=(
1 "Run zsh setup script" ON
2 "Run LazyVim setup script" OFF
3 "Install Docker" OFF
4 "Install Pacman Packages" ON
5 "Install Yay and AUR Packages" ON
1 "Run zsh setup script" ON
2 "Run LazyVim setup script" OFF
3 "Install Docker" OFF
4 "Install Pacman Packages" ON
5 "Install Yay and AUR Packages" ON
6 "Install affinity with GUI" OFF
)
CHOICE=$(whiptail --title "Installation Options" --checklist \
"Choose components to install:" 20 78 10 \
"${OPTIONS[@]}" 3>&1 1>&2 2>&3)
"Choose components to install:" 20 78 10 \
"${OPTIONS[@]}" 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus = 0 ]; then
echo "User selected: $CHOICE"
echo "User selected: $CHOICE"
else
echo "User cancelled installation."
exit 1
echo "User cancelled installation."
exit 1
fi
# Fail on any command.
@@ -101,115 +108,134 @@ set -eu pipefail
# Process selected options
for selection in $CHOICE; do
clean_selection=$(echo $selection | tr -d '"')
case $clean_selection in
"1")
echo "Running zsh setup script..."
# Runs local script unless it does not exist or fails
if [[ -f "zsh.sh" ]]; then
echo "Found local script, running..."
bash zsh.sh --skip-watermark
else
bash -c "$(curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/zsh.sh)" --skip-watermark
fi
;;
"2")
echo "Running LazyVim setup script..."
# Runs local script unless it does not exist or fails
if [[ -f "LazyVim.sh" ]];then
echo "Found local script, running..."
bash LazyVim.sh
else
curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/LazyVim.sh | bash
fi
;;
"3")
echo "Installing Docker..."
if ! command -v docker >/dev/null; then
echo "docker is NOT installed. Installing..."
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
else
sudo usermod -aG docker $USER
echo "Docker is already installed."
echo "+ sleep 10" && sleep 10
fi
;;
"4")
echo "Installing Pacman Packages..."
# Check if pacman binary is installed
if ! command -v pacman >/dev/null; then
echo "Cannot proceed: pacman binary not found"
exit 1 # exit with an error
else
# Install pacman packages
# Runs local script unless it does not exit or fails
if [[ -f "./configs/PackagesPacman.txt" ]]; then
echo "Found local config"
cat ./configs/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm
elif ! curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm; then
echo "--------------------------------------------------------------------"
echo "Failed to install Pacman packages. You can try running it manually:"
echo "curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm"
echo "--------------------------------------------------------------------"
echo "+ sleep 10" && sleep 10
fi
fi
;;
"5")
echo "Installing Yay and Yay Packages..."
# Check for pacman before installing yay
if ! command -v pacman >/dev/null; then
echo "Cannot proceed: Not a arch based system"
exit 1 # Exit with an error
else
# Install yay prerequisites
if ! sudo pacman -S --needed --noconfirm efibootmgr sbsigntools mokutil sbctl go fakeroot debugedit make gcc; then
echo "--------------------------------------------------------------------"
echo "Failed to install prerequisite packages for Yay. You can try running it manually:"
echo "sudo pacman -S --needed --noconfirm efibootmgr sbsigntools mokutil sbctl go fakeroot debugedit make gcc"
echo "--------------------------------------------------------------------"
exit 1 # exit with an error
fi
# Check if yay binary exists
if ! command -v yay >/dev/null; then
echo "yay is NOT installed. Running installation commands..."
if ! git clone https://aur.archlinux.org/yay.git /tmp/yay_install; then
echo "--------------------------------------------------------------------"
echo "Failed to clone yay repository. You can try running it manually:"
echo "git clone https://aur.archlinux.org/yay.git /tmp/yay_install"
echo "--------------------------------------------------------------------"
exit 1 # exit with an error
elif ! (cd /tmp/yay_install && makepkg -si --noconfirm); then
echo "--------------------------------------------------------------------"
echo "Failed to build and install yay. You can try running it manually:"
echo "cd /tmp/yay_install && makepkg -si --noconfirm"
echo "--------------------------------------------------------------------"
exit 1 # exit with an error
fi
cd $PreviousWD
rm -rf /tmp/yay_install
else
echo "Yay is already installed."
fi
# Install yay packages
# Runs local script unless it does no exist or fails
if [[ -f "./config/PackagesYay.txt" ]]; then
echo "Found local config"
cat ./config/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm
elif ! curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm; then
echo "--------------------------------------------------------------------"
echo "Failed to install Yay packages. You can try running it manually:"
echo "curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm"
echo "--------------------------------------------------------------------"
echo "+ sleep 10" && sleep 10
fi
fi
;;
*)
echo "Invalid option selected: $selection"
;;
esac
clean_selection=$(echo "$selection " | tr -d '"')
case $clean_selection in
"1")
echo "Running zsh setup script..."
# Runs local script unless it does not exist or fails
if [[ -f "zsh.sh" ]]; then
echo "Found local script, running..."
bash zsh.sh --skip-watermark
else
bash "$(curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/zsh.sh)" --skip-watermark
fi
;;
"2")
echo "Running LazyVim setup script..."
# Runs local script unless it does not exist or fails
if [[ -f "LazyVim.sh" ]]; then
echo "Found local script, running..."
bash LazyVim.sh
else
curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/LazyVim.sh | bash
fi
;;
"3")
echo "Installing Docker..."
if ! command -v docker >/dev/null; then
echo "docker is NOT installed. Installing..."
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker "$USER"
else
sudo usermod -aG docker "$USER"
echo "Docker is already installed."
echo "+ sleep 10" && sleep 10
fi
;;
"4")
echo "Installing Pacman Packages..."
# Check if pacman binary is installed
if command -v pacman </dev/null; then
echo "Cannot proceed: pacman binary not found"
exit 1 # exit with an error
fi
# Install pacman packages
# Runs local script unless it does not exit or fails
if [[ -f "./configs/PackagesPacman.txt" ]]; then
echo "Found local config"
cat ./configs/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm
elif ! curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm; then
echo "--------------------------------------------------------------------"
echo "Failed to install Pacman packages. You can try running it manually:"
echo "curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm"
echo "--------------------------------------------------------------------"
echo "+ sleep 10" && sleep 10
fi
;;
"5")
echo "Installing Yay and Yay Packages..."
# Check for pacman before installing yay
if command -v pacman </dev/null; then
echo "Cannot proceed: Not a arch based system"
exit 1 # Exit with an error
fi
# Install yay prerequisites
if ! sudo pacman -S --needed --noconfirm efibootmgr sbsigntools mokutil sbctl golang fakeroot debugedit make gcc; then
echo "--------------------------------------------------------------------"
echo "Failed to install prerequisite packages for Yay. You can try running it manually:"
echo "sudo pacman -S --needed --noconfirm efibootmgr sbsigntools mokutil sbctl golang fakeroot debugedit make gcc"
echo "--------------------------------------------------------------------"
exit 1 # exit with an error
fi
# Check if yay binary exists
if ! command -v yay >/dev/null; then
echo "yay is NOT installed. Running installation commands..."
if ! git clone https://aur.archlinux.org/yay.git /tmp/yay_install; then
echo "--------------------------------------------------------------------"
echo "Failed to clone yay repository. You can try running it manually:"
echo "git clone https://aur.archlinux.org/yay.git /tmp/yay_install"
echo "--------------------------------------------------------------------"
exit 1 # exit with an error
elif ! (cd /tmp/yay_install && makepkg -si --noconfirm); then
echo "--------------------------------------------------------------------"
echo "Failed to build and install yay. You can try running it manually:"
echo "cd /tmp/yay_install && makepkg -si --noconfirm"
echo "--------------------------------------------------------------------"
exit 1 # exit with an error
fi
cd "$PreviousWD"
rm -rf /tmp/yay_install
else
echo "Yay is already installed."
fi
# Install yay packages
# Runs local script unless it does no exist or fails
if [[ -f "./config/PackagesYay.txt" ]]; then
echo "Found local config"
cat ./config/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm
elif ! curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm; then
echo "--------------------------------------------------------------------"
echo "Failed to install Yay packages. You can try running it manually:"
echo "curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm"
echo "--------------------------------------------------------------------"
echo "+ sleep 10" && sleep 10
fi
;;
"6")
echo "Installing GUI dependencies"
if command -v pacman </dev/null; then
echo "Pacman found"
sudo pacman -S python-pyqt6 --noconfirm --needed
fi
if command -v dnf </dev/null; then
echo "dnf found"
sudo dnf install python3-pyqt6
fi
if command -v apt </dev/null; then
echo "apt found"
sudo apt install python3-pyqt6 -y
fi
echo "Install affinity with ryzendew's gui installer"
echo "You must manually select to install in the GUI"
echo "Github repo: https://github.com/ryzendew/Linux-Affinity-Installer"
echo "+ 10 sleep"
sleep 10
curl -sSL https://raw.githubusercontent.com/ryzendew/AffinityOnLinux/refs/heads/main/AffinityScripts/AffinityLinuxInstaller.py | python3
;;
*)
echo "Invalid option selected: $selection"
;;
esac
done
echo "Installation process complete."
+25 -15
View File
@@ -32,19 +32,18 @@ function error_handler() {
# Trap errors
trap error_handler ERR
#Install prerequisites
sudo pacman -Syu git zsh curl wget whiptail --noconfirm --needed
# Install prerequisites
if command -v pacman >/dev/null; then
echo "pacman detected. Installing prerequisites"
sudo pacman -Syu git zsh curl wget whiptail --noconfirm --needed
sudo pacman -Syu git zsh curl wget libnewt rsync --noconfirm --needed
fi
if command -v apt >/dev/null; then
echo "apt detected. Installing prerequisites"
sudo apt update
sudo apt full-upgrade -y
sudo apt install git zsh curl wget whiptail -y
sudo apt install git zsh curl wget whiptail rsync -y
fi
# Ensure whiptail is installed
@@ -77,12 +76,13 @@ fi
# Options for the whiptail menu
OPTIONS=(
1 "Run zsh setup script" ON
2 "Run LazyVim setup script" OFF
3 "Install Docker" OFF
4 "Install Pacman Packages" ON
5 "Install Yay and AUR Packages" ON
6 "Install affinity with GUI" OFF
1 "Run zsh setup script" OFF
2 "Run fish setup script (NOT CREATED)" ON
3 "Run LazyVim setup script" OFF
4 "Install Docker" OFF
5 "Install Pacman Packages" ON
6 "Install Yay and AUR Packages" ON
7 "Install affinity with GUI" OFF
)
CHOICE=$(whiptail --title "Installation Options" --checklist \
@@ -114,7 +114,17 @@ for selection in $CHOICE; do
bash "$(curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/zsh.sh)" --skip-watermark
fi
;;
"2")
"2")
echo "Running fish setup script..."
# Runs local script unless it does not exist or fails
if [[ -f "fish.sh" ]]; then
echo "Found local script, running..."
bash fish.sh --skip-watermark
else
bash "$(curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/fish.sh)" --skip-watermark
fi
;;
"3")
echo "Running LazyVim setup script..."
# Runs local script unless it does not exist or fails
if [[ -f "LazyVim.sh" ]];then
@@ -124,7 +134,7 @@ for selection in $CHOICE; do
curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/LazyVim.sh | bash
fi
;;
"3")
"4")
echo "Installing Docker..."
if ! command -v docker >/dev/null; then
echo "docker is NOT installed. Installing..."
@@ -136,7 +146,7 @@ for selection in $CHOICE; do
echo "+ sleep 10" && sleep 10
fi
;;
"4")
"5")
echo "Installing Pacman Packages..."
# Check if pacman binary is installed
if command -v pacman </dev/null; then
@@ -156,7 +166,7 @@ for selection in $CHOICE; do
echo "+ sleep 10" && sleep 10
fi
;;
"5")
"6")
echo "Installing Yay and Yay Packages..."
# Check for pacman before installing yay
if command -v pacman </dev/null; then
@@ -205,7 +215,7 @@ for selection in $CHOICE; do
echo "+ sleep 10" && sleep 10
fi
;;
"6")
"7")
echo "Installing GUI dependencies"
if command -v pacman </dev/null; then
echo "Pacman found"
-35
View File
@@ -1,35 +0,0 @@
autopep8==1.6.0
cachetools==5.0.0
certifi==2024.2.2
charset-normalizer==2.0.12
google-api-core==2.5.0
google-api-python-client==2.113.0
google-auth==2.26.1
google-auth-httplib2==0.1.0
google-auth-oauthlib==1.2.0
googleapis-common-protos==1.54.0
httplib2==0.20.4
idna==3.3
oauth2client==4.1.3
oauthlib==3.2.0
protobuf==3.19.4
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycodestyle==2.8.0
pyparsing==3.0.7
requests==2.27.1
requests-oauthlib==1.3.1
rsa==4.8
six==1.16.0
toml==0.10.2
uritemplate==4.1.1
urllib3==1.26.11
sounddevice>=0.4.6
numpy>=1.21.0
scipy>=1.10.0
evdev>=1.6.0
pyperclip>=1.8.2
pywhispercpp==1.3.3
requests>=2.25.0
psutil>=5.8.0
rich>=13.0.0
-1
View File
@@ -27,7 +27,6 @@ echo "This script will backup your current zsh config if it exists "
set -eu
# Install prerequisites if installed skips
if ! command -v zsh >/dev/null && command -v git >/dev/null && command -v curl >/dev/null && command -v fzf >/dev/null; then
if command -v pacman >/dev/null; then
echo "pacman detected. Installing prerequisites"