diff --git a/.config/rofi/config b/.config/rofi/config deleted file mode 100644 index 906627e..0000000 --- a/.config/rofi/config +++ /dev/null @@ -1,2 +0,0 @@ -rofi.font:hack 30 -rofi.theme: breeze-dark diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi index 3658255..bf84040 100644 --- a/.config/rofi/config.rasi +++ b/.config/rofi/config.rasi @@ -1,5 +1,7 @@ configuration { + modi: "combi,window,drun,ssh"; font: "hack 30"; + combi-modi: "window,drun,ssh"; } -@theme "/usr/share/rofi/themes/Arc-Dark.rasi" +@theme "glue_pro_blue" diff --git a/.config/sway/config b/.config/sway/config new file mode 100644 index 0000000..3565404 --- /dev/null +++ b/.config/sway/config @@ -0,0 +1,239 @@ +# === General Settings === +set $mod Mod4 +set $alt Mod1 +set $myTerm alacritty + +font pango:MesloLGS NF 11 + +floating_modifier $mod +#hide_edge_borders none +default_border none + +# === Monitor related === + +# === Terminal === +bindsym $mod+Return exec $myTerm --command tmux +bindsym $mod+Ctrl+Return exec $myTerm + +# === Program Launcher & Utilities === +#bindsym $mod+Shift+Return exec wofi --show drun --style ~/.config/wofi/style.css +bindsym $mod+Shift+Return exec rofi -show combi +bindsym $mod+Print exec "flameshot full -c" +bindsym $mod+Shift+Print exec "flameshot gui" +bindsym $mod+Ctrl+Shift+Print exec --no-startup-id simplescreenrecorder --start-hidden --start-recording + +# === input devices === + +input type:touchpad { + tap enabled + natural_scroll enabled + tap_button_map lrm # tap with 1 finger = left click, 2 fingers = right click, 3 fingers = middle click +} +input type:keyboard { + xkb_layout us + xkb_variant intl +} + +# === Volume & Media Keys === +bindsym XF86AudioLowerVolume exec pamixer --decrease 5 +bindsym XF86AudioRaiseVolume exec pamixer --increase 5 +bindsym XF86AudioMute exec pamixer -t +bindsym $mod+XF86AudioMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle + +bindsym XF86AudioPlay exec playerctl play-pause +bindsym XF86AudioNext exec playerctl next +bindsym XF86AudioPrev exec playerctl previous +bindsym $mod+XF86AudioRaiseVolume exec playerctl next +bindsym $mod+XF86AudioLowerVolume exec playerctl previous + +# === Brightness Keys === +bindsym XF86MonBrightnessUp exec "light -A 5; notify-send 'Brightness set to $(light)'" +bindsym XF86MonBrightnessDown exec "light -U 5; notify-send 'Brightness set to $(light)'" +bindsym $mod+XF86MonBrightnessDown exec "light -S 0.2; notify-send 'Brightness set to min'" +bindsym $mod+XF86MonBrightnessUp exec "light -S 100; notify-send 'Brightness set to max'" + +# === Calculator === +bindsym XF86Calculator exec --no-startup-id qalculate-gtk + +# === Kill Window === +bindsym $mod+Shift+c kill + +# === Autostart === +exec waybar -c ~/.config/waybar/config.jsonc +exec --no-startup-id nextcloud +exec mako +exec --no-startup-id mullvad-vpn +exec --no-startup-id redshift ~/.config/redshift/redshift.conf +exec --no-startup-id blueman-applet +exec --no-startup-id flameshot + +# === Idle / Lock === +exec swayidle -w \ + timeout 1800 'swaylock -f' \ + timeout 1860 'systemctl suspend' \ + resume 'notify-send "Welcome back!"' \ + before-sleep 'swaylock -f' + +# === Borders === +bindsym $mod+u border none +bindsym $mod+y border pixel 1 +bindsym $mod+n border normal + +# === Focus Movement === +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# === Move Windows === +bindsym $mod+Shift+h move left +bindsym $mod+Shift+j move down +bindsym $mod+Shift+k move up +bindsym $mod+Shift+l move right +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# === Workspace Management === +workspace_auto_back_and_forth yes +bindsym $mod+b workspace back_and_forth +bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth + +bindsym $mod+Ctrl+Right workspace next +bindsym $mod+Ctrl+Left workspace prev + +set $ws1 1 +set $ws2 2 +set $ws3 3 +set $ws4 4 +set $ws5 5 +set $ws6 6 +set $ws7 7 +set $ws8 8 +set $ws9 9 + +# Switch to workspace +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2 +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4 +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 +bindsym $mod+9 workspace $ws9 + +# Move to workspace +bindsym $mod+Ctrl+1 move container to workspace $ws1 +bindsym $mod+Ctrl+2 move container to workspace $ws2 +bindsym $mod+Ctrl+3 move container to workspace $ws3 +bindsym $mod+Ctrl+4 move container to workspace $ws4 +bindsym $mod+Ctrl+5 move container to workspace $ws5 +bindsym $mod+Ctrl+6 move container to workspace $ws6 +bindsym $mod+Ctrl+7 move container to workspace $ws7 +bindsym $mod+Ctrl+8 move container to workspace $ws8 +bindsym $mod+Ctrl+9 move container to workspace $ws9 + +# Move and switch +bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 +bindsym $mod+Shift+9 move container to workspace $ws9; workspace $ws9 + +# === Monitor Output Control === +bindsym $mod+greater focus output right +bindsym $mod+less focus output left +bindsym $mod+Ctrl+greater move container to output right; focus output right +bindsym $mod+Ctrl+less move container to output left; focus output left +bindsym $mod+Ctrl+Shift+greater move workspace to output right +bindsym $mod+Ctrl+Shift+less move workspace to output left +bindsym $mod+Ctrl+Shift+h move workspace to output left +bindsym $mod+Ctrl+Shift+l move workspace to output right +bindsym $mod+Ctrl+Shift+k move workspace to output up +bindsym $mod+Ctrl+Shift+j move workspace to output down + +# === Layout and Modes === +bindsym $mod+z split h; exec notify-send 'Tile horizontally' +bindsym $mod+v split v; exec notify-send 'Tile vertically' +bindsym $mod+q split toggle +bindsym $mod+f fullscreen toggle +bindsym $mod+Shift+y fullscreen disable; floating enable; resize set 640 480; sticky enable; move window to position 1270 590 +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split +bindsym $mod+Shift+space floating toggle +bindsym $mod+space focus mode_toggle +bindsym $mod+Shift+s sticky toggle +bindsym $mod+a focus parent + +# === Scratchpad === +bindsym $mod+Shift+minus move scratchpad +bindsym $mod+minus scratchpad show + +# === Resize Mode === +bindsym $mod+r mode "resize" +mode "resize" { + bindsym h resize shrink width 4 px or 4 ppt + bindsym j resize grow height 4 px or 4 ppt + bindsym k resize shrink height 4 px or 4 ppt + bindsym l resize grow width 4 px or 4 ppt + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# === System Actions === +bindsym $mod+Ctrl+l exec --no-startup-id i3lock -c 000000 +bindsym $mod+Ctrl+Shift+$alt+l exec --no-startup-id light-locker-command -l +bindsym $mod+Shift+Ctrl+$alt+h exec --no-startup-id systemctl hibernate +bindsym $mod+Shift+Ctrl+$alt+s exec --no-startup-id systemctl suspend + +# === Assign Applications === +assign [class="Thunderbird"] $ws9 +assign [class="Spotify"] $ws9 + +# === Floating Windows === +for_window [title="alsamixer"] floating enable border pixel 1 +for_window [title="Qalculate!"] floating enable border normal +for_window [class="Psensor"] floating enable border normal +for_window [title="lxrandr"] floating enable border normal +for_window [class="Blueman-manager"] floating enable border normal +for_window [class="GParted"] floating enable border normal +for_window [class="pavucontrol"] floating enable +for_window [class="Volume Control"] floating enable +for_window [class="(?i)VirtualBox"] floating enable border normal + +# Focus urgent windows +for_window [urgent=latest] focus + +# === Reload / Restart sway === +bindsym $mod+Shift+r reload +#bindsym $mod+Shift+r restart + +# === Colors === +client.focused #ff8800 #2F3D44 #FF8800 #FDF6E3 #ff8800 +client.focused_inactive #333333 #222222 #444444 #454948 #222222 +client.unfocused #2F3D44 #2F3D44 #FF8800 #454948 +client.urgent #CB4B16 #FDF6E3 #FF8800 #268BD2 +client.placeholder #000000 #0c0c0c #ffffff #000000 +client.background #2B2C2B + +# === Gaps === +gaps inner 8 +gaps outer -4 +smart_gaps on +smart_borders on + diff --git a/.config/sway/config_bak b/.config/sway/config_bak new file mode 100644 index 0000000..bc2d053 --- /dev/null +++ b/.config/sway/config_bak @@ -0,0 +1,319 @@ +# Set mod key (Mod1=, Mod4=) +set $mod Mod4 +set $alt Mod1 + +# set default desktop layout (default is tiling) +# workspace_layout tabbed + +# Configure border style +new_window pixel 2 +new_float normal + +# Hide borders +hide_edge_borders none + +# change borders +bindsym $mod+u border none +bindsym $mod+y border pixel 1 +bindsym $mod+n border normal + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font MesloLGS NF 11 + +# Use Mouse+$mod to drag floating windows +floating_modifier $mod + +# start a $myTerm +set $myTerm alacritty +bindsym $mod+Return exec $myTerm --command tmux +bindsym $mod+Ctrl+Return exec $myTerm + +# kill focused window +bindsym $mod+Shift+c kill + +# start program launcher +bindsym $mod+Shift+Return exec --no-startup-id wofi -show run + +# make screenshot +bindsym $mod+Print exec "flameshot full -c" +bindsym $mod+Shift+Print exec "flameshot gui" + +# start screenrecording +bindsym $mod+Ctrl+Shift+Print exec --no-startup-id simplescreenrecorder --start-hidden --start-recording + +# Screen brightness controls +bindsym XF86MonBrightnessUp exec "light -A 5; notify-send Brightness set to $(light)" +bindsym XF86MonBrightnessDown exec "light -U 5; notify-send Brightness set to $(light)" +bindsym $mod+XF86MonBrightnessDown exec "light -S 0.2; notify-send Brightness set to min" +bindsym $mod+XF86MonBrightnessUp exec "light -S 100; notify-send Brightness set to max" + +# volumne controls +bindsym XF86AudioLowerVolume exec "pamixer --decrease 5" +bindsym XF86AudioRaiseVolume exec "pamixer --increase 5" +bindsym XF86AudioMute exec "pamixer -t" +bindsym $mod+XF86AudioMute exec "pactl set-source-mute @DEFAULT_SOURCE@ toggle" + +# media controls +bindsym XF86AudioPlay exec playerctl play-pause +bindsym $mod+XF86AudioRaiseVolume exec playerctl next +bindsym $mod+XF86AudioLowerVolume exec playerctl previous +bindsym XF86AudioNext exec playerctl next +bindsym XF86AudioPrev exec playerctl previous + +# misc keyboard keys +bindsym XF86Calculator exec --no-startup-id qalculate-gtk + + +# change focus +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right + +# alternatively, you can use the arrow keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+h move left +bindsym $mod+Shift+j move down +bindsym $mod+Shift+k move up +bindsym $mod+Shift+l move right + +# alternatively, you can use the arrow keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# move focus to different monitors +bindsym $mod+greater focus output right +bindsym $mod+less focus output left + +# move container to different monitors +bindsym $mod+Ctrl+greater move container to output right; focus output right +bindsym $mod+Ctrl+less move container to output left; focus output left + +# move workspace to different monitor +bindsym $mod+Ctrl+Shift+greater move workspace to output right +bindsym $mod+Ctrl+Shift+less move workspace to output left + +# workspace back and forth (with/without active container) +workspace_auto_back_and_forth yes +bindsym $mod+b workspace back_and_forth +bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth + +# split orientation +bindsym $mod+z split h;exec notify-send 'tile horizontally' +bindsym $mod+v split v;exec notify-send 'tile vertically' +bindsym $mod+q split toggle + +# toggle fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle +bindsym $mod+Shift+y fullscreen disable; floating enable; resize set 640 480; sticky enable; move window to position 1270 590 + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# toggle sticky +bindsym $mod+Shift+s sticky toggle +#bindsym $mod+Shift+s exec ~/.i3/i3-display-swap.sh + +# focus the parent container +bindsym $mod+a focus parent + +# move the currently focused window to the scratchpad +bindsym $mod+Shift+minus move scratchpad + +# Show the next scratchpad window or hide the focused scratchpad window. +# If there are multiple scratchpad windows, this command cycles through them. +bindsym $mod+minus scratchpad show + +#navigate workspaces next / previous +bindsym $mod+Ctrl+Right workspace next +bindsym $mod+Ctrl+Left workspace prev + +# Workspace names +# to display names or symbols instead of plain workspace numbers you can use +# something like: set $ws1 1:mail +# set $ws2 2: +set $ws1 1 +set $ws2 2 +set $ws3 3 +set $ws4 4 +set $ws5 5 +set $ws6 6 +set $ws7 7 +set $ws8 8 +set $ws9 9 + +# switch to workspace +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2 +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4 +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 +bindsym $mod+9 workspace $ws9 + +# Move focused container to workspace +bindsym $mod+Ctrl+1 move container to workspace $ws1 +bindsym $mod+Ctrl+2 move container to workspace $ws2 +bindsym $mod+Ctrl+3 move container to workspace $ws3 +bindsym $mod+Ctrl+4 move container to workspace $ws4 +bindsym $mod+Ctrl+5 move container to workspace $ws5 +bindsym $mod+Ctrl+6 move container to workspace $ws6 +bindsym $mod+Ctrl+7 move container to workspace $ws7 +bindsym $mod+Ctrl+8 move container to workspace $ws8 +bindsym $mod+Ctrl+9 move container to workspace $ws9 + +# Move to workspace with focused container +bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 +bindsym $mod+Shift+9 move container to workspace $ws9; workspace $ws9 + +# Open applications on specific workspaces +assign [class="Thunderbird"] $ws9 +assign [class="spotify"] $ws9 + +# Open specific applications in floating mode +for_window [title="alsamixer"] floating enable border pixel 1 +for_window [title="Qalculate!"] floating enable border normal +for_window [class="Psensor"] floating enable border normal +for_window [title="lxrandr"] floating enable border normal +for_window [class="Blueman-manager"] floating enable border normal +for_window [class="GParted"] floating enable border normal +for_window [class="Pavucontrol"] floating enable +for_window [class="(?i)virtualbox"] floating enable border normal + +# switch to workspace with urgent window automatically +for_window [urgent=latest] focus + +# reload the configuration file +bindsym $mod+Ctrl+r reload + +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart + +# Lock screen +bindsym $mod+Ctrl+Shift+$alt+l exec --no-startup-id light-locker-command -l + +# Set shut down, restart +bindsym $mod+Shift+Ctrl+$alt+h exec --no-startup-id systemctl hibernate +bindsym $mod+Shift+Ctrl+$alt+s exec --no-startup-id systemctl suspend + +# set lock combination for i3lock +bindsym $mod+Ctrl+l exec --no-startup-id i3lock -c 000000 + +# Resize window (you can also use the mouse for that) +bindsym $mod+r mode "resize" +mode "resize" { + # Originally set to jkl;. + # These bindings trigger as soon as you enter the resize mode + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym h resize shrink width 4 px or 4 ppt + bindsym j resize grow height 4 px or 4 ppt + bindsym k resize shrink height 4 px or 4 ppt + bindsym l resize grow width 4 px or 4 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # exit resize mode: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Autostart applications +exec --no-startup-id waybar -c ~/.config/waybar/config +exec --no-startup-id nextcloud +exec --no-startup-id mullvad-vpn +exec --no-startup-id redshift ~/.config/redshift/redshift.conf +exec --no-startup-id blueman-applet +exec --no-startup-id flameshot + +# locking specific startup applications +exec swayidle -w \ + timeout 1800 'swaylock -f' \ + timeout 1860 'systemctl suspend' \ + resume 'notify-send "Welcome back!"' \ + before-sleep 'swaylock -f' + +# Color palette used for the terminal ( ~/.Xresources file ) +# Colors are gathered based on the documentation: +# https://i3wm.org/docs/userguide.html#xresources +# Change the variable name at the place you want to match the color +# of your terminal like this: +# [example] +# If you want your bar to have the same background color as your +# terminal background change the line 362 from: +# background #14191D +# to: +# background $term_background +# Same logic applied to everything else. +set_from_resource $term_background background +set_from_resource $term_foreground foreground +set_from_resource $term_color0 color0 +set_from_resource $term_color1 color1 +set_from_resource $term_color2 color2 +set_from_resource $term_color3 color3 +set_from_resource $term_color4 color4 +set_from_resource $term_color5 color5 +set_from_resource $term_color6 color6 +set_from_resource $term_color7 color7 +set_from_resource $term_color8 color8 +set_from_resource $term_color9 color9 +set_from_resource $term_color10 color10 +set_from_resource $term_color11 color11 +set_from_resource $term_color12 color12 +set_from_resource $term_color13 color13 +set_from_resource $term_color14 color14 +set_from_resource $term_color15 color15 + +# Theme colors +# class border backgr. text indic. child_border + client.focused #ff8800 #2F3D44 #FF8800 #FDF6E3 #ff8800 + client.focused_inactive #333333 #222222 #444444 #454948 #222222 + client.unfocused #2F3D44 #2F3D44 #FF8800 #454948 + client.urgent #CB4B16 #FDF6E3 #FF8800 #268BD2 + client.placeholder #000000 #0c0c0c #ffffff #000000 + + client.background #2B2C2B + +# Set inner/outer gaps +gaps inner 8 +gaps outer -4 + + +# Smart gaps (gaps used if only more than one container on the workspace) +smart_gaps on + +# Smart borders (draw borders around container only if it is not the only container on this workspace) +# on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0) +smart_borders on + diff --git a/.config/sway/outputs b/.config/sway/outputs new file mode 100644 index 0000000..c5d41e1 --- /dev/null +++ b/.config/sway/outputs @@ -0,0 +1,20 @@ +# Generated by nwg-displays on 2025-07-09 at 11:40:11. Do not edit manually. + +output "eDP-1" { + mode 3840x2400@59.994Hz + pos 2560 129 + transform normal + scale 2.0 + scale_filter nearest + adaptive_sync off + dpms on +} +output "DP-7" { + mode 2560x1440@59.951Hz + pos 0 0 + transform normal + scale 1.0 + scale_filter nearest + adaptive_sync off + dpms on +} diff --git a/.config/sway/workspaces b/.config/sway/workspaces new file mode 100644 index 0000000..e69de29 diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..41e72fb --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,204 @@ +{ + "layer": "top", + "position": "top", + "modules-left": [ + "tray", + "custom/cpu_linux", + "temperature", + "memory", + "disk", + "custom/nvidia", + ], + "modules-center": [ + "sway/window" + ], + "modules-right": [ + "group/blight", + "custom/colorpicker", + "idle_inhibitor", + "bluetooth", + "group/audio", + "group/networking", + "battery", + "clock" + ], + // layout + "margin": 0, + "spacing": 15, + "reload_style_on_change": true, + "custom/logo": { + "format": "󰊠", + "tooltip": false, + "on-click": "~/.config/rofi/scripts/powermenu.sh" + }, + "clock": { + "format": "{:%a %d.%m.%y | Week: %U | %T}", + "interval": 1, + "tooltip-format": "\n{:%Y %B}\n{calendar}", + "calendar-weeks-pos": "right", + "today-format": "{}", + "format-calendar": "{}", + "format-calendar-weeks": "W{:%V}", + "format-calendar-weekdays": "{}" + }, + "disk": { + "interval": 30, + "format": " {percentage_used}% {free:2} free", + "path": "/" + }, + "memory": { + "format": " {percentage}% {used:.1f}/{total:.1f} S: {swapUsed:.1f}/{swapTotal:.1f}" + }, + "custom/cpu_linux": { + "exec": "~/.config/waybar/scripts/cpu_linux.sh", + "return-type": "json", + "interval": 2, + "format": ": {text}%" + }, + "cpu": { + "interval": 1, + "format": " {usage}%", + "format-icons": [ + "▁", + "▂", + "▃", + "▄", + "▅", + "▆", + "▇", + "█" + ] + }, + "custom/nvidia": { + "exec": "nvidia-smi --query-gpu=utilization.gpu,temperature.gpu --format=csv,nounits,noheader | sed 's/\\([0-9]\\+\\), \\([0-9]\\+\\)/\\1% @ \\2°C/g'", + "format": " {}", + "interval": 4 + }, + "temperature": { + "format": " {temperatureC}°C", + //"thermal_zone": 10, + "hwmon-path": "/sys/devices/platform/coretemp.0/hwmon/hwmon7/temp1_input", + "format-critical": " {temperatureC}°C", + "interval": 1, + "critical-threshold": 80, + "on-click": "psensor" + }, + "tray": { + "icon-size": 14, + "spacing": 5 + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "󰾪 Presentation mode on", + "deactivated": "󰅶" + } + }, + "bluetooth": { + "format-on": "󰂰", + "format-off": "", + "format-disabled": "󰂲", + "format-connected": "󰂴", + "format-connected-battery": "{device_battery_percentage}% 󰂴", + "tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected", + "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}", + "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}", + "tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%", + "on-click": "rofi-bluetooth", + }, + "pulseaudio": { + "format": "{volume}% {icon}", + "format-bluetooth": "󰂰", + "format-muted": "", + "tooltip-format": "{volume}% {icon}", + "format-icons": { + "headphones": "", + "bluetooth": "󰥰", + "handsfree": "", + "headset": "󱡬", + "phone": "", + "portable": "", + "car": "", + "default": [ + "" + ] + }, + "scroll-step": 5, + "justify": "center", + "on-click": "pamixer -t", + "on-click-right": "pavucontrol", + "tooltip-format": "{volume}% {icon}", + "on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +5%", + "on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -5%" + }, + "pulseaudio#mic": { + "format": "{format_source}", + "format-source": "", + "format-source-muted": "", + "tooltip-format": "{volume}% {format_source} ", + "on-click": "pactl set-source-mute 1 toggle", + "on-scroll-down": "pactl set-source-volume 1 -1%", + "on-scroll-up": "pactl set-source-volume 1 +1%" + }, + "group/audio": { + "orientation": "horizontal", + "modules": [ + "pulseaudio", + "pulseaudio#mic" + ] + }, + "group/networking": { + "orientation": "horizontal", + "modules": [ + "network", + "network#speed" + ] + }, + "network": { + "format-wifi": " {essid}", + "format-ethernet": "󰈀", + "format-disconnected": "󱐅", + "tooltip-format": "{ipaddr}", + "tooltip-format-wifi": "{essid} ({signalStrength}%)  \n{ipaddr} | {frequency} MHz{icon}", + "tooltip-format-ethernet": "{ifname} 󰈀 \n{ipaddr} | {frequency} MHz{icon} ", + "tooltip-format-disconnected": "Not Connected", + "on-click": "networkmanager_dmenu" + }, + "network#speed": { + "format": "󰁅 {bandwidthDownBits:20} 󰁝 {bandwidthUpBits:20}", + "interval": 1, + "tooltip-format": "{ipaddr}", + "tooltip-format-wifi": "{essid} ({signalStrength}%)  \n{ipaddr} | {frequency} MHz{icon} ", + "tooltip-format-ethernet": "{ifname} 󰈀 \n{ipaddr} | {frequency} MHz{icon} ", + "tooltip-format-disconnected": "Not Connected", + "tooltip": true, + "on-click": "networkmanager_dmenu" + }, + "battery": { + "interval": 4, + "states": { + "good": 95, + "warning": 30, + "critical": 20 + }, + "tooltip": true, + "format": "{capacity}% {icon} {power:.2f}W {time}", + "format-time": "{H}h {M}min", + "tooltip": "{time}", + //"format-charging": "{capacity}% {icon} {time}%", + "format-charging": "{capacity}% Full at {full-at}%", + "format-plugged": "{capacity}% 󰠠", + //"format-plugged": "{capacity}% 󰠠", + // "format-alt": "{time} {icon}", + "format-icons": [ + "󰪞", + "󰪟", + "󰪠", + "󰪡", + "󰪢", + "󰪣", + "󰪤", + "󰪥" + ] + } +} diff --git a/.config/waybar/scripts/amixer-toggle.sh b/.config/waybar/scripts/amixer-toggle.sh new file mode 100755 index 0000000..ca45bba --- /dev/null +++ b/.config/waybar/scripts/amixer-toggle.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Check the current state of the speaker +state=$(amixer -D pulse sget Master | awk '/\[on\]/{print "unmute"; exit} /\[off\]/{print "mute"; exit}') + +# Toggle the state of the speaker +# +if [ "$state" = "[on] "]; then + amixer +# amixer -D pulse sset Master "$state" > /dev/null + diff --git a/.config/waybar/scripts/brightness.sh b/.config/waybar/scripts/brightness.sh new file mode 100644 index 0000000..7a693aa --- /dev/null +++ b/.config/waybar/scripts/brightness.sh @@ -0,0 +1,3 @@ +#!/bin/bash + + diff --git a/.config/waybar/scripts/colorpicker.sh b/.config/waybar/scripts/colorpicker.sh new file mode 100755 index 0000000..3047757 --- /dev/null +++ b/.config/waybar/scripts/colorpicker.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +check() { + command -v "$1" 1>/dev/null +} + +notify() { + check notify-send && { + notify-send -a "Color Picker" "$@" + return + } + echo "$@" +} + +loc="$HOME/.cache/colorpicker" +[ -d "$loc" ] || mkdir -p "$loc" +[ -f "$loc/colors" ] || touch "$loc/colors" + +limit=10 + +[[ $# -eq 1 && $1 = "-l" ]] && { + cat "$loc/colors" + exit +} + +[[ $# -eq 1 && $1 = "-j" ]] && { + text="$(head -n 1 "$loc/colors")" + + mapfile -t allcolors < <(tail -n +2 "$loc/colors") + # allcolors=($(tail -n +2 "$loc/colors")) + tooltip=" COLORS\n\n" + + tooltip+="-> $text \n" + for i in "${allcolors[@]}"; do + tooltip+=" $i \n" + done + + cat <", "tooltip":"$tooltip"} +EOF + + exit +} + +check hyprpicker || { + notify "hyprpicker is not installed" + exit +} +killall -q hyprpicker +color=$(hyprpicker) + +check wl-copy && { + echo "$color" | sed -z 's/\n//g' | wl-copy +} + +prevColors=$(head -n $((limit - 1)) "$loc/colors") +echo "$color" >"$loc/colors" +echo "$prevColors" >>"$loc/colors" +sed -i '/^$/d' "$loc/colors" +pkill -RTMIN+1 waybar diff --git a/.config/waybar/scripts/cpu_linux.sh b/.config/waybar/scripts/cpu_linux.sh new file mode 100755 index 0000000..ad14921 --- /dev/null +++ b/.config/waybar/scripts/cpu_linux.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# Temp file to store previous readings +tmpfile="/tmp/cpu_prev_all" + +# Get all per-core lines +mapfile -t cpu_lines < <(grep '^cpu[0-9]' /proc/stat) + +# On first run, save and exit +if [[ ! -f $tmpfile ]]; then + printf "%s\n" "${cpu_lines[@]}" > "$tmpfile" + echo "..." # No previous data + exit 0 +fi + +# Load previous readings +mapfile -t prev_lines < "$tmpfile" + +# Sanity check +if (( ${#cpu_lines[@]} != ${#prev_lines[@]} )); then + echo "..." # Core count mismatch (e.g., suspend/resume) + printf "%s\n" "${cpu_lines[@]}" > "$tmpfile" + exit 0 +fi + +total_usage=0 + +for i in "${!cpu_lines[@]}"; do + # Current + read -r cpu user nice system idle iowait irq softirq steal _ _ <<< "${cpu_lines[$i]}" + total_now=$((user + nice + system + idle + iowait + irq + softirq + steal)) + idle_now=$((idle + iowait)) + + # Previous + read -r _ pu pn ps pi piw pir psf pst _ _ <<< "${prev_lines[$i]}" + total_prev=$((pu + pn + ps + pi + piw + pir + psf + pst)) + idle_prev=$((pi + piw)) + + # Deltas + diff_total=$((total_now - total_prev)) + diff_idle=$((idle_now - idle_prev)) + + if ((diff_total > 0)); then + usage=$((100 * (diff_total - diff_idle) / diff_total)) + total_usage=$((total_usage + usage)) + fi +done + +# Output total usage (per-core sum) +#echo '{"usage": ${total_usage}%}'} +printf "{ \"text\": %6.0f, \"tooltip\": \"%s\" }" "$total_usage" "test" + + +# Save current readings +printf "%s\n" "${cpu_lines[@]}" > "$tmpfile" diff --git a/.config/waybar/scripts/myUpdates.sh b/.config/waybar/scripts/myUpdates.sh new file mode 100755 index 0000000..5011866 --- /dev/null +++ b/.config/waybar/scripts/myUpdates.sh @@ -0,0 +1,24 @@ +#!/bin/bash +format() { + if [ "$1" -eq 0 ]; then + echo '-' + else + echo "$1" + fi +} + +if ! updates_arch="$(checkupdates | wc -l)"; then + updates_arch=0 +fi + +if ! updates_aur="$(yay -Qum 2>/dev/null | wc -l)"; then + updates_aur=0 +fi + +updates="$((updates_arch + updates_aur))" + +if [ "$updates" -gt 0 ]; then + echo " ($(format $updates_arch)/$(format $updates_aur))" +else + echo +fia diff --git a/.config/waybar/scripts/myupdate.sh b/.config/waybar/scripts/myupdate.sh new file mode 100755 index 0000000..99e5e72 --- /dev/null +++ b/.config/waybar/scripts/myupdate.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +pkgmgr="pacman" +hash paru 2>/dev/null && pkgmgr="paru" +hash yay 2>/dev/null && pkgmgr="yay" + +IFS=$'\n'$'\r' + +updatesli=($($pkgmgr -Qu)) +text=${#updatesli[@]} +icon="" +[ $text -eq 0 ] && icon="" || icon="📦" + +for i in ${updatesli[@]} +do + tooltip+="$i\n" +done + +cat << EOF +{ "text":"$icon", "tooltip":"UPDATES: $text"} +EOF + diff --git a/.config/waybar/scripts/powerdraw.sh b/.config/waybar/scripts/powerdraw.sh new file mode 100755 index 0000000..4c908a7 --- /dev/null +++ b/.config/waybar/scripts/powerdraw.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f /sys/class/power_supply/BAT*/current_now ]; then + powerDraw="󰠰 $(($(cat /sys/class/power_supply/BAT*/current_now)/1000000))w" +fi + + +cat << EOF +{ "text":"$powerDraw", "tooltip":"power Draw $powerDraw"} +EOF diff --git a/.config/waybar/scripts/weather.sh b/.config/waybar/scripts/weather.sh new file mode 100755 index 0000000..0eaeaf9 --- /dev/null +++ b/.config/waybar/scripts/weather.sh @@ -0,0 +1,24 @@ +#!/bin/sh +BSSIDS="$(nmcli device wifi list | + awk 'NR>1 {if ($1 != "*") {print $1}}' | + tr -d ":" | + tr "\n" ",")" + +LOC="" +REQUEST_GEO="$(wget -qO - http://openwifi.su/api/v1/bssids/"$BSSIDS")" +if [[ "$(jq ".count_results" <<< "$REQUEST_GEO")" -gt 0 ]] ; then + LAT="$(jq ".lat" <<< "$REQUEST_GEO")" + LON="$(jq ".lon" <<< "$REQUEST_GEO")" + LOC="$LAT,$LON" +fi + +text="$(curl -s "https://wttr.in/$LOC?format=1" | sed 's/ //g')" +tooltip="$(curl -s "https://wttr.in/$LOC?0QT" | + sed 's/\\/\\\\/g' | + sed ':a;N;$!ba;s/\n/\\n/g' | + sed 's/"/\\"/g')" + +if ! grep -q "Unknown location" <<< "$text"; then + echo "{\"text\": \"$text\", \"tooltip\": \"$tooltip\", \"class\": \"weather\"}" +fi + diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..fdeb3b3 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,84 @@ +* { + font-family: "JetBrainsMono Nerd Font,JetBrainsMono NF" ; + color: white; +} + +window#waybar { + background: transparent; +} + +.modules-right { + background: #000000; +} + +.modules-center { + background: #000000; +} + +.modules-left { + background: #000000; +} + +#battery, +#custom-clipboard, +#custom-colorpicker, +#custom-powerDraw, +#bluetooth, +#pulseaudio, +#network, +#disk, +#memory, +#backlight, +#cpu, +#temperature, +#custom-weather, +#idle_inhibitor, +#jack, +#tray, +#window, +#workspaces, +#clock { + min-width: 1ex; + padding-right: 5px; +} + +#temperature.critical, +#pulseaudio { + min-width: 5ex; +} +#pulseaudio.muted { + color: #FF0000; +} +#pulseaudio.mic.muted { + color: #ffffff; +} +#pulseaudio.mic:not(.source-muted) { + color: #fc0202; +} +#clock{ + color: #f9780e; +} + +#battery.charging { + color: #ffffff; + background-color: #26A65B; +} + +#battery.warning:not(.charging) { + background-color: #ffbe61; + color: black; +} + +#battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#network.speed { + min-width: 30ex; +} diff --git a/.zshrc b/.zshrc index 449f49e..f4da7c7 100644 --- a/.zshrc +++ b/.zshrc @@ -167,3 +167,351 @@ echo 'eval "$(pyenv init - zsh)"' >> ~/.zshrc export PYENV_ROOT="$HOME/.pyenv" [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)" +export PYENV_ROOT="$HOME/.pyenv" +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init - zsh)"