Compare commits
17 Commits
83f3e3158a
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
88cca79368
|
|||
|
5857d4a0ed
|
|||
|
7f9b095859
|
|||
|
6d3b2e7445
|
|||
|
5c84263502
|
|||
|
469aa14b5d
|
|||
|
cc3ceda272
|
|||
|
9287396d75
|
|||
|
3db24e33d4
|
|||
|
f1d33ebd85
|
|||
|
33f640a9d3
|
|||
|
7185cde498
|
|||
|
881212698b
|
|||
|
c23af7303a
|
|||
|
89dfbfa617
|
|||
|
c6b2087533
|
|||
|
98f74130a3
|
@@ -6,9 +6,14 @@
|
||||
*/
|
||||
|
||||
export function setWallpaper(wallpaperPath) {
|
||||
OS.exec(["hyprctl", "-q", "hyprpaper unload all"]);
|
||||
OS.exec(["hyprctl", "-q", `hyprpaper preload ${wallpaperPath}`]);
|
||||
OS.exec(["hyprctl", "-q", `hyprpaper wallpaper ,${wallpaperPath}`]);
|
||||
// OS.exec(["hyprctl", "-q", "hyprpaper unload all"]);
|
||||
// OS.exec(["hyprctl", "-q", `hyprpaper wallpaper ,${wallpaperPath}`]);
|
||||
|
||||
// For swww
|
||||
OS.exec(["swww", "img", wallpaperPath, "--transition-type=any", "--transition-duration=1"]);
|
||||
|
||||
// For hyprpaper
|
||||
// OS.exec(["hyprctl", "-q", `hyprpaper reload , ${wallpaperPath}`]);
|
||||
|
||||
// SYMLINK
|
||||
// Extract directory and extension
|
||||
@@ -22,8 +27,8 @@ export function setWallpaper(wallpaperPath) {
|
||||
const lockpaperPath = `${directory}lockpaper${extension}`;
|
||||
|
||||
// DELETE ANY OLD IMAGES
|
||||
OS.exec(["zsh", "-c", `rm ${directory}lockpaper*`]);
|
||||
//OS.exec(["zsh", "-c", `rm ${directory}lockpaper*`]);
|
||||
// Create symlink from wallpaper to lockpaper
|
||||
OS.exec(["zsh", "-c", `ln -s ${wallpaperPath} ${lockpaperPath}`]);
|
||||
//OS.exec(["zsh", "-c", `ln -s ${wallpaperPath} ${lockpaperPath}`]);
|
||||
OS.exec(["zsh", "-c", `ln -sf ${wallpaperPath} /home/nathan/.config/lockpaper`]);
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ function adjustColorForReadability(background, foreground) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return fg.toHexString();
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
BIN
.config/backgrounds/Blue_Mountains_01.jpg
LFS
Normal file
BIN
.config/backgrounds/Blue_Mountains_01.jpg
LFS
Normal file
Binary file not shown.
BIN
.config/backgrounds/Blue_Mountains_02.jpg
LFS
Normal file
BIN
.config/backgrounds/Blue_Mountains_02.jpg
LFS
Normal file
Binary file not shown.
BIN
.config/backgrounds/Blue_Mountains_03.jpg
LFS
Normal file
BIN
.config/backgrounds/Blue_Mountains_03.jpg
LFS
Normal file
Binary file not shown.
BIN
.config/backgrounds/Selwyn_01.jpg
LFS
Normal file
BIN
.config/backgrounds/Selwyn_01.jpg
LFS
Normal file
Binary file not shown.
BIN
.config/backgrounds/Square_Rock_01.jpeg
LFS
Normal file
BIN
.config/backgrounds/Square_Rock_01.jpeg
LFS
Normal file
Binary file not shown.
BIN
.config/backgrounds/Square_Rock_02.jpeg
LFS
Normal file
BIN
.config/backgrounds/Square_Rock_02.jpeg
LFS
Normal file
Binary file not shown.
BIN
.config/backgrounds/Square_Rock_03.jpeg
LFS
Normal file
BIN
.config/backgrounds/Square_Rock_03.jpeg
LFS
Normal file
Binary file not shown.
BIN
.config/backgrounds/Square_Rock_04.jpeg
LFS
Normal file
BIN
.config/backgrounds/Square_Rock_04.jpeg
LFS
Normal file
Binary file not shown.
BIN
.config/backgrounds/Square_Rock_05.jpg
LFS
Normal file
BIN
.config/backgrounds/Square_Rock_05.jpg
LFS
Normal file
Binary file not shown.
BIN
.config/backgrounds/Square_Rock_06.jpg
LFS
Normal file
BIN
.config/backgrounds/Square_Rock_06.jpg
LFS
Normal file
Binary file not shown.
BIN
.config/backgrounds/Square_Rock_07.jpg
LFS
Normal file
BIN
.config/backgrounds/Square_Rock_07.jpg
LFS
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,9 +1,8 @@
|
||||
#? Config file for btop v. 1.4.0
|
||||
#? Config file for btop v. 1.4.5
|
||||
|
||||
#* 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 = "$HOME/.config/btop/themes/catppuccin_macchiato.theme"
|
||||
color_theme = "WallRizz.theme"
|
||||
color_theme = "catppuccin_macciato"
|
||||
|
||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||
theme_background = False
|
||||
@@ -51,7 +50,7 @@ graph_symbol_net = "default"
|
||||
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"
|
||||
shown_boxes = "cpu mem net proc"
|
||||
|
||||
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
||||
update_ms = 2000
|
||||
@@ -116,6 +115,9 @@ cpu_bottom = False
|
||||
#* Shows the system uptime in the CPU box.
|
||||
show_uptime = True
|
||||
|
||||
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
|
||||
show_cpu_watts = True
|
||||
|
||||
#* Show cpu temperature.
|
||||
check_temp = True
|
||||
|
||||
@@ -151,7 +153,7 @@ background_update = True
|
||||
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".
|
||||
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
|
||||
disks_filter = ""
|
||||
|
||||
#* Show graphs instead of meters for memory values.
|
||||
@@ -211,6 +213,9 @@ 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 = False
|
||||
|
||||
@@ -227,6 +232,9 @@ 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
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"allowDuplicates": false,
|
||||
"historyFile": "clipboard_history.json",
|
||||
"maxHistory": 1000,
|
||||
"maxHistory": 40,
|
||||
"logFile": "clipse.log",
|
||||
"themeFile": "custom_theme.json",
|
||||
"tempDir": "tmp_files",
|
||||
|
||||
12
.config/hypr/README.md
Normal file
12
.config/hypr/README.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# Hyprland README
|
||||
|
||||
After updating you need to update hyprland packages to the latest version.
|
||||
```sh
|
||||
hyprpm update
|
||||
```
|
||||
|
||||
## Current plugins
|
||||
virtual-desktops: https://github.com/levnikmyskin/hyprland-virtual-desktops
|
||||
hyprexpo: https://github.com/hyprwm/hyprland-plugins
|
||||
DarkWindow: https://github.com/micha4w/Hypr-DarkWindow
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor=,preferred,auto,1
|
||||
monitor=desc:Samsung Electric Company C34H89x H4ZR900171, highrr, auto, 1
|
||||
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
@@ -21,6 +22,14 @@ source = ~/.config/hypr/start-exec.conf
|
||||
source = ~/.config/hypr/windowrules.conf
|
||||
source = ~/.config/hypr/before-exit.conf
|
||||
source = ~/.config/hypr/keybinds.conf
|
||||
|
||||
# Plugins
|
||||
# hyprlang noerror true
|
||||
source = ~/.config/hypr/plugins/split-monitor-workspaces.conf
|
||||
|
||||
# hyprlang noerror false
|
||||
|
||||
|
||||
env = HYPRSHOT_DIR,/home/$USER/Pictures/Screenshots
|
||||
env = XDG_MENU_PREFIX,arch-
|
||||
|
||||
@@ -28,12 +37,15 @@ env = XDG_MENU_PREFIX,arch-
|
||||
env = XCURSOR_SIZE,24
|
||||
env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
|
||||
|
||||
# Try to fix some electron apps
|
||||
env = ELECTRON_OZONE_PLATFORM_HINT,auto
|
||||
|
||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_options = caps:none
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
@@ -46,7 +58,6 @@ input {
|
||||
|
||||
sensitivity = 0 # -1.0 to 1.0, 0 means no modification.
|
||||
}
|
||||
|
||||
general {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
@@ -75,8 +86,8 @@ decoration {
|
||||
rounding = 10
|
||||
rounding_power = 2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
active_opacity = 0.9
|
||||
inactive_opacity = 0.75
|
||||
fullscreen_opacity = 1
|
||||
@@ -130,8 +141,9 @@ master {
|
||||
}
|
||||
|
||||
gestures {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
workspace_swipe = true
|
||||
# See https://wiki.hyprland.org/Configuring/Guestures/ for more
|
||||
gesture = 3, horizontal, workspace
|
||||
gesture = 3, vertical, special, terminal
|
||||
}
|
||||
|
||||
cursor {
|
||||
@@ -140,30 +152,25 @@ cursor {
|
||||
|
||||
misc {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
force_default_wallpaper = 1
|
||||
disable_splash_rendering = 1
|
||||
disable_hyprland_logo = 1
|
||||
focus_on_activate = 0 # This breaks vdesks
|
||||
focus_on_activate = 1 # This breaks vdesks
|
||||
anr_missed_pings = 10
|
||||
}
|
||||
ecosystem {
|
||||
no_donation_nag = 1
|
||||
}
|
||||
# hyprlang noerror true
|
||||
|
||||
plugin {
|
||||
virtual-desktops {
|
||||
names = 1:Coding, 2:Internet, 3:3,4:4, 5:Social
|
||||
cycleworkspaces = 0
|
||||
rememberlayout = none
|
||||
notifyinit = 0
|
||||
verbose_logging = 0
|
||||
}
|
||||
}
|
||||
|
||||
plugin {
|
||||
hyprexpo {
|
||||
columns = 3
|
||||
gap_size = 5
|
||||
bg_col = rgb(111111)
|
||||
workspace_method = center current # [center/first] [workspace] e.g. first 1 or center m+1
|
||||
workspace_method = first 1 # [center/first] [workspace] e.g. first 1 or center m+1
|
||||
|
||||
enable_gesture = true # laptop touchpad
|
||||
enable_gesture = false # laptop touchpad
|
||||
gesture_fingers = 3 # 3 or 4
|
||||
gesture_distance = 300 # how far is the "max"
|
||||
gesture_positive = true # positive = swipe down. Negative = swipe up.
|
||||
@@ -171,7 +178,9 @@ plugin {
|
||||
}
|
||||
|
||||
# hyprlang noerror false
|
||||
|
||||
debug {
|
||||
disable_logs = false
|
||||
}
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||
|
||||
@@ -1,8 +1,19 @@
|
||||
$font=Fira Code
|
||||
|
||||
|
||||
auth {
|
||||
fingerprint {
|
||||
enabled = true
|
||||
ready_message = Scan fingerprint to unlock
|
||||
present_message = Scanning...
|
||||
retry_delay = 250 # in milliseconds
|
||||
}
|
||||
}
|
||||
# GENERAL
|
||||
general {
|
||||
hide_cursor = true
|
||||
screencopy_mode = 0
|
||||
immediate_render = false
|
||||
}
|
||||
|
||||
animation {
|
||||
@@ -12,29 +23,111 @@ animation {
|
||||
|
||||
# BACKGROUND
|
||||
background {
|
||||
path = $HOME/.config/lockpaper
|
||||
|
||||
reload_time = 15
|
||||
reload_cmd = echo $HOME/.config/lockpaper
|
||||
blur_passes = 0
|
||||
path = screenshot
|
||||
blur_passes = 2
|
||||
#reload_time = 15
|
||||
#reload_cmd = echo $HOME/.config/lockpaper
|
||||
# blur_passes = 0
|
||||
crossfade_time = 1
|
||||
}
|
||||
# TIME
|
||||
|
||||
# AUTO BACKGROUND
|
||||
# AUTO BACKGROUND END
|
||||
|
||||
# Time-Hour
|
||||
label {
|
||||
# monitor =
|
||||
text = $TIME
|
||||
color = rgb(255, 255, 255)
|
||||
font_size = 90
|
||||
font_family = $font
|
||||
position = 75, 0
|
||||
halign = left
|
||||
valign = top
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "<span>$(date +"%I")</span>"
|
||||
color = rgba(255, 255, 255, 1)
|
||||
font_size = 125
|
||||
font_family = StretchPro
|
||||
position = -80, 290
|
||||
halign = center
|
||||
valign = center
|
||||
shadow_passes = 3
|
||||
shadow_size = 3
|
||||
shadow_color = rgba(0, 0, 0, 1)
|
||||
}
|
||||
|
||||
# Time-Minute
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "<span>$(date +"%M")</span>"
|
||||
color = rgba(147, 196, 255, 1)
|
||||
font_size = 125
|
||||
font_family = StretchPro
|
||||
position = 0, 170
|
||||
halign = center
|
||||
valign = center
|
||||
shadow_passes = 3
|
||||
shadow_size = 3
|
||||
shadow_color = rgba(0, 0, 0,1)
|
||||
}
|
||||
|
||||
# Day-Month-Date
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo -e "$(date +"%d %B")"
|
||||
color = rgba(255, 255, 255, 1)
|
||||
font_size = 22
|
||||
font_family = Suisse Int'l Mono
|
||||
position = 20, 92
|
||||
halign = center
|
||||
valign = center
|
||||
shadow_passes = 3
|
||||
shadow_size = 5
|
||||
shadow_color = rgba(0, 0, 0, 1)
|
||||
}
|
||||
|
||||
# USER AVATAR
|
||||
image {
|
||||
monitor =
|
||||
path = $HOME/.face
|
||||
rounding = 25
|
||||
size = 200
|
||||
# border_color = rgb(0, 0, 0)
|
||||
border_size = 0
|
||||
position = 0, -100
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# INPUT FIELD
|
||||
input-field {
|
||||
monitor =
|
||||
size = 300, 60
|
||||
outline_thickness = 2
|
||||
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true
|
||||
outer_color = rgba(255, 255, 255, 1)
|
||||
inner_color = rgba(0, 0, 0, 1)
|
||||
font_color = rgb(200, 200, 200)
|
||||
fade_on_empty = false
|
||||
font_family = SF Pro Display Bold
|
||||
placeholder_text = <i><span foreground="##ffffff99">Password...</span></i>
|
||||
hide_input = false
|
||||
position = 0, -290
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# CURRENT SONG
|
||||
label {
|
||||
monitor = eDP-1
|
||||
text = cmd[update:1000] echo "$(~/.config/hypr/scripts/songdetail.sh)"
|
||||
color = rgba(147, 196, 255, 1)
|
||||
font_size = 18
|
||||
font_family = JetBrains Mono Nerd, SF Pro Display Bold
|
||||
position = 0, 20
|
||||
halign = center
|
||||
valign = bottom
|
||||
}
|
||||
|
||||
# Battery
|
||||
label {
|
||||
# monitor =
|
||||
text = cmd[update:1000] echo " $(cat /sys/class/power_supply/BAT0/capacity)%"
|
||||
monitor = eDP-1
|
||||
text = cmd[update:1000] /home/nathan/.config/hypr/scripts/battery.sh
|
||||
color = rgb(255, 255, 255)
|
||||
font_size = 20
|
||||
font_family = $font
|
||||
@@ -43,74 +136,15 @@ label {
|
||||
valign = bottom
|
||||
}
|
||||
|
||||
# DATE
|
||||
# label {
|
||||
# # monitor =
|
||||
# text = cmd[update:43200000] date +"%A, %d %B %Y"
|
||||
# color = rgb(255, 255, 255)
|
||||
# font_size = 25
|
||||
# font_family = $font
|
||||
# position = 30, -150
|
||||
# halign = left
|
||||
# valign = top
|
||||
# }
|
||||
shape {
|
||||
monitor =
|
||||
size = 500, 100%
|
||||
color = rgba(255, 255, 255, 0.18)
|
||||
rounding = 25
|
||||
# border_size = 4
|
||||
# border_color = rgba(255, 255, 255, 1.0)
|
||||
|
||||
position = -25, 0
|
||||
# Stats
|
||||
label {
|
||||
monitor = eDP-1
|
||||
text = cmd[update:15000] /home/nathan/.config/hypr/scripts/stats.sh
|
||||
color = rgb(255, 255, 255)
|
||||
font_size = 10
|
||||
font_family = Symbols Nerd Font Mono
|
||||
position = 10, 10
|
||||
halign = left
|
||||
valign = center
|
||||
valign = bottom
|
||||
}
|
||||
|
||||
# USER AVATAR
|
||||
image {
|
||||
# monitor =
|
||||
path = $HOME/.face
|
||||
rounding = 25
|
||||
size = 100
|
||||
# border_color = rgb(0, 0, 0)
|
||||
border_size = 0
|
||||
position = 200, 75
|
||||
halign = left
|
||||
valign = center
|
||||
}
|
||||
|
||||
# INPUT FIELD
|
||||
input-field {
|
||||
# monitor =
|
||||
size = 300, 60
|
||||
position = 100, -47
|
||||
outline_thickness = 4
|
||||
dots_size = 0.2
|
||||
dots_spacing = 0.2
|
||||
dots_center = true
|
||||
outer_color = rgb(0, 0, 0)
|
||||
inner_color = rgb(255, 255, 255)
|
||||
font_color = rgb(0, 0, 0)
|
||||
fade_on_empty = false
|
||||
placeholder_text = <span foreground="black"><i></i> Nathan</span>
|
||||
hide_input = false
|
||||
check_color = rgb(212, 130, 6)
|
||||
fail_color = rgb(255, 0, 0)
|
||||
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
|
||||
capslock_color = rgb(255, 0, 0)
|
||||
halign = left
|
||||
valign = center
|
||||
}
|
||||
|
||||
# FINGERPRINT
|
||||
# {
|
||||
# # monitor = "";
|
||||
# text = $FPRINTPROMPT
|
||||
# color = rgb(255, 255, 255)
|
||||
# font_size = 14;
|
||||
# font_family = $font;
|
||||
# position = 0, -107;
|
||||
# halign = center;
|
||||
# valign = center;
|
||||
# }
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.0 MiB |
@@ -2,28 +2,29 @@
|
||||
$terminal = alacritty
|
||||
$fileManager = dolphin
|
||||
$menu = pgrep -x tofi-drun && pkill -x tofi-drun || tofi-drun --drun-launch=true > ~/.logs/tofi-drun.log 2>&1 &
|
||||
|
||||
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
$clipboard = /home/nathan/.local/bin/clipse
|
||||
$StartWallpaperTimer = systemctl --user start wallpaper.timer && WallRizz -r -n -d ~/.config/backgrounds
|
||||
$mainMod = SUPER
|
||||
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
|
||||
bind = CTRL ALT, T, exec, $terminal
|
||||
bind = $mainMod, Q, killactive,
|
||||
bind = $mainMod, F, togglefloating,
|
||||
bind = $mainMod, space, exec, $menu
|
||||
bind = ALT, SPACE, exec, ~/.config/hypr/scripts/search-windows.sh
|
||||
bind = CTRL ALT, Delete, exit
|
||||
bind = $mainMod, L, exec, hyprlock
|
||||
bind = $mainMod, L, exec, ~/.config/hypr/scripts/lock.sh
|
||||
bind = $mainMod, H, exec, alacritty --class float -e ~/.config/hypr/scripts/help.py
|
||||
bind = CTRL ALT, DELETE, exec, hyprpanel t powermenu
|
||||
|
||||
#bind = $mainMod, V, exec, [float] alacritty --class clipse -e /home/nathan/.local/bin/clipse
|
||||
bind = $mainMod, V, exec, [float] kitty --class clipse -e /home/nathan/.local/bin/clipse
|
||||
bind = $mainMod, V, exec, [float] kitty --class float-80 -e $clipboard
|
||||
|
||||
|
||||
|
||||
# bind = $mainMod, P, pseudo, # dwindle
|
||||
bind = $mainMod, J, togglesplit, # dwindle
|
||||
# Layout
|
||||
bind = $mainMod, J, togglesplit, # Split direction
|
||||
bind = $mainMod, code:35, togglesplit, # Split direction
|
||||
bind = $mainMod SHIFT, J,swapsplit # Swap master and secondary in dwindle
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, left, movefocus, l
|
||||
@@ -31,65 +32,22 @@ bind = $mainMod, right, movefocus, r
|
||||
bind = $mainMod, up, movefocus, u
|
||||
bind = $mainMod, down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod ALT, 1, workspace, 1
|
||||
bind = $mainMod ALT, 2, workspace, 2
|
||||
bind = $mainMod ALT, 3, workspace, 3
|
||||
bind = $mainMod ALT, 4, workspace, 4
|
||||
bind = $mainMod ALT, 5, workspace, 5
|
||||
bind = $mainMod ALT, 6, workspace, 6
|
||||
bind = $mainMod ALT, 7, workspace, 7
|
||||
bind = $mainMod ALT, 8, workspace, 8
|
||||
bind = $mainMod ALT, 9, workspace, 9
|
||||
bind = $mainMod ALT, 0, workspace, 10
|
||||
|
||||
# hyprlang noerror true
|
||||
bind = $mainMod, 1, vdesk, 1
|
||||
bind = $mainMod, 2, vdesk, 2
|
||||
bind = $mainMod, 3, vdesk, 3
|
||||
bind = $mainMod, 4, vdesk, 4
|
||||
bind = $mainMod, 5, vdesk, 5
|
||||
bind = $mainMod, 6, vdesk, 6
|
||||
bind = $mainMod, 7, vdesk, 7
|
||||
bind = $mainMod, 8, vdesk, 8
|
||||
bind = $mainMod, 9, vdesk, 9
|
||||
bind = $mainMod, 0, vdesk, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetodesk, 1
|
||||
bind = $mainMod SHIFT, 2, movetodesk, 2
|
||||
bind = $mainMod SHIFT, 3, movetodesk, 3
|
||||
bind = $mainMod SHIFT, 4, movetodesk, 4
|
||||
bind = $mainMod SHIFT, 5, movetodesk, 5
|
||||
bind = $mainMod SHIFT, 6, movetodesk, 6
|
||||
bind = $mainMod SHIFT, 7, movetodesk, 7
|
||||
bind = $mainMod SHIFT, 8, movetodesk, 8
|
||||
bind = $mainMod SHIFT, 9, movetodesk, 9
|
||||
bind = $mainMod SHIFT, 0, movetodesk, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
# Dedicated special workspace for terminal
|
||||
bind = $mainMod, S, togglespecialworkspace, terminal
|
||||
bind = $mainMod CTRL, S, movetoworkspace, special:terminal
|
||||
bind = CTRL ALT, TAB, togglespecialworkspace, terminal
|
||||
|
||||
# Screenshots
|
||||
bind = $mainMod SHIFT, S, exec, hyprshot -m region
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
# bind = $mainMod, mouse_down, workspace, e+1
|
||||
# bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
|
||||
## Custom hyprland module keybinds
|
||||
|
||||
# hyprlang noerror true
|
||||
|
||||
bind = $mainMod CTRL SHIFT, S, exec, hyprshot -m window -m active
|
||||
|
||||
# Used to use overview:toggle, but that resises the windows
|
||||
# bind = $mainMod, TAB, overview:toggle
|
||||
# bind = CTRL ALT, TAB, overview:toggle
|
||||
|
||||
# hyprlang noerror true
|
||||
|
||||
bind = $mainMod, TAB, hyprexpo:expo, toggle
|
||||
bind = CTRL ALT, TAB, hyprexpo:expo, toggle
|
||||
bind = ALT, TAB, lastdesk
|
||||
|
||||
# hyprlang noerror false
|
||||
|
||||
@@ -100,17 +58,24 @@ bindle=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK
|
||||
bindle=, XF86AudioLowerVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindle=, XF86MonBrightnessUp, exec, brightnessctl s +5%
|
||||
bindle=, XF86MonBrightnessDown, exec, brightnessctl s 5%-
|
||||
bindle=, XF86Search, exec, $menu
|
||||
bind=, XF86Search, exec, $menu
|
||||
# bindl=, XF86AudioMute, exec, amixer set Master toggle
|
||||
bindl=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindl=, XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindl=, XF86AudioPlay, exec, playerctl play-pause # the stupid key is called play , but it toggles
|
||||
bindl=, XF86AudioNext, exec, playerctl next
|
||||
bindl=, XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
|
||||
# Other FN keys
|
||||
bind= $mainMod CTRL, XF86TouchpadToggle, exec, hyprctl notify -1 2000 -1 "TODO Touchpad Toggle"
|
||||
bind = $mainMod, P, exec, hyprctl notify -1 2000 -1 "TODO Screen Settings"
|
||||
bindl = , Print, exec, hyprshot -m output -m active
|
||||
bind = $mainMod, Print, exec, hyprshot -m window -m active
|
||||
bind = $mainMod CTRL, Print, exec, hyprshot -m region
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod SHIFT, mouse:272, resizewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Mouse wheel tilt
|
||||
@@ -128,4 +93,73 @@ bind = $mainMod, T, exec, alacritty --config-file ~/dotfiles/.alacritty-nozellij
|
||||
|
||||
|
||||
bind = $mainMod, W, exec, ~/.config/hypr/scripts/wallpaper.sh
|
||||
bind = $mainMod CTRL, W, exec, WallRizz -r -n -d ~/.config/backgrounds
|
||||
bind = $mainMod CTRL, W, exec, $StartWallpaperTimer
|
||||
|
||||
|
||||
# Capslock toggle submap
|
||||
$caps = VoidSymbol
|
||||
bind = , $caps, submap, capsmode
|
||||
submap = capsmode
|
||||
# Bindings for submap
|
||||
|
||||
bind = , 1, exec, hyprctl notify 5 2000 0 "Opening Brave Browser"
|
||||
bind = , 1, exec, brave --proxy-pac-url="https://pac.cn01.woodburn.au/proxy.pac" --enable-features=UseOzonePlatform --ozone-platform=wayland --use-gl=angle --ignore-gpu-blocklist --enable-features=VaapiVideoEncoder,VaapiVideoDecoder,CanvasOopRasterization,VaapiIgnoreDriverChecks,VaapiVideoDecodeLinuxGL,AcceleratedVideoEncoder --disable-gpu-memory-buffer-video-frames --disable-features=WaylandWpColorManagerV1
|
||||
bind = , 1, submap, reset
|
||||
|
||||
bind = , 2, exec, hyprpanel -q
|
||||
bind = , 2, exec, hyprpanel
|
||||
bind = , 2, submap, reset
|
||||
|
||||
bind = CTRL, 3, movetoworkspace, special:alternate
|
||||
bind = CTRL, 3, submap, reset
|
||||
|
||||
bind = , 3, togglespecialworkspace, alternate
|
||||
bind = , 3, submap, reset
|
||||
|
||||
|
||||
bind = , T, exec, hyprctl notify 5 2000 0 "Select text to copy to clipboard..."
|
||||
bind = , T, exec, ~/.config/OCR4Linux/OCR4Linux.sh --lang eng -r
|
||||
bind = , T, submap, reset
|
||||
|
||||
# Disable errors for this plugin
|
||||
# hyprlang noerror true
|
||||
bind = , I, invertactivewindow
|
||||
bind = , I, submap, reset
|
||||
# hyprlang noerror false
|
||||
|
||||
bind = , V, exec, hyprctl notify 5 2000 0 "Resetting Virtual Desks..."
|
||||
bind = , V, exec, hyprctl dispatch vdeskreset
|
||||
bind = , V, submap, reset
|
||||
|
||||
bind = , K, exec, hyprctl notify 0 2000 0 "Click To Kill!!!"
|
||||
bind = , K, exec, hyprctl kill
|
||||
bind = , K, submap, reset
|
||||
|
||||
bind = , O, exec, hyprctl notify 2 2000 0 "Set Opacity..."
|
||||
bind = , O, submap, opacity
|
||||
|
||||
# Help information
|
||||
bind = , H, exec, alacritty --class float -e ~/.config/hypr/scripts/help.py
|
||||
bind = , H, submap, reset
|
||||
|
||||
bind = , catchall, submap, reset
|
||||
|
||||
|
||||
# Opacity submap
|
||||
submap = opacity
|
||||
bind = , 1, exec, ~/.config/hypr/scripts/opacity.py 0.1
|
||||
bind = , 2, exec, ~/.config/hypr/scripts/opacity.py 0.2
|
||||
bind = , 3, exec, ~/.config/hypr/scripts/opacity.py 0.3
|
||||
bind = , 4, exec, ~/.config/hypr/scripts/opacity.py 0.4
|
||||
bind = , 5, exec, ~/.config/hypr/scripts/opacity.py 0.5
|
||||
bind = , 6, exec, ~/.config/hypr/scripts/opacity.py 0.6
|
||||
bind = , 7, exec, ~/.config/hypr/scripts/opacity.py 0.7
|
||||
bind = , 8, exec, ~/.config/hypr/scripts/opacity.py 0.8
|
||||
bind = , 9, exec, ~/.config/hypr/scripts/opacity.py 0.9
|
||||
bind = , 0, exec, ~/.config/hypr/scripts/opacity.py 1
|
||||
bind = , C, exec, ~/.config/hypr/scripts/opacity.py -1
|
||||
bind = , code:20, exec, ~/.config/hypr/scripts/opacity.py -1
|
||||
bind = , catchall, submap, reset
|
||||
|
||||
|
||||
submap = reset
|
||||
|
||||
31
.config/hypr/plugins/split-monitor-workspaces.conf
Normal file
31
.config/hypr/plugins/split-monitor-workspaces.conf
Normal file
@@ -0,0 +1,31 @@
|
||||
# https://github.com/Duckonaut/split-monitor-workspaces
|
||||
|
||||
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-movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, split-movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, split-movetoworkspace, 3
|
||||
bind = $mainMod SHIFT, 4, split-movetoworkspace, 4
|
||||
bind = $mainMod SHIFT, 5, split-movetoworkspace, 5
|
||||
bind = $mainMod SHIFT, 6, split-movetoworkspace, 6
|
||||
bind = $mainMod SHIFT, 7, split-movetoworkspace, 7
|
||||
bind = $mainMod SHIFT, 8, split-movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, split-movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, split-movetoworkspace, 10
|
||||
|
||||
bind = ALT, TAB, lastdesk
|
||||
|
||||
# Window rules for sticky apps
|
||||
windowrule = workspace 5, class:vesktop
|
||||
windowrule = workspace 5, class:org.telegram.desktop
|
||||
windowrule = workspace 5, class:Slack
|
||||
44
.config/hypr/plugins/virtual-desktops.conf
Normal file
44
.config/hypr/plugins/virtual-desktops.conf
Normal file
@@ -0,0 +1,44 @@
|
||||
# https://github.com/levnikmyskin/hyprland-virtual-desktops
|
||||
|
||||
bind = $mainMod, 1, vdesk, 1
|
||||
bind = $mainMod, 2, vdesk, 2
|
||||
bind = $mainMod, 3, vdesk, 3
|
||||
bind = $mainMod, 4, vdesk, 4
|
||||
bind = $mainMod, 5, vdesk, 5
|
||||
bind = $mainMod, 6, vdesk, 6
|
||||
bind = $mainMod, 7, vdesk, 7
|
||||
bind = $mainMod, 8, vdesk, 8
|
||||
bind = $mainMod, 9, vdesk, 9
|
||||
bind = $mainMod, 0, vdesk, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetodesk, 1
|
||||
bind = $mainMod SHIFT, 2, movetodesk, 2
|
||||
bind = $mainMod SHIFT, 3, movetodesk, 3
|
||||
bind = $mainMod SHIFT, 4, movetodesk, 4
|
||||
bind = $mainMod SHIFT, 5, movetodesk, 5
|
||||
bind = $mainMod SHIFT, 6, movetodesk, 6
|
||||
bind = $mainMod SHIFT, 7, movetodesk, 7
|
||||
bind = $mainMod SHIFT, 8, movetodesk, 8
|
||||
bind = $mainMod SHIFT, 9, movetodesk, 9
|
||||
bind = $mainMod SHIFT, 0, movetodesk, 10
|
||||
|
||||
bind = ALT, TAB, lastdesk
|
||||
|
||||
stickyrule = class:discord,5
|
||||
stickyrule = class:vesktop,5
|
||||
stickyrule = class:org.telegram.desktop,5
|
||||
stickyrule = class:Slack,5
|
||||
|
||||
gesture = 3, right, dispatcher, prevdesk
|
||||
gesture = 3, left, dispatcher, nextdesk
|
||||
|
||||
plugin {
|
||||
virtual-desktops {
|
||||
names = 1:Coding, 2:Internet, 3:3,4:4, 5:Social
|
||||
cycleworkspaces = 0
|
||||
rememberlayout = none
|
||||
notifyinit = 0
|
||||
verbose_logging = 0
|
||||
}
|
||||
}
|
||||
34
.config/hypr/scripts/battery.sh
Executable file
34
.config/hypr/scripts/battery.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Get current battery level
|
||||
battery_level=$(cat /sys/class/power_supply/BAT0/capacity)
|
||||
|
||||
# Get current charging status
|
||||
charging_status=$(cat /sys/class/power_supply/BAT0/status)
|
||||
# Get current power supply type
|
||||
power_supply_type=$(cat /sys/class/power_supply/ADP1/online)
|
||||
|
||||
# Create printable output
|
||||
if [ "$charging_status" = "Charging" ]; then
|
||||
status=""
|
||||
else
|
||||
# Get battery level in percentage
|
||||
if [ "$battery_level" -ge 90 ]; then
|
||||
status=""
|
||||
elif [ "$battery_level" -ge 70 ]; then
|
||||
status=""
|
||||
elif [ "$battery_level" -ge 50 ]; then
|
||||
status=""
|
||||
elif [ "$battery_level" -ge 25 ]; then
|
||||
status=""
|
||||
else
|
||||
status=""
|
||||
fi
|
||||
fi
|
||||
|
||||
# Print the output
|
||||
if [ "$power_supply_type" -eq 1 ]; then
|
||||
echo "$status $battery_level%"
|
||||
else
|
||||
echo " $battery_level%"
|
||||
fi
|
||||
@@ -1,24 +1,22 @@
|
||||
#!/bin/bash
|
||||
sleep 2
|
||||
sleep 3
|
||||
clipse -listen &
|
||||
|
||||
# alacritty --class alacritty-init &
|
||||
|
||||
/home/nathan/AppImages/Fingertip-0.0.4-beta2-linux-X64.AppImage &
|
||||
/home/nathan/AppImages/nextcloud_desktop_sync_client.appimage --background &
|
||||
#/home/nathan/AppImages/Fingertip-0.0.4-beta2-linux-X64.AppImage & # This is broken using sane now
|
||||
|
||||
#/home/nathan/AppImages/nextcloud_desktop_sync_client.appimage --background &
|
||||
nextcloud &
|
||||
# discord --start-minimized & Using vesktop now
|
||||
|
||||
sleep 2
|
||||
vesktop --start-minimized &
|
||||
kdeconnect-indicator
|
||||
# slack -U &
|
||||
vesktop --ozone-platform-hint=auto --start-minimized &
|
||||
kdeconnect-indicator &
|
||||
WallRizz -r -n -d ~/.config/backgrounds
|
||||
|
||||
walker --gapplication-service &
|
||||
|
||||
|
||||
# Misc
|
||||
/home/nathan/scripts/mute.sh
|
||||
|
||||
# Fix dolphin file assosiations
|
||||
XDG_MENU_PREFIX=arch- kbuildsycoca6
|
||||
|
||||
|
||||
#sleep 10 && WallRizz -r -n -d ~/.config/backgrounds
|
||||
|
||||
260
.config/hypr/scripts/help.py
Executable file
260
.config/hypr/scripts/help.py
Executable file
@@ -0,0 +1,260 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# This script is used to display help information for Hyprland keybinds.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
import subprocess
|
||||
|
||||
|
||||
HARDCODED_VARIABLES = {
|
||||
"exec, ": "",
|
||||
"VoidSymbol": "CAPS",
|
||||
"brave --proxy-pac-url=\"https://pac.cn01.woodburn.au/proxy.pac\" --enable-features=UseOzonePlatform --ozone-platform=wayland --use-gl=angle --ignore-gpu-blocklist --enable-features=VaapiVideoEncoder,VaapiVideoDecoder,CanvasOopRasterization,VaapiIgnoreDriverChecks,VaapiVideoDecodeLinuxGL,AcceleratedVideoEncoder,Vulkan,DefaultANGLEVulkan,VulkanFromANGLE --disable-gpu-memory-buffer-video-frames": "brave",
|
||||
"~/.config/hypr/scripts/":" ",
|
||||
".sh": "",
|
||||
".py": "",
|
||||
"alacritty --config-file ~/dotfiles/.alacritty-nozellij.toml": "Terminal (No Zellij)",
|
||||
"ydotool key 56:1 105:1 105:0 56:0":"Back",
|
||||
"ydotool key 56:1 106:1 106:0 56:0":"Forward",
|
||||
"mouse_left":"Left Tilt",
|
||||
"mouse_right":"Right Tilt",
|
||||
"[float] kitty --class float-80 -e":"",
|
||||
"alacritty --class float-80 -e":"",
|
||||
"alacritty --class float -e":"",
|
||||
"$":" ",
|
||||
"mouse:272": "Left Drag",
|
||||
"mouse:273": "Right Drag",
|
||||
"hyprctl": "",
|
||||
"dispatch ": "",
|
||||
"vdesk,": "",
|
||||
"vdeskreset": " Reset",
|
||||
"movetodesk": " ",
|
||||
"movetoworkspace": " ",
|
||||
"togglespecialworkspace": " ",
|
||||
"special:":"",
|
||||
"lastdesk": " Last Active",
|
||||
}
|
||||
|
||||
IGNORED_ACTIONS = [
|
||||
"hyprctl notify",
|
||||
"submap, reset",
|
||||
"hyprpanel -q"
|
||||
]
|
||||
|
||||
TYPE_MAP = {
|
||||
'bind': ' ',
|
||||
'bindl': '',
|
||||
'bindle': 'Lock',
|
||||
'bindm': '',
|
||||
}
|
||||
SUBMAP_MAP ={
|
||||
"main": "",
|
||||
"capsmode": "",
|
||||
"opacity": "",
|
||||
}
|
||||
|
||||
KEYCODES = {
|
||||
20: "-"
|
||||
}
|
||||
|
||||
# Read the keybinds.conf file
|
||||
def read_keybinds(file_path = os.path.expanduser('~/.config/hypr/keybinds.conf')):
|
||||
if not os.path.exists(file_path):
|
||||
print(f"Error: The file {file_path} does not exist.")
|
||||
sys.exit(1)
|
||||
|
||||
with open(file_path, 'r') as file:
|
||||
lines = file.readlines()
|
||||
|
||||
return lines
|
||||
|
||||
def parse_keybinds(lines):
|
||||
"""Parse keybinds from the configuration file and return a list of structured keybind information."""
|
||||
keybinds = []
|
||||
variables = {}
|
||||
current_submap = "main"
|
||||
|
||||
for line_num, line in enumerate(lines, 1):
|
||||
line = line.strip()
|
||||
|
||||
# Skip empty lines and comments
|
||||
if not line or line.startswith('#'):
|
||||
continue
|
||||
|
||||
# Handle variable definitions
|
||||
if line.startswith('$'):
|
||||
var_match = re.match(r'\$(\w+)\s*=\s*(.+)', line)
|
||||
if var_match:
|
||||
variables[var_match.group(1)] = var_match.group(2)
|
||||
continue
|
||||
|
||||
# Handle submap declarations
|
||||
if line.startswith('submap ='):
|
||||
submap_match = re.match(r'submap\s*=\s*(\w+)', line)
|
||||
if submap_match:
|
||||
current_submap = submap_match.group(1)
|
||||
continue
|
||||
|
||||
# Handle bind declarations
|
||||
if line.startswith('bind') or line.startswith('bindle') or line.startswith('bindl') or line.startswith('bindm'):
|
||||
bind_match = re.match(r'(bind[lme]?)\s*=\s*([^,]+),\s*([^,]+),\s*(.+)', line)
|
||||
if bind_match:
|
||||
bind_type = bind_match.group(1)
|
||||
modifiers = bind_match.group(2).strip()
|
||||
key = bind_match.group(3).strip()
|
||||
action = bind_match.group(4).strip()
|
||||
|
||||
# Ignore certain actions
|
||||
if any(ignored in action for ignored in IGNORED_ACTIONS):
|
||||
continue
|
||||
|
||||
# Replace variables in the key, modifiers, and action
|
||||
for var_name, var_value in variables.items():
|
||||
modifiers = modifiers.replace(f'${var_name}', var_value)
|
||||
key = key.replace(f'${var_name}', var_value)
|
||||
# action = action.replace(f'${var_name}', var_value)
|
||||
|
||||
# Update for HARDCODED
|
||||
for var_name, var_value in HARDCODED_VARIABLES.items():
|
||||
modifiers = modifiers.replace(f'{var_name}', var_value)
|
||||
key = key.replace(f'{var_name}', var_value)
|
||||
action = action.replace(f'{var_name}', var_value)
|
||||
|
||||
if action.startswith('submap,'):
|
||||
smap = action.split(',')[1].strip()
|
||||
action = SUBMAP_MAP.get(smap, smap)
|
||||
|
||||
# Convert any 'code:<number>' in key to the corresponding Unicode character
|
||||
code_match = re.match(r'code:(\d+)', key)
|
||||
if code_match:
|
||||
code_num = int(code_match.group(1))
|
||||
key = KEYCODES[code_num] if code_num in KEYCODES else f"code:{code_num}"
|
||||
|
||||
# Add icon for logging
|
||||
if ">>" in action:
|
||||
log_action = action.split('>>')[0].strip()
|
||||
action = f"{log_action} "
|
||||
|
||||
|
||||
# Cleanup action
|
||||
action = action.strip(',')
|
||||
action = action.replace(',', '')
|
||||
|
||||
# Format the keybind description
|
||||
key_combo = f"{modifiers} + {key}" if modifiers else key
|
||||
|
||||
keybind_info = {
|
||||
'type': bind_type,
|
||||
'submap': current_submap,
|
||||
'key_combo': key_combo,
|
||||
'action': action,
|
||||
'line_num': line_num,
|
||||
'raw_line': line
|
||||
}
|
||||
keybinds.append(keybind_info)
|
||||
return keybinds
|
||||
|
||||
def format_keybind_for_display(keybind):
|
||||
"""Format a keybind for display in fzf or terminal."""
|
||||
submap_prefix = f"{SUBMAP_MAP.get(keybind['submap'], keybind['submap'].upper())} " if keybind['submap'] in SUBMAP_MAP else f"{keybind['submap'].upper()} "
|
||||
type_prefix = f"{TYPE_MAP.get(keybind['type'], 'Unknown')} " if keybind['type'] in TYPE_MAP else f"{keybind['type']} "
|
||||
|
||||
# Clean up the action for display
|
||||
action = keybind['action']
|
||||
return f"{submap_prefix:3}{type_prefix}{keybind['key_combo']:30} → {action}"
|
||||
|
||||
def run_fzf_search(keybinds):
|
||||
"""Run fzf with the keybinds for interactive searching."""
|
||||
try:
|
||||
# Prepare the input for fzf
|
||||
fzf_input = []
|
||||
for keybind in keybinds:
|
||||
formatted = format_keybind_for_display(keybind)
|
||||
fzf_input.append(formatted)
|
||||
|
||||
# Run fzf
|
||||
process = subprocess.Popen(
|
||||
['fzf', '--reverse', '--border', '--preview-window=up:3',
|
||||
'--header=Hyprland Keybinds - Press Enter or Esc to exit',
|
||||
],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
text=True
|
||||
)
|
||||
|
||||
stdout, stderr = process.communicate(input='\n'.join(fzf_input))
|
||||
|
||||
if process.returncode == 0 and stdout.strip():
|
||||
# Find the selected keybind
|
||||
selected_line = stdout.strip()
|
||||
for keybind in keybinds:
|
||||
if format_keybind_for_display(keybind) == selected_line:
|
||||
print(f"\nSelected Keybind Details:")
|
||||
print(f"Key Combination: {keybind['key_combo']}")
|
||||
print(f"Action: {keybind['action']}")
|
||||
print(f"Type: {keybind['type']}")
|
||||
print(f"Submap: {keybind['submap']}")
|
||||
print(f"Line: {keybind['line_num']}")
|
||||
print(f"Raw: {keybind['raw_line']}")
|
||||
break
|
||||
|
||||
except FileNotFoundError:
|
||||
print("Error: fzf is not installed. Please install fzf to use interactive search.")
|
||||
print("On most distributions: sudo pacman -S fzf # or apt install fzf")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f"Error running fzf: {e}")
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Parse command line arguments - default to fzf unless --no-fzf is specified
|
||||
use_fzf = not (len(sys.argv) > 1 and sys.argv[1] in ['--no-fzf', '-n', 'no-fzf'])
|
||||
|
||||
# Read and parse keybinds
|
||||
raw_lines = read_keybinds()
|
||||
parsed_keybinds = parse_keybinds(raw_lines)
|
||||
|
||||
if use_fzf:
|
||||
# Use fzf for interactive searching
|
||||
if not run_fzf_search(parsed_keybinds):
|
||||
# Fallback to regular display if fzf fails
|
||||
use_fzf = False
|
||||
|
||||
if not use_fzf:
|
||||
print("Hyprland Keybinds Help:")
|
||||
print("=" * 50)
|
||||
print(f"Found {len(parsed_keybinds)} keybinds\n")
|
||||
|
||||
# Group by submap for better organization
|
||||
submaps = {}
|
||||
for keybind in parsed_keybinds:
|
||||
submap = keybind['submap']
|
||||
if submap not in submaps:
|
||||
submaps[submap] = []
|
||||
submaps[submap].append(keybind)
|
||||
|
||||
# Display keybinds grouped by submap
|
||||
for submap_name, submap_keybinds in submaps.items():
|
||||
if submap_name != 'main':
|
||||
print(f"\n[{submap_name.upper()} SUBMAP]")
|
||||
print("-" * 30)
|
||||
else:
|
||||
print("[MAIN KEYBINDS]")
|
||||
print("-" * 30)
|
||||
|
||||
for keybind in submap_keybinds:
|
||||
print(format_keybind_for_display(keybind))
|
||||
|
||||
print(f"\n{'-' * 50}")
|
||||
print("Usage: python help.py [--no-fzf] to disable interactive search")
|
||||
print("For more information, refer to the Hyprland documentation.")
|
||||
print("You can also customize your keybinds in the keybinds.conf file.")
|
||||
|
||||
# Wait for user input before exiting
|
||||
input("\nPress Enter to exit...")
|
||||
57
.config/hypr/scripts/lock.sh
Executable file
57
.config/hypr/scripts/lock.sh
Executable file
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
echo "Preparing hyprlock configuration..."
|
||||
# Path to hyprlock configuration file
|
||||
CONF="$HOME/.config/hypr/hyprlock.conf"
|
||||
# Get the list of outputs
|
||||
mapfile -t outputs < <(hyprctl -j monitors | jq -r '.[].name')
|
||||
|
||||
# Generate the background blocks for each output
|
||||
block=""
|
||||
for output in "${outputs[@]}"; do
|
||||
block+=$'background {\n'
|
||||
block+=$" monitor = ${output}\n"
|
||||
block+=$" path = screenshot\n"
|
||||
block+=$" reload_time = 0\n"
|
||||
block+=$" reload_cmd = echo \"/tmp/${output}-lockscreen.png\"\n"
|
||||
block+=$" crossfade_time = 1\n"
|
||||
block+=$'}\n\n'
|
||||
done
|
||||
# Insert the generated blocks into the configuration file
|
||||
awk -v content="$block" '
|
||||
/^# AUTO BACKGROUND$/ { print; print content; inside=1; next }
|
||||
inside && /^# AUTO BACKGROUND END$/ { print; inside=0; next }
|
||||
inside { next }
|
||||
{ print }
|
||||
' "$CONF" > "${CONF}.tmp" && mv "${CONF}.tmp" "$CONF"
|
||||
|
||||
echo "Starting hyprlock..."
|
||||
/home/nathan/Git/hyprlock/build/hyprlock &
|
||||
|
||||
echo "Taking screenshots for lock screen..."
|
||||
# Take a screenshot of each output before locking (!THIS IS SLOW!)
|
||||
for output in "${outputs[@]}"; do
|
||||
# grim -o "$output" "/tmp/${output}-lockscreen.png" &
|
||||
$HOME/.config/hypr/scripts/spots.sh -s 8 <(grim -o "$output" -) "/tmp/${output}-lockscreen.png" &
|
||||
done
|
||||
|
||||
echo "Waiting for screenshots to complete..."
|
||||
# Wait for all image processing to complete
|
||||
while pgrep -x spots.sh >/dev/null; do
|
||||
sleep 0.1
|
||||
done
|
||||
# Notify hyprlock to reload backgrounds
|
||||
echo "Reloading hyprlock backgrounds..."
|
||||
pkill -USR2 hyprlock
|
||||
|
||||
echo "Waiting for hyprlock to exit..."
|
||||
wait
|
||||
|
||||
echo "Hyprlock exited. Cleaning up..."
|
||||
# Cleanup: Restore hyprlock.conf to original state
|
||||
sed -i '/^# AUTO BACKGROUND$/,/^# AUTO BACKGROUND END$/{//!d}' "$CONF"
|
||||
|
||||
# Remove the screenshots
|
||||
for output in "${outputs[@]}"; do
|
||||
rm "/tmp/${output}-lockscreen.png"
|
||||
done
|
||||
47
.config/hypr/scripts/opacity.py
Executable file
47
.config/hypr/scripts/opacity.py
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
|
||||
def tag_window(tag:str):
|
||||
"""
|
||||
Tags the currently focused window with the specified tag.
|
||||
"""
|
||||
command = f"hyprctl dispatch tagwindow {tag}"
|
||||
subprocess.run(command, shell=True)
|
||||
|
||||
|
||||
def notify(message: str):
|
||||
"""
|
||||
Displays a notification with the specified message.
|
||||
"""
|
||||
command = f'hyprctl notify 1 1000 0 "{message}"';
|
||||
subprocess.run(command, shell=True)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: python3 opacity.py <opacity_value>")
|
||||
sys.exit(1)
|
||||
|
||||
opacity_value = sys.argv[1]
|
||||
# Validate the opacity value
|
||||
valid_opacities = ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
|
||||
if opacity_value not in valid_opacities and opacity_value != '-1':
|
||||
print(f"Invalid opacity value: {opacity_value}. Valid values are: {', '.join(valid_opacities)}")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
# If the opacity value is -1, reset to default
|
||||
if opacity_value == '-1':
|
||||
notify("Resetting opacity to default")
|
||||
|
||||
for op in valid_opacities:
|
||||
tag_window(f'-- -opacity:{op}')
|
||||
else:
|
||||
notify(f"Setting opacity to {opacity_value}")
|
||||
for op in valid_opacities:
|
||||
if op == opacity_value:
|
||||
tag_window(f'opacity:{op}')
|
||||
else:
|
||||
tag_window(f'-- -opacity:{op}')
|
||||
5
.config/hypr/scripts/songdetail.sh
Executable file
5
.config/hypr/scripts/songdetail.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
song_info=$(playerctl metadata --format '{{title}} {{artist}}')
|
||||
|
||||
echo "$song_info"
|
||||
380
.config/hypr/scripts/spots.sh
Executable file
380
.config/hypr/scripts/spots.sh
Executable file
@@ -0,0 +1,380 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Developed by Fred Weinhaus 8/4/2011 .......... 5/28/2015
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
#
|
||||
# Licensing:
|
||||
#
|
||||
# Copyright © Fred Weinhaus
|
||||
#
|
||||
# My scripts are available free of charge for non-commercial use, ONLY.
|
||||
#
|
||||
# For use of my scripts in commercial (for-profit) environments or
|
||||
# non-free applications, please contact me (Fred Weinhaus) for
|
||||
# licensing arrangements. My email address is fmw at alink dot net.
|
||||
#
|
||||
# If you: 1) redistribute, 2) incorporate any of these scripts into other
|
||||
# free applications or 3) reprogram them in another scripting language,
|
||||
# then you must contact me for permission, especially if the result might
|
||||
# be used in a commercial or for-profit environment.
|
||||
#
|
||||
# My scripts are also subject, in a subordinate manner, to the ImageMagick
|
||||
# license, which can be found at: http://www.imagemagick.org/script/license.php
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
#
|
||||
####
|
||||
#
|
||||
# USAGE: spots [-s size] [-t type] [-p pad] [-b bgcolor] [-e edge] [-E ecolor] [-B brightness] [-C Contrast] infile [spotfile] outfile
|
||||
# USAGE: spots [-help]
|
||||
#
|
||||
# OPTIONS:
|
||||
#
|
||||
# -s size spot size expressed as WxH in pixels; default=5x5
|
||||
# -t type type of spot shape; choices are: circle (or c),
|
||||
# square (or s), or diamond (or d); default=circle
|
||||
# -p pad padding or border around spot cell in pixels on
|
||||
# each side; integer>=0; default=1
|
||||
# -b bgcolor background color to apply to image where spot
|
||||
# does not cover; any valid IM color; default=black
|
||||
# -e edge edge thickness accent around spot shape;
|
||||
# integer>=0; default=0
|
||||
# -E ecolor color of accent edge around spot shape;
|
||||
# any valid IM color; default=gray
|
||||
# -B brightness percent change in brightness of spots;
|
||||
# integer; default=0
|
||||
# -C contrast percent change in contrast of spots;
|
||||
# integer; default=0
|
||||
#
|
||||
#
|
||||
###
|
||||
#
|
||||
# NAME: SPOTS
|
||||
#
|
||||
# PURPOSE: Converts the image into a series of uniform-colored spots.
|
||||
#
|
||||
# DESCRIPTION: SPOTS converts the image into a series of uniform-colored
|
||||
# spots. The shape of spots allowed are: circle (ellipse), square (rectangle)
|
||||
# or diamond. The spot size may be adjusted. A colored edge may also be
|
||||
# placed around each spot. An optional spotfile may be provided to define
|
||||
# some other shape than those built-in.
|
||||
#
|
||||
#
|
||||
# OPTIONS:
|
||||
#
|
||||
# -s size ... SIZE is the WxH dimensions of the spot cell. Values are a
|
||||
# pair of positive integers separated by an x. The default=5x5. If only
|
||||
# one value is provided, it will be used for both. This parameter is
|
||||
# ignored if a spotfile is provided.
|
||||
#
|
||||
# -t type ... TYPE is the type of spot shape. The choices are: circle (or c),
|
||||
# square (or s), diamond (or d). These may be asymmetric as ellipses or
|
||||
# rectangles as controlled by the size parameters. This parameter is
|
||||
# ignored if a spotfile is provided.
|
||||
#
|
||||
# -p pad ... PAD is the border around the spot cell. Values are integers>=0.
|
||||
# The default=0.
|
||||
#
|
||||
# -b bgcolor ... BGCOLOR is the color to apply to the image between the spots.
|
||||
# Any valid IM color is allowed. The default=black.
|
||||
#
|
||||
# -e edge ... EDGE is the thickness of the optional edge hightlight around
|
||||
# the spot shape. Values are integers>=0. The default=0.
|
||||
#
|
||||
# -E ecolor ... ECOLOR is the color of the edge highlight. Any valid IM color
|
||||
# is allowed. The default=gray.
|
||||
#
|
||||
# -B brightness ... BRIGHTNESS is the percent change in brightness of the
|
||||
# spot colors. Values are integers. The default=0
|
||||
#
|
||||
# -C contrast ... CONTRAST is the percent change in contrast of the
|
||||
# spot colors. Values are integers. The default=0
|
||||
#
|
||||
# The spotfile must be a binary mask with white for the shape and black
|
||||
# for the background and no alpha channel.
|
||||
#
|
||||
# REQUIREMENTS: IM 6.3.6-1 or higher due to the use of
|
||||
# -define distort:viewport=WxH+X+Y with -distort SRT.
|
||||
#
|
||||
# CAVEAT: No guarantee that this script will work on all platforms,
|
||||
# nor that trapping of inconsistent parameters is complete and
|
||||
# foolproof. Use At Your Own Risk.
|
||||
#
|
||||
######
|
||||
#
|
||||
|
||||
# set default values
|
||||
size="5x5" # spot WxH
|
||||
type="circle" # circle, square, diamond
|
||||
pad=1 # border padding
|
||||
edge=0 # edge width
|
||||
ecolor="gray" # edge color
|
||||
bgcolor="black" # background color
|
||||
bri=0 # brightness
|
||||
con=0 # contrast
|
||||
|
||||
# set directory for temporary files
|
||||
dir="." # suggestions are dir="." or dir="/tmp"
|
||||
|
||||
# set up functions to report Usage and Usage with Description
|
||||
PROGNAME=`type $0 | awk '{print $3}'` # search for executable on path
|
||||
PROGDIR=`dirname $PROGNAME` # extract directory of program
|
||||
PROGNAME=`basename $PROGNAME` # base name of program
|
||||
usage1()
|
||||
{
|
||||
echo >&2 ""
|
||||
echo >&2 "$PROGNAME:" "$@"
|
||||
sed >&2 -e '1,/^####/d; /^###/g; /^#/!q; s/^#//; s/^ //; 4,$p' "$PROGDIR/$PROGNAME"
|
||||
}
|
||||
usage2()
|
||||
{
|
||||
echo >&2 ""
|
||||
echo >&2 "$PROGNAME:" "$@"
|
||||
sed >&2 -e '1,/^####/d; /^######/g; /^#/!q; s/^#*//; s/^ //; 4,$p' "$PROGDIR/$PROGNAME"
|
||||
}
|
||||
|
||||
|
||||
# function to report error messages
|
||||
errMsg()
|
||||
{
|
||||
echo ""
|
||||
echo $1
|
||||
echo ""
|
||||
usage1
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
# function to test for minus at start of value of second part of option 1 or 2
|
||||
checkMinus()
|
||||
{
|
||||
test=`echo "$1" | grep -c '^-.*$'` # returns 1 if match; 0 otherwise
|
||||
[ $test -eq 1 ] && errMsg "$errorMsg"
|
||||
}
|
||||
|
||||
# test for correct number of arguments and get values
|
||||
if [ $# -eq 0 ]
|
||||
then
|
||||
# help information
|
||||
echo ""
|
||||
usage2
|
||||
exit 0
|
||||
elif [ $# -gt 19 ]
|
||||
then
|
||||
errMsg "--- TOO MANY ARGUMENTS WERE PROVIDED ---"
|
||||
else
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
# get parameter values
|
||||
case "$1" in
|
||||
-help) # help information
|
||||
echo ""
|
||||
usage2
|
||||
exit 0
|
||||
;;
|
||||
-s) # get size
|
||||
shift # to get the next parameter
|
||||
# test if parameter starts with minus sign
|
||||
errorMsg="--- INVALID SIZE SPECIFICATION ---"
|
||||
checkMinus "$1"
|
||||
size=`expr "$1" : '\([0-9]*[x]*[0-9]*\)'`
|
||||
[ "$size" = "" ] && errMsg "--- SIZE=$size MUST BE A PAIR OF POSITIVE INTEGERS (with no sign) SEPARATED BY AN x ---"
|
||||
;;
|
||||
-t) # type
|
||||
shift # to get the next parameter
|
||||
# test if parameter starts with minus sign
|
||||
errorMsg="--- INVALID TYPE SPECIFICATION ---"
|
||||
checkMinus "$1"
|
||||
# test mode values
|
||||
type="$1"
|
||||
type=`echo "$type" | tr "[:upper:]" "[:lower:]"`
|
||||
case "$type" in
|
||||
circle|c) type="circle" ;;
|
||||
square|s) type="square" ;;
|
||||
diamond|d) type="diamond" ;;
|
||||
*) errMsg "--- TYPE=$type IS AN INVALID VALUE ---"
|
||||
esac
|
||||
;;
|
||||
-p) # get pad
|
||||
shift # to get the next parameter
|
||||
# test if parameter starts with minus sign
|
||||
errorMsg="--- INVALID PAD SPECIFICATION ---"
|
||||
checkMinus "$1"
|
||||
pad=`expr "$1" : '\([0-9]*\)'`
|
||||
[ "$pad" = "" ] && errMsg "--- PAD=$pad MUST BE A NON-NEGATIVE INTEGER (with no sign) ---"
|
||||
;;
|
||||
-b) # get bgcolor
|
||||
shift # to get the next parameter
|
||||
# test if parameter starts with minus sign
|
||||
errorMsg="--- INVALID BGCOLOR SPECIFICATION ---"
|
||||
checkMinus "$1"
|
||||
bgcolor="$1"
|
||||
;;
|
||||
-e) # get edge
|
||||
shift # to get the next parameter
|
||||
# test if parameter starts with minus sign
|
||||
errorMsg="--- INVALID EDGE SPECIFICATION ---"
|
||||
checkMinus "$1"
|
||||
edge=`expr "$1" : '\([0-9]*\)'`
|
||||
[ "$edge" = "" ] && errMsg "--- EDGE=$edge MUST BE A NON-NEGATIVE INTEGER (with no sign) ---"
|
||||
;;
|
||||
-E) # get ecolor
|
||||
shift # to get the next parameter
|
||||
# test if parameter starts with minus sign
|
||||
errorMsg="--- INVALID ECOLOR SPECIFICATION ---"
|
||||
checkMinus "$1"
|
||||
ecolor="$1"
|
||||
;;
|
||||
-B) # get brightness
|
||||
shift # to get the next parameter
|
||||
# test if parameter starts with minus sign
|
||||
errorMsg="--- INVALID BRIGHTNESS SPECIFICATION ---"
|
||||
#checkMinus "$1"
|
||||
bri=`expr "$1" : '\([-0-9]*\)'`
|
||||
[ "$bri" = "" ] && errMsg "--- BRIGHTNESS=$bri MUST BE AN INTEGER (with no sign) ---"
|
||||
;;
|
||||
-C) # get contrast
|
||||
shift # to get the next parameter
|
||||
# test if parameter starts with minus sign
|
||||
errorMsg="--- INVALID CONTRAST SPECIFICATION ---"
|
||||
#checkMinus "$1"
|
||||
con=`expr "$1" : '\([-0-9]*\)'`
|
||||
[ "$con" = "" ] && errMsg "--- CONTRAST=$con MUST BE AN INTEGER (with no sign) ---"
|
||||
;;
|
||||
-) # STDIN and end of arguments
|
||||
break
|
||||
;;
|
||||
-*) # any other - argument
|
||||
errMsg "--- UNKNOWN OPTION ---"
|
||||
;;
|
||||
*) # end of arguments
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift # next option
|
||||
done
|
||||
#
|
||||
# get infile and outfile and spotfile
|
||||
if [ $# -eq 3 ]; then
|
||||
infile="$1"
|
||||
spotfile="$2"
|
||||
outfile="$3"
|
||||
elif [ $# -eq 2 ]; then
|
||||
infile="$1"
|
||||
outfile="$2"
|
||||
else
|
||||
errMsg "--- INCONSISTENT NUMBER OF IMAGES PROVIDED ---"
|
||||
fi
|
||||
fi
|
||||
|
||||
# test that infile provided
|
||||
[ "$infile" = "" ] && errMsg "NO INPUT FILE SPECIFIED"
|
||||
|
||||
# test that outfile provided
|
||||
[ "$outfile" = "" ] && errMsg "NO OUTPUT FILE SPECIFIED"
|
||||
|
||||
# create temp files
|
||||
tmpA1="$dir/spots_1_$$.mpc"
|
||||
tmpB1="$dir/spots_1_$$.cache"
|
||||
tmpA2="$dir/spots_2_$$.mpc"
|
||||
tmpB2="$dir/spots_2_$$.cache"
|
||||
trap "rm -f $tmpA1 $tmpB1 $tmpA2 $tmpB2;" 0
|
||||
trap "rm -f $tmpA1 $tmpB1 $tmpA2 $tmpB2; exit 1" 1 2 3 15
|
||||
trap "rm -f $tmpA1 $tmpB1 $tmpA2 $tmpB2; exit 1" ERR
|
||||
|
||||
# setup brightness contrast
|
||||
if [ "$bri" = "0" -a "$con" = "0" ]; then
|
||||
bricon=""
|
||||
else
|
||||
bricon="-brightness-contrast $bri,$con"
|
||||
fi
|
||||
|
||||
# test input image
|
||||
magick -quiet "$infile" $bricon -clamp +repage "$tmpA1" ||
|
||||
errMsg "--- FILE $infile DOES NOT EXIST OR IS NOT AN ORDINARY FILE, NOT READABLE OR HAS ZERO SIZE ---"
|
||||
|
||||
# test spot file if exists
|
||||
if [ "$spotfile" != "" ]; then
|
||||
magick -quiet "$spotfile" -alpha off +repage "$tmpA2" ||
|
||||
errMsg "--- FILE $spotfile DOES NOT EXIST OR IS NOT AN ORDINARY FILE, NOT READABLE OR HAS ZERO SIZE ---"
|
||||
fi
|
||||
|
||||
# get image width, height and aspect
|
||||
ww=`magick $tmpA1 -ping -format "%w" info:`
|
||||
hh=`magick $tmpA1 -ping -format "%h" info:`
|
||||
|
||||
# get size of spot and center of spot and last pixel of spot and pad size
|
||||
if [ "$spotfile" = "" ]; then
|
||||
sw=`echo $size | cut -dx -f1`
|
||||
sh=`echo $size | cut -dx -f2`
|
||||
scx=`magick xc: -format "%[fx:($sw-1)/2]" info:`
|
||||
scy=`magick xc: -format "%[fx:($sh-1)/2]" info:`
|
||||
lx=$((sw-1))
|
||||
ly=$((sh-1))
|
||||
|
||||
# get pad size
|
||||
pw=$((sw+2*pad))
|
||||
ph=$((sh+2*pad))
|
||||
|
||||
else
|
||||
pw=`magick $tmpA2 -ping -format "%w" info:`
|
||||
ph=`magick $tmpA2 -ping -format "%h" info:`
|
||||
fi
|
||||
|
||||
|
||||
if [ "$spotfile" = "" ]; then
|
||||
if [ "$pad" = "0" ]; then
|
||||
padding=""
|
||||
else
|
||||
padding="-bordercolor black -border $pad"
|
||||
fi
|
||||
|
||||
# create spot template
|
||||
if [ "$type" = "circle" ]; then
|
||||
magick -size ${sw}x${sh} xc:black \
|
||||
+antialias -fill white -draw "ellipse $scx,$scy $scx,$scy 0,360" -alpha off \
|
||||
$padding \
|
||||
$tmpA2
|
||||
|
||||
elif [ "$type" = "square" ]; then
|
||||
magick -size ${sw}x${sh} xc:black \
|
||||
+antialias -fill white -draw "rectangle 0,0 $lx,$ly" -alpha off \
|
||||
$padding \
|
||||
$tmpA2
|
||||
|
||||
elif [ "$type" = "diamond" ]; then
|
||||
magick -size ${sw}x${sh} xc:black \
|
||||
+antialias -fill white -draw "polygon $scx,0 $lx,$scy $scx,$ly 0,$scy" -alpha off \
|
||||
$padding \
|
||||
$tmpA2
|
||||
fi
|
||||
fi
|
||||
|
||||
# compute xmin and ymin and virtual canvas size
|
||||
xmin=`magick xc: -format "%[fx:ceil($ww/$pw)]" info:`
|
||||
ymin=`magick xc: -format "%[fx:ceil($hh/$ph)]" info:`
|
||||
www=`magick xc: -format "%[fx:$xmin*$pw]" info:`
|
||||
hhh=`magick xc: -format "%[fx:$ymin*$ph]" info:`
|
||||
|
||||
|
||||
# process image
|
||||
if [ "$edge" = "0" ]; then
|
||||
magick \( $tmpA1 -define distort:viewport=${www}x${hhh}+0+0 -virtual-pixel mirror -distort SRT 0 \
|
||||
-scale ${xmin}x${ymin}! -scale ${www}x${hhh}! -crop ${ww}x${hh}+0+0 +repage \) \
|
||||
\( $tmpA2 -write mpr:tile +delete -size ${ww}x${hh}! tile:mpr:tile \) \
|
||||
-alpha off -compose copy_opacity -composite -compose over \
|
||||
-background $bgcolor -flatten \
|
||||
"$outfile"
|
||||
else
|
||||
magick \( $tmpA1 -define distort:viewport=${www}x${hhh}+0 -virtual-pixel mirror -distort SRT 0 \
|
||||
-scale ${xmin}x${ymin}! -scale ${www}x${hhh}! -crop ${ww}x${hh}+0+0 +repage \) \
|
||||
\( $tmpA2 -write mpr:tile +delete -size ${ww}x${hh}! tile:mpr:tile \) \
|
||||
\( -clone 1 -threshold 0 -edge $edge -clamp -fill $ecolor -opaque white -transparent black \) \
|
||||
\( -clone 0 -clone 1 -alpha off -compose copy_opacity -composite -compose over \
|
||||
-background $bgcolor -flatten \) \
|
||||
-delete 0,1 +swap -compose over -composite \
|
||||
"$outfile"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
103
.config/hypr/scripts/stats.sh
Executable file
103
.config/hypr/scripts/stats.sh
Executable file
@@ -0,0 +1,103 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Get system statistics
|
||||
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}' | cut -d. -f1)
|
||||
MEMORY_USAGE=$(free -m | awk 'NR==2{printf "%.0f", $3*100/$2 }')
|
||||
|
||||
CPU_TEMP=""
|
||||
# Get temp info (CPU temp)
|
||||
if [ -r /sys/class/thermal/thermal_zone0/temp ]; then
|
||||
CPU_TEMP_RAW=$(cat /sys/class/thermal/thermal_zone0/temp)
|
||||
CPU_TEMP_C=$((CPU_TEMP_RAW / 1000))
|
||||
CPU_TEMP=" ${CPU_TEMP_C}°C"
|
||||
fi
|
||||
|
||||
|
||||
echo " ${CPU_USAGE}%${CPU_TEMP} ${MEMORY_USAGE}%"
|
||||
|
||||
# GPU info
|
||||
GPU_USAGE=$(cat /sys/class/drm/card1/device/gpu_busy_percent)
|
||||
GPU_VRAM_USED=$(cat /sys/class/drm/card1/device/mem_info_vram_used)
|
||||
GPU_VRAM_TOTAL=$(cat /sys/class/drm/card1/device/mem_info_vram_total)
|
||||
GPU_VRAM_USAGE=$((GPU_VRAM_USED * 100 / GPU_VRAM_TOTAL))
|
||||
|
||||
|
||||
echo " ${GPU_USAGE}% ${GPU_VRAM_USAGE}%"
|
||||
|
||||
# Battery time: find battery device via upower and parse "time to full" / "time to empty"
|
||||
# fallback to sysfs if upower not available
|
||||
BAT_PATH=""
|
||||
if command -v upower >/dev/null 2>&1; then
|
||||
BAT_PATH=$(upower -e | grep -E "battery|BAT" | head -n1)
|
||||
fi
|
||||
|
||||
if [ -z "$BAT_PATH" ]; then
|
||||
# try linux sysfs battery status file
|
||||
if [ -r /sys/class/power_supply/BAT0/status ]; then
|
||||
BAT_STATUS_FILE="/sys/class/power_supply/BAT0/status"
|
||||
else
|
||||
BAT_STATUS_FILE=""
|
||||
fi
|
||||
BATTERY_STATUS=""
|
||||
if [ -n "$BAT_STATUS_FILE" ]; then
|
||||
BATTERY_STATUS=$(cat "$BAT_STATUS_FILE")
|
||||
fi
|
||||
else
|
||||
# use upower to read battery properties
|
||||
BATTERY_STATUS=$(upower -i "$BAT_PATH" | awk -F: '/state:/ {gsub(/^[ \t]+|[ \t]+$/,"",$2); print $2; exit}')
|
||||
fi
|
||||
|
||||
if [ "$BATTERY_STATUS" = "charging" ] || [ "$BATTERY_STATUS" = "Charging" ]; then
|
||||
if [ -n "$BAT_PATH" ]; then
|
||||
# get everything after the colon and trim
|
||||
TIME_TO_FULL=$(upower -i "$BAT_PATH" | sed -n 's/^[ \t]*time to full:[ \t]*//Ip')
|
||||
else
|
||||
TIME_TO_FULL=""
|
||||
fi
|
||||
if [ -n "$TIME_TO_FULL" ]; then
|
||||
echo " ${TIME_TO_FULL} to full"
|
||||
else
|
||||
echo " Charging"
|
||||
fi
|
||||
elif [ "$BATTERY_STATUS" = "discharging" ] || [ "$BATTERY_STATUS" = "Discharging" ]; then
|
||||
if [ -n "$BAT_PATH" ]; then
|
||||
TIME_TO_EMPTY=$(upower -i "$BAT_PATH" | sed -n 's/^[ \t]*time to empty:[ \t]*//Ip')
|
||||
else
|
||||
TIME_TO_EMPTY=""
|
||||
fi
|
||||
if [ -n "$TIME_TO_EMPTY" ]; then
|
||||
echo " ${TIME_TO_EMPTY} to empty"
|
||||
else
|
||||
echo " Discharging"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check if internet is up by pinging a reliable host
|
||||
if ping -c 1 -W 1 woodburn.au > /dev/null 2>&1; then
|
||||
INTERNET_STATUS="up"
|
||||
else
|
||||
INTERNET_STATUS="down"
|
||||
fi
|
||||
|
||||
# Get WIFI SSID if connected
|
||||
echo " Internet: ${INTERNET_STATUS}"
|
||||
|
||||
# Get network info for each active interface
|
||||
for IFACE in $(ls /sys/class/net/ | grep -E '^(en|wl|wg|tailscale|tun)'); do
|
||||
IFACE_STATE=""
|
||||
# safe read operstate
|
||||
if [ -r "/sys/class/net/$IFACE/operstate" ]; then
|
||||
IFACE_STATE=$(cat "/sys/class/net/$IFACE/operstate")
|
||||
fi
|
||||
# show physical interfaces when up, and always show virtual interfaces (tailscale/wg/tun)
|
||||
if [ "$IFACE_STATE" = "up" ] || [[ "$IFACE" == tailscale* ]] || [[ "$IFACE" == wg* ]] || [[ "$IFACE" == tun* ]]; then
|
||||
RX_BYTES=$(cat "/sys/class/net/$IFACE/statistics/rx_bytes" 2>/dev/null || echo 0)
|
||||
TX_BYTES=$(cat "/sys/class/net/$IFACE/statistics/tx_bytes" 2>/dev/null || echo 0)
|
||||
RX_HR=$(numfmt --to=iec --suffix=B "$RX_BYTES")
|
||||
TX_HR=$(numfmt --to=iec --suffix=B "$TX_BYTES")
|
||||
|
||||
echo " ${IFACE}: ${RX_HR} ${TX_HR}"
|
||||
fi
|
||||
done
|
||||
|
||||
# curl https://wttr.in/Canberra\?format\="%l:+%t+UV:+%u"
|
||||
@@ -1,9 +1,11 @@
|
||||
exec-once = hyprpm reload -n
|
||||
exec-once = hyprpanel
|
||||
exec-once = hyprpaper
|
||||
exec-once = hyprpanel > ~/.logs/hyprpanel.log
|
||||
# exec-once = hyprpaper > ~/.logs/hyprpaper.log # Using swww now
|
||||
exec-once = hypridle
|
||||
|
||||
exec-once = /usr/bin/kdeconnectd
|
||||
exec-once = systemctl --user start hyprpolkitagent
|
||||
exec-once = ~/.config/hypr/scripts/exec-once.sh > ~/.logs/exec-once.log 2>&1
|
||||
|
||||
# Random wallpaper
|
||||
exec-once = wl-clip-persist --clipboard regular
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
# hyprlang noerror true
|
||||
|
||||
|
||||
# Default floating rules to stop windows being too large or small
|
||||
windowrulev2 = size <80% <80%,floating:1
|
||||
windowrulev2 = size >50% >75%, class:(^org.kde.kdenlive$)
|
||||
windowrule = float, class:(^xdg-desktop-portal-gtk$)
|
||||
windowrule = size <80% <80%, class:(^xdg-desktop-portal-gtk$)
|
||||
# windowrulev2 = size >50% >50%,floating:1
|
||||
|
||||
|
||||
# windowrulev2 = float,class:(clipse)
|
||||
# windowrulev2 = size 622 652,class:(clipse)
|
||||
# windowrulev2 = stayfocused,class:(clipse)
|
||||
# windowrulev2 = opacity 1 override 1 override,class:(clipse)
|
||||
|
||||
windowrulev2 = float,class:(float)
|
||||
windowrule = size <80% <80%,class:(float)
|
||||
@@ -23,36 +26,82 @@ windowrulev2 = float,class:(mpv)
|
||||
windowrulev2 = float,class:^(brave-)(.*)(-.*)$
|
||||
windowrulev2 = move onscreen cursor,class:^(brave-)(.*)(-.*)$
|
||||
|
||||
windowrulev2 = move onscreen cursor -50% 0,class:^(Nextcloud)$
|
||||
|
||||
# # Start windows
|
||||
stickyrule = class:discord,5
|
||||
stickyrule = class:vesktop,5
|
||||
stickyrule = class:org.telegram.desktop,5
|
||||
stickyrule = class:Slack,5
|
||||
|
||||
windowrulev2 = move onscreen cursor -50% 0,class:^(com.nextcloud.desktopclient.nextcloud)$
|
||||
windowrulev2 = float,class:^(com.nextcloud.desktopclient.nextcloud)$
|
||||
windowrule = size 800 500,class:^(com.nextcloud.desktopclient.nextcloud)$
|
||||
|
||||
workspace = special:gromit, gapsin:0, gapsout:0, shadow:0, on-created-empty: gromit-mpx -a
|
||||
windowrule = noblur, class:^(Gromit-mpx)$
|
||||
windowrule = opacity 1 override, 1 override, class:^(Gromit-mpx)$
|
||||
windowrule = opacity 1 override 1 override, class:^(Gromit-mpx)$
|
||||
windowrule = noshadow, class:^(Gromit-mpx)$
|
||||
windowrule = suppressevent fullscreen, class:^(Gromit-mpx)$
|
||||
windowrule = size 100% 100%, class:^(Gromit-mpx)$
|
||||
|
||||
|
||||
# Floating broken windows
|
||||
windowrule = opacity 1 override 1 override, class:^(xdg-desktop-portal-gtk)$
|
||||
windowrule = stayfocused, class:^(xdg-desktop-portal-gtk)$
|
||||
windowrule = stayfocused, class:^(soffice)$
|
||||
windowrule = stayfocused, class:^(virt-manager)$, title:^$
|
||||
#windowrule = float 1, class:^(xdg-desktop-portal-gtk)$
|
||||
|
||||
windowrulev2 = stayfocused, class:^(Sparrow)$, title:^$, xwayland:1
|
||||
windowrulev2 = focusonactivate 1, class:^(Sparrow)$, title:^$, xwayland:1
|
||||
windowrulev2 = allowsinput 1, class:^(Sparrow)$, title:^$, xwayland:1
|
||||
windowrulev2 = stayfocused, class:^(Sparrow)$, title:^$, xwayland:1
|
||||
|
||||
|
||||
|
||||
|
||||
# No Opacity windowrules
|
||||
windowrule = opacity 1 override 1 override class:brave-browser
|
||||
windowrule = opacity 1 override 1 override class:mpv
|
||||
windowrule = opacity 1 override 1 override class:virt-manager
|
||||
windowrule = opacity 1 override 1 override class:^(Bootstrap Studio)$
|
||||
windowrule = opacity 1 override 1 override class:^(Minecraft)(.*)$
|
||||
windowrule = opacity 1 override 1 override class:^(gimp)$
|
||||
windowrule = opacity 1 override 1 override, class:^(brave-browser)$
|
||||
windowrule = opacity 1 override 1 override, class:^(mpv)$
|
||||
windowrule = opacity 1 override 1 override, class:^(virt-manager)$
|
||||
windowrule = opacity 1 override 1 override, class:^(Bootstrap Studio)$
|
||||
windowrule = opacity 1 override 1 override, class:^(Minecraft)(.*)$
|
||||
windowrule = opacity 1 override 1 override, class:^(gimp)$
|
||||
windowrule = opacity 1 override 1 override, class:^(com.obsproject.Studio)$
|
||||
windowrule = opacity 1 override 1 override, class:^$
|
||||
|
||||
|
||||
# Disable opacity for Alacritty (as it already has a transparent background)
|
||||
windowrule = opacity 1 override 0.75 override class:Alacritty
|
||||
|
||||
windowrule = opacity 1 override 0.75 override, class:^(Alacritty)$
|
||||
|
||||
workspace = special:terminal, on-created-empty: alacritty
|
||||
|
||||
# hyprlang noerror false
|
||||
# Tags for opacity
|
||||
windowrule = opacity 0.1 override 0.1 override, tag:opacity:0.1
|
||||
windowrule = opacity 0.2 override 0.2 override, tag:opacity:0.2
|
||||
windowrule = opacity 0.3 override 0.3 override, tag:opacity:0.3
|
||||
windowrule = opacity 0.4 override 0.4 override, tag:opacity:0.4
|
||||
windowrule = opacity 0.5 override 0.5 override, tag:opacity:0.5
|
||||
windowrule = opacity 0.6 override 0.6 override, tag:opacity:0.6
|
||||
windowrule = opacity 0.7 override 0.7 override, tag:opacity:0.7
|
||||
windowrule = opacity 0.8 override 0.8 override, tag:opacity:0.8
|
||||
windowrule = opacity 0.9 override 0.9 override, tag:opacity:0.9
|
||||
windowrule = opacity 1 override 1 override, tag:opacity:1
|
||||
|
||||
|
||||
# freeRDP - Remote Desktop Protocol Client
|
||||
windowrule = float, class:^(xfreerdp)$
|
||||
# match by X11 WM_CLASS you set in xfreerdp
|
||||
windowrule = float, class:^(Autodesk Fusion)$
|
||||
windowrule = center, class:^(Autodesk Fusion)$
|
||||
# prevent tiling / auto-fullscreen for these windows
|
||||
#windowrulev2 = disableautotile, xclass:Autodesk Fusion
|
||||
windowrule = float, class:^(Autodesk Fusion)$
|
||||
# optionally force borderless (if you prefer)
|
||||
windowrule = noborder, class:^(Autodesk Fusion)$
|
||||
|
||||
|
||||
|
||||
|
||||
#! (Still doesn't work) Add org.kde.kdeconnect.daemon for KDE connect pointer
|
||||
windowrule = noblur, class:^(org.kde.kdeconnect.daemon)$ #As it is transparent it will prevent it blurring so you can see what you are ponting at
|
||||
windowrule = nofocus,class:^(org.kde.kdeconnect.daemon)$ # Disables focus so if you have the option to dim on focus it will not dim the window behind it
|
||||
windowrule = nodim,class:^(org.kde.kdeconnect.daemon)$ # As it is out of focus it will prevent it from diming, so its brighter if you have window dimming on
|
||||
windowrule = noshadow,class:^(org.kde.kdeconnect.daemon)$ # Preents it having a shadow if you have window shadows on
|
||||
windowrule = idleinhibit,class:^(org.kde.kdeconnect.daemon)$ # Will prevent your computer from idling if this is in use
|
||||
windowrule = float,class:^(org.kde.kdeconnect.daemon)$
|
||||
# windowrule = maximize,class:^(org.kde.kdeconnect.daemon)$
|
||||
# windowrule = move 0 0,class:^(org.kde.kdeconnect.daemon)$
|
||||
|
||||
|
||||
@@ -18,17 +18,15 @@
|
||||
"dashboard",
|
||||
"media"
|
||||
],
|
||||
"middle": [
|
||||
"custom/vdesks"
|
||||
],
|
||||
"middle": [],
|
||||
"right": [
|
||||
"volume",
|
||||
"bluetooth",
|
||||
"network",
|
||||
"battery",
|
||||
"systray",
|
||||
"clock",
|
||||
"notifications",
|
||||
"cputemp"
|
||||
"notifications"
|
||||
]
|
||||
},
|
||||
"1": {
|
||||
@@ -36,28 +34,23 @@
|
||||
"dashboard",
|
||||
"media"
|
||||
],
|
||||
"middle": [
|
||||
"custom/vdesks"
|
||||
],
|
||||
"middle": [],
|
||||
"right": [
|
||||
"volume",
|
||||
"bluetooth",
|
||||
"network",
|
||||
"battery",
|
||||
"systray",
|
||||
"clock",
|
||||
"notifications",
|
||||
"cputemp"
|
||||
"notifications"
|
||||
]
|
||||
},
|
||||
"2": {
|
||||
"left": [
|
||||
"dashboard",
|
||||
"workspaces"
|
||||
],
|
||||
"middle": [
|
||||
"media",
|
||||
"custom/vdesks"
|
||||
"media"
|
||||
],
|
||||
"middle": [],
|
||||
"right": [
|
||||
"volume",
|
||||
"network",
|
||||
@@ -498,5 +491,9 @@
|
||||
"theme.bar.buttons.background_opacity": 100,
|
||||
"theme.osd.border.color": "#ffffff",
|
||||
"theme.osd.enableShadow": true,
|
||||
"terminal": "alacritty -e"
|
||||
"terminal": "alacritty -e",
|
||||
"menus.power.showLabel": true,
|
||||
"bar.customModules.storage.paths": [
|
||||
"/"
|
||||
]
|
||||
}
|
||||
@@ -1,12 +1,2 @@
|
||||
{
|
||||
"custom/vdesks": {
|
||||
"icon": "🖥️",
|
||||
"label": "Virtual Desktops {current}",
|
||||
"tooltip": "Manage virtual desktops",
|
||||
"truncationSize": -1,
|
||||
"execute": "/home/$USER/scripts/vdesks.sh",
|
||||
"executeOnAction": "alacritty --class float -e ping 1.1.1.1",
|
||||
"interval": 1000,
|
||||
"hideOnEmpty": true
|
||||
}
|
||||
}
|
||||
0
.config/hyprpanel/modules.scss
Normal file
0
.config/hyprpanel/modules.scss
Normal file
@@ -4,7 +4,7 @@ bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
|
||||
background_opacity 0
|
||||
background_opacity 1
|
||||
confirm_os_window_close 0
|
||||
|
||||
# change to x11 or wayland or leave auto
|
||||
|
||||
@@ -128,6 +128,21 @@ keybinds clear-defaults=true {
|
||||
}
|
||||
SwitchToMode "normal"
|
||||
}
|
||||
bind "a" {
|
||||
LaunchOrFocusPlugin "zellij:about" {
|
||||
floating true
|
||||
move_to_focused_tab true
|
||||
};
|
||||
SwitchToMode "Normal"
|
||||
}
|
||||
bind "s" {
|
||||
LaunchOrFocusPlugin "zellij:share" {
|
||||
floating true
|
||||
move_to_focused_tab true
|
||||
};
|
||||
SwitchToMode "Normal"
|
||||
}
|
||||
|
||||
}
|
||||
shared_except "locked" {
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
@@ -140,7 +155,6 @@ keybinds clear-defaults=true {
|
||||
bind "Alt i" { MoveTab "left"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
bind "Alt o" { MoveTab "right"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
}
|
||||
shared_except "locked" "move" {
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
|
||||
@@ -3,7 +3,7 @@ layout {
|
||||
pane
|
||||
}
|
||||
|
||||
swap_tiled_layout name="Tiled 1" {
|
||||
swap_tiled_layout name="T1" {
|
||||
tab max_panes=4 {
|
||||
pane split_direction="vertical" {
|
||||
pane
|
||||
@@ -25,7 +25,7 @@ layout {
|
||||
}
|
||||
}
|
||||
|
||||
swap_tiled_layout name="Tiled 2" {
|
||||
swap_tiled_layout name="T2" {
|
||||
tab max_panes=5 {
|
||||
pane
|
||||
pane
|
||||
@@ -45,7 +45,7 @@ layout {
|
||||
}
|
||||
}
|
||||
|
||||
swap_tiled_layout name="Tiled 3" {
|
||||
swap_tiled_layout name="T3" {
|
||||
tab max_panes=4 {
|
||||
pane split_direction="vertical" {
|
||||
pane
|
||||
@@ -101,7 +101,7 @@ layout {
|
||||
}
|
||||
}
|
||||
|
||||
swap_floating_layout name="Floating L1" {
|
||||
swap_floating_layout name="FL1" {
|
||||
floating_panes max_panes=1 {
|
||||
pane
|
||||
}
|
||||
@@ -144,7 +144,7 @@ layout {
|
||||
|
||||
hide_frame_for_single_pane "false"
|
||||
|
||||
mode_normal "#[bg=blue] #[] Ctrl + Lock (#[bold]g#[]), #[bold]P#[]ane, #[bold]T#[]ab, Resize (#[bold]n#[]), Move (#[bold]h#[]), #[bold]S#[]earch, Sessi#[bold]o#[]n, #[bold]Q#[]uit"
|
||||
mode_normal "#[bg=blue] #[] Ctrl + Lock (#[bold]g#[]), #[bold]P#[]ane, #[bold]T#[]ab, Resize (#[bold]n#[]), Move (#[bold]h#[]), #[bold]S#[]earch, Sessi#[bold]o#[]n"
|
||||
mode_locked "#[bg=red] #[]"
|
||||
|
||||
mode_pane "#[bg=blue] {name} (p) #[] #[bold]N#[]ew, Close (#[bold]x#[]), Rename (#[bold]c#[]), #[bold]F#[]ullscreen, Float (#[bold]w#[]), #[bold]E#[]mbed"
|
||||
@@ -155,7 +155,7 @@ layout {
|
||||
|
||||
mode_rename_tab "#[bg=blue] {name} #[]"
|
||||
mode_rename_pane "#[bg=blue] {name} #[]"
|
||||
mode_session "#[bg=blue] {name} (o) #[] #[bold]D#[]etach, Session Manager (#[bold]w#[]), Plugins (#[bold]p#[]), #[bold]C#[]onfig"
|
||||
mode_session "#[bg=blue] {name} (o) #[] #[bold]D#[]etach, Session Manager (#[bold]w#[]), Plugins (#[bold]p#[]), #[bold]C#[]onfig, Web (#[bold]s#[]), #[bold]A#[]bout"
|
||||
|
||||
mode_enter_search "#[bg=blue] Search #[] Enter when done"
|
||||
mode_search "#[bg=blue] Search Results #[] Scroll (#[bold]↓↑#[]), #[bold]N#[]ext, #[bold]P#[]revious, #[bold]C#[]ase-insensitive, #[bold]W#[]rap, Wh#[bold]o#[]le word"
|
||||
|
||||
4
.gitattributes
vendored
Normal file
4
.gitattributes
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.jpg filter=lfs diff=lfs merge=lfs -text
|
||||
*.jpeg filter=lfs diff=lfs merge=lfs -text
|
||||
*.webp filter=lfs diff=lfs merge=lfs -text
|
||||
4
.profile
4
.profile
@@ -34,6 +34,8 @@ export PATH="$PATH:/home/nathan/Android/Sdk/cmdline-tools/latest/bin/"
|
||||
. "$HOME/.cargo/env"
|
||||
|
||||
export PATH="/home/nathan/.local/share/solana/install/active_release/bin:$PATH"
|
||||
export HSD_API_KEY=30e7b7974d99c62b241a9daf3d4924a108515b03
|
||||
export HSD_URL=hsd01.dev.woodburn.au
|
||||
export HSD_HTTP_HOST=hsd01.dev.woodburn.au
|
||||
export HSD_API_KEY=y5cSK42tgVCdt4E58jkHjI3nQ9GU32bC
|
||||
|
||||
. "$HOME/.atuin/bin/env"
|
||||
|
||||
0
.zsh_functions/_cargo
Normal file
0
.zsh_functions/_cargo
Normal file
3
.zshenv
3
.zshenv
@@ -3,3 +3,6 @@
|
||||
export PATH="$PATH:/home/nathan/.cyfrin/bin"
|
||||
|
||||
export PATH="$PATH:/home/nathan/.foundry/bin"
|
||||
export HSD_URL=hsd01.dev.woodburn.au
|
||||
export HSD_HTTP_HOST=hsd01.dev.woodburn.au
|
||||
export HSD_API_KEY=y5cSK42tgVCdt4E58jkHjI3nQ9GU32bC
|
||||
|
||||
238
.zshrc
238
.zshrc
@@ -1,191 +1,109 @@
|
||||
# If you come from bash you might have to change your $PATH. export PATH=$HOME/bin:/usr/local/bin:$PATH
|
||||
# ~/.zshrc optimized for performance
|
||||
|
||||
# Path to your oh-my-zsh installation.
|
||||
|
||||
### 🚀 Performance Tweaks
|
||||
# Avoid compaudit delays unless root
|
||||
autoload -Uz compinit
|
||||
zstyle ':completion:*' use-cache on
|
||||
zstyle ':completion:*' cache-path ~/.zsh/cache
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
compinit -C -d ~/.zsh/cache/zcompdump
|
||||
else
|
||||
compinit -d ~/.zsh/cache/zcompdump
|
||||
fi
|
||||
|
||||
# TMP profiler
|
||||
# zmodload zsh/zprof
|
||||
|
||||
### 📦 Plugin & Framework Setup
|
||||
export ZSH="$HOME/.oh-my-zsh"
|
||||
|
||||
# Set name of the theme to load --- if set to "random", it will
|
||||
# load a random theme each time oh-my-zsh is loaded, in which case,
|
||||
# to know which specific one was loaded, run: echo $RANDOM_THEME
|
||||
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
|
||||
ZSH_THEME="robbyrussell"
|
||||
plugins=(nvm git sudo systemadmin)
|
||||
|
||||
# Set list of themes to pick from when loading at random
|
||||
# Setting this variable when ZSH_THEME=random will cause zsh to load
|
||||
# a theme from this variable instead of looking in $ZSH/themes/
|
||||
# If set to an empty array, this variable will have no effect.
|
||||
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
|
||||
|
||||
# Uncomment the following line to use case-sensitive completion.
|
||||
# CASE_SENSITIVE="true"
|
||||
|
||||
# Uncomment the following line to use hyphen-insensitive completion.
|
||||
# Case-sensitive completion must be off. _ and - will be interchangeable.
|
||||
# HYPHEN_INSENSITIVE="true"
|
||||
|
||||
# Uncomment one of the following lines to change the auto-update behavior
|
||||
# zstyle ':omz:update' mode disabled # disable automatic updates
|
||||
# zstyle ':omz:update' mode auto # update automatically without asking
|
||||
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
|
||||
|
||||
# Uncomment the following line to change how often to auto-update (in days).
|
||||
# zstyle ':omz:update' frequency 13
|
||||
|
||||
# Uncomment the following line if pasting URLs and other text is messed up.
|
||||
# DISABLE_MAGIC_FUNCTIONS="true"
|
||||
|
||||
# Uncomment the following line to disable colors in ls.
|
||||
# DISABLE_LS_COLORS="true"
|
||||
|
||||
# Uncomment the following line to disable auto-setting terminal title.
|
||||
# DISABLE_AUTO_TITLE="true"
|
||||
|
||||
# Uncomment the following line to enable command auto-correction.
|
||||
# ENABLE_CORRECTION="true"
|
||||
|
||||
# Uncomment the following line to display red dots whilst waiting for completion.
|
||||
# You can also set it to another string to have that shown instead of the default red dots.
|
||||
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
|
||||
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
|
||||
# COMPLETION_WAITING_DOTS="true"
|
||||
|
||||
# Uncomment the following line if you want to disable marking untracked files
|
||||
# under VCS as dirty. This makes repository status check for large repositories
|
||||
# much, much faster.
|
||||
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||
|
||||
# Uncomment the following line if you want to change the command execution time
|
||||
# stamp shown in the history command output.
|
||||
# You can set one of the optional three formats:
|
||||
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
|
||||
# or set a custom format using the strftime function format specifications,
|
||||
# see 'man strftime' for details.
|
||||
# HIST_STAMPS="mm/dd/yyyy"
|
||||
|
||||
# Would you like to use another custom folder than $ZSH/custom?
|
||||
# ZSH_CUSTOM=/path/to/new-custom-folder
|
||||
|
||||
# Which plugins would you like to load?
|
||||
# Standard plugins can be found in $ZSH/plugins/
|
||||
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
|
||||
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||
# Add wisely, as too many plugins slow down shell startup.
|
||||
plugins=(git sudo systemadmin tldr)
|
||||
# Lazy-load nvm
|
||||
zstyle ':omz:plugins:nvm' lazy yes
|
||||
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
|
||||
# User configuration
|
||||
|
||||
# export MANPATH="/usr/local/man:$MANPATH"
|
||||
|
||||
# You may need to manually set your language environment
|
||||
# export LANG=en_US.UTF-8
|
||||
|
||||
# Preferred editor for local and remote sessions
|
||||
# if [[ -n $SSH_CONNECTION ]]; then
|
||||
# export EDITOR='vim'
|
||||
# else
|
||||
# export EDITOR='mvim'
|
||||
# fi
|
||||
|
||||
# Compilation flags
|
||||
# export ARCHFLAGS="-arch x86_64"
|
||||
|
||||
# Set personal aliases, overriding those provided by oh-my-zsh libs,
|
||||
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
|
||||
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
|
||||
# For a full list of active aliases, run `alias`.
|
||||
#
|
||||
# Example aliases
|
||||
# alias zshconfig="mate ~/.zshrc"
|
||||
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||
### 🔧 Environment Config
|
||||
export EDITOR=nano
|
||||
export VISUAL=nano
|
||||
export ANDROID_HOME="$HOME/Android/Sdk"
|
||||
export LIBVIRT_DEFAULT_URI="qemu:///system"
|
||||
|
||||
# Set path at the start to ensure all commands can find their binaries
|
||||
export PATH="/usr/bin:$PATH"
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
|
||||
export PATH="$ANDROID_HOME/platform-tools:$PATH"
|
||||
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$PATH"
|
||||
export PATH="$HOME/.pub-cache/bin:$PATH"
|
||||
export PATH="/opt/flutter/flutter/bin:$PATH"
|
||||
export PATH="$HOME/go/bin:$PATH"
|
||||
export PATH="$HOME/Downloads/go/bin:$PATH"
|
||||
export PATH="$HOME/Downloads/idea-IU-232.10072.27/bin:$PATH"
|
||||
export PATH="$HOME/exe/zig-linux-x86_64-0.13.0:$PATH"
|
||||
export PATH="$HOME/Downloads/javacc-javacc-7.0.13/javacc-javacc-7.0.13/scripts:$PATH"
|
||||
export PATH="$HOME/.atuin/bin:$PATH"
|
||||
|
||||
#eval "$(oh-my-posh init zsh --config ~/theme.omp.json)"
|
||||
### ⚙️ Tools Init
|
||||
eval "$(zoxide init --cmd cd zsh)"
|
||||
eval "$(oh-my-posh init zsh --config ~/theme.omp.json)"
|
||||
eval "$(atuin init zsh --disable-up-arrow)"
|
||||
bindkey '^[[1;5A' atuin-up-search
|
||||
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||
. "$HOME/.atuin/bin/env"
|
||||
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
eval "$(pyenv init - zsh)"
|
||||
|
||||
export ANDROID_HOME=/home/$USER/Android/Sdk
|
||||
# Zellij auto-start
|
||||
ZELLIJ_AUTO_EXIT=true
|
||||
eval "$(zellij setup --generate-auto-start zsh)"
|
||||
|
||||
# Path stuff
|
||||
export PATH="/home/$USER/Downloads/go/bin:$PATH"
|
||||
export PATH="/home/$USER/Downloads/idea-IU-232.10072.27/bin:$PATH"
|
||||
export PATH="/home/$USER/.local/bin:$PATH"
|
||||
export PATH="$PATH:$ANDROID_HOME/platform-tools"
|
||||
export PATH="$PATH:/home/$USER/Android/Sdk/cmdline-tools/latest/bin/"
|
||||
export PATH="$PATH:$HOME/.pub-cache/bin"
|
||||
export PATH="$PATH:/opt/flutter/flutter/bin"
|
||||
export PATH="/home/$USER/.local/share/solana/install/active_release/bin:$PATH"
|
||||
export PATH="$PATH:/home/$USER/exe/zig-linux-x86_64-0.13.0"
|
||||
export PATH="$PATH:/home/$USER/go/bin"
|
||||
### 🐚 Shell Options
|
||||
setopt NO_SHARE_HISTORY
|
||||
|
||||
|
||||
export FZF_DEFAULT_OPTS='--preview "bat --color=always {}"'
|
||||
#export MANPAGER="sh -c 'col -bx | bat -l man -p'"
|
||||
|
||||
|
||||
|
||||
|
||||
# Alias stuff
|
||||
### 💻 Aliases
|
||||
alias reload='exec zsh'
|
||||
alias hcurl='curl --doh-url https://hnsdoh.com/dns-query'
|
||||
alias ls='eza --icons=auto'
|
||||
alias ll='eza --long --group --header --icons --classify'
|
||||
alias ani-cli='FZF_DEFAULT_OPTS= ani-cli'
|
||||
|
||||
eval "$(zoxide init --cmd cd zsh)"
|
||||
eval "$(oh-my-posh init zsh --config ~/theme.omp.json)"
|
||||
|
||||
alias z='zellij'
|
||||
alias za='zellij attach'
|
||||
tre() { command tre "$@" && source "/tmp/tre_aliases_$USER" 2>/dev/null; }
|
||||
alias tree=tre
|
||||
alias z='zellij'
|
||||
alias za='zellij attach'
|
||||
alias open='xdg-open'
|
||||
alias vim="nvim"
|
||||
alias vi="nvim"
|
||||
|
||||
alias opacity='/home/$USER/scripts/opacity.sh'
|
||||
alias op='/home/$USER/scripts/opacity.sh'
|
||||
alias blur='/home/$USER/scripts/blur.sh'
|
||||
alias music='/home/$USER/scripts/music.sh'
|
||||
alias venv='source /home/$USER/scripts/venv.sh'
|
||||
alias copy='/home/$USER/scripts/copy.sh'
|
||||
alias upload='/home/$USER/scripts/upload.sh'
|
||||
alias upload_latest_video='/home/$USER/scripts/upload_latest_video.py'
|
||||
alias ts='/home/$USER/scripts/ts.sh'
|
||||
alias hold='/home/$USER/scripts/hold.sh'
|
||||
alias message='/home/$USER/scripts/message.sh'
|
||||
alias dockerstart='/home/$USER/scripts/dockerstart.sh'
|
||||
alias dockerstop='/home/$USER/scripts/dockerstop.sh'
|
||||
alias domains='/home/$USER/scripts/domains.py'
|
||||
alias fix_touchpad='/home/$USER/scripts/fix_touchpad.sh'
|
||||
alias wallpaper='/home/$USER/scripts/wallpaper.py'
|
||||
alias reload='exec zsh'
|
||||
|
||||
alias open=xdg-open
|
||||
# ani-cli with preview
|
||||
alias ani-cli='FZF_DEFAULT_OPTS= ani-cli'
|
||||
|
||||
# Use gitkraken's cli tool
|
||||
unalias gk
|
||||
# Personal scripts
|
||||
for cmd in opacity op blur music copy upload upload_latest_video ts hold message dockerstart dockerstop domains wallpaper cert mount_ssd umount_ssd; do
|
||||
alias $cmd="$HOME/scripts/${cmd}.sh"
|
||||
done
|
||||
|
||||
alias venv="source $HOME/scripts/venv.sh"
|
||||
alias upload_latest_video='$HOME/scripts/upload_latest_video.py'
|
||||
alias domains='$HOME/scripts/domains.py'
|
||||
|
||||
# GitKraken CLI
|
||||
unalias gk 2>/dev/null
|
||||
|
||||
# unzip to folder
|
||||
unzip() {
|
||||
/usr/bin/unzip -d "${1%.*}" "$1"
|
||||
}
|
||||
|
||||
# FZF config
|
||||
export FZF_DEFAULT_OPTS='--preview "bat --color=always {}"'
|
||||
|
||||
|
||||
. "$HOME/.atuin/bin/env"
|
||||
|
||||
eval "$(atuin init zsh --disable-up-arrow)"
|
||||
# Bind CTRL+UP to atuin search
|
||||
bindkey '^[[1;5A' atuin-up-search
|
||||
|
||||
fpath+=${ZDOTDIR:-~}/.zsh_functions
|
||||
FPATH+=${ZDOTDIR:-~}/.zsh_functions
|
||||
export FPATH="/home/$USER/Git/eza/completions/zsh:$FPATH"
|
||||
|
||||
# Start zellij
|
||||
ZELLIJ_AUTO_EXIT=true
|
||||
eval "$(zellij setup --generate-auto-start zsh)"
|
||||
setopt NO_SHARE_HISTORY
|
||||
|
||||
export PATH="$PATH:/home/$USER/Downloads/javacc-javacc-7.0.13/javacc-javacc-7.0.13/scripts"
|
||||
# Completion paths
|
||||
fpath+=(${ZDOTDIR:-~}/.zsh_functions)
|
||||
FPATH+="$HOME/Git/eza/completions/zsh"
|
||||
export FPATH
|
||||
|
||||
Reference in New Issue
Block a user