first commit using stow

This commit is contained in:
krolxon 2025-08-16 20:49:05 +05:30
commit f3bdd21020
64 changed files with 10832 additions and 0 deletions

View File

@ -0,0 +1,666 @@
[env]
TERM = "xterm-256color"
[colors]
draw_bold_text_with_bright_colors = true
[colors.primary]
background = '#1E1E2E' # base
foreground = '#CDD6F4' # text
# Bright and dim foreground colors
dim_foreground = '#CDD6F4' # text
bright_foreground = '#CDD6F4' # text
# Cursor colors
[colors.cursor]
text = '#1E1E2E' # base
cursor = '#F5E0DC' # rosewater
[colors.vi_mode_cursor]
text = '#1E1E2E' # base
cursor = '#B4BEFE' # lavender
# Search colors
[colors.search.matches]
foreground = '#1E1E2E' # base
background = '#A6ADC8' # subtext0
[colors.search.focused_match]
foreground = '#1E1E2E' # base
background = '#A6E3A1' # green
[colors.footer_bar]
foreground = '#1E1E2E' # base
background = '#A6ADC8' # subtext0
# Keyboard regex hints
[colors.hints.start]
foreground = '#1E1E2E' # base
background = '#F9E2AF' # yellow
[colors.hints.end]
foreground = '#1E1E2E' # base
background = '#A6ADC8' # subtext0
# Selection colors
[colors.selection]
text = '#1E1E2E' # base
background = '#F5E0DC' # rosewater
# Normal colors
[colors.normal]
black = '#45475A' # surface1
red = '#F38BA8' # red
green = '#A6E3A1' # green
yellow = '#F9E2AF' # yellow
blue = '#89B4FA' # blue
magenta = '#F5C2E7' # pink
cyan = '#94E2D5' # teal
white = '#BAC2DE' # subtext1
# Bright colors
[colors.bright]
black = '#585B70' # surface2
red = '#F38BA8' # red
green = '#A6E3A1' # green
yellow = '#F9E2AF' # yellow
blue = '#89B4FA' # blue
magenta = '#F5C2E7' # pink
cyan = '#94E2D5' # teal
white = '#A6ADC8' # subtext0
# Dim colors
[colors.dim]
black = '#45475A' # surface1
red = '#F38BA8' # red
green = '#A6E3A1' # green
yellow = '#F9E2AF' # yellow
blue = '#89B4FA' # blue
magenta = '#F5C2E7' # pink
cyan = '#94E2D5' # teal
white = '#BAC2DE' # subtext1
[cursor]
style = "Block"
unfocused_hollow = true
[debug]
persistent_logging = false
render_timer = false
[font]
size = 12
[font.bold]
family = "Fira Code"
style = "Bold"
[font.glyph_offset]
x = 0
y = 0
[font.italic]
family = "Fira Code"
style = "Italic"
[font.normal]
family = "Fira Code"
style = "Regular"
[font.offset]
x = 0
y = 0
[[keyboard.bindings]]
action = "Paste"
key = "V"
mods = "Control|Shift"
[[keyboard.bindings]]
action = "Copy"
key = "C"
mods = "Control|Shift"
[[keyboard.bindings]]
action = "Paste"
key = "Paste"
[[keyboard.bindings]]
action = "Copy"
key = "Copy"
[[keyboard.bindings]]
action = "Quit"
key = "W"
mods = "Command"
[[keyboard.bindings]]
action = "PasteSelection"
key = "Insert"
mods = "Shift"
[[keyboard.bindings]]
action = "ResetFontSize"
key = "Key0"
mods = "Control"
[[keyboard.bindings]]
action = "IncreaseFontSize"
key = "Equals"
mods = "Control"
[[keyboard.bindings]]
action = "DecreaseFontSize"
key = "NumpadSubtract"
mods = "Control"
[[keyboard.bindings]]
action = "DecreaseFontSize"
key = "Minus"
mods = "Control"
[[keyboard.bindings]]
action = "ClearLogNotice"
key = "L"
mods = "Control"
[[keyboard.bindings]]
chars = "\f"
key = "L"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001BOH"
key = "Home"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[H"
key = "Home"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOF"
key = "End"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[F"
key = "End"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001B[5;2~"
key = "PageUp"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[5;5~"
key = "PageUp"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[5~"
key = "PageUp"
[[keyboard.bindings]]
chars = "\u001B[6;2~"
key = "PageDown"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[6;5~"
key = "PageDown"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[6~"
key = "PageDown"
[[keyboard.bindings]]
chars = "\u001B[Z"
key = "Tab"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u007F"
key = "Back"
[[keyboard.bindings]]
chars = "\u001B\u007F"
key = "Back"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[2~"
key = "Insert"
[[keyboard.bindings]]
chars = "\u001B[3~"
key = "Delete"
[[keyboard.bindings]]
chars = "\u001B[1;2D"
key = "Left"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5D"
key = "Left"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3D"
key = "Left"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[D"
key = "Left"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOD"
key = "Left"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1;2C"
key = "Right"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5C"
key = "Right"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3C"
key = "Right"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[C"
key = "Right"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOC"
key = "Right"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1;2A"
key = "Up"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5A"
key = "Up"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3A"
key = "Up"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[A"
key = "Up"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOA"
key = "Up"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1;2B"
key = "Down"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5B"
key = "Down"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3B"
key = "Down"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[B"
key = "Down"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOB"
key = "Down"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001BOP"
key = "F1"
[[keyboard.bindings]]
chars = "\u001BOQ"
key = "F2"
[[keyboard.bindings]]
chars = "\u001BOR"
key = "F3"
[[keyboard.bindings]]
chars = "\u001BOS"
key = "F4"
[[keyboard.bindings]]
chars = "\u001B[15~"
key = "F5"
[[keyboard.bindings]]
chars = "\u001B[17~"
key = "F6"
[[keyboard.bindings]]
chars = "\u001B[18~"
key = "F7"
[[keyboard.bindings]]
chars = "\u001B[19~"
key = "F8"
[[keyboard.bindings]]
chars = "\u001B[20~"
key = "F9"
[[keyboard.bindings]]
chars = "\u001B[21~"
key = "F10"
[[keyboard.bindings]]
chars = "\u001B[23~"
key = "F11"
[[keyboard.bindings]]
chars = "\u001B[24~"
key = "F12"
[[keyboard.bindings]]
chars = "\u001B[1;2P"
key = "F1"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;2Q"
key = "F2"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;2R"
key = "F3"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;2S"
key = "F4"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[15;2~"
key = "F5"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[17;2~"
key = "F6"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[18;2~"
key = "F7"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[19;2~"
key = "F8"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[20;2~"
key = "F9"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[21;2~"
key = "F10"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[23;2~"
key = "F11"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[24;2~"
key = "F12"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5P"
key = "F1"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;5Q"
key = "F2"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;5R"
key = "F3"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;5S"
key = "F4"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[15;5~"
key = "F5"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[17;5~"
key = "F6"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[18;5~"
key = "F7"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[19;5~"
key = "F8"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[20;5~"
key = "F9"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[21;5~"
key = "F10"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[23;5~"
key = "F11"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[24;5~"
key = "F12"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;6P"
key = "F1"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[1;6Q"
key = "F2"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[1;6R"
key = "F3"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[1;6S"
key = "F4"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[15;6~"
key = "F5"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[17;6~"
key = "F6"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[18;6~"
key = "F7"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[19;6~"
key = "F8"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[20;6~"
key = "F9"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[21;6~"
key = "F10"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[23;6~"
key = "F11"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[24;6~"
key = "F12"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[1;3P"
key = "F1"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[1;3Q"
key = "F2"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[1;3R"
key = "F3"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[1;3S"
key = "F4"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[15;3~"
key = "F5"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[17;3~"
key = "F6"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[18;3~"
key = "F7"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[19;3~"
key = "F8"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[20;3~"
key = "F9"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[21;3~"
key = "F10"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[23;3~"
key = "F11"
mods = "Super"
# [mouse]
# hide_when_typing = false
#
# [[mouse.bindings]]
# action = "PasteSelection"
# mouse = "Middle"
#
# [mouse.double_click]
# threshold = 300
#
# [mouse.hints]
# launcher = "xdg-open"
# modifiers = "Control"
#
# [mouse.triple_click]
# threshold = 300
#
[scrolling]
history = 100000
multiplier = 3
[selection]
save_to_clipboard = false
semantic_escape_chars = ",│`|:\"' ()[]{}<>"
[window]
decorations = "none"
dynamic_padding = false
opacity = 0.9
startup_mode = "Maximized"
[window.dimensions]
columns = 0
lines = 0
[window.padding]
x = 5
y = 5
[general]
live_config_reload = true

View File

@ -0,0 +1,11 @@
[Filechooser Settings]
LocationMode=path-bar
ShowHidden=false
ShowSizeColumn=true
GeometryX=1068
GeometryY=0
GeometryWidth=840
GeometryHeight=630
SortColumn=name
SortOrder=ascending
StartupMode=recent

18
.config/gtk-2.0/gtkrc-2.0 Normal file
View File

@ -0,0 +1,18 @@
# DO NOT EDIT! This file will be overwritten by LXAppearance.
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
include "/home/krolyxon/.gtkrc-2.0.mine"
gtk-theme-name="Arc-Dark"
gtk-icon-theme-name="Papirus-Dark"
gtk-font-name="Fira Code 11"
gtk-cursor-theme-name="Adwaita"
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintfull"

View File

@ -0,0 +1,15 @@
[Settings]
gtk-theme-name=Arc-Dark
gtk-icon-theme-name=Papirus-Dark
gtk-font-name=JetBrainsMonoNL Nerd Font Thin 11
gtk-cursor-theme-name=WhiteSur-cursors
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull

View File

@ -0,0 +1,27 @@
general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
}
listener {
timeout = 150 # 2.5min.
on-timeout = brightnessctl -s set 5 # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = brightnessctl -r # monitor backlight restore.
}
listener {
timeout = 600 # 10min
on-timeout = loginctl lock-session # lock screen when timeout has passed
}
listener {
timeout = 330 # 5.5min
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired.
}
# listener {
# timeout = 1800 # 30min
# on-timeout = systemctl suspend # suspend pc
# }

307
.config/hypr/hyprland.conf Normal file
View File

@ -0,0 +1,307 @@
autogenerated = 0
###################
### MY PROGRAMS ###
###################
$terminal = footclient
$menu = rofi -show run
$browser = zen-browser
#################
### AUTOSTART ###
#################
exec-once = (hyprpm reload -n & kanshi & waybar & swaync & gammastep & hypridle & foot --server)
exec-once = ~/.local/bin/setwall
exec-once = systemctl --user start hyprpolkitagent
plugin {
hyprsplit {
num_workspaces = 10
persistent_workspaces = true
}
}
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hypr.land/Configuring/Environment-variables/
env = HYPRSHOT_DIR,/home/krolyxon/pix/ss/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = GTK_THEME,Arc-Dark
# XDG Specifications
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
# Toolkit
env = GDK_BACKEND,wayland,x11,* # GTK: Use Wayland if available; if not, try X11 and then any other GDK backend.
env = QT_QPA_PLATFORM,wayland;xcb # Qt: Use Wayland if available, fall back to X11 if not
env = SDL_VIDEODRIVER,Wayland # Run SDL2 applications on Wayland. Remove or set to x11 if games that provide older versions of SDL cause compatibility issues
env = CLUTTER_BACKEND,wayland # Clutter applications to try and use the Wayland backend
# Nvidia
# env = GBM_BACKEND,nvidia-drm
# env = __GLX_VENDOR_LIBRARY_NAME,nvidia
# env = LIBVA_DRIVER_NAME,nvidia
#######################
### PLUGIN SETTINGS ###
#######################
plugin {
split-monitor-workspaces {
count = 10
keep_focused = 1
enable_notifications = 0
enable_persistent_workspaces = 1
}
}
###################
### PERMISSIONS ###
###################
ecosystem {
enforce_permissions = 1
}
permission = /usr/(bin|local/bin)/grim, screencopy, allow
permission = /usr/(bin|local/bin)/hyprlock, screencopy, allow
permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
permission = ${lib.escapeRegex (lib.getExe config.programs.hyprlock.package)}, screencopy, allow
#####################
### LOOK AND FEEL ###
#####################
general {
gaps_in = 5
gaps_out = 5
border_size = 2
resize_on_border = false
allow_tearing = false
# col.active_border = rgba(7da6ffee)
# col.inactive_border = rgba(888e8eaa)
col.active_border = rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg
col.inactive_border = rgb(24273A) rgb(24273A) rgb(24273A) rgb(27273A) 45deg
layout = master
}
decoration {
rounding = 8
# blur {
# enabled = false
# size = 3
# passes = 1
# }
# blur {
# enabled = true
# size = 3
# passes = 3
# new_optimizations = true
# vibrancy = 0.1696
# ignore_opacity = true
# }
}
animations {
enabled = yes
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
# windowrule = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true# Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
master {
new_status = master
new_on_top = true
}
# https://wiki.hypr.land/Configuring/Variables/#misc
misc {
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true# If true disables the random hyprland logo / anime girl background. :(
disable_splash_rendering = true
mouse_move_enables_dpms = true
key_press_enables_dpms = true
vrr = 0 # Disable adaptive sync
}
#############
### INPUT ###
#############
# https://wiki.hypr.land/Configuring/Variables/#input
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
repeat_delay = 300
repeat_rate = 50
}
# https://wiki.hypr.land/Configuring/Variables/#gestures
gestures {
workspace_swipe = false
}
# Example per-device config
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
bind = $mainMod, Return, exec, $terminal
bind = $mainMod SHIFT, X, killactive,
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod, F, Fullscreen
bind = $mainMod SHIFT, R, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod SHIFT, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
binde = $mainMod, tab, cyclenext, prev
bind = $mainMod, b, exec, killall waybar || waybar
bind = $mainMod, grave, exec, rofiunicode
bind = $mainMod, escape, exec, sysact
# Applications
bind = $mainMod, W, exec, $browser
# Music Controls
bind = $mainMod, m, exec, $terminal -e "ncmpcpp"
bind = $mainMod, p, exec, mpc toggle
binde = $mainMod, comma, exec, mpc seek -10
binde = $mainMod, period, exec, mpc seek +10
# Swap current focused window with master
bind = $mainMod, space, layoutmsg, swapwithmaster
# Resize windows with h/j/k/l
binde = $mainMod, h, resizeactive, -30 0
binde = $mainMod, l, resizeactive, 30 0
binde = $mainMod, k, resizeactive, 0 -30
binde = $mainMod, j, resizeactive, 0 30
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, split-workspace, 1
bind = $mainMod, 2, split-workspace, 2
bind = $mainMod, 3, split-workspace, 3
bind = $mainMod, 4, split-workspace, 4
bind = $mainMod, 5, split-workspace, 5
bind = $mainMod, 6, split-workspace, 6
bind = $mainMod, 7, split-workspace, 7
bind = $mainMod, 8, split-workspace, 8
bind = $mainMod, 9, split-workspace, 9
bind = $mainMod, 0, split-workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, split-movetoworkspacesilent, 1
bind = $mainMod SHIFT, 2, split-movetoworkspacesilent, 2
bind = $mainMod SHIFT, 3, split-movetoworkspacesilent, 3
bind = $mainMod SHIFT, 4, split-movetoworkspacesilent, 4
bind = $mainMod SHIFT, 5, split-movetoworkspacesilent, 5
bind = $mainMod SHIFT, 6, split-movetoworkspacesilent, 6
bind = $mainMod SHIFT, 7, split-movetoworkspacesilent, 7
bind = $mainMod SHIFT, 8, split-movetoworkspacesilent, 8
bind = $mainMod SHIFT, 9, split-movetoworkspacesilent, 9
bind = $mainMod SHIFT, 0, split-movetoworkspacesilent, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Have scratchpad like DWM which opens alacritty in special workspace
workspace = special:h, on-created-empty: alacritty
bind = $mainMod SHIFT, Return, togglespecialworkspace, h
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule
# windowrule = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0

100
.config/hypr/hyprlock.conf Normal file
View File

@ -0,0 +1,100 @@
source = $HOME/.config/hypr/mocha.conf
$accent = $mauve
$accentAlpha = $mauveAlpha
$font = JetBrainsMono Nerd Font
# GENERAL
general {
hide_cursor = true
}
# BACKGROUND
background {
monitor =
path = $HOME/.config/background
blur_passes = 0
color = $base
}
# LAYOUT
label {
monitor =
text = Layout: $LAYOUT
color = $text
font_size = 25
font_family = $font
position = 30, -30
halign = left
valign = top
}
# TIME
label {
monitor =
text = $TIME
color = $text
font_size = 90
font_family = $font
position = -30, 0
halign = right
valign = top
}
# DATE
label {
monitor =
text = cmd[update:43200000] date +"%A, %d %B %Y"
color = $text
font_size = 25
font_family = $font
position = -30, -150
halign = right
valign = top
}
# FINGERPRINT
{
monitor = "";
text = "$FPRINTPROMPT";
color = "$text";
font_size = 14;
font_family = $font;
position = "0, -107";
halign = "center";
valign = "center";
}
# USER AVATAR
image {
monitor =
path = $HOME/.face
size = 100
border_color = $accent
position = 0, 75
halign = center
valign = center
}
# INPUT FIELD
input-field {
monitor =
size = 300, 60
outline_thickness = 4
dots_size = 0.2
dots_spacing = 0.2
dots_center = true
outer_color = $accent
inner_color = $surface0
font_color = $text
fade_on_empty = false
placeholder_text = <span foreground="##$textAlpha"><i>󰌾 Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
hide_input = false
check_color = $accent
fail_color = $red
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
capslock_color = $yellow
position = 0, -47
halign = center
valign = center
}

View File

@ -0,0 +1,2 @@
preload = /home/krolyxon/pix/wallpapers/onedarkwallpapers/19.png
wallpaper = ,/home/krolyxon/pix/wallpapers/onedarkwallpapers/19.png

78
.config/hypr/mocha.conf Normal file
View File

@ -0,0 +1,78 @@
$rosewater = rgb(f5e0dc)
$rosewaterAlpha = f5e0dc
$flamingo = rgb(f2cdcd)
$flamingoAlpha = f2cdcd
$pink = rgb(f5c2e7)
$pinkAlpha = f5c2e7
$mauve = rgb(cba6f7)
$mauveAlpha = cba6f7
$red = rgb(f38ba8)
$redAlpha = f38ba8
$maroon = rgb(eba0ac)
$maroonAlpha = eba0ac
$peach = rgb(fab387)
$peachAlpha = fab387
$yellow = rgb(f9e2af)
$yellowAlpha = f9e2af
$green = rgb(a6e3a1)
$greenAlpha = a6e3a1
$teal = rgb(94e2d5)
$tealAlpha = 94e2d5
$sky = rgb(89dceb)
$skyAlpha = 89dceb
$sapphire = rgb(74c7ec)
$sapphireAlpha = 74c7ec
$blue = rgb(89b4fa)
$blueAlpha = 89b4fa
$lavender = rgb(b4befe)
$lavenderAlpha = b4befe
$text = rgb(cdd6f4)
$textAlpha = cdd6f4
$subtext1 = rgb(bac2de)
$subtext1Alpha = bac2de
$subtext0 = rgb(a6adc8)
$subtext0Alpha = a6adc8
$overlay2 = rgb(9399b2)
$overlay2Alpha = 9399b2
$overlay1 = rgb(7f849c)
$overlay1Alpha = 7f849c
$overlay0 = rgb(6c7086)
$overlay0Alpha = 6c7086
$surface2 = rgb(585b70)
$surface2Alpha = 585b70
$surface1 = rgb(45475a)
$surface1Alpha = 45475a
$surface0 = rgb(313244)
$surface0Alpha = 313244
$base = rgb(1e1e2e)
$baseAlpha = 1e1e2e
$mantle = rgb(181825)
$mantleAlpha = 181825
$crust = rgb(11111b)
$crustAlpha = 11111b

22
.config/kanshi/config Normal file
View File

@ -0,0 +1,22 @@
profile laptop-only {
output eDP-1 {
enable
mode 1920x1080
scale 1
position 0,0
}
}
profile docked {
output eDP-1 {
mode 1920x1080
scale 1
position 0,0
}
output HDMI-A-1 {
mode 1920x1080
scale 1
position 1920,0
}
}

38
.config/mimeapps.list Normal file
View File

@ -0,0 +1,38 @@
[Default Applications]
text/x-shellscript=text.desktop;
x-scheme-handler/magnet=torrent.desktop;
application/x-bittorrent=torrent.desktop;
text/plain=nvim.desktop
application/postscript=pdf.desktop;
application/pdf=pdf.desktop;
image/png=img.desktop;
image/jpeg=img.desktop;
image/gif=img.desktop;
application/rss+xml=rss.desktop
video/x-matroska=video.desktop
x-scheme-handler/lbry=lbry.desktop
inode/directory=file.desktop
x-scheme-handler/tonsite=org.telegram.desktop.desktop
x-scheme-handler/http=zen.desktop
x-scheme-handler/https=zen.desktop
x-scheme-handler/chrome=zen.desktop
text/html=zen.desktop
application/x-extension-htm=zen.desktop
application/x-extension-html=zen.desktop
application/x-extension-shtml=zen.desktop
application/xhtml+xml=zen.desktop
application/x-extension-xhtml=zen.desktop
application/x-extension-xht=zen.desktop
[Added Associations]
x-scheme-handler/tonsite=org.telegram.desktop.desktop;
x-scheme-handler/http=zen.desktop;
x-scheme-handler/https=zen.desktop;
x-scheme-handler/chrome=zen.desktop;
text/html=zen.desktop;
application/x-extension-htm=zen.desktop;
application/x-extension-html=zen.desktop;
application/x-extension-shtml=zen.desktop;
application/xhtml+xml=zen.desktop;
application/x-extension-xhtml=zen.desktop;
application/x-extension-xht=zen.desktop;

25
.config/mpd/mpd.conf Normal file
View File

@ -0,0 +1,25 @@
db_file "~/.config/mpd/database"
music_directory "~/music"
playlist_directory "~/.config/mpd/playlists"
auto_update "yes"
bind_to_address "127.0.0.1"
port "6600"
restore_paused "yes"
max_output_buffer_size "16384"
audio_output {
# type "pulse"
# name "pulse"
#type "alsa"
#name "ALSA"
type "pipewire"
name "PipeWire Sound Server"
}
audio_output {
type "fifo"
name "Visualizer feed"
path "/tmp/mpd.fifo"
format "44100:16:2"
}

9
.config/mpv/input.conf Normal file
View File

@ -0,0 +1,9 @@
# Normalize audio.
F1 af toggle "dynaudnorm=g=5:f=250:r=0.9:p=0.5"
# seek commands
l seek 5
h seek -5
j seek -60
k seek 60
S cycle sub

62
.config/mpv/mpv.conf Normal file
View File

@ -0,0 +1,62 @@
# PLAYER
# ---
# Use GPU-accelerated video output by default.
vo=gpu
# Enable best HW decoder, turn off software decoding.
hwdec=auto
# Keep the player open when a file's end is reached.
keep-open=yes
# Color log messages on the terminal.
msg-color=yes
# Prepend module name to log messages.
msg-module=yes
# Display progress bar on the terminal.
term-osd-bar=yes
# Autohide cursor after 1s.
cursor-autohide=1000
# Use large seekable RAM cache even for local input.
#cache=yes
#cache-secs=300
# Use extra large RAM cache, needs "cache=yes" to make it useful.
#demuxer-max-bytes=1800M
#demuxer-max-back-bytes=1200M
# Disabling of decoder framedrop during hr-seek.
hr-seek-framedrop=no
# AUDIO
# ---
volume=100
volume-max=200
# SCREENSHOT
screenshot-format=png
# screenshot-directory="~/pix/ss/mpv" # Output directory
screenshot-template="%f-%wH.%wM.%wS.%wT-#%#00n"
# SUBTITLES
# ---
# Detect all subtitles.
sub-auto=all
# External subs don't have to match file name exactly to autoload.
sub-auto=fuzzy
# Blend subtitles directly onto upscaled video frames.
blend-subtitles=yes
# Try to correctly show embedded subs when seeking.
demuxer-mkv-subtitle-preroll=yes
# Use embedded fonts for SSA/ASS subs.
embeddedfonts=yes
# Backward compatibility for vsfilter fansubs.
sub-ass-use-video-data=all
# Search for external subs in these relative subdirectories.
sub-file-paths-append=ass
sub-file-paths-append=srt
sub-file-paths-append=sub
sub-file-paths-append=subs
sub-file-paths-append=subtitles
# FILE-TYPE PROFILES
# ---
[extension.gif]
cache=no
loop-file=yes
no-pause

475
.config/ncmpcpp/bindings Normal file
View File

@ -0,0 +1,475 @@
##############################################################
## This is the example bindings file. Copy it to ##
## ~/.ncmpcpp/bindings or $XDG_CONFIG_HOME/ncmpcpp/bindings ##
## and set up your preferences ##
##############################################################
#
#def_key "mouse"
# mouse_event
#
#def_key "up"
# scroll_up
#
#def_key "shift-up"
# select_item
# scroll_up
#
#def_key "down"
# scroll_down
#
#def_key "shift-down"
# select_item
# scroll_down
#
#def_key "["
# scroll_up_album
#
#def_key "]"
# scroll_down_album
#
#def_key "{"
# scroll_up_artist
#
#def_key "}"
# scroll_down_artist
#
#def_key "page_up"
# page_up
#
#def_key "page_down"
# page_down
#
#def_key "home"
# move_home
#
#def_key "end"
# move_end
#
#def_key "insert"
# select_item
#
#def_key "enter"
# enter_directory
#
#def_key "enter"
# toggle_output
#
#def_key "enter"
# run_action
#
#def_key "enter"
# play_item
#
#def_key "space"
# add_item_to_playlist
#
#def_key "space"
# toggle_lyrics_update_on_song_change
#
#def_key "space"
# toggle_visualization_type
#
#def_key "delete"
# delete_playlist_items
#
#def_key "delete"
# delete_browser_items
#
#def_key "delete"
# delete_stored_playlist
#
#def_key "right"
# next_column
#
#def_key "right"
# slave_screen
#
#def_key "right"
# volume_up
#
#def_key "+"
# volume_up
#
#def_key "left"
# previous_column
#
#def_key "left"
# master_screen
#
#def_key "left"
# volume_down
#
#def_key "-"
# volume_down
#
#def_key ":"
# execute_command
#
#def_key "tab"
# next_screen
#
#def_key "shift-tab"
# previous_screen
#
#def_key "f1"
# show_help
#
#def_key "1"
# show_playlist
#
#def_key "2"
# show_browser
#
#def_key "2"
# change_browse_mode
#
#def_key "3"
# show_search_engine
#
#def_key "3"
# reset_search_engine
#
#def_key "4"
# show_media_library
#
#def_key "4"
# toggle_media_library_columns_mode
#
#def_key "5"
# show_playlist_editor
#
#def_key "6"
# show_tag_editor
#
#def_key "7"
# show_outputs
#
#def_key "8"
# show_visualizer
#
#def_key "="
# show_clock
#
#def_key "@"
# show_server_info
#
#def_key "s"
# stop
#
#def_key "p"
# pause
#
#def_key ">"
# next
#
#def_key "<"
# previous
#
#def_key "ctrl-h"
# jump_to_parent_directory
#
#def_key "ctrl-h"
# replay_song
#
#def_key "backspace"
# jump_to_parent_directory
#
#def_key "backspace"
# replay_song
#
#def_key "f"
# seek_forward
#
#def_key "b"
# seek_backward
#
#def_key "r"
# toggle_repeat
#
#def_key "z"
# toggle_random
#
#def_key "y"
# save_tag_changes
#
#def_key "y"
# start_searching
#
#def_key "y"
# toggle_single
#
#def_key "R"
# toggle_consume
#
#def_key "Y"
# toggle_replay_gain_mode
#
#def_key "T"
# toggle_add_mode
#
#def_key "|"
# toggle_mouse
#
#def_key "#"
# toggle_bitrate_visibility
#
#def_key "Z"
# shuffle
#
#def_key "x"
# toggle_crossfade
#
#def_key "X"
# set_crossfade
#
#def_key "u"
# update_database
#
#def_key "ctrl-s"
# sort_playlist
#
#def_key "ctrl-s"
# toggle_browser_sort_mode
#
#def_key "ctrl-s"
# toggle_media_library_sort_mode
#
#def_key "ctrl-r"
# reverse_playlist
#
#def_key "ctrl-f"
# apply_filter
#
#def_key "ctrl-_"
# select_found_items
#
#def_key "/"
# find
#
#def_key "/"
# find_item_forward
#
#def_key "?"
# find
#
#def_key "?"
# find_item_backward
#
#def_key "."
# next_found_item
#
#def_key ","
# previous_found_item
#
#def_key "w"
# toggle_find_mode
#
#def_key "e"
# edit_song
#
#def_key "e"
# edit_library_tag
#
#def_key "e"
# edit_library_album
#
#def_key "e"
# edit_directory_name
#
#def_key "e"
# edit_playlist_name
#
#def_key "e"
# edit_lyrics
#
#def_key "i"
# show_song_info
#
#def_key "I"
# show_artist_info
#
#def_key "g"
# jump_to_position_in_song
#
#def_key "l"
# show_lyrics
#
#def_key "ctrl-v"
# select_range
#
#def_key "v"
# reverse_selection
#
#def_key "V"
# remove_selection
#
#def_key "B"
# select_album
#
#def_key "a"
# add_selected_items
#
#def_key "c"
# clear_playlist
#
#def_key "c"
# clear_main_playlist
#
#def_key "C"
# crop_playlist
#
#def_key "C"
# crop_main_playlist
#
#def_key "m"
# move_sort_order_up
#
#def_key "m"
# move_selected_items_up
#
#def_key "n"
# move_sort_order_down
#
#def_key "n"
# move_selected_items_down
#
#def_key "M"
# move_selected_items_to
#
#def_key "A"
# add
#
#def_key "S"
# save_playlist
#
#def_key "o"
# jump_to_playing_song
#
#def_key "G"
# jump_to_browser
#
#def_key "G"
# jump_to_playlist_editor
#
#def_key "~"
# jump_to_media_library
#
#def_key "E"
# jump_to_tag_editor
#
#def_key "U"
# toggle_playing_song_centering
#
#def_key "P"
# toggle_display_mode
#
#def_key "\\"
# toggle_interface
#
#def_key "!"
# toggle_separators_between_albums
#
#def_key "L"
# toggle_lyrics_fetcher
#
#def_key "F"
# fetch_lyrics_in_background
#
#def_key "alt-l"
# toggle_fetching_lyrics_in_background
#
#def_key "ctrl-l"
# toggle_screen_lock
#
#def_key "`"
# toggle_library_tag_type
#
#def_key "`"
# refetch_lyrics
#
#def_key "`"
# add_random_items
#
#def_key "ctrl-p"
# set_selected_items_priority
#
#def_key "q"
# quit
#
#
#def_key "f"
# find
#def_key "f"
# find_item_forward
def_key "+"
show_clock
def_key "="
volume_up
def_key "j"
scroll_down
def_key "k"
scroll_up
def_key "ctrl-u"
page_up
#push_characters "kkkkkkkkkkkkkkk"
def_key "ctrl-d"
page_down
#push_characters "jjjjjjjjjjjjjjj"
def_key "u"
page_up
#push_characters "kkkkkkkkkkkkkkk"
def_key "d"
page_down
#push_characters "jjjjjjjjjjjjjjj"
def_key "h"
previous_column
def_key "l"
next_column
def_key "."
show_lyrics
def_key "n"
next_found_item
def_key "N"
previous_found_item
# not used but bound
def_key "J"
move_sort_order_down
def_key "K"
move_sort_order_up
def_key "h"
jump_to_parent_directory
def_key "l"
enter_directory
def_key "l"
run_action
def_key "l"
play_item
def_key "m"
show_media_library
def_key "m"
toggle_media_library_columns_mode
def_key "t"
show_tag_editor
def_key "v"
show_visualizer
def_key "G"
move_end
def_key "g"
move_home
#jump_to_position_in_song
def_key "U"
update_database
def_key "s"
reset_search_engine
def_key "s"
show_search_engine
def_key "x"
delete_playlist_items
def_key "P"
show_playlist

65
.config/ncmpcpp/config Normal file
View File

@ -0,0 +1,65 @@
ncmpcpp_directory = "~/.config/ncmpcpp"
lyrics_directory = "~/.local/share/lyrics"
lyrics_fetchers = tekstowo, justsomelyrics, internet, musixmatch, genius, sing365, metrolyrics, jahlyrics, plyrics, zeneszoveg
message_delay_time = "1"
visualizer_type = "spectrum"
song_list_format = {$4%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
song_status_format = $b{{$8"%t"}} $3by {$4%a{ $3in $7%b{ (%y)}} $3}|{$8%f}
song_library_format = {%n - }{%t}|{%f}
current_item_prefix = $(cyan)$r$b
current_item_suffix = $/r$(end)$/b
current_item_inactive_column_prefix = $(magenta)$r
current_item_inactive_column_suffix = $/r$(end)
browser_display_mode = columns
media_library_primary_tag = album_artist
media_library_albums_split_by_date = no
startup_screen = "media_library"
jump_to_now_playing_song_at_start = "yes"
display_volume_level = yes
ignore_leading_the = yes
external_editor = nvim
use_console_editor = yes
## Playlist ##
playlist_display_mode = columns
ask_before_clearing_playlists = no
## Progress bar ##
progressbar_look = "▂▂▂"
progressbar_color = black:b
progressbar_elapsed_color = blue:b
## Colors ##
colors_enabled = "yes"
empty_tag_color = magenta
main_window_color = white
statusbar_color = red
volume_color = "green"
statusbar_time_color = cyan:b
execute_on_song_change="pkill -RTMIN+11 dwmblocks"
## Selected tracks ##
selected_item_prefix = "* "
## Seeking ##
incremental_seeking = "yes"
seek_time = "1"
## Alternative Interface ##
# user_interface = "alternative"
alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
## Visibility ##
header_visibility = "yes"
statusbar_visibility = "yes"
titles_visibility = "yes"
## Now Playing ##
now_playing_prefix = "> "
centered_cursor = "yes"
# Misc
display_bitrate = "yes"
enable_window_title = "yes"
empty_tag_marker = ""

46
.config/newsboat/config Normal file
View File

@ -0,0 +1,46 @@
auto-reload yes
unbind-key j
unbind-key k
unbind-key h
unbind-key H
unbind-key L
unbind-key c
unbind-key ,
browser "brave -incognito %u"
# Feed settings
prepopulate-query-feeds yes
refresh-on-startup yes
macro w set browser "mpv %u" ; open-in-browser ; set browser "librewolf %u"
# bind keys
bind-key ; macro-prefix
bind-key h quit
bind-key BACKSPACE quit
bind-key j down
bind-key k up
bind-key l open
bind-key H prev-feed
bind-key L next-feed
bind-key c toggle-show-read-feeds
color listnormal color15 default
color listnormal_unread color2 default
color listfocus_unread color2 color0
color listfocus default color0
color background default default
color article default default
color end-of-text-marker color8 default
color info color4 color8
color hint-separator default color8
color hint-description default color8
color title color14 color8
highlight article "^(Feed|Title|Author|Link|Date): .+" color4 default bold
highlight article "^(Feed|Title|Author|Link|Date):" color14 default bold
highlight article "\\((link|image|video)\\)" color8 default
highlight article "https?://[^ ]+" color4 default
highlight article "\[[0-9]+\]" color6 default bold

17
.config/newsboat/urls Normal file
View File

@ -0,0 +1,17 @@
"---NEWS---"
https://news.ycombinator.com/rss
https://blog.rust-lang.org/feed.xml "programming"
https://www.archlinux.org/feeds/news/ "tech"
https://artixlinux.org/feed.php "tech"
https://matklad.github.io/feed.xml "programming"
https://fasterthanli.me/index.xml "programming"
https://thesquareplanet.com/feed.xml
https://gnulinuxindia.org/index.xml
https://cedaei.com/index.xml
https://krolyxon.xyz/rss.xml
https://lukesmith.xyz/rss.xml
https://landchad.net/rss
https://togglebit.io/atom.xml
https://ben.page/rss

2
.config/npm/npmrc Normal file
View File

@ -0,0 +1,2 @@
cache=~/.cache/npm
prefix=$~/.local/share/npm

2
.config/python/pythonrc Normal file
View File

@ -0,0 +1,2 @@
import readline
readline.write_history_file = lambda *args: None

209
.config/rofi/config.rasi Normal file
View File

@ -0,0 +1,209 @@
configuration {
modi: "run,drun,window";
matching: "fuzzy";
terminal: "foot";
sort: true;
case-sensitive: false;
disable-history: true;
font: "Fira Code 11";
window-format: "{w} · {c} · {t}";
}
* {
rosewater: #f5e0dc;
flamingo: #f2cdcd;
pink: #f5c2e7;
mauve: #cba6f7;
red: #f38ba8;
maroon: #eba0ac;
peach: #fab387;
yellow: #f9e2af;
green: #a6e3a1;
teal: #94e2d5;
sky: #89dceb;
sapphire: #74c7ec;
blue: #89b4fa;
lavender: #b4befe;
text: #cdd6f4;
subtext1: #bac2de;
subtext0: #a6adc8;
overlay2: #9399b2;
overlay1: #7f849c;
overlay0: #6c7086;
surface2: #585b70;
surface1: #45475a;
surface0: #313244;
base: #1e1e2e;
mantle: #181825;
crust: #11111b;
}
* {
selected-active-foreground: @background;
lightfg: @text;
separatorcolor: @foreground;
urgent-foreground: @red;
alternate-urgent-background: @lightbg;
lightbg: @mantle;
background-color: transparent;
border-color: @foreground;
normal-background: @background;
selected-urgent-background: @red;
alternate-active-background: @lightbg;
spacing: 2;
alternate-normal-foreground: @foreground;
urgent-background: @background;
selected-normal-foreground: @lightbg;
active-foreground: @blue;
background: @base;
selected-active-background: @blue;
active-background: @background;
selected-normal-background: @lightfg;
alternate-normal-background: @lightbg;
foreground: @text;
selected-urgent-foreground: @background;
normal-foreground: @foreground;
alternate-urgent-foreground: @red;
alternate-active-foreground: @blue;
}
element {
cursor: pointer;
spacing: 5px ;
border: 0;
}
element normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
element normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
element normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
element selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
element selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
element selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
element alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
element alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
element alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
element-text {
background-color: transparent;
cursor: inherit;
highlight: inherit;
text-color: inherit;
}
element-icon {
background-color: transparent;
size: 1.0000em ;
cursor: inherit;
text-color: inherit;
}
window {
padding: 5;
background-color: @background;
border: 1;
// width: 100%;
}
mainbox {
padding: 0;
border: 0;
}
message {
padding: 1px ;
border-color: @separatorcolor;
border: 2px dash 0px 0px ;
}
textbox {
text-color: @foreground;
}
listview {
padding: 2px 0px 0px ;
scrollbar: true;
border-color: @separatorcolor;
spacing: 2px ;
fixed-height: 0;
border: 2px dash 0px 0px ;
}
scrollbar {
width: 4px ;
padding: 0;
handle-width: 8px ;
border: 0;
handle-color: @normal-foreground;
}
sidebar {
border-color: @separatorcolor;
border: 2px dash 0px 0px ;
}
button {
cursor: pointer;
spacing: 0;
text-color: @normal-foreground;
}
button selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
num-filtered-rows {
expand: false;
text-color: Gray;
}
num-rows {
expand: false;
text-color: Gray;
}
textbox-num-sep {
expand: false;
str: "/";
text-color: Gray;
}
inputbar {
padding: 1px ;
spacing: 0px ;
text-color: @normal-foreground;
children: [ "prompt","textbox-prompt-colon","entry","num-filtered-rows","textbox-num-sep","num-rows","case-indicator" ];
}
case-indicator {
spacing: 0;
text-color: @normal-foreground;
}
entry {
text-color: @normal-foreground;
cursor: text;
spacing: 0;
placeholder-color: Gray;
placeholder: "Type to filter";
}
prompt {
spacing: 0;
text-color: @normal-foreground;
}
textbox-prompt-colon {
margin: 0px 0.3000em 0.0000em 0.0000em ;
expand: false;
str: ":";
text-color: inherit;
}

61
.config/shell/aliasrc Normal file
View File

@ -0,0 +1,61 @@
#!/bin/sh
# Use neovim for vim if present
[ -x "$(command -v nvim)" ] && alias vim="nvim" vimdiff="nvim -d"
alias \
ls='ls -hN --group-directories-first --color=auto' \
lsa='ls -lAhN --group-directories-first --color=auto' \
dots='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME' \
lf="yazi" \
nb="newsboat" \
sxiv="nsxiv" \
hst="history 1 -1 | cut -c 8- | sort | uniq | fzf | tr -d '\n' | wl-copy" \
# Verbosity and settings that you pretty much just always are going to want.
alias \
cp="cp -iv" \
mv="mv -iv" \
rm="rm -vI" \
yt="yt-dlp --embed-metadata -i -o '%(title)s.%(ext)s'" \
yta="yt -x -f bestaudio/best" \
ytbdl="yt-dlp -f bestvideo+bestaudio -o '%(title)s.%(ext)s' --external-downloader=aria2c" \
ytdl="yt-dlp -f best -o '%(title)s.%(ext)s' --external-downloader=aria2c" \
tsm="transmission-remote" \
tsmd="transmission-daemon"
# yt="yt-dlp --embed-metadata -i -o '%(title)s.%(ext)s' --external-downloader=aria2c" \
alias on="tmux new-session -s notes -c ~/dox/brain 'nvim .'"
alias todo="nvim ~/dox/brain/Todo.md"
# Colorize commands when possible.
alias \
grep="grep --color=auto" \
diff="diff --color=auto" \
ip="ip -color=auto"
# git aliases
alias \
ga='git add' \
gc='git commit' \
gp='git push' \
gC='git clone'
ec() {find ~/.config -type f | fzf | xargs -r $EDITOR ;}
es() { cd ~/.local/bin; $EDITOR $(fzf) ;}
ef() {fzf | xargs -r -I % $EDITOR % ;}
of() {fzf | xargs -r -I % xdg-open % ; }
colors() {
for COLOR in {1..255}; do
echo -en "\e[38;5;${COLOR}m"
echo -n "${COLOR} "
done
echo
}
# movie() {
# filename="$(find ~/movies/ -type f -regex ".*\.\(mkv\|mp4\|mpeg\|avi\|mov\|webm\)" -printf "%f\n" | fzf)"
# filepath="$(find ~/movies/ -type f -regex ".*\.\(mkv\|mp4\|mpeg\|avi\|mov\|webm\)")"
# mpv "$(grep "$filename" <<< "$filepath")"
# }

59
.config/shell/profile Normal file
View File

@ -0,0 +1,59 @@
#!/bin/sh
export EDITOR="nvim"
export TERMINAL="alacritty"
export TERMINAL_PROG="alacritty"
export BROWSER="zen-browser"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
export XDG_CACHE_HOME="$HOME/.cache"
export XAUTHORITY=/tmp/Xauthority # This causes other window managers to break, who cares anyways?
export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc"
export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
export INPUTRC="$XDG_CONFIG_HOME/shell/inputrc"
# export GNUPGHOME="$XDG_DATA_HOME/gnupg"
export PASSWORD_STORE_DIR="$XDG_DATA_HOME/password-store"
export KODI_DATA="$XDG_DATA_HOME/kodi"
export CARGO_HOME="$XDG_DATA_HOME/cargo"
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
export GTK2_RC_FILES="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-2.0/gtkrc-2.0"
#export LESSHISTFILE="-"
export WGETRC="${XDG_CONFIG_HOME:-$HOME/.config}/wget/wgetrc"
export MANPAGER='nvim +Man!'
# export QT_QPA_PLATFORMTHEME="gtk2" # Have QT use gtk2 theme.
export __GL_SHADER_DISK_CACHE_PATH=~/.cache/
export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc"
export PYTHON_HISTORY="$XDG_STATE_HOME/python_history"
export JUPYTER_PLATFORM_DIRS="$XDG_CONFIG_HOME/jupyter"
export MYSQL_HISTFILE="$XDG_CACHE_HOME/.mariadb_history"
export CUDA_CACHE_PATH="$XDG_CACHE_HOME/nv"
# Other program settings
export SUDO_ASKPASS="$HOME/.local/bin/rofipass"
export FZF_DEFAULT_OPTS="--layout=reverse --height 40%"
export ANDROID_SDK_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/android"
export ANDROID_HOME="$HOME/Android/Sdk/"
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads.
export NPM_CONFIG_USERCONFIG="$HOME/.config/npm/npmrc"
export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history
# Adds `~/.local/bin` to $PATH
export PATH="$PATH:${$(find ~/.local/bin -type d -printf %p:)%%:}"
# export PATH=$PATH:$HOME/.local/bin
export PATH=$PATH:$HOME/.local/pbin # private bin
export PATH="$PATH:$XDG_DATA_HOME/cargo/bin"
export MPD_HOST="localhost"
export MPD_PORT="6600"
# Mpd daemon start
[ ! -s ~/.config/mpd/pid ] && mpd
# Start graphical server on user's current tty if not already running.
[ "$(tty)" = "/dev/tty1" ] && ! pidof -s hyprland >/dev/null 2>&1 && exec hyprland

324
.config/swaync/style.css Normal file
View File

@ -0,0 +1,324 @@
* {
all: unset;
font-size: 14px;
font-family: "Ubuntu Nerd Font";
transition: 200ms;
}
trough highlight {
background: #cdd6f4;
}
scale {
margin: 0 7px;
}
scale trough {
margin: 0rem 1rem;
min-height: 8px;
min-width: 70px;
border-radius: 12.6px;
}
trough slider {
margin: -10px;
border-radius: 12.6px;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.8);
transition: all 0.2s ease;
background-color: #89b4fa;
}
trough slider:hover {
box-shadow: 0 0 2px rgba(0, 0, 0, 0.8), 0 0 8px #89b4fa;
}
trough {
background-color: #313244;
}
/* notifications */
.notification-background {
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #45475a;
border-radius: 12.6px;
margin: 18px;
background: #181825;
color: #cdd6f4;
padding: 0;
}
.notification-background .notification {
padding: 7px;
border-radius: 12.6px;
}
.notification-background .notification.critical {
box-shadow: inset 0 0 7px 0 #f38ba8;
}
.notification .notification-content {
margin: 7px;
}
.notification .notification-content overlay {
/* icons */
margin: 4px;
}
.notification-content .summary {
color: #cdd6f4;
}
.notification-content .time {
color: #a6adc8;
}
.notification-content .body {
color: #bac2de;
}
.notification > *:last-child > * {
min-height: 3.4em;
}
.notification-background .close-button {
margin: 7px;
padding: 2px;
border-radius: 6.3px;
color: #1e1e2e;
background-color: #f38ba8;
}
.notification-background .close-button:hover {
background-color: #eba0ac;
}
.notification-background .close-button:active {
background-color: #f5c2e7;
}
.notification .notification-action {
border-radius: 7px;
color: #cdd6f4;
box-shadow: inset 0 0 0 1px #45475a;
margin: 4px;
padding: 8px;
font-size: 0.2rem; /* controls the button size not text size*/
}
.notification .notification-action {
background-color: #313244;
}
.notification .notification-action:hover {
background-color: #45475a;
}
.notification .notification-action:active {
background-color: #585b70;
}
.notification.critical progress {
background-color: #f38ba8;
}
.notification.low progress,
.notification.normal progress {
background-color: #89b4fa;
}
.notification progress,
.notification trough,
.notification progressbar {
border-radius: 12.6px;
padding: 3px 0;
}
/* control center */
.control-center {
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #313244;
border-radius: 12.6px;
background-color: #1e1e2e;
color: #cdd6f4;
padding: 14px;
}
.control-center .notification-background {
border-radius: 7px;
box-shadow: inset 0 0 0 1px #45475a;
margin: 4px 10px;
}
.control-center .notification-background .notification {
border-radius: 7px;
}
.control-center .notification-background .notification.low {
opacity: 0.8;
}
.control-center .widget-title > label {
color: #cdd6f4;
font-size: 1.3em;
}
.control-center .widget-title button {
border-radius: 7px;
color: #cdd6f4;
background-color: #313244;
box-shadow: inset 0 0 0 1px #45475a;
padding: 8px;
}
.control-center .widget-title button:hover {
background-color: #45475a;
}
.control-center .widget-title button:active {
background-color: #585b70;
}
.control-center .notification-group {
margin-top: 10px;
}
scrollbar slider {
margin: -3px;
opacity: 0.8;
}
scrollbar trough {
margin: 2px 0;
}
/* dnd */
.widget-dnd {
margin-top: 5px;
border-radius: 8px;
font-size: 1.1rem;
}
.widget-dnd > switch {
font-size: initial;
border-radius: 8px;
background: #313244;
box-shadow: none;
}
.widget-dnd > switch:checked {
background: #89b4fa;
}
.widget-dnd > switch slider {
background: #45475a;
border-radius: 8px;
}
/* mpris */
.widget-mpris-player {
background: #313244;
border-radius: 12.6px;
color: #cdd6f4;
}
.mpris-overlay {
background-color: #313244;
opacity: 0.9;
padding: 15px 10px;
}
.widget-mpris-album-art {
-gtk-icon-size: 100px;
border-radius: 12.6px;
margin: 0 10px;
}
.widget-mpris-title {
font-size: 1.2rem;
color: #cdd6f4;
}
.widget-mpris-subtitle {
font-size: 1rem;
color: #bac2de;
}
.widget-mpris button {
border-radius: 12.6px;
color: #cdd6f4;
margin: 0 5px;
padding: 2px;
}
.widget-mpris button image {
-gtk-icon-size: 1.8rem;
}
.widget-mpris button:hover {
background-color: #313244;
}
.widget-mpris button:active {
background-color: #45475a;
}
.widget-mpris button:disabled {
opacity: 0.5;
}
.widget-menubar > box > .menu-button-bar > button > label {
font-size: 3rem;
padding: 0.5rem 2rem;
}
.widget-menubar > box > .menu-button-bar > :last-child {
color: #f38ba8;
}
.power-buttons button:hover,
.powermode-buttons button:hover,
.screenshot-buttons button:hover {
background: #313244;
}
.control-center .widget-label > label {
color: #cdd6f4;
font-size: 2rem;
}
.widget-buttons-grid {
padding-top: 1rem;
}
.widget-buttons-grid > flowbox > flowboxchild > button label {
font-size: 2.5rem;
}
.widget-volume {
padding: 1rem 0;
}
.widget-volume label {
color: #74c7ec;
padding: 0 1rem;
}
.widget-volume trough highlight {
background: #74c7ec;
}
.widget-backlight trough highlight {
background: #f9e2af;
}
.widget-backlight label {
font-size: 1.5rem;
color: #f9e2af;
}
.widget-backlight .KB {
padding-bottom: 1rem;
}
.image {
padding-right: 0.5rem;
}

47
.config/tmux/tmux.conf Normal file
View File

@ -0,0 +1,47 @@
# True color settings
set -g default-terminal "$TERM"
set -ag terminal-overrides ",$TERM:Tc"
set -s escape-time 0
set -g prefix2 C-s
unbind C-b
set -g prefix2 C-Space
set -g status-style 'bg=#16161E fg=#ffffff'
set-option -g history-limit 5000
# Numbering Windows and panes
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
bind r source-file ~/.config/tmux/tmux.conf;
# vim keys
# setw -g mode-keys vi
set-window-option -g mode-keys vi
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
# # Remapping movement keys
bind h select-pane -L # Move focus to pane on the left
bind j select-pane -D # Move focus to pane above the current one
bind k select-pane -U # Move focus to pane below the current one
bind l select-pane -R # Move focus to pane on the right
bind Space last-window # Toggle between previously focused window
bind c new-window -c "#{pane_current_path}" # Keep current path
bind-key -r i run-shell "tmux neww tms"
# Resizing panes (notes that is using the uppercase here and resize by 5 chars)
bind -r C-h resize-pane -L 5
bind -r C-j resize-pane -D 5
bind -r C-k resize-pane -U 5
bind -r C-l resize-pane -R 5
# TPM
## Setup: git clone https://github.com/tmux-plugins/tpm plugins/tpm
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'fabioluciano/tmux-tokyo-night'
run '~/.config/tmux/plugins/tpm/tpm'

15
.config/user-dirs.dirs Normal file
View File

@ -0,0 +1,15 @@
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/"
XDG_DOWNLOAD_DIR="$HOME/dl"
XDG_TEMPLATES_DIR="$HOME/"
XDG_PUBLICSHARE_DIR="$HOME/"
XDG_DOCUMENTS_DIR="$HOME/dox"
XDG_MUSIC_DIR="$HOME/music"
XDG_PICTURES_DIR="$HOME/pix"
XDG_VIDEOS_DIR="$HOME/vids"

157
.config/waybar/config.jsonc Normal file
View File

@ -0,0 +1,157 @@
{
// "layer": "top", // Waybar at top layer
"position": "top", // Waybar position (top|bottom|left|right)
"height": 0, // Waybar height (to be removed for auto height)
"width": 0, // Waybar width (0 == auto)
"spacing": 0, // Gaps between modules
// "output": ["HDMI-A-1", "DP-2", "eDP-1"],
// Choose the order of the modules
"modules-left": [
"hyprland/workspaces"
// "hyprland/window",
],
"modules-center" : [
"hyprland/window"
],
"modules-right": [
"custom/gpumode",
"tray",
"pulseaudio",
"battery",
"backlight",
"cpu",
"memory",
// "network",
"custom/date",
"clock",
],
// Modules configuration
"hyprland/workspaces": {
"format": "{icon}",
"format-icons": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "",
"7": "",
"8": "",
"9": "",
"10": "",
"11": "",
"12": "",
"13": "",
"14": "",
"15": "",
"16": "",
"17": "",
"18": "",
"19": "",
"20": "",
"urgent": "",
// "active": "", // focused workspace on current monitor
// "visible": "", // focused workspace on other monitors
// "default": "",
// "default": "", // focused workspace on current monitor
// "empty": "" // persistent
},
"on-scroll-up": "hyprctl dispatch workspace r-1",
"on-scroll-down": "hyprctl dispatch workspace r+1",
"all-outputs": false,
"show-special": false
},
"hyprland/window": {
"format": "󰣇 {}",
"max-length": 50
},
"tray": {
"icon-size": 13,
"spacing": 10
},
"clock": {
"timezone": "Asia/Kolkata",
"tooltip-format": "<tt><big>{calendar}</big></tt>",
"format": "󰥔 {:%H:%M}",
"interval": 5
},
"custom/date": {
"timezone": "Asia/Kolkata",
"exec": "date +'%a %d %b %Y'",
"format": "󰃭 {}",
"interval": 1,
"tooltip": false
},
"custom/gpumode": {
"exec": "~/.config/waybar/scripts/gpu_mode.sh",
"format": "{}",
"interval": "once",
"on-click": "~/.config/waybar/scripts/envyswitch.sh",
},
"cpu": {
"format": " {usage:2}%",
"interval": 1,
"on-click": "$TERMINAL -e htop",
},
"memory": {
"format": " {used:0.1f}G",
"interval": 1,
"on-click": "$TERMINAL -e htop",
},
"network": {
"interval": 5,
"format-wifi": " {essid} ({signalStrength}%)", // Icon: wifi
"format-ethernet": " {ifname}: {ipaddr}/{cidr}", // Icon: ethernet
"format-disconnected": "⚠ Disconnected",
"tooltip-format": "{ifname}: {ipaddr}"
},
"battery": {
"states": {
"good": 90,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity:3}%",
"format-charging": "󰂄 {capacity:3}%",
"format-plugged": " {capacity:3}%",
"format-alt": "{icon} ",
"format-good": "{icon} {capacity:3}%",
"format-full": "{icon} {capacity:3}%",
"format-icons": [
"",
"",
"",
"",
""
]
},
"backlight": {
// "device": "intel_backlight",
"format": "{icon} {percent}%",
"format-icons": ["󰃞", "󰃟", "󰃠"],
"on-scroll-up": "brightnessctl set 1%+",
"on-scroll-down": "brightnessctl set 1%-",
"min-length": 6
},
"pulseaudio": {
"scroll-step": 1, // %, can be a float
"format": "{volume:2}% {icon} {format_source}",
"format-muted": "{volume:2}% 󰝟 {format_source}",
"format-bluetooth": "{volume:2}% {icon}  {format_source}",
"format-source": "",
"format-source-muted": "",
"format-icons": {
"analog": "",
"hdmi": "󰓃",
"headphone": "",
"headset": "󰋎",
"default": [
"", // 0 - 25
"", // 25 - 50
"", // 50 - 75
"" // 75 - 100
]
},
"on-click": "pavucontrol",
},
}

View File

@ -0,0 +1,17 @@
#!/bin/env bash
mode="$(printf "Integrated\nHybrid\nNvidia" | rofi -dmenu -case-smart -matching "fuzzy" -p "Select the graphics mode:")"
# Exit if no selection was made
[ -z "$mode" ] && exit 1
notify-send "Switching to $mode mode..."
# Map mode to envycontrol argument
arg=$(echo "$mode" | tr '[:upper:]' '[:lower:]')
if sudo -A envycontrol -s "$arg"; then
notify-send "Graphics mode set to $mode"
else
notify-send "Failed to set graphics mode to $mode"
fi

View File

@ -0,0 +1,19 @@
#!/bin/bash
mode=$(envycontrol -q | awk '{print $NF}')
case "$mode" in
integrated)
icon=""
;;
hybrid)
icon=""
;;
nvidia)
icon=""
;;
*)
icon=""
;;
esac
echo "$icon $mode"

272
.config/waybar/style.css Normal file
View File

@ -0,0 +1,272 @@
/*
*
* Catppuccin Mocha palette
* Maintainer: rubyowo
*
*/
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;
@define-color text #cdd6f4;
@define-color subtext0 #a6adc8;
@define-color subtext1 #bac2de;
@define-color surface0 #313244;
@define-color surface1 #45475a;
@define-color surface2 #585b70;
@define-color overlay0 #6c7086;
@define-color overlay1 #7f849c;
@define-color overlay2 #9399b2;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color sapphire #74c7ec;
@define-color sky #89dceb;
@define-color teal #94e2d5;
@define-color green #a6e3a1;
@define-color yellow #f9e2af;
@define-color peach #fab387;
@define-color maroon #eba0ac;
@define-color red #f38ba8;
@define-color mauve #cba6f7;
@define-color pink #f5c2e7;
@define-color flamingo #f2cdcd;
@define-color rosewater #f5e0dc;
* {
font-family: "Fira Code", "FontAwesome";
font-weight: bold;
min-height: 0;
/* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
font-size: 97%;
font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
padding: 0.03125rem;
}
window#waybar {
transition-property: background-color;
transition-duration: 0.5s;
background: transparent;
/*border: 2px solid @overlay0;*/
/*background: @theme_base_color;*/
border-radius: 10px;
}
window#waybar.hidden {
opacity: 0.2;
}
#waybar.empty #window {
background: none;
}
/**************/
/* Workspaces */
/**************/
#workspaces {
/* border-radius: 8px; */
padding: 0 3px 0 8px;
margin: 5px 5px 5px 0;
transition: all 0.2s ease;
}
/* non-empty workspaces */
#workspaces button {
background-color: @base;
border: none;
border-radius: 0;
color: @text;
transition: all 0.2s ease;
text-shadow: none;
/* center the icon, no clue why this is necessary */
padding-left: 5px;
padding-right: 10px;
padding-top: 1px;
box-shadow: inset 0 -1px #e3e3e3;
}
/* the first and last buttons should be rounded */
#workspaces button:first-child {
border-top-left-radius: 8px;
border-bottom-left-radius: 8px;
}
#workspaces button:last-child {
border-top-right-radius: 8px;
border-bottom-right-radius: 8px;
}
/* empty persistent workspaces */
#workspaces button.empty {
background-color: @base;
box-shadow: none;
}
#workspaces button:hover {
/* transition-duration: .3s; */
color: @base;
background-color: #7da6ff;
box-shadow: inset 0 -1px #ffffff;
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
text-shadow: inherit;
}
/* non-empty persistent workspaces */
#workspaces button.persistent {
background-color: #4c566a;
}
/* active or visible workspaces */
#workspaces button.active,
#workspaces button.visible {
/* background-color: #4c566a; */
color: @surface0;
background-color: #7da6ff;
/* box-shadow: inset 0 -4px #eceff4; */
}
#workspaces button.urgent {
color: #bf616a;
}
/**************/
#mode {
background-color: #64727D;
border-bottom: 3px solid #ffffff;
}
#clock,
#custom-date,
#custom-gpumode,
#battery,
#backlight,
#cpu,
#memory,
#disk,
#temperature,
#network,
#pulseaudio,
#wireplumber,
#mpris,
#custom-media,
#tray,
#window,
#custom-notification,
#mpd {
background-color: @base;
border-radius: 8px;
padding: 0 12px 0 12px;
margin: 5px 5px 5px 0;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left>widget:first-child>#workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right>widget:last-child>#workspaces {
margin-right: 0;
}
#window {
color: @text
}
#clock {
color: #eceff4;
}
#custom-date {
color: #b48ead;
}
#battery {
color: #ebcb8b;
}
#backlight {
color: @teal
}
@keyframes blink {
to {
background-color: #ffffff;
color: black;
}
}
#battery.critical:not(.charging) {
background-color: #bf616a;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: black;
}
#cpu {
color: #bf616a;
}
#memory {
color: #a3be8c;
}
/* #disk {
background-color: #964B00;
} */
#network {
color: #5e81ac;
}
#network.disconnected {
color: #81a1c1;
}
#network.linked {
color: #bf616a;
}
#pulseaudio {
color: @text;
}
#temperature {
color: #d08770;
}
#temperature.critical {
color: #bf616a;
}
#tray {
color: @subtext0;
}
#tray>.passive {
-gtk-icon-effect: dim;
}
#tray>.needs-attention {
-gtk-icon-effect: highlight;
background-color: #bf616a;
}

1
.config/wget/wgetrc Normal file
View File

@ -0,0 +1 @@
hsts-file=~/.cache/wget-hsts

53
.config/zathura/zathurarc Normal file
View File

@ -0,0 +1,53 @@
set sandbox none
set statusbar-h-padding 0
set statusbar-v-padding 0
set page-padding 1
set selection-clipboard clipboard
map u scroll half-up
map d scroll half-down
map D toggle_page_mode
map r reload
map R rotate
map K zoom in
map J zoom out
map i recolor
map p print
map b toggle_statusbar
set default-fg rgba(205,214,244,1)
set default-bg rgba(30,30,46,1)
set completion-bg rgba(49,50,68,1)
set completion-fg rgba(205,214,244,1)
set completion-highlight-bg rgba(203,166,247,1)
set completion-highlight-fg rgba(30,30,46,1)
set completion-group-bg rgba(24,24,37,1)
set completion-group-fg rgba(205,214,244,1)
set statusbar-fg rgba(205,214,244,1)
set statusbar-bg rgba(17,17,27,1)
set inputbar-fg rgba(205,214,244,1)
set inputbar-bg rgba(30,30,46,1)
set notification-bg rgba(30,30,46,1)
set notification-fg rgba(205,214,244,1)
set notification-error-bg rgba(30,30,46,1)
set notification-error-fg rgba(243,139,168,1)
set notification-warning-bg rgba(30,30,46,1)
set notification-warning-fg rgba(249,226,175,1)
# set recolor "true"
set recolor-lightcolor rgba(30,30,46,1)
set recolor-darkcolor rgba(205,214,244,1)
set index-fg rgba(205,214,244,1)
set index-bg rgba(30,30,46,1)
set index-active-fg rgba(205,214,244,1)
set index-active-bg rgba(49,50,68,1)
set render-loading-bg rgba(30,30,46,1)
set render-loading-fg rgba(205,214,244,1)
set highlight-color rgba(147,153,178,0.3)
set highlight-fg rgba(205,214,244,1)
set highlight-active-color rgba(203,166,247,0.3)

57
.config/zsh/.zshrc Normal file
View File

@ -0,0 +1,57 @@
autoload -U colors && colors # Load colors
PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$reset_color%}$%b "
setopt autocd # Automatically cd into typed directory.
stty stop undef # Disable ctrl-s to freeze terminal.
# History in cache directory:
HISTSIZE=10000
SAVEHIST=10000
HISTFILE=~/.cache/history
# Load aliases if existent.
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
# Basic auto/tab complete:
autoload -U compinit
zstyle ':completion:*' menu select
zmodload zsh/complist
compinit
_comp_options+=(globdots) # Include hidden files.
# vi mode
bindkey -v
export KEYTIMEOUT=1
# Use vim keys in tab complete menu:
bindkey -M menuselect 'h' vi-backward-char
bindkey -M menuselect 'k' vi-up-line-or-history
bindkey -M menuselect 'l' vi-forward-char
bindkey -M menuselect 'j' vi-down-line-or-history
bindkey -v '^?' backward-delete-char
# Change cursor shape for different vi modes.
function zle-keymap-select () {
case $KEYMAP in
vicmd) echo -ne '\e[1 q';; # block
viins|main) echo -ne '\e[5 q';; # beam
esac
}
zle -N zle-keymap-select
zle-line-init() {
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
echo -ne "\e[5 q"
}
zle -N zle-line-init
echo -ne '\e[5 q' # Use beam shape cursor on startup.
preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
# Edit line in vim with ctrl-e:
autoload edit-command-line; zle -N edit-command-line
bindkey '^e' edit-command-line
# Enable searching through history
bindkey '^R' history-incremental-pattern-search-backward
#loeading syntax highlighter and autosgguestions plugin. should be last.
source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh

24
.local/bin/bcn Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
#bcn, Bluetooth Connect
device_amount=$(bluetoothctl devices | wc -l)
if [[ $device_amount = 1 ]]; then
MAC=$(bluetoothctl devices | awk {'print $2'})
[ -z $MAC ] && MAC=NoDeviceFound # Prevents accidental disconnect error
else
select=$(bluetoothctl devices | awk {'print $3'} | rofi -dmenu -l 10 -fn Monospace-15)
MAC=$(bluetoothctl devices | grep $select | awk {'print $2'})
[ -z $MAC ] && MAC=NoDeviceFound # Prevents accidental disconnect error
fi
connect=$(bluetoothctl info $MAC | grep Connected: | awk '{print $2}')
if [[ $connect = no ]]; then
notify-send "Attempting to connect to $select"
bluetoothctl connect $MAC || notify-send "Failed to Connect"
elif [[ $connect = yes ]]; then
notify-send "Attempting to disconnect $select"
bluetoothctl disconnect $MAC
fi

2
.local/bin/cam Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh
mpv --untimed --no-cache --no-osc --no-input-default-bindings --profile=low-latency --input-conf=/dev/null --title=webcam /dev/video0

5
.local/bin/compiletex Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
tmpdir=$(mktemp -d)
pdflatex -output-directory="$tmpdir" "$1"
mv "$tmpdir"/*.pdf .
rm -rf "$tmpdir"

45
.local/bin/ext Executable file
View File

@ -0,0 +1,45 @@
#!/bin/sh
# A general, all-purpose extraction script. Not all extraction programs here
# are installed by LARBS automatically.
#
# Default behavior: Extract archive into new directory
# Behavior with `-c` option: Extract contents into current directory
while getopts "hc" o; do case "${o}" in
c) extracthere="True" ;;
*) printf "Options:\\n -c: Extract archive into current directory rather than a new one.\\n" && exit 1 ;;
esac done
if [ -z "$extracthere" ]; then
archive="$(readlink -f "$*")" &&
directory="$(echo "$archive" | sed 's/\.[^\/.]*$//')" &&
mkdir -p "$directory" &&
cd "$directory" || exit 1
else
archive="$(readlink -f "$(echo "$*" | cut -d' ' -f2)" 2>/dev/null)"
fi
[ -z "$archive" ] && printf "Give archive to extract as argument.\\n" && exit 1
if [ -f "$archive" ] ; then
case "$archive" in
*.tar.bz2|*.tbz2) bsdtar -xf "$archive" ;;
*.tar.xz) bsdtar -xf "$archive" ;;
*.tar.gz|*.tgz) bsdtar -xf "$archive" ;;
*.tar.zst) bsdtar -xf "$archive" ;;
*.tar) bsdtar -xf "$archive" ;;
*.lzma) unlzma "$archive" ;;
*.bz2) bunzip2 "$archive" ;;
*.rar) unrar x -ad "$archive" ;;
*.gz) gunzip "$archive" ;;
*.zip) unzip "$archive" ;;
*.Z) uncompress "$archive" ;;
*.7z) 7z x "$archive" ;;
*.xz) unxz "$archive" ;;
*.exe) cabextract "$archive" ;;
*) printf "extract: '%s' - unknown archive method\\n" "$archive" ;;
esac
else
printf "File \"%s\" not found.\\n" "$archive"
fi

23
.local/bin/madd Executable file
View File

@ -0,0 +1,23 @@
#!/bin/sh
madd() {
queue="$(mpc playlist)"
if [ -z "$queue" ]; then
mpc insert "$filename"
mpc play
else
mpc insert "$filename"
mpc next
fi
}
if [ -t 0 ]; then
filename=$(mpc listall | fzf)
else
filename=$(mpc listall | rofi -dmenu -l 30 -case-smart)
fi
if [ -n "$filename" ]; then
madd
fi

41
.local/bin/mounter Executable file
View File

@ -0,0 +1,41 @@
#!/bin/sh
# Gives a rofi -dmenu prompt to mount unmounted drives. If
# they're in /etc/fstab, they'll be mounted automatically. Otherwise, you'll
# be prompted to give a mountpoint from already existsing directories. If you
# input a novel directory, it will prompt you to create that directory.
getmount() { \
[ -z "$chosen" ] && exit 1
# shellcheck disable=SC2086
mp="$(find $1 2>/dev/null | rofi -dmenu -i -p "Type in mount point.")" || exit 1
test -z "$mp" && exit 1
if [ ! -d "$mp" ]; then
mkdiryn=$(printf "No\\nYes" | rofi -dmenu -i -p "$mp does not exist. Create it?") || exit 1
[ "$mkdiryn" = "Yes" ] && (mkdir -p "$mp" || sudo -A mkdir -p "$mp")
fi
}
mountusb() { \
chosen="$(echo "$usbdrives" | rofi -dmenu -i -p "Mount which drive?")" || exit 1
chosen="$(echo "$chosen" | awk '{print $1}')"
sudo -A mount "$chosen" 2>/dev/null && notify-send "💻 USB mounting" "$chosen mounted." && exit 0
alreadymounted=$(lsblk -nrpo "name,type,mountpoint" | awk '$3!~/\/boot|\/home$|SWAP/&&length($3)>1{printf "-not ( -path *%s -prune ) ",$3}')
getmount "/mnt /media /mount /home -maxdepth 5 -type d $alreadymounted"
partitiontype="$(lsblk -no "fstype" "$chosen")"
case "$partitiontype" in
"vfat") sudo -A mount -t vfat "$chosen" "$mp" -o rw,umask=0000;;
"exfat") sudo -A mount "$chosen" "$mp" -o uid="$(id -u)",gid="$(id -g)";;
*) sudo -A mount "$chosen" "$mp"; user="$(whoami)"; ug="$(groups | awk '{print $1}')"; sudo -A chown "$user":"$ug" "$mp";;
esac
notify-send "💻 USB mounting" "$chosen mounted to $mp."
}
usbdrives="$(lsblk -rpo "name,type,size,mountpoint" | grep 'part\|rom' | awk '$4==""{printf "%s (%s)\n",$1,$3}')"
if [ -z "$usbdrives" ]; then
echo "No USB drive detected" && exit
else
echo "USB drive(s) detected."
mountusb
fi

12
.local/bin/movie Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
if [ -t 0 ]; then
filename="$(find ~/media/movies/ -type f -regex ".*\.\(mkv\|mp4\|mpeg\|avi\|mov\|webm\)" -printf "%f\n" | sort | fzf)"
else
filename="$(find ~/media/movies/ -type f -regex ".*\.\(mkv\|mp4\|mpeg\|avi\|mov\|webm\)" -printf "%f\n" | sort | rofi -case-smart -matching "fuzzy" -dmenu -l 25)"
fi
filepath="$(find ~/media/movies/ -type f -regex ".*\.\(mkv\|mp4\|mpeg\|avi\|mov\|webm\)")"
mpv "$(grep "$filename" <<< "$filepath")"

9
.local/bin/rofipass Executable file
View File

@ -0,0 +1,9 @@
#!/bin/sh
#
# Take password prompt from STDIN, print password to STDOUT
# the sed piece just removes the colon from the provided
# prompt: rofi -p already gives us a colon
rofi -dmenu \
-password \
-no-fixed-num-lines \
-p "$(printf "$1" | sed s/://)"

13
.local/bin/rofiunicode Executable file
View File

@ -0,0 +1,13 @@
#!/bin/sh
# The famous "get a menu of emojis to copy" script.
# Get user selection via dmenu from emoji file.
chosen=$(cut -d ';' -f1 ~/.local/share/chars/* | rofi -dmenu -i -l 30 | sed "s/ .*//")
# Exit if none chosen.
[ -z "$chosen" ] && exit
wtype "$chosen"
printf "$chosen" | wl-copy
notify-send "'$chosen' copied to clipboard." &

18
.local/bin/screenshot Executable file
View File

@ -0,0 +1,18 @@
#!/bin/sh
ocr_cmd="wl-copy"
case "$(printf "a selected area (copy)\ncurrent window (copy)\nfull screen (copy)\na selected area\ncurrent window\nfull screen\na selected area (OCR)" | rofi -dmenu -l 7 -i -p "Screenshot which area?")" in
"a selected area (copy)") hyprshot -m region --clipboard-only ;;
"current window (copy)") hyprshot -m window --clipboard-only ;;
"full screen (copy)") hyprshot -m output --clipboard-only ;;
"a selected area") hyprshot -m region -o ~/pix/ss -f "pic-selected-$(uuidgen | awk -F- '{printf $2}')-$(date '+%y-%m-%d').png" ;;
"current window") hyprshot -m window -o ~/pix/ss -f "pic-window-$(uuidgen | awk -F- '{printf $2}')-$(date '+%y-%m-%d').png" ;;
"full screen") hyprshot -m output -o ~/pix/ss -f "pic-full-$(uuidgen | awk -F- '{printf $2}')-$(date '+%y-%m-%d').png" ;;
"a selected area (OCR)") tmpfile=$(mktemp /tmp/ocr-XXXXXX.png) && \
hyprshot -m region -o "$(dirname "$tmpfile")" -f "$(basename "$tmpfile")" && \
tesseract "$tmpfile" - -l eng | ${ocr_cmd} && rm "$tmpfile" ;;
esac

52
.local/bin/setwall Executable file
View File

@ -0,0 +1,52 @@
#!/bin/bash
WALL_DIR="$HOME/pix/wallpapers/onedarkwallpapers/"
MODE="random"
CUSTOM_PATH=""
# Parse options
while getopts ":mp:" opt; do
case $opt in
m) MODE="menu" ;;
p) MODE="path"; CUSTOM_PATH="$OPTARG" ;;
\?) echo "Usage: $0 [-m] [-p /path/to/image]" >&2; exit 1 ;;
:) echo "Option -$OPTARG requires an argument." >&2; exit 1 ;;
esac
done
# Choose wallpaper
case $MODE in
random)
NEW_WALL=$(find "$WALL_DIR" -type f | shuf -n 1)
;;
path)
if [[ -f "$CUSTOM_PATH" ]]; then
NEW_WALL="$CUSTOM_PATH"
else
echo "Error: File not found -> $CUSTOM_PATH" >&2
exit 1
fi
;;
menu)
WALLPAPER_LIST=$(find "$WALL_DIR" -type f | sort | sed "s|$WALL_DIR||")
CHOSEN=$(echo "$WALLPAPER_LIST" | rofi -dmenu -i -p "Choose wallpaper:")
if [[ -z "$CHOSEN" ]]; then
NEW_WALL=$(find "$WALL_DIR" -type f | shuf -n 1)
else
NEW_WALL="$WALL_DIR$CHOSEN"
fi
;;
esac
# Apply wallpaper
if ! pgrep -x hyprpaper >/dev/null; then
# Hyprpaper not running → start with chosen wallpaper
cat > ~/.config/hypr/hyprpaper.conf <<EOF
preload = $NEW_WALL
wallpaper = ,$NEW_WALL
EOF
hyprpaper &
else
# Hyprpaper is running → change it live
hyprctl hyprpaper preload "$NEW_WALL"
hyprctl hyprpaper wallpaper ",$NEW_WALL"
fi

23
.local/bin/sysact Executable file
View File

@ -0,0 +1,23 @@
#!/bin/sh
export WM="Hyprland"
case "$(readlink -f /sbin/init)" in
*systemd*) ctl='systemctl' ;;
*) ctl='loginctl' ;;
esac
wmpid(){ # Get Hyprland process PID
pgrep -o hyprland
}
case "$(printf " lock\n󰠚 leave $WM\n renew $WM\n󱣻 hibernate\n reboot\n shutdown\n sleep\n display off" | rofi -dmenu -i -l 15 -p 'Action: ')" in
' lock') hyprlock ;;
"󰠚 leave $WM") kill -TERM "$(wmpid)" ;;
" renew $WM") hyprctl reload ;;
'󱣻 hibernate') $ctl hibernate -i ;;
' sleep') $ctl suspend -i ;;
' reboot') $ctl reboot -i ;;
' shutdown') $ctl poweroff -i ;;
' display off') hyprctl dispatch dpms off ;;
*) exit 1 ;;
esac

25
.local/bin/tms Executable file
View File

@ -0,0 +1,25 @@
#!/bin/env bash
if [[ $# -eq 1 ]]; then
selected=$1;
else
selected=$(find ~/code/dev ~/code/repos ~/code/rust -mindepth 1 -maxdepth 1 -type d | fzf);
fi
if [[ -z $selected ]]; then
exit 0
fi
selected_name=$(basename "$selected" | tr . _)
tmux_running=$(pgrep tmux)
if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then
tmux new-session -s $selected_name -c $selected
exit 0
fi
if ! tmux has-session -t=$selected_name 2> /dev/null; then
tmux new-session -ds $selected_name -c $selected
fi
tmux switch-client -t $selected_name

14
.local/bin/transadd Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
# Starting transmission-daemon if not already running
# transmission-daemon sometimes fails to take remote requests in its first moments, hence the sleep.
pidof transmission-daemon >/dev/null || (transmission-daemon && notify-send "Starting transmission daemon...")
sleep 3
# adding the Torrent
if [ -z "$*" ]; then
magnetlink="$(wl-paste)"
transmission-remote -a "$magnetlink" && notify-send "🔽 Torrent added."
else
transmission-remote -a "$@" && notify-send "🔽 Torrent added."
fi

83
.local/bin/ufetch Executable file
View File

@ -0,0 +1,83 @@
#!/bin/sh
#
# ufetch-arch - tiny system info for arch
## INFO
# user is already defined
host="$(cat /etc/hostname)"
os='Arch Linux'
kernel="$(uname -sr)"
uptime="$(uptime -p | sed 's/up //')"
packages="$(pacman -Q | wc -l)"
shell="$(basename "${SHELL}")"
## UI DETECTION
parse_rcs() {
for f in "${@}"; do
wm="$(tail -n 1 "${f}" 2> /dev/null | cut -d ' ' -f 2)"
[ -n "${wm}" ] && echo "${wm}" && return
done
}
rcwm="$(parse_rcs "${HOME}/.xinitrc" "${HOME}/.xsession")"
ui='unknown'
uitype='UI'
if [ -n "${DE}" ]; then
ui="${DE}"
uitype='DE'
elif [ -n "${WM}" ]; then
ui="${WM}"
uitype='WM'
elif [ -n "${XDG_CURRENT_DESKTOP}" ]; then
ui="${XDG_CURRENT_DESKTOP}"
uitype='DE'
elif [ -n "${DESKTOP_SESSION}" ]; then
ui="${DESKTOP_SESSION}"
uitype='DE'
elif [ -n "${rcwm}" ]; then
ui="${rcwm}"
uitype='WM'
elif [ -n "${XDG_SESSION_TYPE}" ]; then
ui="${XDG_SESSION_TYPE}"
fi
ui="$(basename "${ui}")"
## DEFINE COLORS
# probably don't change these
if [ -x "$(command -v tput)" ]; then
bold="$(tput bold)"
black="$(tput setaf 0)"
red="$(tput setaf 1)"
green="$(tput setaf 2)"
yellow="$(tput setaf 3)"
blue="$(tput setaf 4)"
magenta="$(tput setaf 5)"
cyan="$(tput setaf 6)"
white="$(tput setaf 7)"
reset="$(tput sgr0)"
fi
# you can change these
lc="${reset}${bold}${blue}" # labels
nc="${reset}${bold}${blue}" # user and hostname
ic="${reset}" # info
c0="${reset}${blue}" # first color
## OUTPUT
cat <<EOF
${c0} /\\ ${nc}${USER}${ic}@${nc}${host}${reset}
${c0} / \\ ${lc}OS: ${ic}${os}${reset}
${c0} /\\ \\ ${lc}KERNEL: ${ic}${kernel}${reset}
${c0} / __ \\ ${lc}UPTIME: ${ic}${uptime}${reset}
${c0} / ( ) \\ ${lc}PACKAGES: ${ic}${packages}${reset}
${c0} / __| |__\\\\ ${lc}SHELL: ${ic}${shell}${reset}
${c0} /.\` \`.\\ ${lc}${uitype}: ${ic}${ui}${reset}
EOF

22
.local/bin/unmounter Executable file
View File

@ -0,0 +1,22 @@
#!/bin/sh
# A rofi -dmenu prompt to unmount drives.
# Provides you with mounted partitions, select one to unmount.
# Drives mounted at /, /boot and /home will not be options to unmount.
unmountusb() {
[ -z "$drives" ] && exit
chosen="$(echo "$drives" | rofi -dmenu -i -p "Unmount which drive?")" || exit 1
chosen="$(echo "$chosen" | awk '{print $1}')"
[ -z "$chosen" ] && exit
sudo -A umount "$chosen" && notify-send "💻 USB unmounting" "$chosen unmounted."
}
drives=$(lsblk -nrpo "name,type,size,mountpoint,label" | awk -F':' '{gsub(/ /,":")}$4!~/\/boot|\/efi|\/home$|SWAP/&&length($4)>1{printf "%s (%s) %s\n",$4,$3,$5}')
if [ -z "$drives" ]; then
echo "No drives to unmount." && exit
else
echo "Unmountable USB drive detected."
unmountusb
fi

13
.local/bin/upfile Executable file
View File

@ -0,0 +1,13 @@
#!/bin/sh
if [ -n "$1" ]; then
file=$1
else
file=$(find . -maxdepth 2 -type f | fzf)
fi
[ -z "$file" ] && exit
# curl -F"file=@$file" 0x0.st | xclip -sel c
curl -F"file=@$file" 0.vern.cc | xclip -sel c
notify-send "The url has been copied to your clipboard. $(xclip -sel c -o)"

46
.local/bin/vimv Executable file
View File

@ -0,0 +1,46 @@
#!/usr/bin/env bash
set -eu
# Lists the current directory's files in Vim, so you can edit it and save to rename them
# USAGE: vimv [file1 file2]
# https://github.com/thameera/vimv
declare -r FILENAMES_FILE=$(mktemp "${TMPDIR:-/tmp}/vimv.XXX")
trap '{ rm -f "${FILENAMES_FILE}" ; }' EXIT
if [ $# -ne 0 ]; then
src=( "$@" )
else
# in this line where is says src=($(ls)), you can change the "ls" to "exa"
# if you want the proper number sorting.
IFS=$'\r\n' GLOBIGNORE='*' command eval 'src=($(ls))'
fi
for ((i=0;i<${#src[@]};++i)); do
echo "${src[i]}" >> "${FILENAMES_FILE}"
done
${EDITOR:-vi} "${FILENAMES_FILE}"
IFS=$'\r\n' GLOBIGNORE='*' command eval 'dest=($(cat "${FILENAMES_FILE}"))'
if (( ${#src[@]} != ${#dest[@]} )); then
echo "WARN: Number of files changed. Did you delete a line by accident? Aborting.." >&2
exit 1
fi
declare -i count=0
for ((i=0;i<${#src[@]};++i)); do
if [ "${src[i]}" != "${dest[i]}" ]; then
mkdir -p "$(dirname "${dest[i]}")"
if git ls-files --error-unmatch "${src[i]}" > /dev/null 2>&1; then
git mv "${src[i]}" "${dest[i]}"
else
mv "${src[i]}" "${dest[i]}"
fi
((++count))
fi
done
echo "$count" files renamed.

158
.local/bin/waldl Executable file
View File

@ -0,0 +1,158 @@
#!/bin/sh
# https://github.com/pystardust/waldl
# script to find and download wallpapers from wallhaven
version="0.0.1"
# Usage:
# waldl <query>
# if query left empty then sh_menu will be used (dmenu by default)
# after the thumbnails are cached, nsxiv would open up with the thumbnails
# Select the wallpapers using `m` on the image. ( marking the image in nsxiv )
# press `q` to quit nsxiv, the marked images would start downloading
####################
## User variables ##
####################
# the dir where wallpapers are stored
walldir="$HOME/pix/wallhaven"
# the dir used to cache thumbnails
cachedir="$HOME/.cache/wallhaven"
# nsxiv options
nsxiv_otps=" -tfpo -z 200" # o is needed for selection
# number of pages to show in search results
# each page contains 24 results
max_pages=4
# sorting : date_added, relevance, random, views, favorites, toplist
sorting=relevance
# quality : large original small
quality=large
# atleast : least res
atleast=1920x1080
# the menu command used when no query is provided
sh_menu () {
: | dmenu -p "search wallhaven: "
# ROFI: comment the previous line and uncomment the next line for rofi
# rofi -dmenu -l 0 -p "search wallpapers"
}
##########################
## getting search query ##
##########################
[ -n "$*" ] && query="$*" || query=$( sh_menu )
[ -z "$query" ] && exit 1
query=$(printf '%s' "$query" | tr ' ' '+' )
######################
## start up commands #
######################
rm -rf "$cachedir"
mkdir -p "$walldir" "$cachedir"
# progress display command
sh_info () {
printf "%s\n" "$1" >&2
notify-send "wallhaven" "$1"
[ -n "$2" ] && exit "$2"
}
# dependency checking
dep_ck () {
for pr; do
command -v $pr >/dev/null 2>&1 || sh_info "command $pr not found, install: $pr" 1
done
}
dep_ck "nsxiv" "curl" "jq"
# clean up command that would be called when the program exits
clean_up () {
printf "%s\n" "cleaning up..." >&2
rm -rf "$datafile" "$cachedir"
}
# data file to store the api information
datafile="/tmp/wald.$$"
# clean up if killed
trap "exit" INT TERM
trap "clean_up" EXIT
##################
## getting data ##
##################
# request the search results for each page
get_results () {
for page_no in $(seq $max_pages)
do
{
json=$(curl -s -G "https://wallhaven.cc/api/v1/search" \
-d "q=$1" \
-d "page=$page_no" \
-d "atleast=$atleast" \
-d "sorting=$sorting"
)
printf "%s\n" "$json" >> "$datafile"
} &
sleep 0.001
done
wait
}
# search wallpapers
sh_info "getting data..."
get_results "$query"
# check if data file is empty, if so then exit
[ -s "$datafile" ] || sh_info "no images found" 1
############################
## downloading thumbnails ##
############################
# get a list of thumnails from the data
thumbnails=$( jq -r '.data[]?|.thumbs.'"$quality" < "$datafile")
[ -z "$thumbnails" ] && sh_info "no-results found" 1
# download the thumbnails
sh_info "caching thumbnails..."
for url in $thumbnails
do
printf "url = %s\n" "$url"
printf "output = %s\n" "$cachedir/${url##*/}"
done | curl -Z -K -
#sh_info "downloaded thumbnails..."
###########################
## user selection (nsxiv) ##
###########################
# extract the id's out of the thumbnail name
image_ids="$(nsxiv $sxiv_otps "$cachedir")"
[ -z "$image_ids" ] && exit
#########################
## download wallpapers ##
#########################
# download the selected wall papers
mkdir "$walldir/$query"
cd "$walldir/$query"
sh_info "downloading wallpapers..."
for ids in $image_ids
do
ids="${ids##*/}"
ids="${ids%.*}"
url=$( jq -r '.data[]?|select( .id == "'$ids'" )|.path' < "$datafile" )
printf "url = %s\n" "$url"
printf -- "-O\n"
done | curl -K -
sh_info "wallpapers downloaded in:- '$walldir/$query'"
nsxiv $(ls -c)

View File

@ -0,0 +1,4 @@
[Desktop Entry]
Type=Application
Name=File Manager
Exec=/usr/bin/alacritty -e yazi %u

View File

@ -0,0 +1,4 @@
[Desktop Entry]
Type=Application
Name=Image viewer
Exec=/usr/local/bin/nsxiv -a %f

View File

@ -0,0 +1,4 @@
[Desktop Entry]
Type=Application
Name=PDF reader
Exec=/usr/bin/zathura %u

View File

@ -0,0 +1,4 @@
[Desktop Entry]
Type=Application
Name=RSS feed addition
Exec=/usr/bin/env rssadd %U

View File

@ -0,0 +1,4 @@
[Desktop Entry]
Type=Application
Name=Text editor
Exec=/usr/local/bin/st -e nvim %u

View File

@ -0,0 +1,4 @@
[Desktop Entry]
Type=Application
Name=Torrent
Exec=/usr/bin/env transadd %U

View File

@ -0,0 +1,4 @@
[Desktop Entry]
Type=Application
Name=Video Player
Exec=/usr/bin/mpv %f

1630
.local/share/chars/emoji Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1
.stow-local-ignore Normal file
View File

@ -0,0 +1 @@
.git

1
.zprofile Symbolic link
View File

@ -0,0 +1 @@
.config/shell/profile