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

[colors]
background = #222
background-alt = #444
foreground = #dfdfdf
foreground-alt = #555
primary = #ffb52a
secondary = #e60053
alert = #bd2c40
success = #55aa55
warning = #ffda17

[bar/1080p-top]
monitor = ${env:MONITOR:eDP-1}
width = 100%
height =25

radius = 0
fixed-center = false

background = ${colors.background}
foreground = ${colors.foreground}

line-size = 3
line-color = #f00

border-size = 0 
border-color = #00000000

padding-left = 3
padding-right = 3

module-margin-left = 1
module-margin-right = 1

font-0 = "Ubuntu Mono derivative Powerline:style=Regular:pixelsize=12:1"
font-1 = "Symbola:size=16:antialias=true"
font-2 = "PragmataPro Liga:style=Regular:pixelsize=12:1"

modules-left = powermenu i3 xwindow
modules-center =
modules-right = polypomo wlan eth battery date

bottom = false
tray-position = right
tray-padding = 4
tray-transparent = true
tray-maxsize = 16

cursor-click = pointer
cursor-scroll = ns-resize
dpi-y = 100
dpi-x = 100


[bar/1080p-bottom]
;remove padding around bar
;override-redirect = true
monitor = ${env:MONITOR:eDP-1}
width = 100%
height = 30

radius = 0
fixed-center = false

background = ${colors.background}
foreground = ${colors.foreground}

line-size = 3
line-color = #f00

border-size = 0 
border-color = #00000000

padding-left = 3
padding-right = 3

module-margin-left = 1
module-margin-right = 1

font-0 = "Ubuntu Mono derivative Powerline:style=Regular:pixelsize=12:1"
font-1 = "Symbola:size=16:antialias=true"
font-2 = "PragmataPro Liga:style=Regular:pixelsize=12:1"

modules-left = spotify
modules-center =
modules-right = displaymenu audiomenu volume backlight  filesystem temperature cpu memory keyboard

bottom = true
; tray-position = right
; tray-padding = 4
; tray-transparent = true
; tray-maxsize = 16

cursor-click = pointer
cursor-scroll = ns-resize
dpi-y = 100
dpi-x = 100

[bar/4k-bottom]
;remove padding around bar
;override-redirect = true
monitor = ${env:MONITOR:DP-0}
width = 100%
height = 50

radius = 0
fixed-center = false

background = ${colors.background}
foreground = ${colors.foreground}

line-size = 3
line-color = #f00

border-size = 0 
border-color = #00000000

padding-left = 3
padding-right = 3

module-margin-left = 1
module-margin-right = 1

font-0 = "Ubuntu Mono derivative Powerline:style=Regular:pixelsize=14:1"
font-1 = "Symbola:size=16:antialias=true"
font-2 = "PragmataPro Liga:style=Regular:pixelsize=14:1"

modules-left = spotify
modules-center =
modules-right = volume backlight  filesystem temperature cpu memory keyboard

bottom = true

cursor-click = pointer
cursor-scroll = ns-resize
dpi-y = 125
dpi-x = 125

[bar/4k-top]
monitor = ${env:MONITOR:DP-0}
width = 100%
height = 50

radius = 0
fixed-center = false

background = ${colors.background}
foreground = ${colors.foreground}

line-size = 3
line-color = #f00

border-size = 0 
border-color = #00000000

padding-left = 3
padding-right = 3

module-margin-left = 1
module-margin-right = 1

font-0 = "Ubuntu Mono derivative Powerline:style=Regular:pixelsize=14:1"
font-1 = "Symbola:size=16:antialias=true"
font-2 = "PragmataPro Liga:style=Regular:pixelsize=14:1"

modules-left = powermenu i3 xwindow
modules-center =
modules-right = polypomo wlan eth battery date

bottom = false
tray-position = right
tray-padding = 4
tray-transparent = true
tray-maxsize = 16

cursor-click = pointer
cursor-scroll = ns-resize
dpi-y = 100
dpi-x = 100

[module/xwindow]
type = internal/xwindow
label = %title:0:60:...%

[module/keyboard]
type = internal/xkeyboard
blacklist-0 = num lock

format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-prefix-underline = ${colors.secondary}

label-layout = %layout%
label-layout-underline = ${colors.secondary}

label-indicator-padding = 2
label-indicator-margin = 1
label-indicator-background = ${colors.secondary}
label-indicator-underline = ${colors.secondary}

[module/filesystem]
type = internal/fs
interval = 25

mount-0 = /

label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
label-unmounted = %mountpoint% not mounted
label-unmounted-foreground = ${colors.foreground-alt}

; https://github.com/polybar/polybar/wiki/Module:-bspwm
[module/bspwm]
type = internal/bspwm

label-focused = %icon% %index% %name%
label-focused-background = ${colors.background-alt}
label-focused-underline= ${colors.primary}
label-focused-padding = 2

label-occupied = %index% %name%
label-occupied-padding = 1

label-urgent = %index%!
label-urgent-background = ${colors.alert}
label-urgent-padding = 1

label-empty = %index% %name%
label-empty-foreground = ${colors.foreground-alt}
label-empty-padding = 1

[module/i3]
type = internal/i3
format = <label-state> <label-mode>
index-sort = true
wrapping-scroll = true

; Only show workspaces on the same output as the bar
pin-workspaces = true

label-mode-padding = 2
label-mode-foreground = #000
label-mode-background = ${colors.primary}

; focused = Active workspace on focused monitor
label-focused = %index%
label-focused-background = ${colors.background-alt}
label-focused-underline = ${colors.success}
label-focused-padding = 2 

; unfocused = Inactive workspace on any monitor
label-unfocused = %index%
label-unfocused-padding = 1

; visible = Active workspace on unfocused monitor
label-visible = %index%
label-visible-background = ${colors.foreground-alt}
label-visible-underline = ${colors.primary}
label-visible-padding = 2

; urgent = Workspace with urgency hint set
label-urgent = %index%
label-urgent-background = ${colors.background-alt}
label-urgent-padding = 2

[module/mpd]
type = internal/mpd
format-online = <label-song>  <icon-prev> <icon-stop> <toggle> <icon-next>

icon-prev = 
icon-stop = 
icon-play = 
icon-pause = 
icon-next = 

label-song-maxlen = 25
label-song-ellipsis = true

[module/backlight]
; Use the following command to list available cards:
; $ ls -1 /sys/class/backlight/
type = internal/backlight

; Default: the monitor defined for the running bar
; output = eDP-1
card = intel_backlight

enable-scroll = true

; output = eDP-1
; format = <label> <bar>
format = <label> <ramp>

; Available tokens:
;   %percentage% (default)
label = BACKLIGHT: %percentage%%

; Only applies if <ramp> is used
ramp-0 = 🌕
ramp-1 = 🌔
ramp-2 = 🌓
ramp-3 = 🌒
ramp-4 = 🌑

; Only applies if <bar> is used
bar-width = 10
bar-indicator = |
bar-fill = ─
bar-empty = ─


[module/memory]
type = internal/memory
interval = 15
format-prefix = "MEM: "
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #4bffdc
label = %gb_used%/%gb_total%

[module/cpu]
type = internal/cpu
interval = 2
format-prefix = "CPU: "
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #f90000
label = %percentage%%

[module/wlan]
type = internal/network
;interface = wlo1
interface = wlan0
interval = 5.0

format-connected-prefix =
format-connected-prefix-foreground = ${colors.foreground-alt}
label-connected = '%essid%' %local_ip% U-%upspeed% D-%downspeed%
format-connected = <ramp-signal> <label-connected>
format-connected-underline = #9f78e1

;format-disconnected =
format-disconnected = <label-disconnected>
format-disconnected-underline = ${self.format-connected-underline}
label-disconnected = %ifname% X
label-disconnected-foreground = ${colors.foreground-alt}

ramp-signal-0 = ▁    
ramp-signal-1 = ▁▂   
ramp-signal-2 = ▁▂▃  
ramp-signal-3 = ▁▂▃▄ 
ramp-signal-4 = ▁▂▃▅▇
ramp-signal-foreground = ${colors.foreground-alt}

[module/network]
type = internal/network
interface = enp109s0f1
;interface = enx8cae5cec01dd
interval = 5.0

format-connected-underline = #55aa55
;format-connected-prefix = " "
format-connected-prefix-foreground = ${colors.foreground-alt}
label-connected = eth %local_ip%

format-disconnected =
;format-disconnected = <label-disconnected>
;format-disconnected-underline = ${self.format-connected-underline}
label-disconnected = %ifname% disconnected
;label-disconnected-foreground = ${colors.foreground-alt}

[module/date]
type = internal/date
interval = 1

date = "%Y-%m-%d"
date-alt = " %Y-%m-%d"

time = %H:%M
time-alt = %H:%M:%S

format-prefix = 🗓
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #0a6cf5

label = %date% %time%

[module/volume]
type = internal/volume

label-volume = 🔊 VOL:
label-volume-foreground = ${root.foreground}
format-volume = <label-volume> <bar-volume>

format-muted-prefix = "🔊 "
format-muted-foreground = ${colors.foreground-alt}
label-muted =  ---- MUTED ----

bar-volume-width = 12
bar-volume-foreground-0 = #55aa55
bar-volume-foreground-1 = #f5a70a
bar-volume-foreground-2 = #ff5555
bar-volume-gradient = true
bar-volume-indicator = ─
bar-volume-indicator-font = 2
bar-volume-fill = ─
bar-volume-fill-font = 2
bar-volume-empty = ─
bar-volume-empty-font = 2
bar-volume-empty-foreground = ${colors.foreground-alt}


[module/battery]
type = internal/battery
; Use the following command to list batteries and adapters:
; ls -1 /sys/class/power_supply
battery = BAT0
adapter = AC0
full-at = 97
poll-interval = 5

label-charging = %percentage%% - charging @ %consumption%W
format-charging = <animation-charging> <label-charging>
format-charging-underline = ${colors.success}

label-discharging = %percentage%% - %time% @ %consumption%W
format-discharging = <ramp-capacity> <label-discharging>
format-discharging-underline = ${colors.warning}

format-full-prefix = "|▇|"
format-full-prefix-foreground = ${colors.foreground-alt}
format-full-underline = ${colors.success}
label-full = " Battery Full"

ramp-capacity-0 = |_|
ramp-capacity-1 = |▁|
ramp-capacity-2 = |▃|
ramp-capacity-3 = |▄|
ramp-capacity-4 = |▅|
ramp-capacity-5 = |▆|
ramp-capacity-6 = |▇|
ramp-capacity-foreground = ${colors.foreground-alt}

animation-charging-0 = |▁|
animation-charging-1 = |▂|
animation-charging-2 = |▃|
animation-charging-3 = |▄|
animation-charging-4 = |▅|
animation-charging-5 = |▆|
animation-charging-6 = |▇|
animation-charging-foreground = ${colors.foreground-alt}

animation-discharging-framerate = 2000
animation-charging-framerate = 500

[module/temperature]
type = internal/temperature
interval = 2
thermal-zone = 0
base-temperature = 10
warn-temperature = 65

format = <ramp> <label>
format-underline = #f50a4d
format-warn = <ramp> <label-warn>
format-warn-underline = ${self.format-underline}

label = %temperature%
label-warn = 🔥%temperature%🔥
label-warn-foreground = ${colors.secondary}

ramp-0 = |_|
ramp-1 = |-|
ramp-2 = |^|
ramp-foreground = ${colors.foreground-alt}

[module/displaymenu]
type = custom/menu
expand-right = false
format-spacing = 1
label-open = DISPLAY
label-open-foreground = ${colors.secondary}
label-close = CANCEL
label-close-foreground = ${colors.secondary}
label-separator = |
label-separator-foreground = ${colors.foreground-alt}

menu-0-0 = Connect
menu-0-0-exec = ~/.config/i3/setup_external_displays.sh CONNECT

menu-0-1 = Disconnect
menu-0-1-exec = ~/.config/i3/setup_external_displays.sh DISCONNECT

[module/audiomenu]
type = custom/menu
expand-right = false
format-spacing = 1
label-open = LINE-OUT
label-open-foreground = ${colors.secondary}
label-close = CANCEL
label-close-foreground = ${colors.secondary}
label-separator = |
label-separator-foreground = ${colors.foreground-alt}

menu-0-0 = Speakers
menu-0-0-exec = pactl set-default-sink 'alsa_output.pci-0000_00_1f.3.analog-stereo'

menu-0-1 = Jabra
menu-0-1-exec = pactl set-default-sink 'alsa_output.usb-0b0e_Jabra_SPEAK_510_USB_501AA56C0DBB020A00-00.analog-stereo'

menu-0-2 = Razer Mic
menu-0-2-exec = pactl set-default-sink 'alsa_output.usb-Razer_Inc_Razer_Seiren_X_UC2102L01304427-00.analog-stereo'

menu-0-3 = HyperX Headset
menu-0-3-exec = pactl set-default-sink 'alsa_output.usb-Kingston_HyperX_7.1_Audio_00000000-00.stereo-fallback'

[module/powermenu]
type = custom/menu

expand-right = true

format-spacing = 1

label-open = I/O
label-open-foreground = ${colors.secondary}
label-close =  cancel
label-close-foreground = ${colors.secondary}
label-separator = |
label-separator-foreground = ${colors.foreground-alt}


menu-0-0 = lock
menu-0-0-exec = i3lock-fancy

menu-0-1 = suspend
menu-0-1-exec = systemctl suspend

menu-0-2 = reboot
menu-0-2-exec = menu-open-1

menu-0-3 = shutdown
menu-0-3-exec = menu-open-2

menu-1-0 = cancel
menu-1-0-exec = menu-open-0

menu-1-1 = reboot
menu-1-1-exec = shutdown -r now

menu-2-0 = power off
menu-2-0-exec = shutdown now

menu-2-1 = cancel
menu-2-1-exec = menu-open-0

[settings]
screenchange-reload = true
;compositing-background = xor
;compositing-background = screen
;compositing-foreground = source
;compositing-border = over

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

[module/polypomo]
type = custom/script

exec = ~/tools/polybar/polypomo/polypomo
tail = true

label = POM:%output%
click-left = ~/tools/polybar/polypomo/polypomo toggle
click-right = ~/tools/polybar/polypomo/polypomo end
click-middle = ~/tools/polybar/polypomo/polypomo lock
scroll-up = ~/tools/polybar/polypomo time +60
scroll-down = ~/tools/polybar/polypomo time -60
format-underline = #1db954

[module/spotify]
type = custom/script
interval = 5
format-prefix = "🎶 "
format = 🎶<label> 🎶
exec = python ~/tools/polybar/polybar-spotify/spotify_status.py -p '>,||' -f '{play_pause} {song} -by- {artist} -from- {album}' --font 3 -t 120
format-underline = #1db954

; vim:ft=dosini
