# **************************************************************************** #
#                                                                              #
#                                                         :::      ::::::::    #
#    modules.ini                                        :+:      :+:    :+:    #
#                                                     +:+ +:+         +:+      #
#    By: tomoron <tomoron@student.42.fr>            +#+  +:+       +#+         #
#                                                 +#+#+#+#+#+   +#+            #
#    Created: 2024/08/28 20:38:49 by tomoron           #+#    #+#              #
#    Updated: 2024/10/16 22:55:55 by tomoron          ###   ########.fr        #
#                                                                              #
# **************************************************************************** #

[module/mpris]
type = custom/script
exec-if = playerctl metadata
exec = playerctl metadata --format '{{ playerName }}:{{ artist }} - {{title}}'
interval = 1
interval-if = 1

[module/dgpu]
type = custom/script
exec-if = test "$(supergfxctl -g)" = "Hybrid"
exec = echo "  on |"
format-padding=1
interval-if = 10
interval = 100

[module/fans]
type = custom/script
exec-if = test "$(cat /sys/class/hwmon/hwmon6/fan1_input)" -gt 0 -o "$(cat /sys/class/hwmon/hwmon6/fan2_input)" -gt 0 
exec = echo " " "$(cat /sys/class/hwmon/hwmon6/fan1_input).$(cat /sys/class/hwmon/hwmon6/fan2_input) |"
interval = 1
interval-if = 1

[module/pulseaudio]
type = internal/pulseaudio

; Soundcard to be used
; Usually in the format hw:# where # is the card number
; You can find the different card numbers in `/proc/asound/cards`
master-soundcard = default
speaker-soundcard = default
headphone-soundcard = default

; Name of the master, speaker and headphone mixers
; Use the following command to list available mixer controls:
; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p"
; If master, speaker or headphone-soundcard isn't the default, 
; use `amixer -c # scontrols` instead where # is the number 
; of the master, speaker or headphone soundcard respectively
;
; Default: Master
master-mixer = Master

; Optionally define speaker and headphone mixers
; Default: none
;;speaker-mixer = Speaker
; Default: none
;;headphone-mixer = Headphone

; NOTE: This is required if headphone_mixer is defined
; Use the following command to list available device controls
; $ amixer controls | sed -r "/CARD/\!d; s/.*=([0-9]+).*name='([^']+)'.*/printf '%3.0f: %s\n' '\1' '\2'/e" | sort
; You may also need to use `amixer -c # controls` as above for the mixer names
; Default: none
;;headphone-id = 9

; Use volume mapping (similar to amixer -M and alsamixer), where the increase in volume is linear to the ear
; Default: false
;;mapped = true

; Interval for volume increase/decrease (in percent points)
; Default: 5
interval = 5

; Available tags:
;   <label-volume> (default)
;   <ramp-volume>
;   <bar-volume
format-volume = "<ramp-volume> <label-volume>"
format-volume-padding = 1

; Available tags:
;   <label-muted> (default)
;   <ramp-volume>
;   <bar-volume>
format-muted = "<label-muted>"
format-muted-prefix = "󰝟 "
format-muted-prefix-font = 2
format-muted-padding = 1

; Available tokens:
;   %percentage% (default)
label-volume = %percentage%%

; Available tokens:
;   %percentage% (default
label-muted = " M"
label-muted-foreground = ${color.foreground}

; Only applies if <ramp-volume> is used
ramp-volume-0 = ""
ramp-volume-1 = ""
ramp-volume-2 = " "
ramp-volume-font = 2

; If defined, it will replace <ramp-volume> when
; headphones are plugged in to `headphone_control_numid`
; If undefined, <ramp-volume> will be used for both
; Only applies if <ramp-volume> is used
ramp-headphones-0 = 

[module/battery]
type = internal/battery

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

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

; 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 = 2

; 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 = "󰂄 <label-charging>"
format-charging-padding = 1

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

; Available tags:
;   <label-full> (default)
;   <bar-capacity>
;   <ramp-capacity>
format-full = <label-full>
format-full-prefix = " "
format-full-prefix-font = 2
format-full-padding = 2

; Available tokens:
;   %percentage% (default)
;   %time%
;   %consumption% (shows current charge rate in watts)
label-charging = %percentage%% %time%

; Available tokens:
;   %percentage% (default)
;   %time%
;   %consumption% (shows current discharge rate in watts)
label-discharging = %percentage%% %time%

; Available tokens:
;   %percentage% (default)
label-full = " Full"

; Only applies if <ramp-capacity> is used
ramp-capacity-0 = " "
ramp-capacity-1 = " "
ramp-capacity-2 = " "
ramp-capacity-3 = " "
ramp-capacity-4 = " "
ramp-capacity-font = 2

; Only applies if <bar-capacity> is used
;bar-capacity-width = 10

; Only applies if <animation-charging> is used
animation-charging-0 = "󰂇 "
animation-charging-1 = "󰢝 "
animation-charging-2 = "󰂉 "
animation-charging-3 = "󰂋 " 
animation-charging-4 = "󰂅 "
animation-charging-font = 2

; Framerate in milliseconds
animation-charging-framerate = 750

; Only applies if <animation-discharging> is used
;;animation-discharging-0 = ${battery.anim0}
;;animation-discharging-1 = ${battery.anim1}

; Framerate in milliseconds
;animation-discharging-framerate = 500

; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[module/cpu]
type = internal/cpu

; Seconds to sleep between updates
; Default: 1
interval = 1

; Available tags:
;   <label> (default)
;   <bar-load>
;   <ramp-load>
;   <ramp-coreload>
;;format = <label> <ramp-coreload>
format = <label>
format-prefix = " "
format-prefix-font = 2
format-foreground = ${color.foreground}
format-padding = 1

; Available tokens:
;   %percentage% (default) - total cpu load averaged over all cores
;   %percentage-sum% - Cumulative load on all cores
;   %percentage-cores% - load percentage for each core
;   %percentage-core[1-9]% - load percentage for specific core
label = " %percentage%%"

; Spacing between individual per-core ramps
;;ramp-coreload-spacing = 1
;;ramp-coreload-0 = ${cpu.load0}
;;ramp-coreload-1 = ${cpu.load1}

;;ramp-load-0 = ${cpu.load0}
;;ramp-load-1 = ${cpu.load1}

;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[module/date]
type = internal/date

; Seconds to sleep between updates
interval = 1.0

; See "http://en.cppreference.com/w/cpp/io/manip/put_time" for details on how to format the date string
; NOTE: if you want to use syntax tags here you need to use %%{...}
;;date = %Y-%m-%d%

; Optional time format
time = " %H:%M:%S"

; if `date-alt` or `time-alt` is defined, clicking
; the module will toggle between formats
;;date-alt = %A, %d %B %Y
time-alt = " %a, %d %b %Y"

; Available tags:
;   <label> (default)
format = <label>
format-prefix = " "
format-prefix-font = 2
format-foreground = ${color.foreground}
format-padding = 1

; Available tokens:
;   %date%
;   %time%
; Default: %date%
label = %time%

;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[module/filesystem]
type = internal/fs

; Mountpoints to display
mount-0 = /
;;mount-1 = /home
;;mount-2 = /var

; Seconds to sleep between updates
; Default: 30
interval = 30

; Display fixed precision values
; Default: false
fixed-values = true

; Spacing between entries
; Default: 2
;;spacing = 4

; Available tags:
;   <label-mounted> (default)
;   <bar-free>
;   <bar-used>
;   <ramp-capacity>
format-mounted = <label-mounted>
format-mounted-prefix = 󰋊
format-mounted-prefix-font = 2
format-mounted-padding = 2

; Available tokens:
;   %mountpoint%
;   %type%
;   %fsname%
;   %percentage_free%
;   %percentage_used%
;   %total%
;   %free%
;   %used%
; Default: %mountpoint% %percentage_free%%
label-mounted = " %percentage_used%%"

; Available tokens:
;   %mountpoint%
; Default: %mountpoint% is not mounted
label-unmounted = " %mountpoint%: not mounted"

;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[module/memory]
type = internal/memory

; Seconds to sleep between updates
; Default: 1
interval = 1

; Available tags:
;   <label> (default)
;   <bar-used>
;   <bar-free>
;   <ramp-used>
;   <ramp-free>
;   <bar-swap-used>
;   <bar-swap-free>
;   <ramp-swap-used>
;   <ramp-swap-free>
format = <label>
format-prefix = 
format-prefix-font = 2 
format-padding = 1

; 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%

label = "  %percentage_used%%"

; Only applies if <ramp-used> is used
;;ramp-used-0 = ${memory.used0}
;;ramp-used-1 = ${memory.used1}
;;ramp-used-2 = ${memory.used2}

; Only applies if <ramp-free> is used
;;ramp-free-0 = ${memory.free0}
;;ramp-free-1 = ${memory.free1}
;;ramp-free-2 = ${memory.free2}

;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

; If you use both a wired and a wireless network, just add 2 module definitions. For example
[module/network]
type = internal/network
interface = wlp2s0 

; Seconds to sleep between updates
; Default: 1
interval = 1.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 have an unknown state, even when they're running
; Default: false
unknown-as-up = true

; Available tags:
;   <label-connected> (default)
;   <ramp-signal>
format-connected = "<ramp-signal><label-connected>"
format-connected-prefix = ""
format-connected-prefix-font = 2
format-connected-padding = 1

; Available tags:
;   <label-disconnected> (default)
format-disconnected = <label-disconnected>
format-disconnected-prefix = "󱚼 "
format-disconnected-prefix-font = 2
format-disconnected-padding = 1

; Available tags:
;   <label-connected> (default)
;   <label-packetloss>
;   <animation-packetloss>
;;format-packetloss = <animation-packetloss> <label-connected>

; Available tokens:
;   %ifname%    [wireless+wired]
;   %local_ip%  [wireless+wired]
;   %local_ip6% [wireless+wired]
;   %essid%     [wireless]
;   %signal%    [wireless]
;   %upspeed%   [wireless+wired]
;   %downspeed% [wireless+wired]
;   %linkspeed% [wired]
; Default: %ifname% %local_ip%
label-connected = "%{A1:networkmanager_dmenu &:} %essid%%{A}"

; Available tokens:
;   %ifname%    [wireless+wired]
; Default: (none)
label-disconnected = "%{A1:networkmanager_dmenu &:}%{A}"
;;label-disconnected-foreground = #66ffffff

; Available tokens:
;   %ifname%    [wireless+wired]
;   %local_ip%  [wireless+wired]
;   %local_ip6% [wireless+wired]
;   %essid%     [wireless]
;   %signal%    [wireless]
;   %upspeed%   [wireless+wired]
;   %downspeed% [wireless+wired]
;   %linkspeed% [wired]
; 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 = "󰤨 "

; 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

;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[module/temperature]
type = internal/temperature

; Seconds to sleep between updates
; Default: 1
interval = 1

; 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 = 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
;;hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
hwmon-path = /sys/devices/virtual/thermal/thermal_zone0/temp

; Threshold temperature to display warning label (in degrees celsius)
; Default: 80
warn-temperature = 80

; Whether or not to show units next to the temperature tokens (°C, °F)
; Default: true
units = true

; Available tags:
;   <label> (default)
;   <ramp>
format = "<ramp> <label>"
format-padding = 1

; Available tags:
;   <label-warn> (default)
;   <ramp>
format-warn = "<ramp> <label-warn>"
format-warn-foreground = #FF0000 
format-warn-padding = 1

; Available tokens:
;   %temperature% (deprecated)
;   %temperature-c%   (default, temperature in °C)
;   %temperature-f%   (temperature in °F)
label = %temperature-c%

; Available tokens:
;   %temperature% (deprecated)
;   %temperature-c%   (default, temperature in °C)
;   %temperature-f%   (temperature in °F)
label-warn = "%temperature-c%"

; Requires the <ramp> tag
; The icon selection will range from 0 to `warn-temperature`
; with the current temperature as index.
ramp-0 = ""
ramp-1 = ""
ramp-2 = ""
ramp-3 = ""
ramp-4 = ""
ramp-font = 2

;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[module/workspaces]
type = internal/xworkspaces

; 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 = false

; Create click handler used to focus desktop
; Default: true
enable-click = true

; Create scroll handlers used to cycle desktops
; Default: true
enable-scroll = false

; icon-[0-9]+ = <desktop-name>;<icon>
; NOTE: The desktop name needs to match the name configured by the WM
; You can get a list of the defined desktops using:
; $ xprop -root _NET_DESKTOP_NAMES
icon-0 = 1;1
icon-1 = 2;2 
icon-2 = 3;3 
icon-3 = 4;4 
icon-4 = 5;5 
icon-5 = A;A 
icon-6 = B;B 
icon-default = 0


; Available tags:
;   <label-monitor>
;   <label-state> - gets replaced with <label-(active|urgent|occupied|empty)>
; Default: <label-state>
format = <label-state>
format-font = 3
format-background = #0000FF
format-foreground = #FF0000

; Available tokens:
;   %name%
; Default: %name%
label-monitor = %name%

; Available tokens:
;   %name%
;   %icon%
;   %index%
; Default: %icon%  %name%
label-active = %icon%
label-active-background = #44ffffff
label-active-foreground = #00FF00

; Available tokens:
;   %name%
;   %icon%
;   %index%
; Default: %icon%  %name%
label-occupied = %icon%
label-occupied-background = #00FFFFFF 
label-occupied-foreground = #00FF00

; Available tokens:
;   %name%
;   %icon%
;   %index%
; Default: %icon%  %name%
label-urgent = %icon%
label-urgent-background = ${color.background}
label-urgent-foreground = #CC6666

; Available tokens:
;   %name%
;   %icon%
;   %index%
; Default: %icon%  %name%
label-empty = %icon%
label-empty-background = #0000FFFF
label-empty-foreground = #FFFFFF

label-active-padding = 1.85
label-urgent-padding = 1.85
label-occupied-padding = 1.85
label-empty-padding = 1.85

;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
