;=====================================================;
;                                                     ;
;   To learn more about how to configure Polybar      ;
;   go to https://github.com/jaagr/polybar            ;
;                                                     ;
;   The README contains alot of information           ;
;                                                     ;
;=====================================================;


; Global Settings

[settings]
screenchange-reload = true

[colors]
transparent = #00ffffff
background = ${xrdb:background}
foreground = ${xrdb:foreground}
foreground-alt = ${xrdb:highlight}

border = ${xrdb:i3_focused}

urgent = ${xrdb:i3_urgent}
focused = ${xrdb:i3_focused}
unfocused = ${xrdb:foreground}

; Material design icon font:
; https://github.com/Templarian/MaterialDesign-Font/blob/master/MaterialDesignIconsDesktop.ttf

[bar/base_master]
background = ${colors.background}
foreground = ${colors.foreground}
fixed-center = true
font-0 = Hack Nerd Font:fontformat=truetype:pixelsize=10;1
font-1 = Material Design Icons Desktop:fontformat=truetype:pixelsize=10:antialias=true;1
line-size = 1
module-margin-left = 1
module-margin-right = 1
padding= 2
separator =|
override-redirect = true

[bar/base_border]
inherit="bar/base_master"
border-size=2
border-color=${colors.border}
radius = 15.0

[bar/base_floating]
inherit="bar/base_border"
bottom = true
enable-ipc = false
height = 40px
width = 60%
offset-x = 20%
offset-y = 8px
override-redirect = true
tray-detached = true
tray-maxsize = 15
tray-offset-x= 86
tray-offset-y =4px
tray-padding = 3
tray-position = left
tray-scale = 0.8

[bar/base_floating_popup]
inherit="bar/base_border"
bottom = true
enable-ipc = true
height = 40px
width = 11%
offset-x = 20%
offset-y = 58px

[bar/base_floating_wm]
inherit="bar/base_master"
font-0 = dark forest:style=Bold:fontformat=truetype:pixelsize=10;4
height = 15
width = 100%
background = ${colors.transparent}
modules-center = i3
padding= 4
wm-restack = i3

[bar/floating]
inherit="bar/base_floating"
monitor = ${env:MONITOR:eDP1}
modules-center = clock playerctl_long
modules-left = floating_popup_button pavucontrol_button
modules-right = usbmodem5 wlan sensors_cpu_yoga3 memory

[bar/floating_cava]
inherit = "bar/floating"
modules-center = cava

[bar/floating_popup]
inherit="bar/base_floating_popup"
monitor = ${env:MONITOR:eDP1}
modules-left = disk_short_pc checkupdates ovpn nvpn wlan 

[bar/floating_wm]
inherit="bar/base_floating_wm"
monitor = ${env:MONITOR:eDP1}

[global/wm]
margin-top = 0
margin-bottom = 0

[module/i3]
type = internal/i3
pin-workspaces = true
strip-wsnumbers = true
index-sort = true
enable-click = true
enable-scroll = true
wrapping-scroll = true
reverse-scroll = true 
fuzzy-match = false
format = <label-state> <label-mode>
label-mode = %mode%
label-mode-padding = 1
label-focused =%icon%%name%
label-focused-foreground = ${colors.focused}
label-focused-margin = 2
label-unfocused =%icon%%name%
label-unfocused-foreground = ${colors.unfocused}
label-unfocused-margin = 1
label-visible =%icon%%name%
label-visible-margin = 1
label-urgent =%icon%%name%
label-urgent-foreground = ${colors.urgent}
label-urgent-padding = 1

[module/i3_dots]
type = internal/i3
ws-icon-default =" 󰀥 "
pin-workspaces = true
strip-wsnumbers = true
index-sort = true
enable-click = true
enable-scroll = true
wrapping-scroll = true
reverse-scroll = true 
fuzzy-match = false
format =<label-state><label-mode>
label-mode = %mode%
label-focused =" 󰄯 " 
label-focused-foreground = ${colors.foreground}
label-unfocused =" 󰄰 " 
label-unfocused-foreground = ${colors.foreground}
label-visible =" 󰄯 " 
label-urgent =" 󰀨 " 
label-urgent-foreground = ${colors.foreground-alt}

; Module Menus

[module/i3touchmenu]
type = custom/menu
expand-right = true
format-spacing = 1
label-open = "| touch"
label-open-foreground = #FFF
label-close = "| x"
label-separator = "'"
; Menu Root 
menu-0-0 = 
menu-0-0-exec = menu-open-1
menu-0-1 = 
menu-0-1-exec = menu-open-2
menu-0-2 = 
menu-0-2-exec = menu-open-3
menu-0-3 = 
menu-0-3-exec = menu-open-4
menu-0-4 = 
menu-0-4-exec = menu-open-5
menu-0-5 = 
menu-0-5-exec = menu-open-6
menu-0-6 = 
menu-0-6-exec = menu-open-7
menu-0-7 ="" 
menu-0-7-exec = menu-open-8
; Menu Category Launcher
menu-1-0 = 
menu-1-0-exec = menu-open-0
menu-1-1="quick"
menu-1-1-exec= setsid quicklaunch
menu-1-2="xournal"
menu-1-2-exec = "setsid xournalpp"
menu-1-3="sync"
menu-1-3-exec = "setsid python Sync/o_school/5AHEL/Notebooks/pdfconvert.py"
menu-1-4=""
menu-1-4-exec = urxvt &
; Menu Category Window Movement
menu-2-0 = 
menu-2-0-exec = menu-open-0
menu-2-1 = 
menu-2-1-exec = i3-msg 'move left'
menu-2-2 = 
menu-2-2-exec = i3-msg 'move right'
menu-2-3 = 
menu-2-3-exec = i3-msg 'move up'
menu-2-4 = ""
menu-2-4-exec = i3-msg 'move down'
menu-3-0 = 
menu-3-0-exec = menu-open-0
; Menu Category Layout
menu-3-1 = split
menu-3-1-exec = i3-msg 'layout toggle split'
menu-3-2 = stack
menu-3-2-exec = i3-msg 'layout stacking'
menu-3-3 = tab  
menu-3-3-exec = i3-msg 'layout tabbed'
menu-3-4 = float
menu-3-4-exec = i3-msg 'floating toggle'
; Menu Category Split
menu-4-0 = 
menu-4-0-exec = menu-open-0
menu-4-1 = vert
menu-4-1-exec = i3-msg 'split v'
menu-4-2 = horz
menu-4-2-exec = i3-msg 'split h'
; Menu Category Resize
menu-5-0 = 
menu-5-0-exec = menu-open-0
menu-5-1 = h+
menu-5-1-exec = i3-msg 'resize grow height 5 px or 5 ppt'
menu-5-2 = h-
menu-5-2-exec = i3-msg 'resize shrink height 5 px or 5 ppt'
menu-5-3 = w+
menu-5-3-exec = i3-msg 'resize grow width 5 px or 5 ppt'
menu-5-4 = w-
menu-5-4-exec = i3-msg 'resize shrink width 5 px or 5 ppt'
; Menu Category Move
menu-6-0 = 
menu-6-0-exec = menu-open-0
menu-6-1 = 1
menu-6-1-exec = i3-msg 'move container to workspace 1'
menu-6-2 = 2
menu-6-2-exec = i3-msg 'move container to workspace 2'
menu-6-3 = 3
menu-6-3-exec = i3-msg 'move container to workspace 3'
menu-6-4 = 4
menu-6-4-exec = i3-msg 'move container to workspace 4'
menu-6-5 = 5
menu-6-5-exec = i3-msg 'move container to workspace 5'
menu-6-6 = 6
menu-6-6-exec = i3-msg 'move container to workspace 6'
menu-6-7 = 7
menu-6-7-exec = i3-msg 'move container to workspace 7'
menu-6-8 = 8
menu-6-8-exec = i3-msg 'move container to workspace 8'
menu-6-9 = 9
menu-6-9-exec = i3-msg 'move container to workspace 9'
menu-6-10 = "10"
menu-6-10-exec = i3-msg 'move container to workspace 10'
; Menu Category Kill
menu-7-0 = 
menu-7-0-exec = menu-open-0
menu-7-1 = "confirm"
menu-7-1-exec = i3-msg 'kill'
; Menu Category Powermenu
menu-8-0 = 
menu-8-0-exec = menu-open-0
menu-8-1 = 
menu-8-1-exec = xset dpms force off 
menu-8-2 = 
menu-8-2-exec = i3lock
menu-8-3 = 
menu-8-3-exec = shutdown -r now
menu-8-4 = ""
menu-8-4-exec = shutdown -h now

; Module popup

[module/floating_popup_button]
type = custom/script
interval = 0.5
format = <label>
label-maxlen = 5
exec = ~/.config/polybar/scripts/polypopup.sh
click-left = ~/.config/polybar/scripts/polypopup.sh --toggle
content = 󰋼

; Module Date

[module/clock]
type = internal/date
interval = 1
date =
date-alt =%d.%m.%Y
time =" %H:%M"
time-alt =%H:%M:%S,
label =%time% %date% 

[module/clock_icon]
inherit = "module/clock"
date = 󰥔

; Module Updates

[module/checkupdates]
type = custom/script
interval = 30
format = 󰂪 <label>
label-maxlen=15
label-ellipsis=true
exec = "echo $(bash ~/.config/polybar/scripts/modules/update.sh --count-short)"
click-left = "setsid alacritty -e bash ~/.config/polybar/scripts/modules/update.sh --list"
click-right = "setsid alacritty -e bash ~/.config/polybar/scripts/modules/update.sh --update"
click-middle = "setsid alacritty -e bash ~/.config/polybar/scripts/modules/update.sh --update-noconfirm"

; Module HW-Statistics
; For 'sensors_'-modules, run 'sensors-detect' from 'lm_sensors' first

[module/memory]
type = internal/memory
interval = 2
label = 󰆼 %percentage_used%%

[module/nvgpu]
type = custom/script
interval = 2
format = 󰹑 <label>
label-maxlen=15
label-ellipsis=true
exec = "echo $((nvidia-smi -q | grep "Gpu" | awk -F':' '{print $2}' | tr -d ' '; echo ", "; nvidia-smi -q | grep "GPU Current Temp" | awk -F':' '{print $2}' | tr -d ' C' ; echo '°') | cat | tr -d '\n')"
click-left = "setsid alacritty -e sh -c nvtop"

[module/sensors_cpu_pc]
type = custom/script
interval = 2
format = 󰍛 <label>
label-maxlen=15
label-ellipsis=true
exec = "echo $((top -bn1 | grep 'Cpu(s)' | sed 's/.*, *\([0-9.]*\)%* id.*/\1/' | awk -F '.' '{print 100 - $1}' ; echo '%, ' ; sensors | grep "CPUTIN" | awk -F' ' '{print $2}' | awk -F'.' '{print $1}' | tr -d '+'; echo '°') | tr -d '\n')"
click-left = "setsid alacritty -e sh -c htop"

[module/sensors_cpu_yoga3]
type = custom/script
interval = 2
format = 󰍛 <label>
label-maxlen=15
label-ellipsis=true
exec = "echo $((top -bn1 | grep 'Cpu(s)' | sed 's/.*, *\([0-9.]*\)%* id.*/\1/' | awk -F '.' '{print 100 - $1}' ; echo '%, ' ; sensors | grep "Package id 0:" | awk -F' ' '{print $4}' | awk -F'.' '{print $1}' | tr -d '+'; echo '°') | tr -d '\n')"
click-left = "setsid alacritty -e sh -c htop"

; Module Network Interfaces

[module/wlan]
type = internal/network
interface = wlp2s0
interval = 3
format-connected = <label-connected>
label-connected = %ifname%: %local_ip% [%essid%]

[module/wlan_short]
inherit="module/wlan"
label-connected = %essid%

[module/eth_pc]
type = internal/network
interface = enp5s0
interval = 3
format-connected = <label-connected>
label-connected = 󰈀 %local_ip%

[module/eth_yoga3]
inherit="module/eth_pc"
interface = enp0s31f6

[module/usbmodem1]
type = custom/script
format = usb: <label>
interval = 3
exec = bash .config/polybar/scripts/modules/usbmodem.sh enp0s20f0u1

[module/usbmodem2]
inherit="module/usbmodem1"
exec = bash .config/polybar/scripts/modules/usbmodem.sh enp0s20f0u6

[module/usbmodem3]
inherit="module/usbmodem1"
exec = bash .config/polybar/scripts/modules/usbmodem.sh enp0s20f0u3

[module/usbmodem4]
inherit="module/usbmodem1"
exec = bash .config/polybar/scripts/modules/usbmodem.sh ens8u1u2

[module/usbmodem5]
inherit="module/usbmodem1"
exec = bash .config/polybar/scripts/modules/usbmodem.sh enp60s0u2u2

; Module VPN

[module/ovpn]
type = custom/script
interval = 3
format = ovpn: <label>
label-maxlen=50
label-ellipsis=true
exec = echo $(nmcli con show --active | grep vpn | cut -c1-12 | tr -d ' ')

[module/nvpn]
inherit="module/ovpn"
format = nvpn: <label>
exec = echo $(nordvpn status | grep -oP '(?<=Current server: ).*' | cut -f1 -d'.')

; Module Volume + Media

[module/volume]
type = internal/pulseaudio
master-mixer = IEC958
mapped = true
format-volume = <label-volume>
label-volume =  %percentage%
label-volume-foreground = ${root.foreground}
format-muted-foreground = ${root.foreground}
label-muted =  x
interval = 1

[module/playerctl]
type = custom/script
tail = true
exec = ~/.config/polybar/scripts/modules/playerctl.sh
click-left = "playerctl play-pause"
click-right = "playerctl next"
click-middle = "playerctl previous"

[module/playerctl_long]
inherit="module/playerctl"
exec = bash ~/.config/polybar/scripts/modules/playerctl.sh 30

[module/playerctl_buttons]
type = custom/menu
expand-right = true
label-open = 
label-close = 
label-separator = "  "
menu-0-0 = 
menu-0-0-exec = "playerctl previous"
menu-0-1 = 
menu-0-1-exec = "playerctl play-pause"
menu-0-2 = 
menu-0-2-exec = "playerctl next"

[module/pavucontrol_button]
type = custom/text
content = 󰕾 |
click-left = "setsid pavucontrol"
click-right = "setsid pulseaudio-equalizer-gtk"
click-middle = "bash ~/Userdata/Scripts/Launchers/restart_pulseaudio_1s.sh"

[module/cava]
type = custom/script
tail = true
exec = python ~/.config/polybar/scripts/modules/cava.py

; Module Battery

[module/battery]
type = internal/battery
battery = BAT0
poll-interval = 3
adapter = ADP1
full-at = 95
label-full = bat: %percentage%%
label-charging = bat: %percentage%% (+%consumption%W, %time%)
label-discharging = bat: %percentage%% (-%consumption%W, %time%)

[module/battery_short]
inherit = "module/battery"
label-full = bat: %percentage%%
label-charging = bat: %percentage%%
label-discharging = bat: %percentage%%

; Module Disk

[module/disk_short_pc]
type = custom/script
format = 󰆓 <label>
interval = 10
exec = echo $(df -h / | tail +2 | awk -F ' ' '{print $3 " / " $2 " (" $5 ")"}' | tr -d 'G')
click-left = "setsid alacritty -e sh -c 'echo Disk overview... ; echo ; df -h -x tmpfs; echo ; read -p Done'"
click-right = "setsid alacritty -e sh -c 'echo Scanning main disk ; echo ; ncdu --exclude /data / ; echo ; read -p Done!'"
click-middle = "setsid alacritty -e sh -c 'echo Scanning full disk... ; echo ; sudo ncdu / ; echo ; read -p Done!'"

[module/disk_short_pc_spacer]
inherit = "module/disk_short_pc"
format = | 󰆓 <label>

[module/disk_short_yoga3]
inherit = "module/disk_short_pc"
exec = echo $(df -h / | tail +2 | awk -F ' ' '{print $3 " / " $2 " (" $5 ")"}' | tr -d 'G')

; Module Backlight

[module/xbacklight]
type = internal/xbacklight
format = <label>
label = %percentage% 

[module/xbacklight_buttons]
type = custom/menu
expand-right = true
label-open = blght
label-close = x
label-separator = "  "
menu-0-0 = -
menu-0-0-exec = "xbacklight -dec 10; notify-send 'brightness down'"
menu-0-1 = +
menu-0-1-exec = "xbacklight -inc 10; notify-send 'brightness up'"

