literate-dotfiles/dotfiles/polybar.org

18 KiB

Polybar Configuration

Colors

[colors]
base00 = ${xrdb:color0:#000000}
base01 = ${xrdb:color10:#000000}
base02 = ${xrdb:color11:#000000}
base03 = ${xrdb:color8:#000000}
base04 = ${xrdb:color12:#000000}
base05 = ${xrdb:color7:#000000}
base06 = ${xrdb:color13:#000000}
base07 = ${xrdb:color15:#000000}
base08 = ${xrdb:color1:#000000}
base09 = ${xrdb:color9:#000000}
base0A = ${xrdb:color3:#000000}
base0B = ${xrdb:color2:#000000}
base0C = ${xrdb:color6:#000000}
base0D = ${xrdb:color4:#000000}
base0E = ${xrdb:color5:#000000}
base0F = ${xrdb:color14:#000000}

; based on http://chriskempson.com/projects/base16/
background = ${colors.base00}
background-light = ${colors.base01}
background-selection = ${colors.base02}
comments = ${colors.base03}
foreground-dark = ${colors.base04}
foreground = ${colors.base05}
foreground-light = ${colors.base06}
foreground-light-bis = ${colors.base07}
red = ${colors.base08}
orange = ${colors.base09}
brown = ${colors.base0A}
green = ${colors.base0B}
turquoise = ${colors.base0C}
blue = ${colors.base0D}
purple = ${colors.base0E}
magenta = ${colors.base0F}
black = ${#000000}

VM

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

Top Bar

  [bar/top]
  # monitor = ${env:MONITOR:eDP1}
  enable-ipc = true
  override-redirect = false
  bottom = false
  fixed-center = true

  width = 100%
  height = 27
  radius = 0.0

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

  line-size = 3

  border-size = 0

  padding-left = 2
  padding-right = 2

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

  font-0 = SauceCodePro Nerd Font:style=Medium,Regular:pixelsize=10;1
  font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
  font-2 = Weather Icons:size=10;1
  # font-3 = siji:pixelsize=10;1

  # modules-left = mpd pulseaudio
  # modules-center = i3 xwindow
  modules-left = i3
  modules-center = xwindow
  modules-right = nordvpn unread_mail cpu battery temperature date

  tray-position = right
  tray-padding = 2
  #tray-transparent = true
  #tray-background = #0063ff

  #cursor-click = pointer
  #cursor-scroll = ns-resize

Bottom Bar

  [bar/bottom]
  # monitor = ${env:MONITOR:eDP1}
  enable-ipc = true
  override-redirect = false
  bottom = true
  fixed-center = true

  width = 100%
  height = 27
  radius = 0.0

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

  line-size = 3

  border-size = 0

  padding-left = 2
  padding-right = 2

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

  font-0 = SauceCodePro Nerd Font:style=Medium,Regular:pixelsize=10;1
  font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
  font-2 = Weather Icons:size=10;1
  # font-3 = siji:pixelsize=10;1

  modules-left = mpd pulseaudio
  # modules-center = xwindow
  modules-right = screenshot weather emacs caffeine redshift

  # tray-position = right
  # tray-padding = 2
  #tray-transparent = true
  #tray-background = #0063ff

  #cursor-click = pointer
  #cursor-scroll = ns-resize

Show Windows Title

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

Current Layour of the Keyboard

  [module/xkeyboard]
  type = internal/xkeyboard

  # List of indicators to ignore
  blacklist-0 = num lock


  format = <label-layout>
  format-prefix = " "
  format-prefix-foreground = ${colors.foreground}
  format-prefix-underline = ${colors.background}

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

Mount filesystem and show available space

  [module/filesystem]
  type = internal/fs

  interval = 25

  # List of mountpoints to display
  mount-0 = /

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

I3 - Information about workspaces and active one

  [module/i3]
  type = internal/i3

  enable-scroll = false
  wrapping-scroll = false

TODO - Choose some nice icons

ws-icon-0 = 1;
ws-icon-1 = 2;
ws-icon-2 = 3;
ws-icon-3 = 4;
ws-icon-4 = 5;
ws-icon-default = 
format = <label-state> <label-mode>
index-sort = true

Colors

label-mode-foreground = ${colors.foreground}
label-mode-background = ${colors.turquoise}
label-mode-padding = 1

# focused = Active workspace on focused monitor
label-focused = %icon% %index%
label-focused-foreground = ${colors.foreground}
label-focused-background = ${colors.background}
label-focused-underline = ${colors.turquoise}
label-focused-padding = 1

# unfocused = Inactive workspace on any monitor
label-unfocused = %icon% %index%
label-unfocused-foreground = ${colors.foreground}
label-unfocused-background = ${colors.background}
label-unfocused-underline = ${colors.background}
label-unfocused-padding = 1

# visible = Active workspace on unfocused monitor
label-visible = %icon% %index%
label-visible-background = ${colors.background}
label-visible-underline = ${colors.turquoise}
label-visible-padding = 1

# urgent = Workspace with urgency hint set
label-urgent = %icon% %index%
label-urgent-background = ${colors.red}
label-urgent-padding = 1

# Separator in between workspaces
#label-separator = |

Music using MPD

[module/mpd]
type = internal/mpd
format-online = <icon-prev> <toggle> <icon-next> <icon-repeat> <icon-random> <bar-progress> %{A1:termite -e "ncmpcpp" &:}<label-song>%{A}

format-online-spacing = 0
format-online-padding = 0

label-offline = mpd is offline
format-offline = <label-offline>
format-offline-foreground = #777

label-song = %artist% - %title%
label-song-maxlen = 30
label-song-ellipsis = true

icon-prev = 寧
icon-stop = 栗
icon-play = 契
icon-pause = 
icon-next = 嶺
icon-random = 咽
icon-repeat = 凌

# Used to display the state of random/repeat/repeatone/single
# Only applies if <icon-[random|repeat|repeatone|single]> is used
toggle-on-foreground = ${colors.foreground-light}
toggle-off-foreground = ${colors.comments}

bar-progress-width = 15
bar-progress-indicator = |
bar-progress-fill = ─
bar-progress-empty = ─

Backlight level

[module/xbacklight]
type = internal/xbacklight

format = <ramp>
ramp-0 = 
ramp-1 = 
ramp-2 = 
ramp-3 = 
ramp-4 = 
ramp-5 = 
ramp-6 = 
ramp-7 = 
ramp-8 = 
ramp-9 = 
ramp-10 = 
ramp-11 = 

CPU Usage

[module/cpu]
type = internal/cpu
interval = 2

format-prefix-foreground = ${colors.foreground}

format-underline = ${colors.background}

label = %{A1:termite -e "htop" &:} ﬙ %percentage:2%% %{A}

Available Memory

[module/memory]
type = internal/memory

interval = 2

format-prefix = " "

format-prefix-foreground = ${colors.foreground-dark}
format-underline = #4bffdc

label = %percentage_used%%

Date

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

# Open google calendar on left right
date = %{A1:qutebrowser https\://calendar.google.com/ &:} %d-%m%{A}
date-alt = "%{A1:qutebrowser https\://calendar.google.com/ &:} %d-%m-%Y%{A}"

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

label = %date% %time%

Sound Volume

[module/pulseaudio]
type = internal/pulseaudio

# Open pavucontrol on left right
format-volume =%{A1:pavucontrol &:}<label-volume> <bar-volume>%{A}

label-volume = %percentage%%
label-volume-foreground = ${root.foreground}

label-muted = ﱝ muted

bar-volume-width = 10
bar-volume-foreground-0 = ${colors.green}
bar-volume-foreground-1 = ${colors.green}
bar-volume-foreground-2 = ${colors.blue}
bar-volume-foreground-3 = ${colors.blue}
bar-volume-foreground-4 = ${colors.red}
bar-volume-foreground-5 = ${colors.red}
bar-volume-foreground-6 = ${colors.red}
bar-volume-gradient = false
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}

Battery

# TODO - open battery manager on click
[module/battery]
type = internal/battery

battery = BAT0
adapter = ADP1
full-at = 95

format-charging = <ramp-capacity> <label-charging>
format-charging-underline = ${colors.blue}

format-discharging = <ramp-capacity> <label-discharging>
format-discharging-underline = ${colors.red}

format-full-prefix = " "
format-full-prefix-foreground = ${colors.foreground}
format-full-underline = ${colors.background}

ramp-capacity-0 = 
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 
ramp-capacity-foreground = ${colors.foreground}

animation-charging-0 = 
animation-charging-1 = 
animation-charging-2 = 
animation-charging-3 = 
animation-charging-4 = 
animation-charging-foreground = ${colors.foreground}
animation-charging-framerate = 750

animation-discharging-0 = 
animation-discharging-1 = 
animation-discharging-2 = 
animation-discharging-3 = 
animation-discharging-4 = 
animation-discharging-foreground = ${colors.foreground}
animation-discharging-framerate = 750

TODO Temperature

  • Open temperature manager on click
  [module/temperature]
  type = internal/temperature

  interval = 5
  thermal-zone = 0
  warn-temperature = 70
  ;; Temperature off one cpu core
  hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input

  format = <ramp> <label>
  format-underline = ${colors.background}
  format-warn = <ramp> <label-warn>
  format-warn-underline = ${colors.red}

  label = %temperature-c%
  label-warn = %temperature-c%
  label-warn-foreground = ${colors.red}

  ramp-0 = 
  ramp-1 = 
  ramp-2 = 
  ramp-3 = 
  ramp-4 = 
  ramp-foreground = ${colors.foreground}

Power Menu

[module/powermenu]
type = custom/menu

expand-right = true

format-spacing = 1
label-open = 
label-open-foreground = ${colors.blue}
label-close = cancel
label-close-foreground = ${colors.blue}
label-separator = |
label-separator-foreground = ${colors.foreground}

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

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

menu-2-0 = power off
menu-2-0-exec = sudo poweroff
menu-2-1 = cancel
menu-2-1-exec = menu-open-0

Settings

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

TODO Unread Mails

  • Add custom color when having new email
[module/unread_mail]
type = custom/script

label-font = 2
format-underline = ${colors.background}
click-left = termite -e "tmuxinator start neomutt" &
format = <label>
exec = ~/.config/polybar/scripts/unread_mails.sh
interval = 1

Redshift

[module/redshift]
type = custom/script

label-font = 2
format-underline = ${colors.background}
click-left = ~/.config/polybar/scripts/redshift.sh toggle
format = <label>
exec = ~/.config/polybar/scripts/redshift.sh
interval = 1

TODO Calendar

  [module/popup-calendar]
  type = custom/script
  exec = ~/scripts/popup-calendar.sh
  interval = 5
  click-left = ~/scripts/popup-calendar.sh --popup

TODO Emacs Server

  [module/emacs]
  type = custom/script

  label-font = 2
  format-underline = ${colors.background}
  click-left = ~/scripts/emacsclient.sh &
  format = <label>
  exec = ~/.config/polybar/scripts/emacs.sh
  interval = 1

Emacs Server Scripts

if test -e "/tmp/emacs1000/server" || test -e "~/.emacs.d/server"; then
    echo "%{F#859900}%{F-}";
else
    echo "";
fi

NordVPN

[module/nordvpn]
type = custom/script

format-underline = ${colors.background}
click-left = ~/.config/polybar/scripts/nordvpn-toggle.sh
format = <label>
exec = ~/.config/polybar/scripts/nordvpn.sh
interval = 5

Nordvpn Toggle script

  vpnstatus=`nordvpn status`;

  if [[ ${vpnstatus} == *"Disconnected"* ]]; then
    nordvpn connect
  else
    nordvpn disconnect
  fi

Nordvpn Status script

  vpnstatus=`nordvpn status`;

  if [[ ${vpnstatus} == *"Disconnected"* ]]; then
    echo "";
  else
    country=`echo -e $vpnstatus | sed 's/^.*Country: \(\w*\) .*$/\1/'`
    echo "%{F#859900}%{F-} $country";
  fi

TODO Caffeine

[module/caffeine]
type = custom/script

label-font = 2
format-underline = ${colors.background}
click-left = xautolock -disable && notify-send "Lock Disabled"
click-right = xautolock -enable && notify-send "Lock Enabled"
format = <label>
exec = echo -e "\uf0f4"
interval = 1

Side panel config

# [bar/panel]
# monitor = ${env:MONITOR:eDP1}
# enable-ipc = true
# override-redirect = true
# bottom = false
#
# width = 30%
# height = 600 # 1080p - bar height - 2*border width
# offset-x = 70%
# offset-y = 27
# fixed-center = true
# spacing = 1
# module-margin-left = 2
# module-margin-right = 2
#
# border-size = 2
# border-color = ${colors.turquoise}
#
# background = ${colors.background}
# foreground = ${colors.foreground}
#
# font-0 = SauceCodePro Nerd Font:style=Medium,Regular:pixelsize=10;1
# font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
# font-2 = siji:pixelsize=10;1
#
# modules-center = lock logout hibernate reboot shutdown screenshot

TODO Weather

https://github.com/x70b1/polybar-scripts/tree/master/polybar-scripts/openweathermap-fullfeatured

  [module/weather]
  type = custom/script
  exec = ~/.config/polybar/scripts/weather.sh
  interval = 600
  label-font = 3

TODO Add action when cliking on it => open webpage with meteo

TODO Network

  [module/network]
  type = internal/network
  interface = wlp3s0

  ; Seconds to sleep between updates
  ; Default: 1
  interval = 3.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-prefix = "  "
  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>

  ; ; 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 = %essid%
  ; label-connected-foreground = #eefafafa

  ; ; Available tokens:
  ; ;   %ifname%    [wireless+wired]
  ; ; Default: (none)
  ; label-disconnected = not connected
  ; label-disconnected-foreground = #66ffffff

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

Option Menu

[module/option_menu]
type = custom/ipc

hook-0 = ~/.i3/scripts/polybar_wrapper.sh options_icon
initial = 1
click-left = ~/.i3/scripts/polybar_wrapper.sh options

Logout

[module/logout]
type = custom/text
content = ""
click-left = i3exit switch_user

Hibernate

[module/hibernate]
type = custom/text
content = ""
click-left = i3exit hibernate

Shutdown

[module/shutdown]
type = custom/text
content = ""
click-left = i3exit shutdown

Reboot

[module/reboot]
type = custom/text
content = ""
click-left = i3exit logout

Lock

[module/lock]
type = custom/text
content = ""
click-left = blurlock

TODO Screenshot

First it blocking the polybar, then the right click is not working

  [module/screenshot]
  type = custom/text
  content = ""
  click-left = scrot -e 'feh $f -x' --delay 1
  click-right = scrot -s -e 'feh $f -x'