;                      Polybars
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[bar/top]
; Polybar Position
monitor = ${env:MONITOR}
width = 100%
height = 25

; Polybar Color
; Depreciated..
;tray-transparent = true
; Transparent adds 2 leading values to color (2+hex)
background = #00000000
; Opaque is hex color (hex)
foreground = #00c24a
line-color = ${bar/bottom.background}
line-size = 16
spacing = 2
tray-background = #00111111

; Polybar Padding
padding-left = 0
padding-right = 5

; Margin Between Modules
module-margin = 2

; Type font
font-0 = NotoSans-Regular:size=12;0
font-1 = Inconsolata Nerd Font:size=12;0
font-2 = Noto Sans Mono:size=10;0

; Modules
modules-left = powermenu weather
modules-center = ki3
modules-right = volume date

; Set the cursor to display pointer / resize is interaction available
cursor-click = pointer
cursor-scroll = ns-resize

[bar/bottom]
; Position, size of polybar
monitor = ${env:MONITOR}
bottom = true
width = 100%
height = 20

; Use top bar colors
background = ${bar/top.background}
foreground = ${bar/top.foreground}
line-color = ${bar/top.background}
line-size = 2
spacing = 3

; Polybar padding
padding-left = 6
padding-right = 6

; Margins between modules
module-margin-left = 1
module-margin-right = 2

; Font settings, order matters
; Top font takes priority over following
;font-0 = Source Code Pro:size=10;0
font-0 = NotoSans-Regular:size=12;1
font-1 = Inconsolata Nerd Font:size=12;3
font-2 = Noto Sans Mono:size=8;0

; Modules
modules-left = temp-cpu cpu memory
modules-center = popup-utc network public-ip filesystem
modules-right = vpn battery

; Set the cursor to display pointer / resize is interaction available
cursor-click = pointer
cursor-scroll = ns-resize

;                     Modules
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;   VPN Status
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/vpn]
type = custom/script
exec = mullvad status | awk '{print "VPN: "$3}'
interval = 10

;    Pop-up Calendar
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/popup-utc]
type = custom/script
exec = ~/.local/bin/i3scripts/popup-calendar
interval = 5
click-left = ~/.local/bin/i3scripts/popup-calendar --popup
click-right = ~/.local/bin/i3scripts/popup-calendar-local

;    Local Date
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/date]
type = internal/date
date = %%{F#aaa}%Y-%m-%d%%{F-}  %%{F#fff}%H:%M%%{F-}
date-alt = %%{F#aaa}%A, %d %B %Y  %%{F#fff}%H:%M%%{F#666}:%%{F#fba922}%S%%{F-}
click-right = exec notify-send hi

;    Weather
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/weather]
type = custom/script
exec = ~/.local/bin/i3scripts/weathermap
interval = 600
;label-font = Font Awesome 5 Free Solid:size=40;0

;    Type Speed
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/info-hackspeed]
type = custom/script
exec = ~/.local/bin/i3scripts/info-hackspeed
tail = true

; Polybar Break Timer
[module/breaktimer]
type = custom/script
format-prefix = "   "
;format-foreground = ${colors.verdeclaro}
exec = polybar-break-timer $HOME/.config/polybar/.env/break-timer
click-left = echo left >> $HOME/.config/polybar/.env/break-timer
click-middle = echo middle >> $HOME/.config/polybar/.env/break-timer
click-right = echo right >> $HOME/.config/polybar/.env/break-timer
scroll-up = echo scrollUp >> $HOME/.config/polybar/.env/break-timer
scroll-down = echo scrollDown >> $HOME/.config/polybar/.env/break-timer
tail = true

;    System Idle Time
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/info-idle]
type = custom/script
exec = ~/.local/bin/i3scripts/info-idle
tail = true

;    Disk Space
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/filesystem]
type = internal/fs
; Mountpoints to display
mount-0 = /
;mount-1 = /home
;mount-2 = /var
; Seconds to sleep between updates
; Default: 30
interval = 10
; Display fixed precision values
; Default: false
fixed-values = true
 ;Available tags:
 ;   <label-mounted> (default)
 ;   <bar-free>
 ;   <bar-used>
 ;   <ramp-capacity>
format-mounted = <label-mounted>
; Available tokens:
;   %mountpoint%
;   %type%
;   %fsname%
;   %percentage_free%
;   %percentage_used%
;   %total%
;   %free%
;   %used%
; Default: %mountpoint% %percentage_free%%
label-mounted = %mountpoint%  %free%
; Spacing between entries
; Default: 2
spacing = 4

;    Network Status
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/network]
type = internal/network
interface = enp0s31f6
; Available tags:
;   <label-connected> (default)
;   <ramp-signal>
format-connected = <label-connected>
; Available tags:
;   <label-disconnected> (default)
format-disconnected = <label-disconnected>
; Available tags:
;   <label-connected> (default)
;   <label-packetloss>
;   <animation-packetloss>
format-packetloss = <animation-packetloss> <label-connected>
; Default: %ifname% %local_ip%
label-connected =  %upspeed%    /   %downspeed:9%     龍   %linkspeed%          %local_ip%
label-connected-foreground =#00c24a
; Default: (none)
label-disconnected = not connected
label-disconnected-foreground = #d00
; Default: (none)
;label-packetloss = %essid%
;label-packetloss-foreground = #eefafafa
; Only applies if <ramp-signal> is used
;ramp-signal-0 = 😱
;ramp-signal-1 = 😠
;ramp-signal-2 = 😒
;ramp-signal-3 = 😊
;ramp-signal-4 = 😃
;ramp-signal-5 = 😈
; Only applies if <animation-packetloss> is used
;animation-packetloss-0 = ⚠
;animation-packetloss-0-foreground = #ffa64c
;animation-packetloss-1 = 📶
;animation-packetloss-1-foreground = #000000
; Framerate in milliseconds
;animation-packetloss-framerate = 500
; Seconds to sleep between updates
; Default: 1
interval = 5.0
; Test connectivity every Nth update
; A value of 0 disables the feature
; NOTE: Experimental (needs more testing)
; Default: 0
;ping-interval = 3
; @deprecated: Define min width using token specifiers (%downspeed:min% and %upspeed:min%)
; Minimum output width of upload/download rate
; Default: 3
udspeed-minwidth = 5
; Accumulate values from all interfaces
; when querying for up/downspeed rate
; Default: false
accumulate-stats = true
; Consider an `UNKNOWN` interface state as up.
; Some devices like USB network adapters have
; an unknown state, even when they're running
; Default: false
unknown-as-up = true

;    Show Public IP
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/public-ip]
type = custom/script
exec = curl -s ifconfig.me
interval = 600

;    CPU Temp
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/temp-cpu]
type = custom/script
; Seconds to sleep between updates
; Default: 1
interval = 5.0
; Full path of temperature sysfs path
; Use `sensors` to find preferred temperature source, then run
; $ for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done
; to find path to desired file
; Default reverts to thermal zone setting
exec = cat /sys/class/thermal/thermal_zone2/temp | awk '{print ( ( ( (9/5) * $1) / 1000) + 32) "°F" }'
format = <label>
tail = true
label = CPU: %output%

;    GPU Temp
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/temp-gpu]
type = internal/temperature
; Seconds to sleep between updates
; Default: 1
interval = 5.0
; Thermal zone to use
; To list all the zone types, run
; $ for i in /sys/class/thermal/thermal_zone*; do echo "$i: $(<$i/type)"; done
; Default: 0
thermal-zone = 2
; Full path of temperature sysfs path
; Use `sensors` to find preferred temperature source, then run
; $ for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done
; to find path to desired file
; Default reverts to thermal zone setting
hwmon-path = /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon3/temp1_input
; Base temperature for where to start the ramp (in degrees celsius)
; Default: 0
base-temperature = 20
; Threshold temperature to display warning label (in degrees celsius)
; Default: 80
warn-temperature = 60
; Available tokens:
;   %temperature% (deprecated)
;   %temperature-c%   (default, temperature in °C)
;   %temperature-f%   (temperature in °F)
label = ﲅ     %temperature-f%
; Available tokens:
;   %temperature% (deprecated)
;   %temperature-c%   (default, temperature in °C)
;   %temperature-f%   (temperature in °F)
label-warn = %temperature-f%
label-warn-foreground = #f00

;    Keyboard Status
;    Locale, Caps, Numlock
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/keyboard]
type = internal/xkeyboard
; List of indicators to ignore
blacklist-1 = scroll lock
label-indicator-on-capslock = Caps 
label-indicator-off-capslock =
label-indicator-on-numlock = Num 
label-indicator-off-numlock =
format = <label-indicator> <label-layout>
; layout-icon-[0-9]+ = layout;icon
; Assign each layout an icon that will be available as %icon% token for the
; <label-layout> tag. The part before ';' will try to match %layout% value.
label-layout = %name% %icon%
;layout-icon-default = 
;layout-icon-1 = us;

;    System Menus
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/powermenu]
type = custom/menu
format-padding = 0
format = <label-toggle> <menu>
label-open = "   "
label-close = "   "
menu-0-0 = "      pkill poly   "
menu-0-0-foreground = #fba922
menu-0-0-exec = pkill -f polybar
menu-0-1 = "    i3 restart   "
menu-0-1-foreground = #fba922
;menu-0-1-background = #141414
menu-0-1-exec = i3 restart
menu-0-2 = "   Reboot   "
menu-0-2-foreground = #fba922
menu-0-2-exec = sudo reboot
menu-0-3 = "   Power off   "
menu-0-3-foreground = #fba922
menu-0-3-exec = sudo poweroff
menu-0-4 = "     Lock   "
menu-0-4-foreground = #fba922
menu-0-4-exec = i3lock -c 000000

;    Pseudo-Caffeine
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/caffeine]
type = custom/menu
format = <menu> <label-toggle>
label-open = "    "
label-close = "    "
label-open-padding = 0
label-close-padding = 1
label-separator = " "

menu-0-0 = " ON "
menu-0-0-exec = sh /home/kapper/.local/bin/i3scripts/xoffee disable
menu-0-1 = " OFF "
menu-0-1-exec = sh /home/kapper/.local/bin/i3scripts/xoffee enable

;    CPU Core Usages
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/cpu]
type = internal/cpu
interval = 5
format = <ramp-coreload> <label>
label = %percentage-cores%
ramp-coreload-0 = ▁
ramp-coreload-0-font = 2
ramp-coreload-0-foreground = #aaff77
ramp-coreload-1 = ▂
ramp-coreload-1-font = 2
ramp-coreload-1-foreground = #aaff77
ramp-coreload-2 = ▃
ramp-coreload-2-font = 2
ramp-coreload-2-foreground = #aaff77
ramp-coreload-3 = ▄
ramp-coreload-3-font = 2
ramp-coreload-3-foreground = #aaff77
ramp-coreload-4 = ▅
ramp-coreload-4-font = 2
ramp-coreload-4-foreground = #fba922
ramp-coreload-5 = ▆
ramp-coreload-5-font = 2
ramp-coreload-5-foreground = #fba922
ramp-coreload-6 = ▇
ramp-coreload-6-font = 2
ramp-coreload-6-foreground = #ff5555
ramp-coreload-7 = █
ramp-coreload-7-font = 2
ramp-coreload-7-foreground = #ff5555

;    UTC Date / Time
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/clock-utc]
type = custom/script
exec = TZ=UTC date +"UTC: %%{F#999}%Y-%m-%d%%{F-}  %%{F#fff}%H:%M%%{F-}"
interval = 30

;    Local Date / Time
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/clock]
type = internal/date
interval = 30
date = %%{F#999}%Y-%m-%d%%{F-}  %%{F#fff}%H:%M%%{F-}

;    Memory Free MiB
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/memfree]
type = custom/script
exec = grep -w MemAvailable: /proc/meminfo | awk '{print $2 / 1024 "MiB"}'
interval = 5
label =  RAM: %output%


;    Memory Usage
;;;;;;;;;;;;;;;;;;;;;;;;;;
; Available tags:
;   <label> (default)
;   <bar-used>
;   <bar-free>
;   <ramp-used>
;   <ramp-free>
;   <bar-swap-used>
;   <bar-swap-free>
;   <ramp-swap-used>
;   <ramp-swap-free>
; Available tokens:
;   %percentage_used% (default)
;   %percentage_free%
;   %gb_used%
;   %gb_free%
;   %gb_total%
;   %mb_used%
;   %mb_free%
;   %mb_total%
;   %percentage_swap_used%
;   %percentage_swap_free%
;   %mb_swap_total%
;   %mb_swap_free%
;   %mb_swap_used%
;   %gb_swap_total%
;   %gb_swap_free%
;   %gb_swap_used%
[module/memory]
type = internal/memory
format = <label> <bar-used>
;label = SWAP:%gb_swap_used% RAM: %gb_used%
label = RAM:
bar-used-width = 25
bar-used-foreground-0 = #aaff77
bar-used-foreground-1 = #fba922
bar-used-foreground-2 = #ff5555
;bar-used-foreground-3 = #ff5555
bar-used-indicator = 
bar-used-indicator-font = 6
bar-used-indicator-foreground = #ff

bar-used-fill = 
bar-used-fill-font = 6
bar-used-empty = -
bar-used-empty-font = 6
bar-used-empty-foreground = #9a9999


;    Battery Status
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/battery]
type = internal/battery

; This is useful in case the battery never reports 100% charge
full-at = 99

; Use the following command to list batteries and adapters:
; $ ls -1 /sys/class/power_supply/
battery = BAT0
adapter = AC

; If an inotify event haven't been reported in this many
; seconds, manually poll for new values.
;
; Needed as a fallback for systems that don't report events
; on sysfs/procfs.
;
; Disable polling by setting the interval to 0.
;
; Default: 5
poll-interval = 5

; see "man date" for details on how to format the time string
; NOTE: if you want to use syntax tags here you need to use %%{...}
; Default: %H:%M:%S
;time-format = %H:%M

; Available tags:
;   <label-charging> (default)
;   <bar-capacity>
;   <ramp-capacity>
;   <animation-charging>
format-charging = <ramp-capacity> <label-charging>

; Available tags:
;   <label-discharging> (default)
;   <bar-capacity>
;   <ramp-capacity>
;   <animation-discharging>
format-discharging = <ramp-capacity> <label-discharging>

; Available tags:
;   <label-full> (default)
;   <bar-capacity>
;   <ramp-capacity>
format-full = <ramp-capacity> <label-full>

; Available tokens:
;   %percentage% (default) - is set to 100 if full-at is reached
;   %percentage_raw%
;   %time%
;   %consumption% (shows current charge rate in watts)
label-charging = Charging %percentage%% | %time% | %consumption% W

; Available tokens:
;   %percentage% (default) - is set to 100 if full-at is reached
;   %percentage_raw%
;   %time%
;   %consumption% (shows current discharge rate in watts)
label-discharging = %percentage%% | %time% | %consumption% W

; Available tokens:
;   %percentage% (default) - is set to 100 if full-at is reached
;   %percentage_raw%
label-full = Fully charged

; Only applies if <ramp-capacity> is used
ramp-capacity-0 = 
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 

; Only applies if <bar-capacity> is used
bar-capacity-width = 10
;bar-used-width = 15
;bar-used-foreground-0 = #aaff77
;bar-used-foreground-1 = #aaff77
;bar-used-foreground-2 = #fba922
;bar-used-foreground-3 = #ff5555
;bar-used-indicator = 
;bar-used-indicator-font = 6
;bar-used-indicator-foreground = #ff
;bar-used-fill = 
;bar-used-fill-font = 6
;bar-used-empty = -
;bar-used-empty-font = 6
;bar-used-empty-foreground = #444444

; Only applies if <animation-charging> is used
animation-charging-0 = 
animation-charging-1 = 
animation-charging-2 = 
animation-charging-3 = 
animation-charging-4 = 
; Framerate in milliseconds
animation-charging-framerate = 750

; Only applies if <animation-discharging> is used
animation-discharging-0 = 
animation-discharging-1 = 
animation-discharging-2 = 
animation-discharging-3 = 
animation-discharging-4 = 
; Framerate in milliseconds
animation-discharging-framerate = 500

;    I3 Workspace Display
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/ki3]
type = internal/i3
; Only show workspaces defined on the same output as the bar
;
; Useful if you want to show monitor specific workspaces
; on different bars
;
; Default: false
pin-workspaces = true
; This will split the workspace name on ':'
; Default: false
strip-wsnumbers = false
; Sort the workspaces by index instead of the default
; sorting that groups the workspaces by output
; Default: false
index-sort = true
; Create click handler used to focus workspace
; Default: true
enable-click = true
; Create scroll handlers used to cycle workspaces
; Default: true
enable-scroll = true
; Wrap around when reaching the first/last workspace
; Default: true
wrapping-scroll = true
; Set the scroll cycle direction
; Default: true
reverse-scroll = false
; Use fuzzy (partial) matching on labels when assigning
; icons to workspaces
; Example: code;♚ will apply the icon to all workspaces
; containing 'code' in the label
; Default: false
fuzzy-match = false
; Available tags:
;   <label-state> (default) - gets replaced with <label-(focused|unfocused|visible|urgent)>
;   <label-mode> (default)
format = <label-state> <label-mode>
; Available tokens:
;   %mode%
; Default: %mode%
label-mode = %mode%
label-mode-padding = 2
label-mode-background = #e60053


; ws-icon-[0-9]+ = label;icon
; NOTE: The label needs to match the name of the i3 workspace
ws-icon-0 = 1;
ws-icon-1 = 2;
ws-icon-2 = 3;
ws-icon-3 = 4;
ws-icon-4 = 5;
ws-icon-5 = 6;
ws-icon-6 = 7;
ws-icon-7 = 8;
ws-icon-8 = 9;
ws-icon-9 = 99;
ws-icon-10 = 98;
ws-icon-11 = 97;
ws-icon-12 = 96;爵
ws-icon-13 = 95;
ws-icon-14 = 94;
ws-icon-default = 
; NOTE: You cannot skip icons, e.g. to get a ws-icon-6
; you must also define a ws-icon-5.
; NOTE: Icon will be available as the %icon% token inside label-*
; Available tokens:
;   %name%
;   %icon%
;   %index%
;   %output%
; Default: %icon%  %name%
label-focused = %icon%
;label-focused-foreground = #ffffff
;label-focused-background = #016239
;label-focused-underline = #6e
label-focused-padding = 4
; Available tokens:
;   %name%
;   %icon%
;   %index%
;   %output%
; Default: %icon%  %name%
label-unfocused = %icon%
label-unfocused-padding = 4
label-unfocused-foreground = #3f3f3f
; Available tokens:
;   %name%
;   %icon%
;   %index%
;   %output%
; Default: %icon%  %name%
label-visible = %icon%
label-visible-foreground = #777777
;label-visible-underline = #1f1f1f
label-visible-padding = 4
; Separator in between workspaces
label-separator = |
label-separator-padding = 1
label-separator-foreground = #ffb52a

;    Volume Status
;;;;;;;;;;;;;;;;;;;;;;;;;;
[module/volume]
type = internal/alsa
;speaker-mixer =
;headphone-mixer = Headphone
;headphone-id = 9
format-volume = <ramp-volume> <label-volume>
label-muted = muted
label-muted-foreground = #66
ramp-volume-0 = 奄
ramp-volume-1 = 奔
ramp-volume-2 = 墳
ramp-volume-3 = 

