This commit is contained in:
2026-07-12 08:16:17 +03:30
commit 72be1234e1
2027 changed files with 221388 additions and 0 deletions
Executable
+20
View File
@@ -0,0 +1,20 @@
Xcursor.theme: Adwaita
Xcursor.size: 24
!xterm
XTerm*termName: xterm-256color
XTerm*loginShell: true
XTerm*scrollBar: false
!xtermFont
xterm*font: *-fixed-*-*-*-18-*
!xtermCursor
XTerm*cursorColor: white
XTerm*cursorBlink: false
!xtermSCrollback
XTerm*saveLines: 5000
!clipboard
XTerm*selectToClipboard: true
XTerm*rightScrollBar: false
!colors for xterm
XTerm*background: #ffffff
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash
alias es=eix
alias weather=curl\ wttr.in/masjedsoleyman
alias c="clear"
alias cear="clear"
alias cd..="cd .."
alias ..='echo "cd .."; cd ../'
alias claer="clear"
alias clare="clear"
alias cleae="clear"
alias clera="clear"
alias ls=ls\ --color=auto
alias nf="neofetch"
alias als="vim ~/.bash.d/aliasrc"
alias ac="sudo emerge -ac"
alias suod=sudo
alias srcbash="source ~/.bashrc"
alias smi=nvidia-smi
alias tl="sudo tail -f /var/log/emerge-fetch.log"
alias music="mpv --playlist=/home/coast/Music --shuffle"
alias cmatrix="cmatrix -C white"
fixaud() {
pactl set-card-profile alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic "HiFi (HDMI1, HDMI2, HDMI3, Mic1, Mic2, Speaker)"
}
fixaud2() {
pactl set-default-sink alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink
}
Executable
+1
View File
@@ -0,0 +1 @@
export PS1="\[\e[01;32m\]\u@\h\[\e[01;34m\] \w \$\[\e[00m\]"
Executable
+21
View File
@@ -0,0 +1,21 @@
# /etc/skel/.bashrc
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output. So make sure this doesn't display
# anything or bad things will happen !
# Test for an interactive shell. There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
# Shell is non-interactive. Be done now!
return
fi
source ~/.bash.d/*
PS1='\[\e[1;37m\]\u@\h \w \$\[\e[0m\] '
[[ $PS1 && -f /usr/share/bash-completion/bash_completion ]] && \
. /usr/share/bash-completion/bash_completion
+248
View File
@@ -0,0 +1,248 @@
;;; init.el --- Coast's ~/.emacs.d/init.el
;;
;;; Commentary:
;; This is my GNU/Emacs configuration --
;; It has:
;; - (TEMPORARY) Evil mode; as I've gotten used to Vim binds when I was away from GNU/Emacs for a bit.
;; - Automatic syntax-highlighting.
;; - Has a minimap.
;; - Bad theme; it's fine on my eyes, though -- I like the 'solarized' theme >:3
;; - It's also gay.
;;
;;; Code:
;;
(require 'package)
(setq package-archives
'(("gnu" . "https://elpa.gnu.org/packages/")
("melpa" . "https://melpa.org/packages/")))
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
(require 'use-package)
;;; Message:
;; "run" command (M-x / evil)
(defun coast/run-current-file ()
(interactive)
(let ((file (buffer-file-name)))
(cond
((not file)
(message "No file to run!"))
((string-match "\\.py\\'" file)
(compile (format "python3 %s" file)))
((string-match "\\.c\\'" file)
(let* ((out (concat (file-name-sans-extension file) ".out")))
(compile (format "gcc %s -o %s && %s" file out out))))
((string-match "\\.sh\\'" file)
(compile (format "bash %s" file)))
((string-match "\\.rs\\'" file)
(let* ((out (file-name-sans-extension file)))
(compile (format "rustc %s && %s" file out))))
((string-match "\\.lua\\'" file)
(compile (format "lua %s" file)))
((string-match "\\.js\\'" file)
(compile (format "node %s" file)))
((coast/file-has-shebang-p file)
(compile (format "%s" file)))
(t (message "Not sure how to run this.")))))
(defun coast/file-has-shebang-p (file)
(when (and file (file-readable-p file))
(with-temp-buffer
(insert-file-contents-literally file nil 0 128)
(goto-char (point-min))
(looking-at "^#!"))))
(defalias 'run #'coast/run-current-file)
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(global-display-line-numbers-mode 1)
(global-hl-line-mode 1)
(electric-pair-mode 1)
(setq-default electric-pair-pairs
'((?\" . ?\")
(?\{ . ?\})
(?\( . ?\))
(?\[ . ?\])
(?\< . ?\>)))
(setq-default electric-pair-text-pairs electric-pair-pairs)
(set-frame-parameter (selected-frame) 'alpha '(95 . 95))
(add-to-list 'default-frame-alist '(alpha . (95 . 95)))
(set-face-attribute 'default nil :family "Inconsolata" :height 180)
(setq backup-directory-alist `((".*" . "~/.local/tmp/emacsbackup/")))
(setq make-backup-files t)
(setq backup-by-copying t)
(use-package solarized-theme :ensure t)
(load-theme 'solarized-selenized-dark t)
(use-package all-the-icons :ensure t :if (display-graphic-p))
(use-package rainbow-mode :ensure t :hook (prog-mode . rainbow-mode))
(use-package elcord :ensure t :config (elcord-mode 1))
(use-package neotree :ensure t :bind ("<f9>" . neotree-toggle))
(use-package vertico :ensure t :config (vertico-mode 1))
(use-package marginalia :ensure t :hook (vertico-mode . marginalia-mode))
(use-package consult
:ensure t
:bind (("C-x b" . consult-buffer)
("C-s" . consult-line)))
(use-package which-key :ensure t :config (which-key-mode 1))
(use-package company :ensure t :hook (prog-mode . company-mode))
(use-package yasnippet :ensure t :hook (prog-mode . yas-minor-mode))
(use-package flycheck :ensure t :hook (prog-mode . flycheck-mode))
(global-set-key (kbd "C-c t") 'ansi-term)
(use-package web-mode
:ensure t
:mode "\\.html?\\'"
:config
(setq web-mode-enable-auto-pairing t
web-mode-enable-auto-closing t
web-mode-enable-auto-expanding t))
(use-package emmet-mode
:ensure t
:hook ((web-mode html-mode css-mode) . emmet-mode)
:config
(setq emmet-expand-jsx-className? t))
(use-package python :mode "\\.py\\'")
(use-package sh-script :mode "\\.sh\\'")
(use-package cc-mode)
(use-package markdown-mode :ensure t :mode "\\.md\\'")
(use-package yaml-mode :ensure t :mode "\\.ya?ml\\'")
(use-package macrostep :ensure t)
;;; Message:
;; Language-setup.
(use-package python
:mode ("\\.py\\'" . python-mode)
:interpreter ("python" . python-mode))
(use-package rust-mode
:ensure t
:mode ("\\.rs\\'" . rust-mode))
(use-package sh-script
:mode (("\\.sh\\'" . sh-mode)
("\\.bash\\'" . sh-mode)
("\\.zsh\\'" . sh-mode))
:interpreter (("bash" . sh-mode)
("sh" . sh-mode)
("zsh" . sh-mode)))
(use-package lua-mode
:ensure t
:mode ("\\.lua\\'" . lua-mode))
(use-package cc-mode
:mode (("\\.c\\'" . c-mode)
("\\.h\\'" . c-mode)
("\\.cpp\\'" . c++-mode)
("\\.hpp\\'" . c++-mode))
:interpreter (("c" . c-mode)
("cpp" . c++-mode)))
(use-package markdown-mode
:ensure t
:mode ("\\.md\\'" . markdown-mode))
(use-package yaml-mode
:ensure t
:mode ("\\.ya?ml\\'" . yaml-mode))
;;; Message
;; -- Set window title --
(setq frame-title-format '("%b —— GNU/Emacs"))
;;; Message:
;; -- The below may have been temporarily added --
(use-package doom-modeline
:ensure t
:init
(setq doom-modeline-height 25
doom-modeline-bar-width 3
doom-modeline-buffer-file-name-style 'truncate-with-project
doom-modeline-icon t
doom-modeline-major-mode-icon t
doom-modeline-enable-word-count t
doom-modeline-vcs-max-length 12
doom-modeline-minor-modes nil)
:config
(doom-modeline-mode 1))
(setq evil-want-keybinding nil)
(use-package evil
:ensure t
:init (setq evil-want-integration t
evil-want-C-u-scroll t)
:config (evil-mode 1))
(use-package evil-collection
:after evil
:ensure t
:config (evil-collection-init))
(use-package evil-leader
:ensure t
:config
(global-evil-leader-mode)
(evil-leader/set-leader "<SPC>")
(evil-leader/set-key
"f" 'find-file
"b" 'switch-to-buffer
"k" 'kill-buffer
"t" 'ansi-term
"e" 'eval-buffer
"r" 'coast/run-current-file))
(use-package evil-surround :ensure t :config (global-evil-surround-mode 1))
(use-package evil-commentary :ensure t :config (evil-commentary-mode 1))
(use-package corfu
:ensure t
:custom
(corfu-auto t)
(corfu-cycle t)
(corfu-quit-no-match nil)
:init
(global-corfu-mode))
(use-package cape
:ensure t)
(defun my/evil-ex-corfu-setup ()
(setq-local completion-at-point-functions
(list (cape-super-capf #'completion-at-point))))
(add-hook 'evil-ex-completion-hook #'my/evil-ex-corfu-setup)
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(warning-suppress-log-types '((use-package))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(provide 'init)
;;; init.el ends here
Executable
+10
View File
@@ -0,0 +1,10 @@
config/nvim/plugged
config/nvim/pack
config/nvim/undodir
config/qtile/__pycache__
etc/nixos/hardware-configuration.nix
nixos/hardware-configuration.nix
config/nvim/nvim
config/nvim/undo
config/nushell/history.txt
config/nvim-2/pack
Executable
+16
View File
@@ -0,0 +1,16 @@
bind_to_address "127.0.0.1"
music_directory "/home/coast/Music"
playlist_directory "/home/coast/.mpd/playlists"
db_file "/home/coast/.mpd/database"
log_file "/home/coast/.mpd/log"
pid_file "/home/coast/.mpd/mpd.pid"
user "coast"
audio_output {
type "pulse"
name "PulseAudio Output"
mixer_type "software"
}
Executable
+46
View File
@@ -0,0 +1,46 @@
Host srv
HostName 5.178.107.206
User coast
DynamicForward 65000
ExitOnForwardFailure yes
ServerAliveInterval 60
ServerAliveCountMax 3
ControlMaster auto
ControlPath ~/.ssh/control-%r@%h:%p-srv1
ControlPersist 10m
Host srv2
HostName sx7n8.tech
User coast
DynamicForward 65000
ExitOnForwardFailure yes
ServerAliveInterval 60
ServerAliveCountMax 3
ControlMaster auto
ControlPath ~/.ssh/control-%r@%h:%p-srv2
ControlPersist 10m
Host srv3
HostName 75.127.15.21
User root
DynamicForward 65000
ExitOnForwardFailure yes
ServerAliveInterval 60
ServerAliveCountMax 3
ControlMaster auto
ControlPath ~/.ssh/control-%r@%h:%p-srv3
ControlPersist 10m
Host srv4
HostName 74.209.118.150
User root
Port 65001
DynamicForward 65000
ServerAliveInterval 60
ServerAliveCountMax 3
Host laptop
HostName 192.168.1.157
User coast
ForwardX11Trusted yes
ServerAliveInterval 60
ServerAliveCountMax 3
ControlMaster auto
ControlPath ~/.ssh/control-%r@%h:%p-laptop
ControlPersist 10m
+1
View File
@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA/uTuBIG/d0zfgGJz6boCEeyuz16/t41aWCjN+SK5BF coast@unix
Executable
+67
View File
@@ -0,0 +1,67 @@
set nocompatible
filetype plugin indent on
syntax enable
set encoding=utf-8
set laststatus=2
set statusline=%l
set statusline+=<<
set statusline+=\ %f\ %*
set statusline+=>>
set statusline+=\ %2*\ %F
set statusline+=\ %m
set statusline+=%=
set statusline+=\ %1*\ <<
set statusline+=\ Line:\ %l
set statusline+=\ Col:\ %c
set statusline+=\ :::\ %n
set statusline+=\ >>
set number
set relativenumber
set numberwidth=4
highlight LineNr ctermfg=DarkGray guifg=#3a3a3a
highlight SignColumn ctermbg=NONE guibg=NONE
highlight LineNr cterm=italic gui=italic
set tabstop=4
set shiftwidth=4
set expandtab
set smartindent
set nowrap
set incsearch
set hlsearch
set ignorecase
set smartcase
set mouse=a
set scrolloff=5
set cursorline
set noshowmode
set shortmess+=I
set laststatus=2
let mapleader = "\<Space>"
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <silent> <leader>h :nohlsearch<CR>
nnoremap <leader>n :set relativenumber!<CR>
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
Plug 'itchyny/lightline.vim'
Plug 'tpope/vim-commentary'
Plug 'airblade/vim-gitgutter'
call plug#end()
nnoremap <leader>t :NERDTreeToggle<CR>
Executable
+16
View File
@@ -0,0 +1,16 @@
local wezterm = require("wezterm")
local config = wezterm.config_builder()
config.font_size = 15
config.color_scheme = "Mashup Colors (terminal.sexy)"
config.window_padding = {
left = 4,
right = 4,
top = 4,
bottom = 4,
}
config.enable_tab_bar = false
config.font = wezterm.font("JetBrainsMono Nerd Font")
config.window_close_confirmation = "NeverPrompt"
config.window_background_opacity = 0.90
config.default_cursor_style = "SteadyUnderline"
return config
Executable
+28
View File
@@ -0,0 +1,28 @@
#!/bin/zsh
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
exec dbus-launch --sh-syntax --exit-with-session "$0"
fi
export XDG_SESSION_TYPE=x11
export XDG_CURRENT_DESKTOP=dwm
export GDK_BACKEND=x11
export QT_QPA_PLATFORM=xcb
export XCURSOR_THEME=Adwaita
export XCURSOR_SIZE=24
xset r rate 200 35
xinput set-prop "ELAN0709:00 04F3:30A0 Touchpad" "libinput Tapping Enabled" 1 &
xrdb -merge ~/.Xresources
picom --config ~/.config/picom/picom.conf &
sxhkd &
slstatus &
/usr/libexec/polkit-gnome-authentication-agent-1 &
pulseaudio --start &
setxkbmap -option caps:escape &
xwallpaper --zoom files/pics/walls/wallhaven-y8g1el_1920x1080.png &
dunst &
notify-send "test"
brightnessctl -d intel_backlight set 100%
exec dwm
Executable
+143
View File
@@ -0,0 +1,143 @@
export TERM=xterm-256color
grep --color=auto < /dev/null &>/dev/null && alias grep='grep --color=auto'
export PATH="$HOME/.local/bin:$PATH"
export PATH="/usr/pkg/sbin:/usr/pkg/bin:$PATH"
export PATH="$HOME/.cargo/bin:$PATH"
export PATH="$PATH:/home/coast/.spicetify"
export MANPATH="/usr/pkg/man:$MANPATH"
export XDG_DATA_DIRS="/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share:/usr/local/share:/usr/share"
export EIX_LIMIT=0
export EDITOR=vim
#export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
export EGIT_OVERRIDE_REPO_RIVER_RIVER="https://github.com/riverwm/river.git"
alias record='wf-recorder -f desktop.mkv -a alsa_output.pci-0000_0b_00.6.analog-stereo.monitor -g "$(slurp)"'
export XDG_SESSION_TYPE=x11
#aliasrc
#OS-based aliases
[ "$(uname -s)" = "FreeBSD" ] && alias make=gmake
alias \
sysrc="doas sysrc"\
service="doas service"\
sysctl="doas sysctl"\
pkg="doas proxychains -q pkg"
#alias \
# starth="dbus-run-session sway"\
# startw=starth\
# startx=starth
alias startx="dbus-run-session startx"
alias \
elog="doas tail -f /var/log/emerge-fetch.log"\
emerge="doas px emerge"\
eu="doas etc-update"
alias pgrep="pgrep -a"
alias qb=qbittorrent-nox
alias s=ssh\ laptop
alias s1="ssh coast@seqyusphere.eu"
alias s2="ssh coast@sx7n8.tech"
alias nrs="doas nixos-rebuild switch --flake /etc/nixos#core"
alias nf="clear && neofetch"
alias mutt="neomutt"
alias mt="neomutt"
alias emoji="cat ~/.local/src/local/share/emoji | grep"
alias cst="vi ~/.config/st/config.h"
#alias ls="ls --color=auto"
#alias ll="ls -hl"
#alias l="ls -lh"
alias la="ls -ahl"
alias smi="nvidia-smi"
alias srczsh="source ~/.zshrc"
alias battery="sb-battery"
alias quit="exit"
alias push="git push"
alias weather="curl wttr.in/masjedsoleyman"
alias las="ls"
alias c="clear"
alias cear="clear"
alias cd..="cd .."
alias ..='echo "cd .."; cd ../'
alias claer="clear"
alias clare="clear"
alias cleae="clear"
alias clera="clear"
alias hotp="htop"
alias copykey='cat ~/.local/share/vault1.key | xclip -sel clipboard'
alias mic="micro"
alias nx="nsxiv"
alias e="doas emerge --ask --verbose"
alias es="emerge -s"
alias fe="flatpak search"
alias fei="flatpak install"
alias ac="doas emerge -ac"
alias ls="ls --color=auto"
alias alsamixer="alsamixer -c 0"
alias l="ls -l;"
alias freebsd="qemu-system-x86_64 -m 8048 -smp 2 -hda /home/coast/vm/freebsd/FreeBSD-14.3-RELEASE-amd64.qcow2 -nic user,model=virtio-net-pci -enable-kvm"
alias os="ls --color=auto"
alias lsbc="lsblk | bat -l conf"
alias main=man
alias mian=man
alias su="su -"
video() {
mpv "$1" --ytdl-format="bestvideo[height>=720]+bestaudio/best[height>=720]"
}
videolow() {
mpv "$1" --ytdl-format="bestvideo[height<=720]+bestaudio/best[height<=720]"
}
#else
bindkey -e
batstat=$(cat /sys/class/power_supply/BAT1/status 2>/dev/null)
charge=$(cat /sys/class/power_supply/BAT1/capacity 2>/dev/null)
if [[ "$batstat" == "Discharging" && "$charge" -lt 50 ]]; then
echo "Battery: $(sb-battery)"
fi
noipv6(){
doas sysctl -w net.ipv6.conf.all.disable_ipv6=1
doas sysctl -w net.ipv6.conf.default.disable_ipv6=1
doas sysctl -w net.ipv6.conf.lo.disable_ipv6=1
}
#PROXYCHAINS_IGNORE=(
# cd exit clear fg bg jobs history
# ssh scp sftp
# proxychains
#)
#
#autoload -U add-zsh-hook
#
#_proxychains_auto() {
# local cmd="$BUFFER"
# [[ -z "$cmd" ]] && return
#
# # get first word of command
# local first=${cmd%% *}
#
# # ignore listed commands
# for ignore in "${PROXYCHAINS_IGNORE[@]}"; do
# [[ "$first" == "$ignore" ]] && return
# done
#
# # sudo/doas handling
# if [[ "$cmd" == sudo\ * ]]; then
# BUFFER="sudo proxychains ${cmd#sudo }"
# elif [[ "$cmd" == doas\ * ]]; then
# BUFFER="doas proxychains ${cmd#doas }"
# else
# BUFFER="proxychains $cmd"
# fi
#}
#
#add-zsh-hook preexec _proxychains_auto
if test -z "$XDG_RUNTIME_DIR"; then
export XDG_RUNTIME_DIR=$(mktemp -d /tmp/$(id -u)-runtime-dir.XXX)
fi
+867
View File
@@ -0,0 +1,867 @@
# Fish-like fast/unobtrusive autosuggestions for zsh.
# https://github.com/zsh-users/zsh-autosuggestions
# v0.7.1
# Copyright (c) 2013 Thiago de Arruda
# Copyright (c) 2016-2021 Eric Freese
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation
# files (the "Software"), to deal in the Software without
# restriction, including without limitation the rights to use,
# copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#--------------------------------------------------------------------#
# Global Configuration Variables #
#--------------------------------------------------------------------#
# Color to use when highlighting suggestion
# Uses format of `region_highlight`
# More info: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets
(( ! ${+ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE} )) &&
typeset -g ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
# Prefix to use when saving original versions of bound widgets
(( ! ${+ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX} )) &&
typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig-
# Strategies to use to fetch a suggestion
# Will try each strategy in order until a suggestion is returned
(( ! ${+ZSH_AUTOSUGGEST_STRATEGY} )) && {
typeset -ga ZSH_AUTOSUGGEST_STRATEGY
ZSH_AUTOSUGGEST_STRATEGY=(history)
}
# Widgets that clear the suggestion
(( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && {
typeset -ga ZSH_AUTOSUGGEST_CLEAR_WIDGETS
ZSH_AUTOSUGGEST_CLEAR_WIDGETS=(
history-search-forward
history-search-backward
history-beginning-search-forward
history-beginning-search-backward
history-beginning-search-forward-end
history-beginning-search-backward-end
history-substring-search-up
history-substring-search-down
up-line-or-beginning-search
down-line-or-beginning-search
up-line-or-history
down-line-or-history
accept-line
copy-earlier-word
)
}
# Widgets that accept the entire suggestion
(( ! ${+ZSH_AUTOSUGGEST_ACCEPT_WIDGETS} )) && {
typeset -ga ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=(
forward-char
end-of-line
vi-forward-char
vi-end-of-line
vi-add-eol
)
}
# Widgets that accept the entire suggestion and execute it
(( ! ${+ZSH_AUTOSUGGEST_EXECUTE_WIDGETS} )) && {
typeset -ga ZSH_AUTOSUGGEST_EXECUTE_WIDGETS
ZSH_AUTOSUGGEST_EXECUTE_WIDGETS=(
)
}
# Widgets that accept the suggestion as far as the cursor moves
(( ! ${+ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS} )) && {
typeset -ga ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=(
forward-word
emacs-forward-word
vi-forward-word
vi-forward-word-end
vi-forward-blank-word
vi-forward-blank-word-end
vi-find-next-char
vi-find-next-char-skip
)
}
# Widgets that should be ignored (globbing supported but must be escaped)
(( ! ${+ZSH_AUTOSUGGEST_IGNORE_WIDGETS} )) && {
typeset -ga ZSH_AUTOSUGGEST_IGNORE_WIDGETS
ZSH_AUTOSUGGEST_IGNORE_WIDGETS=(
orig-\*
beep
run-help
set-local-history
which-command
yank
yank-pop
zle-\*
)
}
# Pty name for capturing completions for completion suggestion strategy
(( ! ${+ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME} )) &&
typeset -g ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME=zsh_autosuggest_completion_pty
#--------------------------------------------------------------------#
# Utility Functions #
#--------------------------------------------------------------------#
_zsh_autosuggest_escape_command() {
setopt localoptions EXTENDED_GLOB
# Escape special chars in the string (requires EXTENDED_GLOB)
echo -E "${1//(#m)[\"\'\\()\[\]|*?~]/\\$MATCH}"
}
#--------------------------------------------------------------------#
# Widget Helpers #
#--------------------------------------------------------------------#
_zsh_autosuggest_incr_bind_count() {
typeset -gi bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]+1))
_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]=$bind_count
}
# Bind a single widget to an autosuggest widget, saving a reference to the original widget
_zsh_autosuggest_bind_widget() {
typeset -gA _ZSH_AUTOSUGGEST_BIND_COUNTS
local widget=$1
local autosuggest_action=$2
local prefix=$ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX
local -i bind_count
# Save a reference to the original widget
case $widgets[$widget] in
# Already bound
user:_zsh_autosuggest_(bound|orig)_*)
bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$widget]))
;;
# User-defined widget
user:*)
_zsh_autosuggest_incr_bind_count $widget
zle -N $prefix$bind_count-$widget ${widgets[$widget]#*:}
;;
# Built-in widget
builtin)
_zsh_autosuggest_incr_bind_count $widget
eval "_zsh_autosuggest_orig_${(q)widget}() { zle .${(q)widget} }"
zle -N $prefix$bind_count-$widget _zsh_autosuggest_orig_$widget
;;
# Completion widget
completion:*)
_zsh_autosuggest_incr_bind_count $widget
eval "zle -C $prefix$bind_count-${(q)widget} ${${(s.:.)widgets[$widget]}[2,3]}"
;;
esac
# Pass the original widget's name explicitly into the autosuggest
# function. Use this passed in widget name to call the original
# widget instead of relying on the $WIDGET variable being set
# correctly. $WIDGET cannot be trusted because other plugins call
# zle without the `-w` flag (e.g. `zle self-insert` instead of
# `zle self-insert -w`).
eval "_zsh_autosuggest_bound_${bind_count}_${(q)widget}() {
_zsh_autosuggest_widget_$autosuggest_action $prefix$bind_count-${(q)widget} \$@
}"
# Create the bound widget
zle -N -- $widget _zsh_autosuggest_bound_${bind_count}_$widget
}
# Map all configured widgets to the right autosuggest widgets
_zsh_autosuggest_bind_widgets() {
emulate -L zsh
local widget
local ignore_widgets
ignore_widgets=(
.\*
_\*
${_ZSH_AUTOSUGGEST_BUILTIN_ACTIONS/#/autosuggest-}
$ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX\*
$ZSH_AUTOSUGGEST_IGNORE_WIDGETS
)
# Find every widget we might want to bind and bind it appropriately
for widget in ${${(f)"$(builtin zle -la)"}:#${(j:|:)~ignore_widgets}}; do
if [[ -n ${ZSH_AUTOSUGGEST_CLEAR_WIDGETS[(r)$widget]} ]]; then
_zsh_autosuggest_bind_widget $widget clear
elif [[ -n ${ZSH_AUTOSUGGEST_ACCEPT_WIDGETS[(r)$widget]} ]]; then
_zsh_autosuggest_bind_widget $widget accept
elif [[ -n ${ZSH_AUTOSUGGEST_EXECUTE_WIDGETS[(r)$widget]} ]]; then
_zsh_autosuggest_bind_widget $widget execute
elif [[ -n ${ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS[(r)$widget]} ]]; then
_zsh_autosuggest_bind_widget $widget partial_accept
else
# Assume any unspecified widget might modify the buffer
_zsh_autosuggest_bind_widget $widget modify
fi
done
}
# Given the name of an original widget and args, invoke it, if it exists
_zsh_autosuggest_invoke_original_widget() {
# Do nothing unless called with at least one arg
(( $# )) || return 0
local original_widget_name="$1"
shift
if (( ${+widgets[$original_widget_name]} )); then
zle $original_widget_name -- $@
fi
}
#--------------------------------------------------------------------#
# Highlighting #
#--------------------------------------------------------------------#
# If there was a highlight, remove it
_zsh_autosuggest_highlight_reset() {
typeset -g _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT
if [[ -n "$_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT" ]]; then
region_highlight=("${(@)region_highlight:#$_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT}")
unset _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT
fi
}
# If there's a suggestion, highlight it
_zsh_autosuggest_highlight_apply() {
typeset -g _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT
if (( $#POSTDISPLAY )); then
typeset -g _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT="$#BUFFER $(($#BUFFER + $#POSTDISPLAY)) $ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE"
region_highlight+=("$_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT")
else
unset _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT
fi
}
#--------------------------------------------------------------------#
# Autosuggest Widget Implementations #
#--------------------------------------------------------------------#
# Disable suggestions
_zsh_autosuggest_disable() {
typeset -g _ZSH_AUTOSUGGEST_DISABLED
_zsh_autosuggest_clear
}
# Enable suggestions
_zsh_autosuggest_enable() {
unset _ZSH_AUTOSUGGEST_DISABLED
if (( $#BUFFER )); then
_zsh_autosuggest_fetch
fi
}
# Toggle suggestions (enable/disable)
_zsh_autosuggest_toggle() {
if (( ${+_ZSH_AUTOSUGGEST_DISABLED} )); then
_zsh_autosuggest_enable
else
_zsh_autosuggest_disable
fi
}
# Clear the suggestion
_zsh_autosuggest_clear() {
# Remove the suggestion
POSTDISPLAY=
_zsh_autosuggest_invoke_original_widget $@
}
# Modify the buffer and get a new suggestion
_zsh_autosuggest_modify() {
local -i retval
# Only available in zsh >= 5.4
local -i KEYS_QUEUED_COUNT
# Save the contents of the buffer/postdisplay
local orig_buffer="$BUFFER"
local orig_postdisplay="$POSTDISPLAY"
# Clear suggestion while waiting for next one
POSTDISPLAY=
# Original widget may modify the buffer
_zsh_autosuggest_invoke_original_widget $@
retval=$?
emulate -L zsh
# Don't fetch a new suggestion if there's more input to be read immediately
if (( $PENDING > 0 || $KEYS_QUEUED_COUNT > 0 )); then
POSTDISPLAY="$orig_postdisplay"
return $retval
fi
# Optimize if manually typing in the suggestion or if buffer hasn't changed
if [[ "$BUFFER" = "$orig_buffer"* && "$orig_postdisplay" = "${BUFFER:$#orig_buffer}"* ]]; then
POSTDISPLAY="${orig_postdisplay:$(($#BUFFER - $#orig_buffer))}"
return $retval
fi
# Bail out if suggestions are disabled
if (( ${+_ZSH_AUTOSUGGEST_DISABLED} )); then
return $?
fi
# Get a new suggestion if the buffer is not empty after modification
if (( $#BUFFER > 0 )); then
if [[ -z "$ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE" ]] || (( $#BUFFER <= $ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE )); then
_zsh_autosuggest_fetch
fi
fi
return $retval
}
# Fetch a new suggestion based on what's currently in the buffer
_zsh_autosuggest_fetch() {
if (( ${+ZSH_AUTOSUGGEST_USE_ASYNC} )); then
_zsh_autosuggest_async_request "$BUFFER"
else
local suggestion
_zsh_autosuggest_fetch_suggestion "$BUFFER"
_zsh_autosuggest_suggest "$suggestion"
fi
}
# Offer a suggestion
_zsh_autosuggest_suggest() {
emulate -L zsh
local suggestion="$1"
if [[ -n "$suggestion" ]] && (( $#BUFFER )); then
POSTDISPLAY="${suggestion#$BUFFER}"
else
POSTDISPLAY=
fi
}
# Accept the entire suggestion
_zsh_autosuggest_accept() {
local -i retval max_cursor_pos=$#BUFFER
# When vicmd keymap is active, the cursor can't move all the way
# to the end of the buffer
if [[ "$KEYMAP" = "vicmd" ]]; then
max_cursor_pos=$((max_cursor_pos - 1))
fi
# If we're not in a valid state to accept a suggestion, just run the
# original widget and bail out
if (( $CURSOR != $max_cursor_pos || !$#POSTDISPLAY )); then
_zsh_autosuggest_invoke_original_widget $@
return
fi
# Only accept if the cursor is at the end of the buffer
# Add the suggestion to the buffer
BUFFER="$BUFFER$POSTDISPLAY"
# Remove the suggestion
POSTDISPLAY=
# Run the original widget before manually moving the cursor so that the
# cursor movement doesn't make the widget do something unexpected
_zsh_autosuggest_invoke_original_widget $@
retval=$?
# Move the cursor to the end of the buffer
if [[ "$KEYMAP" = "vicmd" ]]; then
CURSOR=$(($#BUFFER - 1))
else
CURSOR=$#BUFFER
fi
return $retval
}
# Accept the entire suggestion and execute it
_zsh_autosuggest_execute() {
# Add the suggestion to the buffer
BUFFER="$BUFFER$POSTDISPLAY"
# Remove the suggestion
POSTDISPLAY=
# Call the original `accept-line` to handle syntax highlighting or
# other potential custom behavior
_zsh_autosuggest_invoke_original_widget "accept-line"
}
# Partially accept the suggestion
_zsh_autosuggest_partial_accept() {
local -i retval cursor_loc
# Save the contents of the buffer so we can restore later if needed
local original_buffer="$BUFFER"
# Temporarily accept the suggestion.
BUFFER="$BUFFER$POSTDISPLAY"
# Original widget moves the cursor
_zsh_autosuggest_invoke_original_widget $@
retval=$?
# Normalize cursor location across vi/emacs modes
cursor_loc=$CURSOR
if [[ "$KEYMAP" = "vicmd" ]]; then
cursor_loc=$((cursor_loc + 1))
fi
# If we've moved past the end of the original buffer
if (( $cursor_loc > $#original_buffer )); then
# Set POSTDISPLAY to text right of the cursor
POSTDISPLAY="${BUFFER[$(($cursor_loc + 1)),$#BUFFER]}"
# Clip the buffer at the cursor
BUFFER="${BUFFER[1,$cursor_loc]}"
else
# Restore the original buffer
BUFFER="$original_buffer"
fi
return $retval
}
() {
typeset -ga _ZSH_AUTOSUGGEST_BUILTIN_ACTIONS
_ZSH_AUTOSUGGEST_BUILTIN_ACTIONS=(
clear
fetch
suggest
accept
execute
enable
disable
toggle
)
local action
for action in $_ZSH_AUTOSUGGEST_BUILTIN_ACTIONS modify partial_accept; do
eval "_zsh_autosuggest_widget_$action() {
local -i retval
_zsh_autosuggest_highlight_reset
_zsh_autosuggest_$action \$@
retval=\$?
_zsh_autosuggest_highlight_apply
zle -R
return \$retval
}"
done
for action in $_ZSH_AUTOSUGGEST_BUILTIN_ACTIONS; do
zle -N autosuggest-$action _zsh_autosuggest_widget_$action
done
}
#--------------------------------------------------------------------#
# Completion Suggestion Strategy #
#--------------------------------------------------------------------#
# Fetches a suggestion from the completion engine
#
_zsh_autosuggest_capture_postcompletion() {
# Always insert the first completion into the buffer
compstate[insert]=1
# Don't list completions
unset 'compstate[list]'
}
_zsh_autosuggest_capture_completion_widget() {
# Add a post-completion hook to be called after all completions have been
# gathered. The hook can modify compstate to affect what is done with the
# gathered completions.
local -a +h comppostfuncs
comppostfuncs=(_zsh_autosuggest_capture_postcompletion)
# Only capture completions at the end of the buffer
CURSOR=$#BUFFER
# Run the original widget wrapping `.complete-word` so we don't
# recursively try to fetch suggestions, since our pty is forked
# after autosuggestions is initialized.
zle -- ${(k)widgets[(r)completion:.complete-word:_main_complete]}
if is-at-least 5.0.3; then
# Don't do any cr/lf transformations. We need to do this immediately before
# output because if we do it in setup, onlcr will be re-enabled when we enter
# vared in the async code path. There is a bug in zpty module in older versions
# where the tty is not properly attached to the pty slave, resulting in stty
# getting stopped with a SIGTTOU. See zsh-workers thread 31660 and upstream
# commit f75904a38
stty -onlcr -ocrnl -F /dev/tty
fi
# The completion has been added, print the buffer as the suggestion
echo -nE - $'\0'$BUFFER$'\0'
}
zle -N autosuggest-capture-completion _zsh_autosuggest_capture_completion_widget
_zsh_autosuggest_capture_setup() {
# There is a bug in zpty module in older zsh versions by which a
# zpty that exits will kill all zpty processes that were forked
# before it. Here we set up a zsh exit hook to SIGKILL the zpty
# process immediately, before it has a chance to kill any other
# zpty processes.
if ! is-at-least 5.4; then
zshexit() {
# The zsh builtin `kill` fails sometimes in older versions
# https://unix.stackexchange.com/a/477647/156673
kill -KILL $$ 2>&- || command kill -KILL $$
# Block for long enough for the signal to come through
sleep 1
}
fi
# Try to avoid any suggestions that wouldn't match the prefix
zstyle ':completion:*' matcher-list ''
zstyle ':completion:*' path-completion false
zstyle ':completion:*' max-errors 0 not-numeric
bindkey '^I' autosuggest-capture-completion
}
_zsh_autosuggest_capture_completion_sync() {
_zsh_autosuggest_capture_setup
zle autosuggest-capture-completion
}
_zsh_autosuggest_capture_completion_async() {
_zsh_autosuggest_capture_setup
zmodload zsh/parameter 2>/dev/null || return # For `$functions`
# Make vared completion work as if for a normal command line
# https://stackoverflow.com/a/7057118/154703
autoload +X _complete
functions[_original_complete]=$functions[_complete]
function _complete() {
unset 'compstate[vared]'
_original_complete "$@"
}
# Open zle with buffer set so we can capture completions for it
vared 1
}
_zsh_autosuggest_strategy_completion() {
# Reset options to defaults and enable LOCAL_OPTIONS
emulate -L zsh
# Enable extended glob for completion ignore pattern
setopt EXTENDED_GLOB
typeset -g suggestion
local line REPLY
# Exit if we don't have completions
whence compdef >/dev/null || return
# Exit if we don't have zpty
zmodload zsh/zpty 2>/dev/null || return
# Exit if our search string matches the ignore pattern
[[ -n "$ZSH_AUTOSUGGEST_COMPLETION_IGNORE" ]] && [[ "$1" == $~ZSH_AUTOSUGGEST_COMPLETION_IGNORE ]] && return
# Zle will be inactive if we are in async mode
if zle; then
zpty $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME _zsh_autosuggest_capture_completion_sync
else
zpty $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME _zsh_autosuggest_capture_completion_async "\$1"
zpty -w $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME $'\t'
fi
{
# The completion result is surrounded by null bytes, so read the
# content between the first two null bytes.
zpty -r $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME line '*'$'\0''*'$'\0'
# Extract the suggestion from between the null bytes. On older
# versions of zsh (older than 5.3), we sometimes get extra bytes after
# the second null byte, so trim those off the end.
# See http://www.zsh.org/mla/workers/2015/msg03290.html
suggestion="${${(@0)line}[2]}"
} always {
# Destroy the pty
zpty -d $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME
}
}
#--------------------------------------------------------------------#
# History Suggestion Strategy #
#--------------------------------------------------------------------#
# Suggests the most recent history item that matches the given
# prefix.
#
_zsh_autosuggest_strategy_history() {
# Reset options to defaults and enable LOCAL_OPTIONS
emulate -L zsh
# Enable globbing flags so that we can use (#m) and (x~y) glob operator
setopt EXTENDED_GLOB
# Escape backslashes and all of the glob operators so we can use
# this string as a pattern to search the $history associative array.
# - (#m) globbing flag enables setting references for match data
# TODO: Use (b) flag when we can drop support for zsh older than v5.0.8
local prefix="${1//(#m)[\\*?[\]<>()|^~#]/\\$MATCH}"
# Get the history items that match the prefix, excluding those that match
# the ignore pattern
local pattern="$prefix*"
if [[ -n $ZSH_AUTOSUGGEST_HISTORY_IGNORE ]]; then
pattern="($pattern)~($ZSH_AUTOSUGGEST_HISTORY_IGNORE)"
fi
# Give the first history item matching the pattern as the suggestion
# - (r) subscript flag makes the pattern match on values
typeset -g suggestion="${history[(r)$pattern]}"
}
#--------------------------------------------------------------------#
# Match Previous Command Suggestion Strategy #
#--------------------------------------------------------------------#
# Suggests the most recent history item that matches the given
# prefix and whose preceding history item also matches the most
# recently executed command.
#
# For example, suppose your history has the following entries:
# - pwd
# - ls foo
# - ls bar
# - pwd
#
# Given the history list above, when you type 'ls', the suggestion
# will be 'ls foo' rather than 'ls bar' because your most recently
# executed command (pwd) was previously followed by 'ls foo'.
#
# Note that this strategy won't work as expected with ZSH options that don't
# preserve the history order such as `HIST_IGNORE_ALL_DUPS` or
# `HIST_EXPIRE_DUPS_FIRST`.
_zsh_autosuggest_strategy_match_prev_cmd() {
# Reset options to defaults and enable LOCAL_OPTIONS
emulate -L zsh
# Enable globbing flags so that we can use (#m) and (x~y) glob operator
setopt EXTENDED_GLOB
# TODO: Use (b) flag when we can drop support for zsh older than v5.0.8
local prefix="${1//(#m)[\\*?[\]<>()|^~#]/\\$MATCH}"
# Get the history items that match the prefix, excluding those that match
# the ignore pattern
local pattern="$prefix*"
if [[ -n $ZSH_AUTOSUGGEST_HISTORY_IGNORE ]]; then
pattern="($pattern)~($ZSH_AUTOSUGGEST_HISTORY_IGNORE)"
fi
# Get all history event numbers that correspond to history
# entries that match the pattern
local history_match_keys
history_match_keys=(${(k)history[(R)$~pattern]})
# By default we use the first history number (most recent history entry)
local histkey="${history_match_keys[1]}"
# Get the previously executed command
local prev_cmd="$(_zsh_autosuggest_escape_command "${history[$((HISTCMD-1))]}")"
# Iterate up to the first 200 history event numbers that match $prefix
for key in "${(@)history_match_keys[1,200]}"; do
# Stop if we ran out of history
[[ $key -gt 1 ]] || break
# See if the history entry preceding the suggestion matches the
# previous command, and use it if it does
if [[ "${history[$((key - 1))]}" == "$prev_cmd" ]]; then
histkey="$key"
break
fi
done
# Give back the matched history entry
typeset -g suggestion="$history[$histkey]"
}
#--------------------------------------------------------------------#
# Fetch Suggestion #
#--------------------------------------------------------------------#
# Loops through all specified strategies and returns a suggestion
# from the first strategy to provide one.
#
_zsh_autosuggest_fetch_suggestion() {
typeset -g suggestion
local -a strategies
local strategy
# Ensure we are working with an array
strategies=(${=ZSH_AUTOSUGGEST_STRATEGY})
for strategy in $strategies; do
# Try to get a suggestion from this strategy
_zsh_autosuggest_strategy_$strategy "$1"
# Ensure the suggestion matches the prefix
[[ "$suggestion" != "$1"* ]] && unset suggestion
# Break once we've found a valid suggestion
[[ -n "$suggestion" ]] && break
done
}
#--------------------------------------------------------------------#
# Async #
#--------------------------------------------------------------------#
_zsh_autosuggest_async_request() {
zmodload zsh/system 2>/dev/null # For `$sysparams`
typeset -g _ZSH_AUTOSUGGEST_ASYNC_FD _ZSH_AUTOSUGGEST_CHILD_PID
# If we've got a pending request, cancel it
if [[ -n "$_ZSH_AUTOSUGGEST_ASYNC_FD" ]] && { true <&$_ZSH_AUTOSUGGEST_ASYNC_FD } 2>/dev/null; then
# Close the file descriptor and remove the handler
builtin exec {_ZSH_AUTOSUGGEST_ASYNC_FD}<&-
zle -F $_ZSH_AUTOSUGGEST_ASYNC_FD
# We won't know the pid unless the user has zsh/system module installed
if [[ -n "$_ZSH_AUTOSUGGEST_CHILD_PID" ]]; then
# Zsh will make a new process group for the child process only if job
# control is enabled (MONITOR option)
if [[ -o MONITOR ]]; then
# Send the signal to the process group to kill any processes that may
# have been forked by the suggestion strategy
kill -TERM -$_ZSH_AUTOSUGGEST_CHILD_PID 2>/dev/null
else
# Kill just the child process since it wasn't placed in a new process
# group. If the suggestion strategy forked any child processes they may
# be orphaned and left behind.
kill -TERM $_ZSH_AUTOSUGGEST_CHILD_PID 2>/dev/null
fi
fi
fi
# Fork a process to fetch a suggestion and open a pipe to read from it
builtin exec {_ZSH_AUTOSUGGEST_ASYNC_FD}< <(
# Tell parent process our pid
echo $sysparams[pid]
# Fetch and print the suggestion
local suggestion
_zsh_autosuggest_fetch_suggestion "$1"
echo -nE "$suggestion"
)
# There's a weird bug here where ^C stops working unless we force a fork
# See https://github.com/zsh-users/zsh-autosuggestions/issues/364
autoload -Uz is-at-least
is-at-least 5.8 || command true
# Read the pid from the child process
read _ZSH_AUTOSUGGEST_CHILD_PID <&$_ZSH_AUTOSUGGEST_ASYNC_FD
# When the fd is readable, call the response handler
zle -F "$_ZSH_AUTOSUGGEST_ASYNC_FD" _zsh_autosuggest_async_response
}
# Called when new data is ready to be read from the pipe
# First arg will be fd ready for reading
# Second arg will be passed in case of error
_zsh_autosuggest_async_response() {
emulate -L zsh
local suggestion
if [[ -z "$2" || "$2" == "hup" ]]; then
# Read everything from the fd and give it as a suggestion
IFS='' read -rd '' -u $1 suggestion
zle autosuggest-suggest -- "$suggestion"
# Close the fd
builtin exec {1}<&-
fi
# Always remove the handler
zle -F "$1"
_ZSH_AUTOSUGGEST_ASYNC_FD=
}
#--------------------------------------------------------------------#
# Start #
#--------------------------------------------------------------------#
# Start the autosuggestion widgets
_zsh_autosuggest_start() {
# By default we re-bind widgets on every precmd to ensure we wrap other
# wrappers. Specifically, highlighting breaks if our widgets are wrapped by
# zsh-syntax-highlighting widgets. This also allows modifications to the
# widget list variables to take effect on the next precmd. However this has
# a decent performance hit, so users can set ZSH_AUTOSUGGEST_MANUAL_REBIND
# to disable the automatic re-binding.
if (( ${+ZSH_AUTOSUGGEST_MANUAL_REBIND} )); then
add-zsh-hook -d precmd _zsh_autosuggest_start
fi
_zsh_autosuggest_bind_widgets
}
# Mark for auto-loading the functions that we use
autoload -Uz add-zsh-hook is-at-least
# Automatically enable asynchronous mode in newer versions of zsh. Disable for
# older versions because there is a bug when using async mode where ^C does not
# work immediately after fetching a suggestion.
# See https://github.com/zsh-users/zsh-autosuggestions/issues/364
if is-at-least 5.0.8; then
typeset -g ZSH_AUTOSUGGEST_USE_ASYNC=
fi
# Start the autosuggestion widgets on the next precmd
add-zsh-hook precmd _zsh_autosuggest_start
Executable
+21
View File
@@ -0,0 +1,21 @@
#!/bin/zsh
source /etc/profile
HISTFILE=$HOME/.cache/zsh/history
SAVEHIST=100000000
HISTSIZE=$SAVEHIST
setopt appendhistory
autoload -U compinit
zstyle ':completion:*' menu select
zmodload zsh/complist
compinit
comp_options+=(globdots)
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
source ~/.zsh.d/*
autoload -U colors && colors && setopt prompt_subst
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=5"
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=12"
LIBCLANG_PATH=/usr/lib/llvm/20/lib64
source ~/.zprofile
PATH=$PATH:/home/coast/.spicetify
PROMPT="0 %n %1~ "
Executable
+33
View File
@@ -0,0 +1,33 @@
#!/bin/zsh
#history settings
HISTFILE=$HOME/.cache/zsh/history
SAVEHIST=100000000
HISTSIZE=$SAVEHIST
setopt appendhistory
#completion
autoload -U compinit
zstyle ':completion:*' menu select
zmodload zsh/complist
compinit
comp_options+=(globdots)
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
source /usr/share/zsh/site-functions/zsh-autosuggestions.zsh && fpath=(/usr/share/zsh/site-functions $fpath) && source /usr/share/zsh/site-functions/zsh-syntax-highlighting.zsh
#colors & prompt
autoload -U colors && colors && setopt prompt_subst
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=5"
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=12"
#PROMPT="%F{9}[%f%F{9}!root%f%F{9}@%f%F{9}%m%f %F{2}%~%f%F{9}]%f: "
#paths and environment
fpath=(~/.zsh/completions $fpath)
export PATH=$HOME/.local/bin:$PATH
export EDITOR="emacs"
export PATH=/usr/pkg/sbin:/usr/pkg/bin:$PATH
export MANPATH=/usr/pkg/man:$MANPATH
#aliases for root
alias ..='echo "cd .."; cd ../'
alias ls="ls --color=auto"
grep --color=auto < /dev/null &>/dev/null && alias grep='grep --color=auto'
bindkey -e
#export PS1="%F{15}[%f%F{252}%B%n%b%f%F{15}@%f%F{15}%B%m%b%f%F{15}]%f%F{252}[%f%F{15}%B%~%b%f%F{252}]%f#%B%b "
export PS1="%F{1}[%B!%n@%m%b %F{2}%~%F{1}]%f: "
Executable
+674
View File
@@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
Executable
+21
View File
@@ -0,0 +1,21 @@
## README - Coast's dotfiles
Most of these dotfiles are oldies — my newer ones live in my <u><a href="https://codeberg.org/coast/home-manager/">home-manager</a></u> configuration.
If you want shiny, modern dotfiles, make sure you have <u><a href="https://nix-community.github.io/home-manager/">Nix Home Manager</a></u> installed, then run:
*Make sure you have <u><a href="https://nixos.org/download/">Nix Package Manager</a></u> installed first!*
```bash
cd ~/.config && mkdir home-manager
git clone https://codeberg.org/coast/home-manager.git
nix run home-manager -- init --switch .
```
I think these commands will set up home-manager with my quirky configuration.
But to be brutally honest, please dont use mine — you deserve way better! :3 Like your own setup! Mines kinda ass. I love ass.
### Disclaimer
*These dotfiles reflect my personal preferences and workflow. They might not be suitable for everyone and could require adjustments to fit your needs.*
*They were set up how I learned how to set it up, you might not like how I've set up my program(s)' configuration files in this repository. I strongly recommend that you write your own configs.*
*Feel free to fork, modify, or use parts of this configuration as an inspiration for your own setup.*
+10
View File
@@ -0,0 +1,10 @@
#66cccc // Soft Cyan
#00cccc // Medium Cyan
#00ffff // Bright Cyan
#33aaaa // Teal Cyan
#009999 // Deep Cyan
#11a8cd // Aqua Glow
#00e5e5 // Electric Cyan
#a8dcee // sky cyan
+16
View File
@@ -0,0 +1,16 @@
[window]
dimensions = { columns = 100, lines = 25 }
dynamic_title = true
[terminal.shell]
program = "/usr/bin/zsh"
[font]
normal = { family = "JetBrains Mono Nerd Font", style = "Regular" }
size = 13.0
[cursor]
style = { shape = "Underline", blinking = "Off" }
[colors]
primary = { background = "#121212", foreground = "#e0e0e0" }
cursor = { cursor = "#e0e0e0", text = "#121212" }
selection = { background = "#e0e0e0", text = "#121212" }
normal = { black = "#121212", red = "#d32f2f", green = "#4caf50", yellow = "#ffeb3b", blue = "#2196f3", magenta = "#9c27b0", cyan = "#00bcd4", white = "#e0e0e0" }
bright = { black = "#757575", red = "#f44336", green = "#8bc34a", yellow = "#ffc107", blue = "#3f51b5", magenta = "#673ab7", cyan = "#009688", white = "#ffffff" }
+82
View File
@@ -0,0 +1,82 @@
#!/bin/sh
# my bspwmrc
# desktops
bspc monitor -d I II III IV V VI VII VIII IX X
# borders
bspc config focused_border_color "#383838"
bspc config normal_border_color "#282828"
bspc config border_width 2
# layout
bspc config window_gap 10
bspc config split_ratio 0.5
bspc config smart_gap true
# focus behavior
bspc config focus_follows_pointer true
bspc config click_to_focus false
bspc config pointer_follows_monitor true
# monitor / window behavior
bspc config remove_disabled_monitors true
bspc config auto_cancel true
bspc config auto_alternate true
# padding
bspc config bottom_padding 0
### {{{ find and stop processes
pidb() {
pgrep -x "$1" >/dev/null 2>&1
}
run() {
proc="$1"
cmd="$2"
if ! pidb "$proc"; then
sh -c "$cmd" &
fi
}
### }}}
### {{{ rerun/start processes
# piss
run "piss" "piss"
# picom
run "picom" "picom --backend glx"
# dunst
run "dunst" "dunst"
# bspbar
run "bspbar" "bspbar"
# polkit gnome
run "polkit-gnome-authentication-agent-1" \
"/usr/libexec/polkit-gnome-authentication-agent-1"
# xsettingsd
run "xsettingsd" "xsettingsd"
# pulseaudio
run "pulseaudio" "pulseaudio --start"
# pipewire
run "pipewire" "pipewire"
# xtkhd
run "xtkhd" "xtkhd"
xrandr --output eDP-1 --off
hsetroot -center "$HOME/Downloads/wall4.png"
### }}}
+254
View File
@@ -0,0 +1,254 @@
#? Config file for btop v. 1.4.3
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "dracula"
#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = False
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True
#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
#* Use whitespace " " as separator between different presets.
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = True
#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = False
#* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts.
#* "block" has half the resolution of braille but uses more common characters.
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
graph_symbol = "braille"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "default"
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
graph_symbol_gpu = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_net = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default"
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
shown_boxes = "cpu mem net proc"
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 2000
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "cpu lazy"
#* Reverse sorting order, True or False.
proc_reversed = False
#* Show processes as a tree.
proc_tree = False
#* Use the cpu graph colors in the process list.
proc_colors = True
#* Use a darkening gradient in the process list.
proc_gradient = True
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = False
#* Show process memory as bytes instead of percent.
proc_mem_bytes = True
#* Show cpu graph for each process.
proc_cpu_graphs = True
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = False
#* Show proc box on left side of screen instead of right.
proc_left = False
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = False
#* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = False
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_upper = "Auto"
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_lower = "Auto"
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
show_gpu_info = "Auto"
#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True
#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False
#* Show cpu box at bottom of screen instead of top.
cpu_bottom = False
#* Shows the system uptime in the CPU box.
show_uptime = True
#* Show cpu temperature.
check_temp = True
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = True
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
#* Example: "4:0 5:1 6:3"
cpu_core_map = ""
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = False
#* Show CPU frequency.
show_cpu_freq = True
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = True
#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
disks_filter = ""
#* Show graphs instead of meters for memory values.
mem_graphs = True
#* Show mem box below net box instead of above.
mem_below_net = False
#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True
#* If swap memory should be shown in memory box.
show_swap = True
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True
#* If mem box should be split to also show disks info.
show_disks = True
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True
#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = False
#* Set to true to show available disk space for privileged users.
disk_free_priv = False
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False
#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
io_graph_speeds = ""
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
net_download = 100
net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = True
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = True
#* Starts with the Network Interface specified here.
net_iface = ""
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
base_10_bitrate = "Auto"
#* Show battery stats in top right if battery is present.
show_battery = True
#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"
#* Show power stats of battery next to charge indicator.
show_battery_watts = True
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING"
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
nvml_measure_pcie_speeds = True
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
rsmi_measure_pcie_speeds = True
#* Horizontally mirror the GPU graph.
gpu_mirror_graph = True
#* Custom gpu0 model name, empty string to disable.
custom_gpu_name0 = ""
#* Custom gpu1 model name, empty string to disable.
custom_gpu_name1 = ""
#* Custom gpu2 model name, empty string to disable.
custom_gpu_name2 = ""
#* Custom gpu3 model name, empty string to disable.
custom_gpu_name3 = ""
#* Custom gpu4 model name, empty string to disable.
custom_gpu_name4 = ""
#* Custom gpu5 model name, empty string to disable.
custom_gpu_name5 = ""
+89
View File
@@ -0,0 +1,89 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]=""
# Main text color
theme[main_fg]="#f8e8ec"
# Title color for boxes
theme[title]="#f8e8ec"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#ff8aa0"
# Background color of selected item in processes box
theme[selected_bg]="#7b3949"
# Foreground color of selected item in processes box
theme[selected_fg]="#f8e8ec"
# Color of inactive/disabled text
theme[inactive_fg]="#a56a79"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="#c67090"
# Background color of the percentage meters
theme[meter_bg]="#a65c6c"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#ff8aa0"
# Cpu box outline color
theme[cpu_box]="#d77189"
# Memory/disks box outline color
theme[mem_box]="#d77189"
# Net up/down box outline color
theme[net_box]="#d77189"
# Processes box outline color
theme[proc_box]="#d77189"
# Box divider line and small boxes line color
theme[div_line]="#6f3b4a"
# Temperature graph colors
theme[temp_start]="#ff8aa0"
theme[temp_mid]="#d77189"
theme[temp_end]="#a65c6c"
# CPU graph colors
theme[cpu_start]="#ff8aa0"
theme[cpu_mid]="#d77189"
theme[cpu_end]="#a65c6c"
# Mem/Disk free meter
theme[free_start]="#ff8aa0"
theme[free_mid]="#d77189"
theme[free_end]="#a65c6c"
# Mem/Disk cached meter
theme[cached_start]="#ff8aa0"
theme[cached_mid]="#d77189"
theme[cached_end]="#a65c6c"
# Mem/Disk available meter
theme[available_start]="#ff8aa0"
theme[available_mid]="#d77189"
theme[available_end]="#a65c6c"
# Mem/Disk used meter
theme[used_start]="#ff8aa0"
theme[used_mid]="#d77189"
theme[used_end]="#a65c6c"
# Download graph colors
theme[download_start]="#ff8aa0"
theme[download_mid]="#d77189"
theme[download_end]="#a65c6c"
# Upload graph colors
theme[upload_start]="#f19bb4"
theme[upload_mid]="#d77189"
theme[upload_end]="#a65c6c"
# Process box color gradient for threads, mem and cpu usage
theme[process_start]="#ff8aa0"
theme[process_mid]="#d77189"
theme[process_end]="#c67090"
+89
View File
@@ -0,0 +1,89 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="#282a36"
# Main text color
theme[main_fg]="#f8f8f2"
# Title color for boxes
theme[title]="#f8f8f2"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#6272a4"
# Background color of selected item in processes box
theme[selected_bg]="#ff79c6"
# Foreground color of selected item in processes box
theme[selected_fg]="#f8f8f2"
# Color of inactive/disabled text
theme[inactive_fg]="#44475a"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="#f8f8f2"
# Background color of the percentage meters
theme[meter_bg]="#44475a"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#bd93f9"
# Cpu box outline color
theme[cpu_box]="#bd93f9"
# Memory/disks box outline color
theme[mem_box]="#50fa7b"
# Net up/down box outline color
theme[net_box]="#ff5555"
# Processes box outline color
theme[proc_box]="#8be9fd"
# Box divider line and small boxes line color
theme[div_line]="#44475a"
# Temperature graph colors
theme[temp_start]="#bd93f9"
theme[temp_mid]="#ff79c6"
theme[temp_end]="#ff33a8"
# CPU graph colors
theme[cpu_start]="#bd93f9"
theme[cpu_mid]="#8be9fd"
theme[cpu_end]="#50fa7b"
# Mem/Disk free meter
theme[free_start]="#ffa6d9"
theme[free_mid]="#ff79c6"
theme[free_end]="#ff33a8"
# Mem/Disk cached meter
theme[cached_start]="#b1f0fd"
theme[cached_mid]="#8be9fd"
theme[cached_end]="#26d7fd"
# Mem/Disk available meter
theme[available_start]="#ffd4a6"
theme[available_mid]="#ffb86c"
theme[available_end]="#ff9c33"
# Mem/Disk used meter
theme[used_start]="#96faaf"
theme[used_mid]="#50fa7b"
theme[used_end]="#0dfa49"
# Download graph colors
theme[download_start]="#bd93f9"
theme[download_mid]="#50fa7b"
theme[download_end]="#8be9fd"
# Upload graph colors
theme[upload_start]="#8c42ab"
theme[upload_mid]="#ff79c6"
theme[upload_end]="#ff33a8"
# Process box color gradient for threads, mem and cpu usage
theme[process_start]="#50fa7b"
theme[process_mid]="#59b690"
theme[process_end]="#6272a4"
+92
View File
@@ -0,0 +1,92 @@
#Bashtop gruvbox (https://github.com/morhetz/gruvbox) theme
#by BachoSeven
# Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
# example for white: "#FFFFFF", "#ff" or "255 255 255".
# All graphs and meters can be gradients
# For single color graphs leave "mid" and "end" variable empty.
# Use "start" and "end" variables for two color gradient
# Use "start", "mid" and "end" for three color gradient
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="#1d2021"
# Main text color
theme[main_fg]="#a89984"
# Title color for boxes
theme[title]="#ebdbb2"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#d79921"
# Background color of selected items
theme[selected_bg]="#282828"
# Foreground color of selected items
theme[selected_fg]="#fabd2f"
# Color of inactive/disabled text
theme[inactive_fg]="#282828"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="#585858"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#98971a"
# Cpu box outline color
theme[cpu_box]="#a89984"
# Memory/disks box outline color
theme[mem_box]="#a89984"
# Net up/down box outline color
theme[net_box]="#a89984"
# Processes box outline color
theme[proc_box]="#a89984"
# Box divider line and small boxes line color
theme[div_line]="#a89984"
# Temperature graph colors
theme[temp_start]="#458588"
theme[temp_mid]="#d3869b"
theme[temp_end]="#fb4394"
# CPU graph colors
theme[cpu_start]="#b8bb26"
theme[cpu_mid]="#d79921"
theme[cpu_end]="#fb4934"
# Mem/Disk free meter
theme[free_start]="#4e5900"
theme[free_mid]=""
theme[free_end]="#98971a"
# Mem/Disk cached meter
theme[cached_start]="#458588"
theme[cached_mid]=""
theme[cached_end]="#83a598"
# Mem/Disk available meter
theme[available_start]="#d79921"
theme[available_mid]=""
theme[available_end]="#fabd2f"
# Mem/Disk used meter
theme[used_start]="#cc241d"
theme[used_mid]=""
theme[used_end]="#fb4934"
# Download graph colors
theme[download_start]="#3d4070"
theme[download_mid]="#6c71c4"
theme[download_end]="#a3a8f7"
# Upload graph colors
theme[upload_start]="#701c45"
theme[upload_mid]="#b16286"
theme[upload_end]="#d3869b"
+92
View File
@@ -0,0 +1,92 @@
#Bashtop Kyli0x Theme
#by Kyli0x <kyli0x@protonmail.ch>
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="#222222"
# Main text color
theme[main_fg]="#e8f6f5"
# Title color for boxes
theme[title]="#e8f6f5"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#21d6c9"
# Background color of selected item in processes box
theme[selected_bg]="#1aaba0"
# Foreground color of selected item in processes box
theme[selected_fg]="#e8f6f5"
# Color of inactive/disabled text
theme[inactive_fg]="#5ec4bc"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="#ba1a84"
# Background color of the percentage meters
theme[meter_bg]="#5ec4bc"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#21d6c9"
# Cpu box outline color
theme[cpu_box]="#d486d4"
# Memory/disks box outline color
theme[mem_box]="#d486d4"
# Net up/down box outline color
theme[net_box]="#d486d4"
# Processes box outline color
theme[proc_box]="#d486d4"
# Box divider line and small boxes line color
theme[div_line]="#80638e"
# Temperature graph colors
theme[temp_start]="#21d6c9"
theme[temp_mid]="#1aaba0"
theme[temp_end]="#5ec4bc"
# CPU graph colors
theme[cpu_start]="#21d6c9"
theme[cpu_mid]="#1aaba0"
theme[cpu_end]="#5ec4bc"
# Mem/Disk free meter
theme[free_start]="#21d6c9"
theme[free_mid]="#1aaba0"
theme[free_end]="#5ec4bc"
# Mem/Disk cached meter
theme[cached_start]="#21d6c9"
theme[cached_mid]="#1aaba0"
theme[cached_end]="#5ec4bc"
# Mem/Disk available meter
theme[available_start]="#21d6c9"
theme[available_mid]="#1aaba0"
theme[available_end]="#5ec4bc"
# Mem/Disk used meter
theme[used_start]="#21d6c9"
theme[used_mid]="#1aaba0"
theme[used_end]="#5ec4bc"
# Download graph colors
theme[download_start]="#21d6c9"
theme[download_mid]="#1aaba0"
theme[download_end]="#5ec4bc"
# Upload graph colors
theme[upload_start]="#ec95ec"
theme[upload_mid]="#1aaba0"
theme[upload_end]="#5ec4bc"
# Process box color gradient for threads, mem and cpu usage
theme[process_start]="#21d6c9"
theme[process_mid]="#1aaba0"
theme[process_end]="#ba1a84"
+48
View File
@@ -0,0 +1,48 @@
[global]
# Basic settings
font = Fira Code 10
geometry = "300x100-10+55" # 10px from right edge, 55px from top
separator_height = 2
frame_width = 4
#corner_radius = 8
grow_direction = up
[urgency_low]
background = "#222222" # normbgcolor
foreground = "#bbbbbb" # normfgcolor
frame_color = "#444444" # normbordercolor
timeout = 5
icon_position = left
[urgency_normal]
background = "#722F37" # selbgcolor wine red yay!
foreground = "#eeeeee" # selfgcolor bright text
frame_color = "#722F37" # selbordercolor same wine red frame
timeout = 8
icon_position = left
[urgency_critical]
background = "#7B2D33" # slightly brighter wine red for critical
foreground = "#eeeeee"
frame_color = "#7B2D33"
timeout = 0 # stays until dismissed
icon_position = left
[frame]
# subtle shadow for modern look
shadow = false
shadow_offset_x = -5
shadow_offset_y = -5
#shadow_radius = 12
shadow_opacity = 0.7
shadow_color = "#000000"
[format]
# tweak layout to be modern and clean
title = "%s"
body = "%s"
[mouse]
# allow click to close
close_on_click = true
+48
View File
@@ -0,0 +1,48 @@
[global]
# Basic settings
font = Fira Code 10
geometry = "300x100-10+55" # 10px from right edge, 55px from top
separator_height = 2
frame_width = 4
#corner_radius = 8
grow_direction = up
[urgency_low]
background = "#222222" # normbgcolor
foreground = "#bbbbbb" # normfgcolor
frame_color = "#444444" # normbordercolor
timeout = 5
icon_position = left
[urgency_normal]
background = "#DB940A" # selbgcolor wine red yay!
foreground = "#222222" # selfgcolor bright text
frame_color = "#DB940A" # selbordercolor same wine red frame
timeout = 8
icon_position = left
[urgency_critical]
background = "#DB940A" # slightly brighter wine red for critical
foreground = "#eeeeee"
frame_color = "#DB940A"
timeout = 0 # stays until dismissed
icon_position = left
[frame]
# subtle shadow for modern look
shadow = false
shadow_offset_x = -5
shadow_offset_y = -5
#shadow_radius = 12
shadow_opacity = 0.7
shadow_color = "#000000"
[format]
# tweak layout to be modern and clean
title = "%s"
body = "%s"
[mouse]
# allow click to close
close_on_click = true
+48
View File
@@ -0,0 +1,48 @@
[global]
# Basic settings
font = Fira Code 10
geometry = "300x100-10+55" # 10px from right edge, 55px from top
separator_height = 2
frame_width = 4
#corner_radius = 8
grow_direction = up
[urgency_low]
background = "#222222" # normbgcolor
foreground = "#bbbbbb" # normfgcolor
frame_color = "#444444" # normbordercolor
timeout = 5
icon_position = left
[urgency_normal]
background = "#DB940A" # selbgcolor wine red yay!
foreground = "#eeeeee" # selfgcolor bright text
frame_color = "#DB940A" # selbordercolor same wine red frame
timeout = 8
icon_position = left
[urgency_critical]
background = "#DB940A" # slightly brighter wine red for critical
foreground = "#eeeeee"
frame_color = "#DB940A"
timeout = 0 # stays until dismissed
icon_position = left
[frame]
# subtle shadow for modern look
shadow = false
shadow_offset_x = -5
shadow_offset_y = -5
#shadow_radius = 12
shadow_opacity = 0.7
shadow_color = "#000000"
[format]
# tweak layout to be modern and clean
title = "%s"
body = "%s"
[mouse]
# allow click to close
close_on_click = true
+63
View File
@@ -0,0 +1,63 @@
* {
all: unset;
background: transparent;
font-family: "JetBrainsMono Nerd Font";
border-radius: 10px;
}
$bg: #111111;
$bg1: #111111;
$bg2: #26233a;
$fg: #ebbcba;
$fgdim: #6e6a86;
$accent: #9ccfd8;
$border: #ebbcba;
.container {
background-color: $bg1;
border: 1px solid $border;
color: $fg;
border-radius: 10px;
padding: 6px;
opacity: 0.9;
}
.button-label, .label {
font-size: 24px;
font-weight: bold;
color: $fg;
}
.completelytrans {
background: none;
}
.calendar-label {
font-size: 16px;
font-weight: bold;
color: $fg;
}
window {
all: unset;
background: transparent;
}
calendar, calendar.view, calendar.header {
all: unset;
background-color: $bg;
color: $fgdim;
font-size: 18px;
border-radius: 10px;
}
calendar:indeterminate {
color: #665c54;
}
calendar:selected {
background-color: $bg2;
border: 1px solid $accent;
color: $fg;
border-radius: 4px;
}
+58
View File
@@ -0,0 +1,58 @@
(include "eww_widgets.yuck")
(defwindow calendar
:monitor 'HDMI-A-1'
:stacking "fg"
:geometry (geometry :x "1600" :y "810" :width "320" :height "250" :anchor "top right")
(calendar))
(defwindow year
:monitor 'HDMI-A-1'
:stacking "bg"
:geometry (geometry :x "15" :y "15" :width "100" :height "100" :anchor "top right")
(year))
(defwindow month
:monitor 'HDMI-A-1'
:stacking "bg"
:geometry (geometry :x "15" :y "125" :width "100" :height "100" :anchor "top right")
(month))
(defwindow day
:monitor 'HDMI-A-1'
:stacking "bg"
:geometry (geometry :x "15" :y "235" :width "100" :height "100" :anchor "top right")
(day))
(defwindow daytype
:monitor 'HDMI-A-1'
:stacking "bg"
:geometry (geometry :x "1805" :y "345" :width "100" :height "100" :achor "top right")
(daytype))
(defwindow gif1
:monitor 'HDMI-A-1'
:windowtype "dock"
:stacking "bg"
:namespace "eww"
:geometry (geometry
:x "30px"
:y "30px"
:width "70px"
:height "70px"
:anchor "bottom right")
(gif1))
(defwindow gif2
:monitor 'HDMI-A-1'
:windowtype "dock"
:stacking "bg"
:namespace "eww"
:geometry (geometry
:x "30px"
:y "250px"
:width "70px"
:height "70px"
:anchor "bottom right")
(gif2))
+4
View File
@@ -0,0 +1,4 @@
(defpoll DAY :interval "1s" '~/.config/eww/scripts/day_format.sh')
(defpoll MONTH :interval "1s" '~/.config/eww/scripts/month_format.sh')
(defpoll YEAR :interval "1s" '~/.config/eww/scripts/year_format.sh')
(defpoll DAYTYPE :interval "1s" '~/.config/eww/scripts/daytype.sh')
+21
View File
@@ -0,0 +1,21 @@
(include "eww_vars.yuck")
(defwidget day []
(box :height "100" :width "100" :halign "center" :valign "center" :class "container"
(label :class "label" :text DAY)))
(defwidget month []
(box :height "100" :width "100" :halign "center" :valign "center" :class "container"
(label :class "label" :text MONTH)))
(defwidget year []
(box :height "100" :width "100" :halign "center" :valign "center" :class "container"
(label :class "label" :text YEAR)))
(defwidget daytype []
(box :height "100" :width "100" :halign "center" :valign "center" :class "container"
(label :class "label" :text DAYTYPE)))
(defwidget gif1 []
(box :halign "center" :valign "center" :class "container"
(image :path 'images/gif1.gif')))
(defwidget gif2 []
(box :halign "center" :valign "center" :class "container"
(image :path 'images/gif2.gif')))
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

+2
View File
@@ -0,0 +1,2 @@
#!bash
cal -m
+14
View File
@@ -0,0 +1,14 @@
#!/bin/sh
day_of_month=$(date +"%d")
day_of_month=$(echo $day_of_month | sed 's/^0*//')
if [[ $day_of_month -ge 11 && $day_of_month -le 13 ]]; then
suffix="th"
else
case $((day_of_month % 10)) in
1) suffix="st" ;;
2) suffix="nd" ;;
3) suffix="rd" ;;
*) suffix="th" ;;
esac
fi
echo "${day_of_month}${suffix}"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
day_type=$(date +"%a")
echo "$day_type"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
month=$(date +"%b")
echo "$month"
+9
View File
@@ -0,0 +1,9 @@
#!/bin/sh
# Reload/Open eww
eww kill
eww daemon
eww open year
eww open month
eww open day
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
year=$(date +"%Y")
echo "$year"
+1
View File
@@ -0,0 +1 @@
/nix/store/ya9248ng717qf0ncbn6sbs9bai66g5xn-home-manager-files/.config/foot/foot.ini
+40
View File
@@ -0,0 +1,40 @@
font=Maple Mono:size=14
pad=4x4
[colors]
alpha=1.0
background=111111
[colors]
foreground=cdd6f4
background=1e1e2e
regular0=45475a
regular1=f38ba8
regular2=a6e3a1
regular3=f9e2af
regular4=89b4fa
regular5=f5c2e7
regular6=94e2d5
regular7=bac2de
bright0=585b70
bright1=f38ba8
bright2=a6e3a1
bright3=f9e2af
bright4=89b4fa
bright5=f5c2e7
bright6=94e2d5
bright7=a6adc8
16=fab387
17=f5e0dc
selection-foreground=cdd6f4
selection-background=414356
search-box-no-match=11111b f38ba8
search-box-match=cdd6f4 313244
jump-labels=11111b fab387
urls=89b4fa
+4
View File
@@ -0,0 +1,4 @@
flakes are auto-generated by nix
by the way; these are for my machine :3 they're poorly written i just wanted to save them somewhere
+47
View File
@@ -0,0 +1,47 @@
{
"nodes": {
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1748227609,
"narHash": "sha256-SaSdslyo6UGDpPUlmrPA4dWOEuxCy2ihRN9K6BnqYsA=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "d23d20f55d49d8818ac1f1b2783671e8a6725022",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1748190013,
"narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "62b852f6c6742134ade1abdd2a21685fd617a291",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"type": "indirect"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}
+26
View File
@@ -0,0 +1,26 @@
{
description = "Home Manager configuration of avery";
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{ nixpkgs, home-manager, ... }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in
{
homeConfigurations."avery" = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [ ./home.nix ];
};
};
}
+195
View File
@@ -0,0 +1,195 @@
# _ _
#| |__ ___ _ __ ___ ___ _ __ (_)_ __
#| '_ \ / _ \| '_ ` _ \ / _ \ | '_ \| \ \/ /
#| | | | (_) | | | | | | __/_| | | | |> <
#|_| |_|\___/|_| |_| |_|\___(_)_| |_|_/_/\_\
#Coast's ~/.config/home-manager/home.nix
{ config, pkgs, ... }:
{
home.username = "avery";
home.homeDirectory = "/home/avery";
home.stateVersion = "25.05";
home.packages = with pkgs; [
bat cowsay bat cmatrix bat cava cbonsai bat ksh bat tree hyfetch qutebrowser xonsh elvish openjdk btop htop cpufetch lm_sensors dysk dogdns ];
home.file = {
};
home.sessionVariables = {
EDITOR = "emacs";
BROWSER = "brave";
};
programs.eza = {
enable = true;
};
programs.bash = {
enable = true;
initExtra = ''
if [ "$(id -u)" = 0 ]; then PS1ICON='#'; else PS1ICON='$'; fi
PS1='\[\e[38;2;254;128;25m\][\[\e[38;2;235;219;178m\]\u\[\e[38;2;200;200;200m\]@\[\e[38;2;131;165;152m\]coast \[\e[38;2;235;219;178m\]\w\[\e[38;2;254;128;25m\]]'"$PS1ICON"'\[\e[0m\] '
source "$HOME/.config/shell/aliases"
source "$HOME/.config/shell/exports"
'';
};
home.file.".config/bat/config".text = ''
--theme="Nord"
--style="numbers,changes,grid"
--paging=auto
'';
#vim conf
home.file.".vimrc".text = ''
set number
set shiftwidth=4
set tabstop=4
set wrap
set cursorline
set linebreak
set termguicolors
syntax on
filetype plugin indent on
set ignorecase
set smartcase
set hlsearch
set incsearch
set autoindent
set expandtab
map <F^> :setlocal spell! spelllang=en_us<CR>
nnoremap <C-n> :NERDTreeToggle<CR>
call plug#begin('~/.vim/plugged')
Plug 'tpope/vim-sensible'
Plug 'preservim/nerdtree'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
call plug#end()
set background=dark
'';
home.file.".config/shell/exports".text = ''
export PATH=$HOME/.local/bin:$PATH
export PATH=$HOME/.luarocks/bin:$PATH
if [ -n "$ZSH_VERSION" ]; then
export ZSH="/home/avery/.oh-my-zsh"
fi
export NIXPKGS_ALLOW_UNFREE=1
export EDITOR="emacs"
'';
home.file.".config/shell/aliases".text = ''
#!/bin/sh
#general aliases
alias xi="doas xbps-install -S $1"
alias nf="clear && fastfetch"
alias ascdis="fastfetch --logo $1"
alias forge="su forgejo"
alias emoji="cat ~/.local/share/emoji | grep $1"
alias cst="emacs ~/.suckless/st/config.h"
alias las="ls"
alias lasa="ls -a"
alias lasal="ls -al"
alias anal="ls -ahl"
alias resmacs="systemctl --user restart emacsd"
alias smi="nvidia-smi"
alias src="source ~/.zshrc"
alias bat="sb-battery"
alias battery="sb-battery"
alias vimrc="vim .vimrc"
alias ri="ranger"
alias rim="ranger"
alias quit="exit"
alias :q="exit"
alias :q!="exit"
alias :Q="exit"
alias :Q!="exit"
alias :quit="exit"
alias :quit!="exit"
alias :QUIT="exit"
alias :QUIT!="exit"
alias q="exit"
alias fnl="fennel"
alias "push"="git push -u origin main"
alias irc="irssi"
alias hsw="home-manager switch --flake ~/.config/home-manager"
alias hsc="emacs ~/.config/home-manager/home.nix"
alias yell="echo"
alias chm="ecop cat ~/.config/home-manager/home.nix"
if [ -n "$ZSH_VERSION" ]; then
alias ed="ed -p '%: '"
else
alias ed="ed -p '$: '"
fi
alias weather="curl wttr.in/masjedsoleyman"
#typo/shortcut
alias c="clear"
alias cear="clear"
alias "cd.."="cd .."
alias claer="clear"
alias claer="clear"
alias clare="clear"
alias cleae="clear"
alias clera="clear"
alias hotp="htop"
'';
home.file.".zshrc".text = ''
#!/usr/bin/zsh
HISTFILE=$HOME/.cache/zsh/history
SAVEHIST=100000000
HISTSIZE=$SAVEHIST
setopt appendhistory
#tab completion
autoload -U compinit
zstyle ':completion:*' menu select
zmodload zsh/complist
compinit
_comp_options+=(globdots)
#oh my zsh
ZSH_THEME="gentoo"
plugins=(git)
export ZSH="$HOME/.oh-my-zsh"
source $ZSH/oh-my-zsh.sh
#eval
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
#source
source "$HOME/.config/shell/aliases"
source "$HOME/.config/shell/exports"
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
fpath=(/usr/share/zsh/site-functions $fpath)
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
#colors
autoload -U colors && colors
setopt prompt_subst
#prompt
[ "$(id -u)" = 0 ] && PS1ICON="#" || PS1ICON='%'
PROMPT='%{$(echo -e "\e[38;2;254;128;25m")%}[%{$(echo -e "\e[38;2;235;219;178m")%}%n%{$(echo -e "\e[38;2;200;200;200m")%}@%{$(echo -e "\e[38;2;131;165;152m")%}coast %{$(echo -e "\e[38;2;235;219;178m")%}%~%{$(echo -e "\e[38;2;254;128;25m")%}]%$PS1ICON%{$(echo -e "\e[0m")%} '
'';
programs.alacritty = {
enable = true;
settings = {
window = {
padding = {
x = 4;
y = 4;
};
decorations = "transparent";
blur = true;
opacity = 0.9;
};
font = {
normal = {
family = "monospace";
};
size = 9;
};
colors = {
# primary = {
# background = "0x1e1e2e";
# foreground = "0xcdd6f4";
# };
cursor = {
text = "0x1e1e2e";
cursor = "0xcdd6f4";
};
};
};
};
programs.home-manager.enable = true;
}
+14
View File
@@ -0,0 +1,14 @@
general {
lock_cmd = pidof hyprlock || hyprlock
}
listener {
timeout = 300
on-timeout = hyprlock
}
listener {
timeout = 600
on-timeout = hyprctl dispatch dpms off
on-resume = hyprctl dispatch dpms on
}
+217
View File
@@ -0,0 +1,217 @@
#monitor=DP-1,1920x1080@75,auto,1
monitor=HDMI-A-1,1920x1080@100.00,auto,1
hide_on_fullscreen = true
$terminal = footclient
$menu = rofi -show drun -config /home/coast/.config/rofi/config.rasi
$webBrowser = firefox-bin
$discordApp = vesktop-bin --proxy-server="socks5://127.0.0.1:65000"
$restartWaybar = pkill waybar; waybar&disown
$fileManager = pcmanfm
exec-once = hyprctl setcursor Adwaita 24 &
exec-once = wbg /home/coast/Pictures/walls/wallhaven-yq5dmg_1920x1080.png &
exec-once = hypridle &
exec-once = hyprpm reload -n;
exec-once = dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=Hyprland
exec-once = gnome-keyring-daemon --start --components=secrets
exec-once = waybar &
exec-once = mpd ~/.mpdconf &
exec-once = mpc add /;
exec-once = foot --server;
exec-once = flatpak override --env=GTK_THEME=Catppuccin-B-MB-Dark --user;
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
general {
gaps_in = 5
gaps_out = 15
border_size = 2
col.active_border = rgba(6c6c9dee) rgba(1e1e2eee) 45deg
col.inactive_border = rgba(1e1e2eaa)
resize_on_border = false
allow_tearing = false
layout = master
}
decoration {
rounding = 10
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
blur {
enabled = true
size = 3
passes = 1
vibrancy = 0.1696
new_optimizations = true
}
}
animations {
enabled = yes
bezier = shot, 0.2, 1, 0.3, 1
bezier = swipe, 0.6, 0, 0.4, 1
bezier = bounce, 0.1, 1.1, 0.3, 1
animation = windows, 1, 3, bounce, popin 80%
animation = windowsIn, 1, 3, bounce, popin 80%
animation = windowsOut, 1, 2, shot, popin 80%
animation = border, 1, 2, default
animation = fade, 1, 2, default
animation = layers, 1, 4, swipe, slide top
animation = layersIn, 1, 4, swipe, slide top
animation = layersOut, 1, 2, swipe, slide top
animation = workspaces, 1, 3, swipe, slide
}
master {
new_status = slave
}
misc {
force_default_wallpaper = 0
disable_hyprland_logo = true
}
input {
kb_layout = us
follow_mouse = 1
sensitivity = 0
}
$mainMod = SUPER
bind = $mainMod, Return, exec, $terminal
bind = $mainMod, S, killactive,
bind = $mainMod, M, exec, killall eww; eww daemon && eww open bar
bind = $mainMod SHIFT, Q, exit
bind = $mainMod, Space, togglefloating
bind = $mainMod, Space, resizeactive, exact 1000 800
bind = $mainMod, Space, centerwindow
bind = $mainMod, R, exec, $menu
bind = $mainMod, H, movefocus, l
bind = $mainMod, L, movefocus, r
bind = $mainMod, K, movefocus, u
bind = $mainMod, J, movefocus, d
bind = $mainMod SHIFT, H, movewindow, l
bind = $mainMod SHIFT, L, movewindow, r
bind = $mainMod SHIFT, K, movewindow, u
bind = $mainMod SHIFT, J, movewindow, d
binde = $mainMod ALT, H, resizeactive, -30 0
binde = $mainMod ALT, L, resizeactive, 30 0
binde = $mainMod ALT, K, resizeactive, 0 -30
binde = $mainMod ALT, J, resizeactive, 0 30
binde = $mainMod, left, moveactive, -40 0
binde = $mainMod, right, moveactive, 40 0
binde = $mainMod, up, moveactive, 0 -40
binde = $mainMod, down, moveactive, 0 40
binde = $mainMod SHIFT, left, resizeactive, -40 0
binde = $mainMod SHIFT, right, resizeactive, 40 0
binde = $mainMod SHIFT, up, resizeactive, 0 -40
binde = $mainMod SHIFT, down, resizeactive, 0 40
bind = $mainMod, Backslash, centerwindow,
workspace = 2, monitor:HDMI-A-1
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod, C, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, exec, grim -g "$(slurp)" - | wl-copy
bind = $mainMod CONTROL, L, exec, hyprlock
bind = $mainMod SHIFT, B, exec, $webBrowser
bind = $mainMod SHIFT, V, exec, $discordApp
bind = $mainMod, F, exec, $fileManager
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
bind = $mainMod SHIFT, P, exec, $restartWaybar
plugin {
hyprbars {
enabled = true
bar_height = 25
bar_color = rgba(1e1e2eaa)
bar_blur = true
bar_title_enabled = true
bar_text_font = "JetBrainsMono Nerd Font"
bar_text_size = 12
bar_text_align = center
col.text = rgba(ffffffdd)
bar_buttons_alignment = left
bar_padding = 10
bar_button_padding = 6
icon_on_hover = false
hyprbars-button = rgb(ff5f57), 14, , hyprctl dispatch killactive
hyprbars-button = rgb(febb2e), 14, , hyprctl dispatch togglefloating
hyprbars-button = rgb(28c840), 14, , hyprctl dispatch fullscreen 1
on_double_click = hyprctl dispatch fullscreen 1
}
hyprexpo {
columns = 3
gap_size = 5
bg_col = rgba(1e1e2eaa)
workspace_method = center current
gesture_distance = 300
}
}
bind = $mainMod, e, hyprexpo:expo, toggle
bind = $mainMod ALT, up, exec, /home/coast/.local/bin/mpc-shuf.sh shuf
bind = $mainMod ALT, down, exec, /home/coast/.local/bin/mpc-shuf.sh shufno
bind = $mainMod ALT, right, exec, /home/coast/.local/bin/mpc-shuf.sh next
bind = $mainMod ALT, left, exec, /home/coast/.local/bin/mpc-shuf.sh prev
bind = $mainMod SHIFT, R, exec, /home/coast/.local/bin/mpc-shuf.sh search
bind = $mainMod CONTROL, R, exec, /home/coast/.local/bin/mpc-shuf.sh album
bind = $mainMod ALT, R, exec, /home/coast/.local/bin/mpc-shuf.sh artist
bind = $mainMod, slash, exec, /home/coast/.local/bin/mpc-shuf.sh info
bind = $mainMod, comma, exec, mpc volume -5
bind = $mainMod, period, exec, mpc volume +5
bind = $mainMod, bracketright, exec, /home/coast/.local/bin/mpc-shuf.sh toggle
bind = $mainMod CONTROL, up, exec, mpc stop; mpc add /; notify-send "Reset MPC!"
xwayland {
enabled = true
}
+35
View File
@@ -0,0 +1,35 @@
background {
monitor =
path = screenshot
blur_passes = 3
blur_size = 12
dim = 0.4
}
input-field {
monitor =
size = 350, 60
position = 0, -100
rounding = 0
border_width = 2
font = "JetBrainsMono Nerd Font"
font_size = 22
font_color = rgb(245, 224, 220)
inner_color = rgb(30, 24, 36)
outer_color = rgb(58, 52, 70)
border_color = rgb(252, 205, 205)
placeholder_text = "Password..."
fade_on_empty = true
}
label {
monitor =
text = $TIME
font = "JetBrainsMono Nerd Font"
font_size = 64
position = 0, 100
color = rgb(245, 224, 220)
}
+3
View File
@@ -0,0 +1,3 @@
preload = ~/Pictures/Wallpapers/flowers.png
wallpaper = HDMI-A-1,~/Pictures/Wallpapers/flowers.png
wallpaper = eDP-1,~/Pictures/Wallpapers/flowers.png
+1
View File
@@ -0,0 +1 @@
coast@core.1143:1751344825
+52
View File
@@ -0,0 +1,52 @@
font_family family="Ubuntu Mono"
font_size 15
bold_font auto
italic_font auto
bold_italic_font auto
background_opacity 0.9
window_padding_width 8
confirm_os_window_close 0
background #1d1d1d
foreground #deddda
selection_background #303030
selection_foreground #c0bfbc
url_color #1a5fb4
wayland_titlebar_color system
macos_titlebar_color system
cursor #deddda
cursor_text_color #1d1d1d
active_border_color #4f4f4f
inactive_border_color #282828
bell_border_color #ed333b
visual_bell_color none
active_tab_background #242424
active_tab_foreground #fcfcfc
inactive_tab_background #303030
inactive_tab_foreground #b0afac
tab_bar_background none
tab_bar_margin_color none
color0 #1d1d1d
color1 #ed333b
color2 #57e389
color3 #ff7800
color4 #62a0ea
color5 #9141ac
color6 #5bc8af
color7 #deddda
color8 #9a9996
color9 #f66151
color10 #8ff0a4
color11 #ffa348
color12 #99c1f1
color13 #dc8add
color14 #93ddc2
color15 #f6f5f4
+1
View File
@@ -0,0 +1 @@
> If you're reporting an UI issue, make sure you take a screenshot that shows the actual bug.
+1
View File
@@ -0,0 +1 @@
> If you're fixing a UI issue, make sure you take two screenshots. One that shows the actual bug and another that shows how you fixed it.
+12
View File
@@ -0,0 +1,12 @@
default-timeout=5000
ignore-timeout=1
background-color=#1e1e2e
text-color=#cdd6f4
border-color=#cdd6f4
progress-color=over #313244
border-radius=0
[urgency=low]
border-color=#a6e3a1
[urgency=high]
border-color=#f38ba8
+35
View File
@@ -0,0 +1,35 @@
{
"\u001b\u003c": "CursorStart",
"\u001b\u003e": "CursorEnd",
"\u003cCtrl-x\u003e\u003c0\u003e": "Unsplit",
"\u003cCtrl-x\u003e\u003c2\u003e": "HSplit",
"\u003cCtrl-x\u003e\u003c3\u003e": "VSplit",
"\u003cCtrl-x\u003e\u003cCtrl-c\u003e": "Quit",
"\u003cCtrl-x\u003e\u003cCtrl-f\u003e": "OpenFile",
"\u003cCtrl-x\u003e\u003cCtrl-s\u003e": "Save",
"\u003cCtrl-x\u003e\u003ch\u003e": "SelectAll",
"Alt-/": "lua:comment.comment",
"Alt-[": "PreviousTab",
"Alt-]": "NextTab",
"Alt-b": "WordLeft",
"Alt-f": "WordRight",
"Alt-k": "command:hover",
"Alt-r": "command:references",
"Alt-v": "CursorPageUp",
"Alt-w": "Copy",
"Alt-x": "CommandMode",
"Ctrl-a": "StartOfLine",
"Ctrl-e": "EndOfLine",
"Ctrl-g": "Escape",
"Ctrl-k": "CutLine",
"Ctrl-r": "FindPrevious",
"Ctrl-s": "Find",
"Ctrl-v": "CursorPageDown",
"Ctrl-y": "Paste",
"Ctrl-z": "Undo",
"Ctrl-b": "CursorLeft",
"Ctrl-f": "CursorRight",
"Ctrl-p": "CursorUp",
"Ctrl-n": "CursorDown",
"CtrlUnderscore": "Undo"
}
BIN
View File
Binary file not shown.
+3
View File
@@ -0,0 +1,3 @@
{
"colorscheme": "geany"
}
+16
View File
@@ -0,0 +1,16 @@
MAIN="$HOME/.local/src/config"
list="\
nvim=nvim
qtile=qtile
sway=sway
mutt=mutt
qutebrowser=qutebrowser
wofi=wofi
fastfetch=fastfetch
btop=btop
foot=foot
mako=mako
neofetch=neofetch
mksymlink.conf=mksymlink.conf
"
+68
View File
@@ -0,0 +1,68 @@
# vim: filetype=neomuttrc
# Default index colors:
color index yellow default '.*'
color index_author red default '.*'
color index_number blue default
color index_subject cyan default '.*'
# For new mail:
color index brightyellow black "~N"
color index_author brightred black "~N"
color index_subject brightcyan black "~N"
# Header colors:
color header blue default ".*"
color header brightmagenta default "^(From)"
color header brightcyan default "^(Subject)"
color header brightwhite default "^(CC|BCC)"
mono bold bold
mono underline underline
mono indicator reverse
mono error bold
color normal default default
color indicator brightblack white
color sidebar_highlight red default
color sidebar_divider brightblack black
color sidebar_flagged red black
color sidebar_new green black
color normal brightyellow default
color error red default
color tilde black default
color message cyan default
color markers red white
color attachment white default
color search brightmagenta default
color status brightyellow black
color hdrdefault brightgreen default
color quoted green default
color quoted1 blue default
color quoted2 cyan default
color quoted3 yellow default
color quoted4 red default
color quoted5 brightred default
color signature brightgreen default
color bold black default
color underline black default
color normal default default
color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
color body green default "\`[^\`]*\`" # Green text between ` and `
color body brightblue default "^# \.*" # Headings as bold blue
color body brightcyan default "^## \.*" # Subheadings as bold cyan
color body brightgreen default "^### \.*" # Subsubheadings as bold green
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
color body brightcyan default "[;:][-o][)/(|]" # emoticons
color body brightcyan default "[;:][)(|]" # emoticons
color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
color body red default "(BAD signature)"
color body cyan default "(Good signature)"
color body brightblack default "^gpg: Good signature .*"
color body brightyellow default "^gpg: "
color body brightyellow red "^gpg: BAD signature from.*"
mono body bold "^gpg: Good signature"
mono body bold "^gpg: BAD signature from.*"
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
+18
View File
@@ -0,0 +1,18 @@
set folder = "imaps://coast@cock.email@mail.cock.li:993"
set smtp_url = "smtps://coast@cock.email@mail.cock.li:587"
set imap_pass = `cat /home/coast/.local/keys/imap.muttrc`
set smtp_pass = `cat /home/coast/.local/keys/smtp.muttrc`
set from = "coast@cock.email"
set realname = "Coasteen"
set spoolfile = "+INBOX"
set editor = "nvim"
set edit_headers = yes
set include = yes
set indent_str = "> "
set reply_regexp = "^([rR][eE]:[ \t]*)*"
source color.muttrc
+864
View File
@@ -0,0 +1,864 @@
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
print_info() {
info title
info underline
info "OS" distro
info "Host" model
info "Kernel" kernel
info "Uptime" uptime
info "Packages" packages
info "Shell" shell
info "Resolution" resolution
info "DE" de
info "WM" wm
info "WM Theme" wm_theme
info "Theme" theme
info "Icons" icons
info "Terminal" term
info "Terminal Font" term_font
info "CPU" cpu
info "GPU" gpu
info "Memory" memory
# info "GPU Driver" gpu_driver # Linux/macOS only
# info "CPU Usage" cpu_usage
# info "Disk" disk
# info "Battery" battery
# info "Font" font
# info "Song" song
# [[ "$player" ]] && prin "Music Player" "$player"
# info "Local IP" local_ip
# info "Public IP" public_ip
# info "Users" users
# info "Locale" locale # This only works on glibc systems.
info cols
}
# Title
# Hide/Show Fully qualified domain name.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --title_fqdn
title_fqdn="off"
# Kernel
# Shorten the output of the kernel function.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --kernel_shorthand
# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
#
# Example:
# on: '4.8.9-1-ARCH'
# off: 'Linux 4.8.9-1-ARCH'
kernel_shorthand="on"
# Distro
# Shorten the output of the distro function
#
# Default: 'off'
# Values: 'on', 'tiny', 'off'
# Flag: --distro_shorthand
# Supports: Everything except Windows and Haiku
distro_shorthand="off"
# Show/Hide OS Architecture.
# Show 'x86_64', 'x86' and etc in 'Distro:' output.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --os_arch
#
# Example:
# on: 'Arch Linux x86_64'
# off: 'Arch Linux'
os_arch="on"
# Uptime
# Shorten the output of the uptime function
#
# Default: 'on'
# Values: 'on', 'tiny', 'off'
# Flag: --uptime_shorthand
#
# Example:
# on: '2 days, 10 hours, 3 mins'
# tiny: '2d 10h 3m'
# off: '2 days, 10 hours, 3 minutes'
uptime_shorthand="on"
# Memory
# Show memory pecentage in output.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --memory_percent
#
# Example:
# on: '1801MiB / 7881MiB (22%)'
# off: '1801MiB / 7881MiB'
memory_percent="off"
# Change memory output unit.
#
# Default: 'mib'
# Values: 'kib', 'mib', 'gib'
# Flag: --memory_unit
#
# Example:
# kib '1020928KiB / 7117824KiB'
# mib '1042MiB / 6951MiB'
# gib: ' 0.98GiB / 6.79GiB'
memory_unit="mib"
# Packages
# Show/Hide Package Manager names.
#
# Default: 'tiny'
# Values: 'on', 'tiny' 'off'
# Flag: --package_managers
#
# Example:
# on: '998 (pacman), 8 (flatpak), 4 (snap)'
# tiny: '908 (pacman, flatpak, snap)'
# off: '908'
package_managers="on"
# Shell
# Show the path to $SHELL
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --shell_path
#
# Example:
# on: '/bin/bash'
# off: 'bash'
shell_path="off"
# Show $SHELL version
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --shell_version
#
# Example:
# on: 'bash 4.4.5'
# off: 'bash'
shell_version="on"
# CPU
# CPU speed type
#
# Default: 'bios_limit'
# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
# Flag: --speed_type
# Supports: Linux with 'cpufreq'
# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
speed_type="bios_limit"
# CPU speed shorthand
#
# Default: 'off'
# Values: 'on', 'off'.
# Flag: --speed_shorthand
# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
#
# Example:
# on: 'i7-6500U (4) @ 3.1GHz'
# off: 'i7-6500U (4) @ 3.100GHz'
speed_shorthand="off"
# Enable/Disable CPU brand in output.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --cpu_brand
#
# Example:
# on: 'Intel i7-6500U'
# off: 'i7-6500U (4)'
cpu_brand="on"
# CPU Speed
# Hide/Show CPU speed.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --cpu_speed
#
# Example:
# on: 'Intel i7-6500U (4) @ 3.1GHz'
# off: 'Intel i7-6500U (4)'
cpu_speed="on"
# CPU Cores
# Display CPU cores in output
#
# Default: 'logical'
# Values: 'logical', 'physical', 'off'
# Flag: --cpu_cores
# Support: 'physical' doesn't work on BSD.
#
# Example:
# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
# off: 'Intel i7-6500U @ 3.1GHz'
cpu_cores="logical"
# CPU Temperature
# Hide/Show CPU temperature.
# Note the temperature is added to the regular CPU function.
#
# Default: 'off'
# Values: 'C', 'F', 'off'
# Flag: --cpu_temp
# Supports: Linux, BSD
# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
# coretemp kernel module. This only supports newer Intel processors.
#
# Example:
# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
# off: 'Intel i7-6500U (4) @ 3.1GHz'
cpu_temp="off"
# GPU
# Enable/Disable GPU Brand
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gpu_brand
#
# Example:
# on: 'AMD HD 7950'
# off: 'HD 7950'
gpu_brand="on"
# Which GPU to display
#
# Default: 'all'
# Values: 'all', 'dedicated', 'integrated'
# Flag: --gpu_type
# Supports: Linux
#
# Example:
# all:
# GPU1: AMD HD 7950
# GPU2: Intel Integrated Graphics
#
# dedicated:
# GPU1: AMD HD 7950
#
# integrated:
# GPU1: Intel Integrated Graphics
gpu_type="all"
# Resolution
# Display refresh rate next to each monitor
# Default: 'off'
# Values: 'on', 'off'
# Flag: --refresh_rate
# Supports: Doesn't work on Windows.
#
# Example:
# on: '1920x1080 @ 60Hz'
# off: '1920x1080'
refresh_rate="off"
# Gtk Theme / Icons / Font
# Shorten output of GTK Theme / Icons / Font
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --gtk_shorthand
#
# Example:
# on: 'Numix, Adwaita'
# off: 'Numix [GTK2], Adwaita [GTK3]'
gtk_shorthand="off"
# Enable/Disable gtk2 Theme / Icons / Font
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gtk2
#
# Example:
# on: 'Numix [GTK2], Adwaita [GTK3]'
# off: 'Adwaita [GTK3]'
gtk2="on"
# Enable/Disable gtk3 Theme / Icons / Font
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gtk3
#
# Example:
# on: 'Numix [GTK2], Adwaita [GTK3]'
# off: 'Numix [GTK2]'
gtk3="on"
# IP Address
# Website to ping for the public IP
#
# Default: 'http://ident.me'
# Values: 'url'
# Flag: --ip_host
public_ip_host="http://ident.me"
# Public IP timeout.
#
# Default: '2'
# Values: 'int'
# Flag: --ip_timeout
public_ip_timeout=2
# Desktop Environment
# Show Desktop Environment version
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --de_version
de_version="on"
# Disk
# Which disks to display.
# The values can be any /dev/sdXX, mount point or directory.
# NOTE: By default we only show the disk info for '/'.
#
# Default: '/'
# Values: '/', '/dev/sdXX', '/path/to/drive'.
# Flag: --disk_show
#
# Example:
# disk_show=('/' '/dev/sdb1'):
# 'Disk (/): 74G / 118G (66%)'
# 'Disk (/mnt/Videos): 823G / 893G (93%)'
#
# disk_show=('/'):
# 'Disk (/): 74G / 118G (66%)'
#
disk_show=('/')
# Disk subtitle.
# What to append to the Disk subtitle.
#
# Default: 'mount'
# Values: 'mount', 'name', 'dir', 'none'
# Flag: --disk_subtitle
#
# Example:
# name: 'Disk (/dev/sda1): 74G / 118G (66%)'
# 'Disk (/dev/sdb2): 74G / 118G (66%)'
#
# mount: 'Disk (/): 74G / 118G (66%)'
# 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
# 'Disk (/mnt/Videos): 74G / 118G (66%)'
#
# dir: 'Disk (/): 74G / 118G (66%)'
# 'Disk (Local Disk): 74G / 118G (66%)'
# 'Disk (Videos): 74G / 118G (66%)'
#
# none: 'Disk: 74G / 118G (66%)'
# 'Disk: 74G / 118G (66%)'
# 'Disk: 74G / 118G (66%)'
disk_subtitle="mount"
# Disk percent.
# Show/Hide disk percent.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --disk_percent
#
# Example:
# on: 'Disk (/): 74G / 118G (66%)'
# off: 'Disk (/): 74G / 118G'
disk_percent="on"
# Song
# Manually specify a music player.
#
# Default: 'auto'
# Values: 'auto', 'player-name'
# Flag: --music_player
#
# Available values for 'player-name':
#
# amarok
# audacious
# banshee
# bluemindo
# clementine
# cmus
# deadbeef
# deepin-music
# dragon
# elisa
# exaile
# gnome-music
# gmusicbrowser
# gogglesmm
# guayadeque
# io.elementary.music
# iTunes
# juk
# lollypop
# mocp
# mopidy
# mpd
# muine
# netease-cloud-music
# olivia
# playerctl
# pogo
# pragha
# qmmp
# quodlibet
# rhythmbox
# sayonara
# smplayer
# spotify
# strawberry
# tauonmb
# tomahawk
# vlc
# xmms2d
# xnoise
# yarock
music_player="auto"
# Format to display song information.
#
# Default: '%artist% - %album% - %title%'
# Values: '%artist%', '%album%', '%title%'
# Flag: --song_format
#
# Example:
# default: 'Song: Jet - Get Born - Sgt Major'
song_format="%artist% - %album% - %title%"
# Print the Artist, Album and Title on separate lines
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --song_shorthand
#
# Example:
# on: 'Artist: The Fratellis'
# 'Album: Costello Music'
# 'Song: Chelsea Dagger'
#
# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
song_shorthand="off"
# 'mpc' arguments (specify a host, password etc).
#
# Default: ''
# Example: mpc_args=(-h HOST -P PASSWORD)
mpc_args=()
# Text Colors
# Text Colors
#
# Default: 'distro'
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
# Flag: --colors
#
# Each number represents a different part of the text in
# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
#
# Example:
# colors=(distro) - Text is colored based on Distro colors.
# colors=(4 6 1 8 8 6) - Text is colored in the order above.
colors=(distro)
# Text Options
# Toggle bold text
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --bold
bold="on"
# Enable/Disable Underline
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --underline
underline_enabled="on"
# Underline character
#
# Default: '-'
# Values: 'string'
# Flag: --underline_char
underline_char="-"
# Info Separator
# Replace the default separator with the specified string.
#
# Default: ':'
# Flag: --separator
#
# Example:
# separator="->": 'Shell-> bash'
# separator=" =": 'WM = dwm'
separator=":"
# Color Blocks
# Color block range
# The range of colors to print.
#
# Default: '0', '15'
# Values: 'num'
# Flag: --block_range
#
# Example:
#
# Display colors 0-7 in the blocks. (8 colors)
# neofetch --block_range 0 7
#
# Display colors 0-15 in the blocks. (16 colors)
# neofetch --block_range 0 15
block_range=(0 15)
# Toggle color blocks
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --color_blocks
color_blocks="on"
# Color block width in spaces
#
# Default: '3'
# Values: 'num'
# Flag: --block_width
block_width=3
# Color block height in lines
#
# Default: '1'
# Values: 'num'
# Flag: --block_height
block_height=1
# Color Alignment
#
# Default: 'auto'
# Values: 'auto', 'num'
# Flag: --col_offset
#
# Number specifies how far from the left side of the terminal (in spaces) to
# begin printing the columns, in case you want to e.g. center them under your
# text.
# Example:
# col_offset="auto" - Default behavior of neofetch
# col_offset=7 - Leave 7 spaces then print the colors
col_offset="auto"
# Progress Bars
# Bar characters
#
# Default: '-', '='
# Values: 'string', 'string'
# Flag: --bar_char
#
# Example:
# neofetch --bar_char 'elapsed' 'total'
# neofetch --bar_char '-' '='
bar_char_elapsed="-"
bar_char_total="="
# Toggle Bar border
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --bar_border
bar_border="on"
# Progress bar length in spaces
# Number of chars long to make the progress bars.
#
# Default: '15'
# Values: 'num'
# Flag: --bar_length
bar_length=15
# Progress bar colors
# When set to distro, uses your distro's logo colors.
#
# Default: 'distro', 'distro'
# Values: 'distro', 'num'
# Flag: --bar_colors
#
# Example:
# neofetch --bar_colors 3 4
# neofetch --bar_colors distro 5
bar_color_elapsed="distro"
bar_color_total="distro"
# Info display
# Display a bar with the info.
#
# Default: 'off'
# Values: 'bar', 'infobar', 'barinfo', 'off'
# Flags: --cpu_display
# --memory_display
# --battery_display
# --disk_display
#
# Example:
# bar: '[---=======]'
# infobar: 'info [---=======]'
# barinfo: '[---=======] info'
# off: 'info'
cpu_display="off"
memory_display="off"
battery_display="off"
disk_display="off"
# Backend Settings
# Image backend.
#
# Default: 'ascii'
# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
# Flag: --backend
image_backend="ascii"
# Image Source
#
# Which image or ascii file to display.
#
# Default: 'auto'
# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
# Flag: --source
#
# NOTE: 'auto' will pick the best image source for whatever image backend is used.
# In ascii mode, distro ascii art will be used and in an image mode, your
# wallpaper will be used.
image_source="auto"
# Ascii Options
# Ascii distro
# Which distro's ascii art to display.
#
# Default: 'auto'
# Values: 'auto', 'distro_name'
# Flag: --ascii_distro
# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS",
# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs,
# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock,
# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD,
# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover,
# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin,
# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary,
# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion,
# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite,
# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva,
# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib,
# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner,
# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba,
# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD,
# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint,
# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix,
# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan,
# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific,
# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz,
# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS,
# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails,
# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio,
# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin,
# and IRIX have ascii logos
# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
# Use '{distro name}_old' to use the old logos.
# NOTE: Ubuntu has flavor variants.
# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors.
# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
# postmarketOS, and Void have a smaller logo variant.
# Use '{distro name}_small' to use the small variants.
ascii_distro="auto"
# Ascii Colors
#
# Default: 'distro'
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
# Flag: --ascii_colors
#
# Example:
# ascii_colors=(distro) - Ascii is colored based on Distro colors.
# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
ascii_colors=(distro)
# Bold ascii logo
# Whether or not to bold the ascii logo.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --ascii_bold
ascii_bold="on"
# Image Options
# Image loop
# Setting this to on will make neofetch redraw the image constantly until
# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --loop
image_loop="off"
# Thumbnail directory
#
# Default: '~/.cache/thumbnails/neofetch'
# Values: 'dir'
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
# Crop mode
#
# Default: 'normal'
# Values: 'normal', 'fit', 'fill'
# Flag: --crop_mode
#
# See this wiki page to learn about the fit and fill options.
# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
crop_mode="normal"
# Crop offset
# Note: Only affects 'normal' crop mode.
#
# Default: 'center'
# Values: 'northwest', 'north', 'northeast', 'west', 'center'
# 'east', 'southwest', 'south', 'southeast'
# Flag: --crop_offset
crop_offset="center"
# Image size
# The image is half the terminal width by default.
#
# Default: 'auto'
# Values: 'auto', '00px', '00%', 'none'
# Flags: --image_size
# --size
image_size="auto"
# Gap between image and text
#
# Default: '3'
# Values: 'num', '-num'
# Flag: --gap
gap=3
# Image offsets
# Only works with the w3m backend.
#
# Default: '0'
# Values: 'px'
# Flags: --xoffset
# --yoffset
yoffset=0
xoffset=0
# Image background color
# Only works with the w3m backend.
#
# Default: ''
# Values: 'color', 'blue'
# Flag: --bg_color
background_color=
# Misc Options
# Stdout mode
# Turn off all colors and disables image backend (ASCII/Image).
# Useful for piping into another command.
# Default: 'off'
# Values: 'on', 'off'
stdout="off"
+269
View File
@@ -0,0 +1,269 @@
spawn-at-startup "waybar"
spawn-at-startup "awww-daemon"
spawn-at-startup "awww" "img" "/home/coast/Downloads/wallhaven-3qrol9_1920x1080.png"
input {
mod-key "Super"
keyboard {
xkb {
options "altwin:swap_alt_win"
}
numlock
repeat-delay 600
repeat-rate 25
}
touchpad {
tap
natural-scroll
}
trackpoint {
}
}
gestures {
hot-corners {
off
}
}
cursor {
xcursor-theme "Adwaita"
xcursor-size 24
}
output "HDMI-A-1" {
mode "1920x1080@74.973"
scale 1
transform "normal"
}
output "eDP-1" {
off
scale 1
transform "normal"
position x=1280 y=0
}
layout {
gaps 10
center-focused-column "never"
preset-column-widths {
proportion 0.33333
proportion 0.5
proportion 0.66667
}
default-column-width {
proportion 0.5;
}
focus-ring {
width 2.5
active-color "#0E0F12"
inactive-color "#191724"
}
border {
off
width 4
active-color "#0E0F12"
inactive-color "#0E0F12"
urgent-color "#9b0000"
}
shadow {
on
softness 30
spread 5
offset x=0 y=5
color "#0007"
}
struts {
}
}
prefer-no-csd
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
spawn-at-startup "waybar &"
spawn-at-startup "swww-daemon &"
spawn-at-startup "swww img --outputs HDMI-A-1 ~/Wallpapers/bay.png &"
spawn-at-startup "eww daemon &"
spawn-at-startup "eww open-many year month day daytype &"
spawn-at-startup "foot --server &"
window-rule {
match title="Waydroid"
open-fullscreen true
}
window-rule {
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
open-floating true
}
window-rule {
match app-id=r#"waydroid$"#
open-fullscreen true
}
window-rule {
geometry-corner-radius 7
clip-to-geometry true
}
binds {
Mod+Shift+Slash { show-hotkey-overlay; }
Mod+Return hotkey-overlay-title="Open a Terminal: alacritty" { spawn "alacritty"; }
Mod+R hotkey-overlay-title="Run an Application: rofi" { spawn-sh "rofi -show drun -config ~/.config/rofi/config.rasi"; }
Mod+Shift+Return hotkey-overlay-title="Run an application: rofi (run)" { spawn-sh "rofi -show run -config ~/.config/rofi/config.rasi"; }
Super+Alt+L hotkey-overlay-title="Lock the screen" { spawn "hyprlock"; }
Super+Alt+S allow-when-locked=true hotkey-overlay-title=null { spawn-sh "pkill orca || exec orca"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; }
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
Mod+O repeat=false { toggle-overview; }
Mod+S repeat=false { close-window; }
Mod+Left { focus-column-left; }
Mod+Down { focus-window-down; }
Mod+Up { focus-window-up; }
Mod+Right { focus-column-right; }
Mod+H { focus-column-left; }
Mod+J { focus-window-down; }
Mod+K { focus-window-up; }
Mod+L { focus-column-right; }
Mod+Ctrl+Left { move-column-left; }
Mod+Ctrl+Down { move-window-down; }
Mod+Ctrl+Up { move-window-up; }
Mod+Ctrl+Right { move-column-right; }
Mod+Shift+H { move-column-left; }
Mod+Shift+J { move-window-down; }
Mod+Shift+K { move-window-up; }
Mod+Shift+L { move-column-right; }
Mod+Home { focus-column-first; }
Mod+End { focus-column-last; }
Mod+Ctrl+Home { move-column-to-first; }
Mod+Ctrl+End { move-column-to-last; }
Mod+Shift+Left { focus-monitor-left; }
Mod+Shift+Down { focus-monitor-down; }
Mod+Shift+Up { focus-monitor-up; }
Mod+Shift+Right { focus-monitor-right; }
Mod+Ctrl+H { focus-monitor-left; }
Mod+Ctrl+J { focus-monitor-down; }
Mod+Ctrl+K { focus-monitor-up; }
Mod+Ctrl+L { focus-monitor-right; }
Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
Mod+Page_Down { focus-workspace-down; }
Mod+Page_Up { focus-workspace-up; }
Mod+N { focus-workspace-down; }
Mod+M { focus-workspace-up; }
Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
Mod+Ctrl+M { move-column-to-workspace-down; }
Mod+Ctrl+N { move-column-to-workspace-up; }
Mod+Shift+P hotkey-overlay-title="Restart waybar and eww" { spawn-sh "pkill waybar && waybar & disown && eww kill && eww daemon && eww open-many year month day daytype"; }
Mod+Shift+Page_Down { move-workspace-down; }
Mod+Shift+Page_Up { move-workspace-up; }
Mod+Shift+M { move-workspace-down; }
Mod+Shift+N { move-workspace-up; }
Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; }
Mod+3 { focus-workspace 3; }
Mod+4 { focus-workspace 4; }
Mod+5 { focus-workspace 5; }
Mod+6 { focus-workspace 6; }
Mod+7 { focus-workspace 7; }
Mod+8 { focus-workspace 8; }
Mod+9 { focus-workspace 9; }
Mod+Shift+1 { move-column-to-workspace 1; }
Mod+Shift+2 { move-column-to-workspace 2; }
Mod+Shift+3 { move-column-to-workspace 3; }
Mod+Shift+4 { move-column-to-workspace 4; }
Mod+Shift+5 { move-column-to-workspace 5; }
Mod+Shift+6 { move-column-to-workspace 6; }
Mod+Shift+7 { move-column-to-workspace 7; }
Mod+Shift+8 { move-column-to-workspace 8; }
Mod+Shift+9 { move-column-to-workspace 9; }
Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; }
Mod+Comma { consume-window-into-column; }
Mod+Period { expel-window-from-column; }
Mod+D { switch-preset-column-width; }
Mod+Shift+R { switch-preset-window-height; }
Mod+Ctrl+R { reset-window-height; }
Mod+W { maximize-column; }
Mod+Shift+W { fullscreen-window; }
Mod+Ctrl+F { expand-column-to-available-width; }
Mod+C { center-column; }
Mod+Ctrl+C { center-visible-columns; }
Mod+Minus { set-column-width "-10%"; }
Mod+Equal { set-column-width "+10%"; }
Mod+Shift+Minus { set-window-height "-10%"; }
Mod+Shift+Equal { set-window-height "+10%"; }
Mod+Space { toggle-window-floating; }
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
Mod+Shift+F { toggle-column-tabbed-display; }
Mod+F hotkey-overlay-title="Spawn file manager (nautilus)" { spawn "nautilus"; }
Print { screenshot; }
Super+Shift+S { screenshot; }
Control+Alt+S { screenshot-window; }
Ctrl+Print { screenshot-screen; }
Alt+Print { screenshot-window; }
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
Mod+Shift+E { quit; }
Ctrl+Alt+Delete { quit; }
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
Mod+WheelScrollRight { focus-column-right; }
Mod+WheelScrollLeft { focus-column-left; }
Mod+Ctrl+WheelScrollRight { move-column-right; }
Mod+Ctrl+WheelScrollLeft { move-column-left; }
Mod+Shift+WheelScrollDown { focus-column-right; }
Mod+Shift+WheelScrollUp { focus-column-left; }
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
}
+265
View File
@@ -0,0 +1,265 @@
input {
mod-key "Super"
keyboard {
xkb {
}
numlock
repeat-delay 600
repeat-rate 25
}
touchpad {
tap
natural-scroll
}
trackpoint {
}
}
gestures {
hot-corners {
off
}
}
cursor {
xcursor-theme "Adwaita"
xcursor-size 24
}
output "HDMI-A-1" {
mode "1920x1080@74.973"
scale 1
transform "normal"
}
output "eDP-1" {
off
scale 1
transform "normal"
position x=1280 y=0
}
layout {
gaps 5
center-focused-column "never"
preset-column-widths {
proportion 0.33333
proportion 0.5
proportion 0.66667
}
default-column-width {
proportion 0.5;
}
focus-ring {
width 2.5
active-color "#211e1e"
inactive-color "#191724"
}
border {
off
width 4
active-color "#191724"
inactive-color "#191724"
urgent-color "#9b0000"
}
shadow {
on
softness 30
spread 5
offset x=0 y=5
color "#0007"
}
struts {
}
}
prefer-no-csd
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
spawn-at-startup "waybar &"
spawn-at-startup "swww-daemon &"
spawn-at-startup "swww img --outputs HDMI-A-1 ~/Wallpapers/bay.png &"
spawn-at-startup "eww daemon &"
spawn-at-startup "eww open-many year month day daytype &"
spawn-at-startup "foot --server &"
window-rule {
match title="Waydroid"
open-fullscreen true
}
window-rule {
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
open-floating true
}
window-rule {
match app-id=r#"waydroid$"#
open-fullscreen true
}
window-rule {
geometry-corner-radius 7
clip-to-geometry true
}
binds {
Mod+Shift+Slash { show-hotkey-overlay; }
Mod+Return hotkey-overlay-title="Open a Terminal: footclient" { spawn "footclient"; }
Mod+R hotkey-overlay-title="Run an Application: rofi" { spawn-sh "rofi -show drun -config ~/.config/rofi/gruvbox.rasi"; }
Mod+Shift+Return hotkey-overlay-title="Run an application: rofi (run)" { spawn-sh "rofi -show run -config ~/.config/rofi/gruvbox.rasi"; }
Super+Alt+L hotkey-overlay-title="Lock the screen" { spawn "swaylock"; }
Super+Alt+S allow-when-locked=true hotkey-overlay-title=null { spawn-sh "pkill orca || exec orca"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; }
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
Mod+O repeat=false { toggle-overview; }
Mod+S repeat=false { close-window; }
Mod+Left { focus-column-left; }
Mod+Down { focus-window-down; }
Mod+Up { focus-window-up; }
Mod+Right { focus-column-right; }
Mod+H { focus-column-left; }
Mod+J { focus-window-down; }
Mod+K { focus-window-up; }
Mod+L { focus-column-right; }
Mod+Ctrl+Left { move-column-left; }
Mod+Ctrl+Down { move-window-down; }
Mod+Ctrl+Up { move-window-up; }
Mod+Ctrl+Right { move-column-right; }
Mod+Shift+H { move-column-left; }
Mod+Shift+J { move-window-down; }
Mod+Shift+K { move-window-up; }
Mod+Shift+L { move-column-right; }
Mod+Home { focus-column-first; }
Mod+End { focus-column-last; }
Mod+Ctrl+Home { move-column-to-first; }
Mod+Ctrl+End { move-column-to-last; }
Mod+Shift+Left { focus-monitor-left; }
Mod+Shift+Down { focus-monitor-down; }
Mod+Shift+Up { focus-monitor-up; }
Mod+Shift+Right { focus-monitor-right; }
Mod+Ctrl+H { focus-monitor-left; }
Mod+Ctrl+J { focus-monitor-down; }
Mod+Ctrl+K { focus-monitor-up; }
Mod+Ctrl+L { focus-monitor-right; }
Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
Mod+Page_Down { focus-workspace-down; }
Mod+Page_Up { focus-workspace-up; }
Mod+N { focus-workspace-down; }
Mod+M { focus-workspace-up; }
Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
Mod+Ctrl+M { move-column-to-workspace-down; }
Mod+Ctrl+N { move-column-to-workspace-up; }
Mod+Shift+P hotkey-overlay-title="Restart waybar and eww" { spawn-sh "pkill waybar && waybar & disown && eww kill && eww daemon && eww open-many year month day daytype"; }
Mod+Shift+Page_Down { move-workspace-down; }
Mod+Shift+Page_Up { move-workspace-up; }
Mod+Shift+M { move-workspace-down; }
Mod+Shift+N { move-workspace-up; }
Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; }
Mod+3 { focus-workspace 3; }
Mod+4 { focus-workspace 4; }
Mod+5 { focus-workspace 5; }
Mod+6 { focus-workspace 6; }
Mod+7 { focus-workspace 7; }
Mod+8 { focus-workspace 8; }
Mod+9 { focus-workspace 9; }
Mod+Shift+1 { move-column-to-workspace 1; }
Mod+Shift+2 { move-column-to-workspace 2; }
Mod+Shift+3 { move-column-to-workspace 3; }
Mod+Shift+4 { move-column-to-workspace 4; }
Mod+Shift+5 { move-column-to-workspace 5; }
Mod+Shift+6 { move-column-to-workspace 6; }
Mod+Shift+7 { move-column-to-workspace 7; }
Mod+Shift+8 { move-column-to-workspace 8; }
Mod+Shift+9 { move-column-to-workspace 9; }
Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; }
Mod+Comma { consume-window-into-column; }
Mod+Period { expel-window-from-column; }
Mod+D { switch-preset-column-width; }
Mod+Shift+R { switch-preset-window-height; }
Mod+Ctrl+R { reset-window-height; }
Mod+W { maximize-column; }
Mod+Shift+W { fullscreen-window; }
Mod+Ctrl+F { expand-column-to-available-width; }
Mod+C { center-column; }
Mod+Ctrl+C { center-visible-columns; }
Mod+Minus { set-column-width "-10%"; }
Mod+Equal { set-column-width "+10%"; }
Mod+Shift+Minus { set-window-height "-10%"; }
Mod+Shift+Equal { set-window-height "+10%"; }
Mod+Space { toggle-window-floating; }
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
Mod+Shift+F { toggle-column-tabbed-display; }
Mod+F hotkey-overlay-title="Spawn file manager (nautilus)" { spawn "nautilus"; }
Print { screenshot; }
Super+Shift+S { screenshot; }
Control+Alt+S { screenshot-window; }
Ctrl+Print { screenshot-screen; }
Alt+Print { screenshot-window; }
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
Mod+Shift+E { quit; }
Ctrl+Alt+Delete { quit; }
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
Mod+WheelScrollRight { focus-column-right; }
Mod+WheelScrollLeft { focus-column-left; }
Mod+Ctrl+WheelScrollRight { move-column-right; }
Mod+Ctrl+WheelScrollLeft { move-column-left; }
Mod+Shift+WheelScrollDown { focus-column-right; }
Mod+Shift+WheelScrollUp { focus-column-left; }
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
}
+99
View File
@@ -0,0 +1,99 @@
$env.config.buffer_editor = "vim"
$env.PROMPT_COMMAND_RIGHT = ""
$env.path ++= ["~/.local/bin"]
$env.config.show_banner = false
$env.config.table.mode = 'none'
$env.TERM = "xterm"
$env.USER = "coast"
$env.PROMPT_COMMAND = {
let dir = (pwd | path basename)
let home_dir = ($dir | str replace "coast" "home")
$"(ansi reset)0 ($env.USER) ($home_dir) "
}
$env.PROMPT_INDICATOR = ""
let carapace_completer = {|spans|
carapace $spans.0 nushell ...$spans | from json
}
$env.config = {
show_banner: false
completions: {
case_sensitive: false
quick: true
partial: true
algorithm: "fuzzy"
external: {
enable: true
max_results: 100
completer: $carapace_completer
}
}
}
alias sd = sudo
alias nano = vim
alias suod = sudo
alias sduo = sudo
alias hotp = htop
alias c = clear
alias dir = tree -idA
let bg0 = "#0f0f0f"
let bg1 = "#1a1a1a"
let bg2 = "#2a2a2a"
let bg3 = "#3a3a3a"
let fg0 = "#e0def4"
let fg1 = "#ebbcba"
let red = "#eb6f92"
let green = "#eb6f92"
let yellow = "#ea9a97"
let blue = "#d7827e"
let purple = "#ea9a97"
let aqua = "#ebbcba"
let orange = "#ea9a97"
let gray = "#6e6a86"
let dark = {
separator: $gray,
leading_trailing_space_bg: $bg1,
header: $yellow,
datetime: $blue,
filesize: $green,
row_index: $gray,
bool: $green,
int: $orange,
float: $yellow,
string: $fg1,
nothing: $gray,
binary: $red,
cell-path: $blue,
hints: $gray,
shape_garbage: { fg: $fg0 bg: $red attr: b },
shape_bool: $green,
shape_int: { fg: $orange attr: b },
shape_float: { fg: $yellow attr: b },
shape_range: { fg: $yellow attr: b },
shape_internalcall: { fg: $aqua attr: b },
shape_external: $blue,
shape_externalarg: { fg: $green attr: b },
shape_literal: $fg1,
shape_operator: $orange,
shape_signature: { fg: $yellow attr: b },
shape_string: $purple,
shape_filepath: $blue,
shape_globpattern: { fg: $blue attr: b },
shape_variable: $aqua,
shape_flag: { fg: $yellow attr: b },
shape_custom: { attr: b }
}
$env.config.color_config = $dark
$env.config.use_ansi_coloring = true
source ~/.config/nushell/starship.nu
+35
View File
@@ -0,0 +1,35 @@
export-env { $env.STARSHIP_SHELL = "nu"; load-env {
STARSHIP_SESSION_KEY: (random chars -l 16)
PROMPT_MULTILINE_INDICATOR: (
^/etc/profiles/per-user/coast/bin/starship prompt --continuation
)
# Does not play well with default character module.
# TODO: Also Use starship vi mode indicators?
PROMPT_INDICATOR: ""
PROMPT_COMMAND: {||
# jobs are not supported
(
^/etc/profiles/per-user/coast/bin/starship prompt
--cmd-duration $env.CMD_DURATION_MS
$"--status=($env.LAST_EXIT_CODE)"
--terminal-width (term size).columns
)
}
config: ($env.config? | default {} | merge {
render_right_prompt_on_last_line: true
})
PROMPT_COMMAND_RIGHT: {||
(
^/etc/profiles/per-user/coast/bin/starship prompt
--right
--cmd-duration $env.CMD_DURATION_MS
$"--status=($env.LAST_EXIT_CODE)"
--terminal-width (term size).columns
)
}
}}
+11
View File
@@ -0,0 +1,11 @@
require("plugins/lazy")
require("plugins/lsp")
require("plugins/nvim-tree")
require("plugins/telescope")
require("plugins/treesitter")
require("config")
require("plugins/render-markdown")
--require("status_line").setup()
require("plugins/lualine")
require("plugins/catppuccin")
require("colorizer").setup() -- #ffffff #edb511
+40
View File
@@ -0,0 +1,40 @@
{
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
"cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
"cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
"cmp-spell": { "branch": "master", "commit": "694a4e50809d6d645c1ea29015dad0c293f019d6" },
"cmp-vsnip": { "branch": "main", "commit": "989a8a73c44e926199bfd05fa7a516d51f2d2752" },
"comfy-line-numbers.nvim": { "branch": "main", "commit": "31e2f9287b4491ad72defb9e0185eb2739983799" },
"fterm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
"lsp_signature.nvim": { "branch": "master", "commit": "d50e40b3bf9324128e71b0b7e589765ce89466d2" },
"lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" },
"mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" },
"mini.nvim": { "branch": "main", "commit": "429e5f9dc9cd59bf76cd98b687300f0a384a7f52" },
"moonfly": { "branch": "master", "commit": "ef85b89739bee184e204c89bc06280d62bd84039" },
"none-ls-extras.nvim": { "branch": "main", "commit": "924fe88a9983c7d90dbb31fc4e3129a583ea0a90" },
"none-ls.nvim": { "branch": "main", "commit": "db2a48b79cfcdab8baa5d3f37f21c78b6705c62e" },
"nvim": { "branch": "main", "commit": "0a5de4da015a175f416d6ef1eda84661623e0500" },
"nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
"nvim-lspconfig": { "branch": "master", "commit": "77d3fdfb3554632c7a3b101ded643d422de7626f" },
"nvim-numbertoggle": { "branch": "main", "commit": "923f9709989605fe2bc4b9de8a3625fa808f5cd6" },
"nvim-toggler": { "branch": "main", "commit": "467808600882fd6c9e33b9dbc4889b1b80cfd917" },
"nvim-tree.lua": { "branch": "master", "commit": "1c733e8c1957dc67f47580fe9c458a13b5612d5b" },
"nvim-treesitter": { "branch": "main", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" },
"render-markdown.nvim": { "branch": "main", "commit": "10126effbafb74541b69219711dfb2c631e7ebf8" },
"telescope-undo.nvim": { "branch": "main", "commit": "928d0c2dc9606e01e2cc547196f48d2eaecf58e5" },
"telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"twilight.nvim": { "branch": "main", "commit": "664e752f4a219801265cc3fc18782b457b58c1e1" },
"typst-preview.nvim": { "branch": "master", "commit": "e544812bba84b4f7976590f2b6c0dfbd099e1893" },
"vim-closetag": { "branch": "master", "commit": "d0a562f8bdb107a50595aefe53b1a690460c3822" },
"vim-vsnip": { "branch": "master", "commit": "0a4b8419e44f47c57eec4c90df17567ad4b1b36e" },
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
}
+86
View File
@@ -0,0 +1,86 @@
local opt = vim.opt
local map = vim.keymap.set
local g = vim.g
--filetypes
vim.cmd("autocmd BufRead,BufNewFile *.m set filetype=objc")
g.mapleader = " "
opt.shiftwidth = 4
opt.tabstop = 4
opt.softtabstop = 4
opt.smarttab = true
opt.smartindent = true
opt.undofile = true
opt.undodir = vim.fn.stdpath("config") .. "/undo"
opt.number = true
opt.relativenumber = true
opt.fillchars = "eob: "
g.loaded_netrw = 1
g.loaded_netrwPlugin = 1
opt.termguicolors = true
opt.spell = false
opt.spelllang = { "en_us" }
opt.shell = "/usr/bin/zsh"
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
border = "single",
})
vim.diagnostic.config({ float = { border = "single" } })
map("n", "<leader>u", ":Telescope<cr>")
map("n", "<leader>t", ":tabnew<cr>")
map("n", "<A-Right>", ":tabn<cr>")
map("n", "<A-Left>", ":tabp<cr>")
map("n", "<A-q>", ":bw<cr>")
map("n", "<leader>.", vim.diagnostic.open_float)
map("n", "<leader>=", "=")
map("n", "<leader>x", "<cmd>!chmod +x %<CR>")
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function(ev)
vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc"
local opts = { buffer = ev.buf }
map("n", "K", function()
vim.lsp.buf.hover({ border = "single" })
end, opts)
map("n", "gi", vim.lsp.buf.implementation, opts)
map("n", "<C-k>", vim.lsp.buf.signature_help, opts)
map("n", "<space>wa", vim.lsp.buf.add_workspace_folder, opts)
map("n", "<space>wr", vim.lsp.buf.remove_workspace_folder, opts)
map("n", "<space>wl", function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, opts)
map("n", "<space>D", vim.lsp.buf.type_definition, opts)
map("n", "<space>rn", vim.lsp.buf.rename, opts)
map({ "n", "v" }, "<space>ca", vim.lsp.buf.code_action, opts)
map("n", "gr", vim.lsp.buf.references, opts)
map("n", "<space>f", function()
vim.lsp.buf.format({ async = true })
end, opts)
end,
})
local builtin = require("telescope.builtin")
map("n", "<leader>ff", builtin.find_files, {})
map("n", "<leader>fg", builtin.live_grep, {})
map("n", "<leader>fb", builtin.buffers, {})
map("n", "<leader>fh", builtin.help_tags, {})
local treeapi = require("nvim-tree.api")
map("n", "<leader>e", treeapi.tree.toggle, {})
map("n", "<A-i>", '<CMD>lua require("FTerm").toggle()<CR>')
map("t", "<A-i>", '<C-\\><C-n><CMD>lua require("FTerm").toggle()<CR>')
+84
View File
@@ -0,0 +1,84 @@
local colors = {
black = "#121212",
white = "#ffffff",
gray = "#7e7e7e",
light_gray = "#d0d0d0",
dark_gray = "#505050",
red = "#ff5c57",
green = "#5af78e",
yellow = "#f3f99d",
blue = "#57c7ff",
purple = "#d183e8",
cyan = "#9aedfe",
}
local highlights = {
Normal = { fg = colors.light_gray, bg = colors.black },
Comment = { fg = colors.gray, italic = true },
Constant = { fg = colors.blue },
String = { fg = colors.green },
Identifier = { fg = colors.blue },
Function = { fg = colors.purple },
Statement = { fg = colors.yellow },
PreProc = { fg = colors.cyan },
Type = { fg = colors.blue },
Special = { fg = colors.red },
Underlined = { fg = colors.white, underline = true },
Todo = { fg = colors.black, bg = colors.yellow, bold = true },
StatusLine = { fg = colors.white, bg = colors.dark_gray },
StatusLineNC = { fg = colors.light_gray, bg = colors.black },
NvimTreeNormal = { fg = colors.light_gray, bg = colors.black },
NvimTreeFolderName = { fg = colors.blue, bold = true },
NvimTreeOpenedFolderName = { fg = colors.green, bold = true },
NvimTreeRootFolder = { fg = colors.yellow, bold = true, underline = true },
NvimTreeFileIcon = { fg = colors.light_gray },
NvimTreeGitDirty = { fg = colors.red },
NvimTreeGitStaged = { fg = colors.green },
NvimTreeGitNew = { fg = colors.blue },
NvimTreeGitRenamed = { fg = colors.purple },
NvimTreeGitDeleted = { fg = colors.red },
CursorLine = { bg = colors.dark_gray },
}
for group, opts in pairs(highlights) do
vim.api.nvim_set_hl(0, group, opts)
end
require("lualine").setup({
options = {
theme = {
normal = {
a = { fg = colors.black, bg = colors.white, gui = "bold" },
b = { fg = colors.white, bg = colors.dark_gray },
c = { fg = colors.white, bg = colors.black },
},
inactive = {
a = { fg = colors.dark_gray, bg = colors.black, gui = "bold" },
b = { fg = colors.dark_gray, bg = colors.black },
c = { fg = colors.dark_gray, bg = colors.black },
},
},
},
})
require("nvim-tree").setup({
view = {
width = 30,
side = "left",
},
renderer = {
highlight_git = true,
root_folder_modifier = ":~",
icons = {
show = {
file = true,
folder = true,
git = true,
},
},
},
filters = {
dotfiles = false,
},
})
+17
View File
@@ -0,0 +1,17 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable",
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
local lazy_plugins = require("plugins/lazy/plugins")
require("lazy").setup(lazy_plugins)
require("mason").setup()
+128
View File
@@ -0,0 +1,128 @@
return {
{
"andweeb/presence.nvim",
"catppuccin/nvim",
--"morhetz/gruvbox",
"neovim/nvim-lspconfig",
"williamboman/mason.nvim",
{
"nvim-telescope/telescope.nvim",
tag = "0.1.5",
dependencies = { "nvim-lua/plenary.nvim" },
},
{
"nvim-tree/nvim-tree.lua",
dependencies = { "nvim-tree/nvim-web-devicons" },
},
{
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {},
},
{
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
},
{
"nvimtools/none-ls.nvim",
dependencies = {
"nvimtools/none-ls-extras.nvim",
},
},
{
"windwp/nvim-autopairs",
event = "InsertEnter",
},
{
"hrsh7th/nvim-cmp",
dependencies = {
"neovim/nvim-lspconfig",
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-nvim-lua",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
"hrsh7th/cmp-vsnip",
"hrsh7th/vim-vsnip",
},
},
{
"ray-x/lsp_signature.nvim",
event = "VeryLazy",
},
"nvim-treesitter/nvim-treesitter",
"f3fora/cmp-spell",
{
"debugloop/telescope-undo.nvim",
dependencies = {
{
"nvim-telescope/telescope.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
},
},
},
{
"chomosuke/typst-preview.nvim",
lazy = false,
version = "1.*",
opts = {},
},
{
"MeanderingProgrammer/render-markdown.nvim",
dependencies = {
"nvim-treesitter/nvim-treesitter",
"nvim-mini/mini.nvim",
},
opts = {},
},
"sitiom/nvim-numbertoggle",
"mluders/comfy-line-numbers.nvim",
{
"folke/which-key.nvim",
event = "VeryLazy",
init = function()
vim.o.timeout = true
vim.o.timeoutlen = 300
end,
},
{
"folke/twilight.nvim",
opts = {
dimming = {
alpha = 0.35,
color = { "Normal" },
term_bg = "#282828",
inactive = false,
},
context = 15,
treesitter = true,
expand = {
"function",
"method",
"table",
"if_statement",
},
exclude = {
"md",
},
},
},
"nguyenvukhang/nvim-toggler",
"alvan/vim-closetag",
"norcalli/nvim-colorizer.lua",
{
"numtostr/fterm.nvim",
border = "double",
dimensions = {
height = 0.9,
width = 0.9,
},
},
{
"bluz71/vim-moonfly-colors",
name = "moonfly",
lazy = false,
priority = 1000,
},
},
}
+120
View File
@@ -0,0 +1,120 @@
local lsp = require("lspconfig")
local fmt = require("null-ls")
local cmp = require("cmp")
require("nvim-autopairs").setup({})
require("lsp_signature").setup({ hint_enable = false })
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
fmt.setup({
sources = {
fmt.builtins.formatting.clang_format,
require("none-ls.formatting.rustfmt"),
fmt.builtins.formatting.stylua,
fmt.builtins.formatting.gofmt,
},
on_attach = function(client, bufnr)
if client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
buffer = bufnr,
callback = function()
vim.lsp.buf.format({ async = false })
end,
})
end
end,
})
cmp.setup({
snippet = {
expand = function(args)
vim.fn["vsnip#anonymous"](args.body)
end,
},
mapping = cmp.mapping.preset.insert({
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.abort(),
["<CR>"] = cmp.mapping.confirm({ select = true }),
}),
window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered() },
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "vsnip" },
{ name = "spell" },
}, {
{ name = "buffer" },
{ name = "nvim_lua" },
}),
})
local capabilities = require("cmp_nvim_lsp").default_capabilities()
lsp.html.setup({
cmd = { "vscode-html-language-server", "--stdio" },
capabilities = capabilities,
init_options = {
configurationSection = { "html", "css", "javascript" },
embeddedLanguages = { css = true, javascript = true },
provideFormatter = true,
},
settings = {
html = {
format = {
wrapLineLength = 120,
wrapAttributes = "auto",
contentUnformatted = "pre,code,textarea",
},
hover = { documentation = true, references = true },
},
},
})
lsp.cssls.setup({
capabilities = capabilities,
settings = { css = { validate = true }, scss = { validate = true }, less = { validate = true } },
})
lsp.ts_ls.setup({
capabilities = capabilities,
on_attach = function(client)
client.server_capabilities.documentFormattingProvider = false
end,
})
lsp.rust_analyzer.setup({ capabilities = capabilities })
local clangd_capabilities = vim.deepcopy(capabilities)
clangd_capabilities["offsetEncoding"] = "utf-8"
lsp.clangd.setup({
cmd = { "clangd", "--background-index", "--function-arg-placeholders=0", "-j=12", "--clang-tidy" },
capabilities = clangd_capabilities,
init_options = { documentFormatting = true },
})
lsp.pyright.setup({ capabilities = capabilities })
lsp.gopls.setup({ capabilities = capabilities })
lsp.asm_lsp.setup({ capabilities = capabilities })
lsp.zls.setup({ capabilities = capabilities })
lsp.jdtls.setup({ capabilities = capabilities })
lsp.tinymist.setup({ capabilities = capabilities })
lsp.lua_ls.setup({
on_init = function(client)
local path = client.workspace_folders[1].name
if not vim.loop.fs_stat(path .. "/.luarc.json") and not vim.loop.fs_stat(path .. "/.luarc.jsonc") then
client.config.settings = vim.tbl_deep_extend("force", client.config.settings, {
Lua = {
runtime = { version = "LuaJIT" },
workspace = { checkThirdParty = false, library = { vim.env.VIMRUNTIME } },
},
})
client.notify("workspace/didChangeConfiguration", { settings = client.config.settings })
end
return true
end,
capabilities = capabilities,
})
+42
View File
@@ -0,0 +1,42 @@
local lualine = require("lualine")
lualine.setup({
options = {
icons_enabled = true,
theme = "auto",
component_separators = { left = "|", right = "|" },
section_separators = { left = "", right = "" },
disabled_filetypes = {
statusline = {},
winbar = {},
},
ignore_focus = {},
always_divide_middle = true,
globalstatus = false,
refresh = {
statusline = 1000,
tabline = 1000,
winbar = 1000,
},
},
sections = {
lualine_a = { "mode" },
lualine_b = { "branch", "diff", "diagnostics" },
lualine_c = { "filename" },
lualine_x = { "encoding", "fileformat", "filetype" },
lualine_y = {},
lualine_z = { "location" },
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = { "filename" },
lualine_x = { "location" },
lualine_y = {},
lualine_z = {},
},
tabline = {},
winbar = {},
inactive_winbar = {},
extensions = {},
})
+2
View File
@@ -0,0 +1,2 @@
local tree = require("nvim-tree")
tree.setup()
+139
View File
@@ -0,0 +1,139 @@
require("render-markdown").setup({
link = {
-- Turn on / off inline link icon rendering.
enabled = true,
-- Additional modes to render links.
render_modes = false,
-- How to handle footnote links, start with a '^'.
footnote = {
-- Turn on / off footnote rendering.
enabled = true,
-- Replace value with superscript equivalent.
superscript = true,
-- Added before link content.
prefix = "",
-- Added after link content.
suffix = "",
},
-- Inlined with 'image' elements.
image = "󰥶 ",
-- Inlined with 'email_autolink' elements.
email = "󰀓 ",
-- Fallback icon for 'inline_link' and 'uri_autolink' elements.
hyperlink = "󰌹 ",
-- Applies to the inlined icon as a fallback.
highlight = "RenderMarkdownLink",
-- Applies to WikiLink elements.
wiki = {
icon = "󱗖 ",
body = function()
return nil
end,
highlight = "RenderMarkdownWikiLink",
},
-- Define custom destination patterns so icons can quickly inform you of what a link
-- contains. Applies to 'inline_link', 'uri_autolink', and wikilink nodes. When multiple
-- patterns match a link the one with the longer pattern is used.
-- The key is for healthcheck and to allow users to change its values, value type below.
-- | pattern | matched against the destination text |
-- | icon | gets inlined before the link text |
-- | kind | optional determines how pattern is checked |
-- | | pattern | @see :h lua-patterns, is the default if not set |
-- | | suffix | @see :h vim.endswith() |
-- | priority | optional used when multiple match, uses pattern length if empty |
-- | highlight | optional highlight for 'icon', uses fallback highlight if empty |
custom = {
web = { pattern = "^http", icon = "󰖟 " },
github = { pattern = "github%.com", icon = "󰊤 " },
gitlab = { pattern = "gitlab%.com", icon = "󰮠 " },
stackoverflow = { pattern = "stackoverflow%.com", icon = "󰓌 " },
wikipedia = { pattern = "wikipedia%.org", icon = "󰖬 " },
youtube = { pattern = "youtube%.com", icon = "󰗃 " },
},
},
callout = {
-- Callouts are a special instance of a 'block_quote' that start with a 'shortcut_link'.
-- The key is for healthcheck and to allow users to change its values, value type below.
-- | raw | matched against the raw text of a 'shortcut_link', case insensitive |
-- | rendered | replaces the 'raw' value when rendering |
-- | highlight | highlight for the 'rendered' text and quote markers |
-- | quote_icon | optional override for quote.icon value for individual callout |
-- | category | optional metadata useful for filtering |
note = { raw = "[!NOTE]", rendered = "󰋽 Note", highlight = "RenderMarkdownInfo" },
tip = { raw = "[!TIP]", rendered = "󰌶 Tip", highlight = "RenderMarkdownSuccess" },
important = { raw = "[!IMPORTANT]", rendered = "󰅾 Important", highlight = "RenderMarkdownHint" },
warning = { raw = "[!WARNING]", rendered = "󰀪 Warning", highlight = "RenderMarkdownWarn" },
caution = { raw = "[!CAUTION]", rendered = "󰳦 Caution", highlight = "RenderMarkdownError" },
abstract = { raw = "[!ABSTRACT]", rendered = "󰨸 Abstract", highlight = "RenderMarkdownInfo" },
summary = { raw = "[!SUMMARY]", rendered = "󰨸 Summary", highlight = "RenderMarkdownInfo" },
tldr = { raw = "[!TLDR]", rendered = "󰨸 Tldr", highlight = "RenderMarkdownInfo" },
info = { raw = "[!INFO]", rendered = "󰋽 Info", highlight = "RenderMarkdownInfo" },
todo = { raw = "[!TODO]", rendered = "󰗡 Todo", highlight = "RenderMarkdownInfo" },
hint = { raw = "[!HINT]", rendered = "󰌶 Hint", highlight = "RenderMarkdownSuccess" },
success = { raw = "[!SUCCESS]", rendered = "󰄬 Success", highlight = "RenderMarkdownSuccess" },
check = { raw = "[!CHECK]", rendered = "󰄬 Check", highlight = "RenderMarkdownSuccess" },
done = { raw = "[!DONE]", rendered = "󰄬 Done", highlight = "RenderMarkdownSuccess" },
question = { raw = "[!QUESTION]", rendered = "󰘥 Question", highlight = "RenderMarkdownWarn" },
help = { raw = "[!HELP]", rendered = "󰘥 Help", highlight = "RenderMarkdownWarn" },
faq = { raw = "[!FAQ]", rendered = "󰘥 Faq", highlight = "RenderMarkdownWarn" },
attention = { raw = "[!ATTENTION]", rendered = "󰀪 Attention", highlight = "RenderMarkdownWarn" },
failure = { raw = "[!FAILURE]", rendered = "󰅖 Failure", highlight = "RenderMarkdownError" },
fail = { raw = "[!FAIL]", rendered = "󰅖 Fail", highlight = "RenderMarkdownError" },
missing = { raw = "[!MISSING]", rendered = "󰅖 Missing", highlight = "RenderMarkdownError" },
danger = { raw = "[!DANGER]", rendered = "󱐌 Danger", highlight = "RenderMarkdownError" },
error = { raw = "[!ERROR]", rendered = "󱐌 Error", highlight = "RenderMarkdownError" },
bug = { raw = "[!BUG]", rendered = "󰨰 Bug", highlight = "RenderMarkdownError" },
example = { raw = "[!EXAMPLE]", rendered = "󰉹 Example", highlight = "RenderMarkdownHint" },
quote = { raw = "[!QUOTE]", rendered = "󱆨 Quote", highlight = "RenderMarkdownQuote" },
cite = { raw = "[!CITE]", rendered = "󱆨 Cite", highlight = "RenderMarkdownQuote" },
},
checkbox = {
enabled = true,
render_modes = false,
bullet = false,
right_pad = 1,
unchecked = {
icon = "󰄱 ",
highlight = "RenderMarkdownUnchecked",
scope_highlight = nil,
},
checked = {
icon = "󰱒 ",
highlight = "RenderMarkdownChecked",
scope_highlight = nil,
},
custom = {
todo = { raw = "[-]", rendered = "󰥔 ", highlight = "RenderMarkdownTodo", scope_highlight = nil },
},
},
bullet = {
enabled = true,
render_modes = false,
icons = { "", "", "", "" },
ordered_icons = function(ctx)
local value = vim.trim(ctx.value)
local index = tonumber(value:sub(1, #value - 1))
return ("%d."):format(index > 1 and index or ctx.index)
end,
left_pad = 0,
right_pad = 0,
highlight = "RenderMarkdownBullet",
scope_highlight = {},
},
quote = { icon = "" },
anti_conceal = {
enabled = true,
-- Which elements to always show, ignoring anti conceal behavior. Values can either be
-- booleans to fix the behavior or string lists representing modes where anti conceal
-- behavior will be ignored. Valid values are:
-- head_icon, head_background, head_border, code_language, code_background, code_border,
-- dash, bullet, check_icon, check_scope, quote, table_border, callout, link, sign
ignore = {
code_background = true,
sign = true,
},
above = 0,
below = 0,
},
})
+3
View File
@@ -0,0 +1,3 @@
local tel = require("telescope")
tel.setup({})
tel.load_extension("undo")
+10
View File
@@ -0,0 +1,10 @@
local ts = require("nvim-treesitter.configs")
ts.setup({
ensure_installed = { "c", "cpp", "lua", "go", "gomod", "gowork", "gosum", "rust", "python" },
auto_install = true,
sync_install = true,
highlight = {
enable = true
}
})
+2
View File
@@ -0,0 +1,2 @@
local wk = require("which-key")
wk.setup({})
+102
View File
@@ -0,0 +1,102 @@
local colors = {
foreground = "#ebdbb2",
pink = "#b16286",
red = "#cc241d",
green = "#98971a",
yellow = "#d79921",
orange = "#d65d0e",
magenta = "#b16286",
cyan = "#458588",
bg_darken = "#1d2021",
dark_text = "#1d2021",
}
local M = {}
function M.setup()
vim.cmd("hi StatusBackground guifg=" .. colors.foreground .. " guibg=" .. colors.bg_darken)
vim.cmd("hi Moden guifg=" .. colors.dark_text .. " guibg=" .. colors.pink .. " gui=bold")
vim.cmd("hi Modei guifg=" .. colors.dark_text .. " guibg=" .. colors.green .. " gui=bold")
vim.cmd("hi Modev guifg=" .. colors.dark_text .. " guibg=" .. colors.yellow .. " gui=bold")
vim.cmd("hi Modet guifg=" .. colors.dark_text .. " guibg=" .. colors.orange .. " gui=bold")
vim.cmd("hi Modec guifg=" .. colors.dark_text .. " guibg=" .. colors.magenta .. " gui=bold")
vim.cmd("hi Moder guifg=" .. colors.dark_text .. " guibg=" .. colors.red .. " gui=bold")
vim.cmd("hi Filetype guifg=" .. colors.cyan .. " guibg=" .. colors.bg_darken .. " gui=bold")
vim.cmd("hi Position guifg=" .. colors.yellow .. " guibg=" .. colors.bg_darken .. " gui=bold")
vim.cmd("hi GitBranch guifg=" .. colors.orange .. " guibg=" .. colors.bg_darken .. " gui=bold")
vim.cmd("hi GitDiff guifg=" .. colors.green .. " guibg=" .. colors.bg_darken)
vim.cmd("hi GitDiffDel guifg=" .. colors.red .. " guibg=" .. colors.bg_darken)
vim.cmd("hi Separator guifg=" .. colors.foreground .. " guibg=" .. colors.bg_darken)
vim.cmd("hi LSPError guifg=" .. colors.red .. " guibg=" .. colors.bg_darken)
vim.cmd("hi LSPWarn guifg=" .. colors.yellow .. " guibg=" .. colors.bg_darken)
vim.cmd("hi LSPInfo guifg=" .. colors.cyan .. " guibg=" .. colors.bg_darken)
vim.cmd("hi LSPOk guifg=" .. colors.green .. " guibg=" .. colors.bg_darken)
vim.o.statusline = table.concat({
"%{%v:lua.themeStatuslineMode()%} ",
"%f ",
"%{%v:lua.themeGitBranch()%} ",
"%{%v:lua.themeGitDiff()%} ",
"%{%v:lua.themeLSP()%} ",
"%=",
"%{%v:lua.themeStatuslineFiletype()%} ",
"%{%v:lua.themeStatuslinePosition()%}",
})
end
function themeStatuslineMode()
local mode = vim.fn.mode()
local mode_highlight = "Mode" .. mode:sub(1, 1)
return string.format("%%#%s# %s %%#StatusBackground#", mode_highlight, mode:upper())
end
function themeStatuslineFiletype()
return string.format("%%#Filetype# %s %%#Separator#│%%#StatusBackground#", vim.bo.filetype)
end
function themeStatuslinePosition()
local row, col = unpack(vim.api.nvim_win_get_cursor(0))
return string.format("%%#Position# %03d:%02d ", row, col)
end
function themeGitBranch()
local branch = vim.fn.systemlist("git rev-parse --abbrev-ref HEAD 2>/dev/null")[1] or ""
if branch ~= "" then
return string.format("%%#GitBranch# %s %%#Separator#│%%#StatusBackground#", branch)
end
return ""
end
function themeGitDiff()
local diff = vim.fn.systemlist("git diff --shortstat 2>/dev/null")[1] or ""
local added, removed = diff:match("(%d+) insertions?"), diff:match("(%d+) deletions?")
added = added or "0"
removed = removed or "0"
if diff ~= "" then
return string.format("%%#GitDiff#+%s %%#GitDiffDel#-%s %%#StatusBackground#", added, removed)
end
return ""
end
function themeLSP()
local errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR })
local warns = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN })
local info = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO })
local hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT })
local str = ""
if errors > 0 then
str = str .. string.format("%%#LSPError#E:%d ", errors)
end
if warns > 0 then
str = str .. string.format("%%#LSPWarn#W:%d ", warns)
end
if info > 0 then
str = str .. string.format("%%#LSPInfo#I:%d ", info)
end
if hints > 0 then
str = str .. string.format("%%#LSPOk#H:%d ", hints)
end
return str
end
return M
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More