Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: polybar freezes on i3 when running certain modules #3017

Open
5 tasks done
lucasreis1 opened this issue Oct 4, 2023 · 7 comments
Open
5 tasks done

[Bug]: polybar freezes on i3 when running certain modules #3017

lucasreis1 opened this issue Oct 4, 2023 · 7 comments

Comments

@lucasreis1
Copy link

lucasreis1 commented Oct 4, 2023

Checklist

  • I have read the appropriate section in the contributing guidelines
  • I believe this issue is a problem with polybar itself and not a misconfiguration on my part
  • I have searched for other open and closed issues that may have already reported this problem
  • I have checked the known issues page for this problem.
  • I have followed the debugging guide to narrow down the problem to a minimal config.

Steps to reproduce

  1. polybar -r simple
  2. wait (could be a couple minutes, could be some hours)
  3. complete freeze, polybar hangs. ps shows zombie child processes

Minimal config

[bar/simple]
# this will change depending on the monitor
monitor = ${env:PRIMARY_MONITOR:DP-4}
width = 100%

height = 22pt

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


padding-left = 0
padding-right = 1

module-margin = 1

;separator = |
separator-foreground = ${colors.disabled}

font-0 = "JetBrainsMono Nerd Font:style=Normal:size=10;3"
font-1 = "JetBrainsMono Nerd Font:style=Medium:size=10;3"
font-2 = "JetBrainsMono Nerd Font:style=Bold:size=11;3"
font-3 = "JetBrainsMono Nerd Font:style=Italic:size=10;3"
font-4 = "JetBrainsMono Nerd Font:style=Medium Italic:size=10;3"
font-5 = "JetBrainsMono Nerd Font:size=10;5"

font-6 = "feather:size=14;3.5"
;
font-7 = "Material Icons:size=14;3"
font-8 = "Material Icons Outlined:size=12;4"
font-9 = "Material Icons Round:size=14;4"
font-10 = "Material Icons Sharp:size=12;4"
font-11 = "Material Icons TwoTone:size=12;4"
# for increasing font size of some icons
font-12 = "Material Icons Round:size=15;4"
font-13 = "Weather Icons:size=11;1"
font-14 = "Font Awesome 6 Brands, Font Awesome 6 Brands Regular;size=17;1"
font-15 = "feather:size=11;3.5"

# make the border rounded and transparent on the outside
radius = 6
border-size = 4pt
# transparent round border
border-color = #00000000
line-size = 4pt
border-bottom-size = 2
border-bottom-color = ${colors.primary}
enable-ipc = true

modules-left = i3
modules-right = battery-dualshock4-icon battery-dualshock4 sep eth sep date time

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

[module/battery-dualshock4-icon]
type= custom/ipc
hook-0 = echo ""
hook-1 = echo "  %{T16}%{T-}"
label-font = 10
format-foreground = ${colors.primary}
initial = 0

[module/battery-dualshock4]
type= custom/script
exec = ~/.config/polybar/scripts/info-dualshock4.sh &
interval = 10

Polybar log

polybar|notice:  Parsing config file: /home/lucas/.config/polybar/config.ini
polybar|notice:  Parsing config file: /home/lucas/.config/polybar/config.ini
polybar|notice:  Listening for IPC messages (PID: 2280152)
polybar|notice:  Listening for IPC messages (PID: 2280153)
polybar|notice:  Loading module 'i3' of type 'internal/i3'
polybar|notice:  Loading module 'i3' of type 'internal/i3'
polybar|notice:  Loading module 'powermenu-info' of type 'custom/ipc'
polybar|notice:  Loading module 'powermenu-info' of type 'custom/ipc'
polybar|notice:  Loading module 'ncspot-playpausestop' of type 'custom/ipc'
polybar|notice:  Loading module 'ncspot-playpausestop' of type 'custom/ipc'
polybar|notice:  Loading module 'ncspot' of type 'custom/script'
polybar|notice:  Loading module 'ncspot' of type 'custom/script'
polybar|notice:  Loading module 'battery-dualshock4-icon' of type 'custom/ipc'
polybar|notice:  Loading module 'battery-dualshock4-icon' of type 'custom/ipc'
polybar|notice:  Loading module 'battery-dualshock4' of type 'custom/script'
polybar|notice:  Loading module 'battery-dualshock4' of type 'custom/script'
polybar|notice:  Loading module 'sep' of type 'custom/text'
polybar|notice:  Loading module 'sep' of type 'custom/text'
polybar|warn:  The config parameter `module/sep.content` is deprecated, use `module/sep.format` instead.
polybar|notice:  Loading module 'eth' of type 'internal/network'
polybar|warn:  The config parameter `module/sep.content` is deprecated, use `module/sep.format` instead.
polybar|notice:  Loading module 'eth' of type 'internal/network'
polybar|notice:  module/eth: Discovered wired interface enp7s0
polybar|notice:  module/eth: Discovered wired interface enp7s0
polybar|notice:  Loading module 'sep' of type 'custom/text'
polybar|notice:  Loading module 'sep' of type 'custom/text'
polybar|warn:  The config parameter `module/sep.content` is deprecated, use `module/sep.format` instead.
polybar|notice:  Loading module 'date' of type 'internal/date'
polybar|warn:  The config parameter `module/sep.content` is deprecated, use `module/sep.format` instead.
polybar|notice:  Loading module 'date' of type 'internal/date'
polybar|notice:  Loading module 'time' of type 'internal/date'
polybar|notice:  Loading module 'time' of type 'internal/date'
polybar|notice:  Loaded 11 modules
polybar|notice:  Loaded 11 modules
polybar|notice:  Loaded font "JetBrainsMono Nerd Font:style=Normal:size=10" (name=JetBrainsMono Nerd Font, offset=3, file=/home/lucas/.fonts/JetBrains/JetBrains Mono Regular Nerd Font Complete.ttf)
polybar|notice:  Loaded font "JetBrainsMono Nerd Font:style=Normal:size=10" (name=JetBrainsMono Nerd Font, offset=3, file=/home/lucas/.fonts/JetBrains/JetBrains Mono Regular Nerd Font Complete.ttf)
polybar|notice:  Loaded font "JetBrainsMono Nerd Font:style=Medium:size=10" (name=JetBrainsMono Nerd Font, offset=3, file=/home/lucas/.fonts/JetBrains/JetBrains Mono Medium Nerd Font Complete.ttf)
polybar|notice:  Loaded font "JetBrainsMono Nerd Font:style=Medium:size=10" (name=JetBrainsMono Nerd Font, offset=3, file=/home/lucas/.fonts/JetBrains/JetBrains Mono Medium Nerd Font Complete.ttf)
polybar|notice:  Loaded font "JetBrainsMono Nerd Font:style=Bold:size=11" (name=JetBrainsMono Nerd Font, offset=3, file=/home/lucas/.fonts/JetBrains/JetBrains Mono Bold Nerd Font Complete.ttf)
polybar|notice:  Loaded font "JetBrainsMono Nerd Font:style=Bold:size=11" (name=JetBrainsMono Nerd Font, offset=3, file=/home/lucas/.fonts/JetBrains/JetBrains Mono Bold Nerd Font Complete.ttf)
polybar|notice:  Loaded font "JetBrainsMono Nerd Font:style=Italic:size=10" (name=JetBrainsMono Nerd Font, offset=3, file=/home/lucas/.fonts/JetBrains/JetBrains Mono Italic Nerd Font Complete.ttf)
polybar|notice:  Loaded font "JetBrainsMono Nerd Font:style=Italic:size=10" (name=JetBrainsMono Nerd Font, offset=3, file=/home/lucas/.fonts/JetBrains/JetBrains Mono Italic Nerd Font Complete.ttf)
polybar|notice:  Loaded font "JetBrainsMono Nerd Font:style=Medium Italic:size=10" (name=JetBrainsMono Nerd Font, offset=3, file=/home/lucas/.fonts/JetBrains/JetBrains Mono Medium Italic Nerd Font Complete.ttf)
polybar|notice:  Loaded font "JetBrainsMono Nerd Font:style=Medium Italic:size=10" (name=JetBrainsMono Nerd Font, offset=3, file=/home/lucas/.fonts/JetBrains/JetBrains Mono Medium Italic Nerd Font Complete.ttf)
polybar|notice:  Loaded font "JetBrainsMono Nerd Font:size=10" (name=JetBrainsMono Nerd Font, offset=5, file=/home/lucas/.fonts/JetBrains/JetBrains Mono Regular Nerd Font Complete.ttf)
polybar|notice:  Loaded font "JetBrainsMono Nerd Font:size=10" (name=JetBrainsMono Nerd Font, offset=5, file=/home/lucas/.fonts/JetBrains/JetBrains Mono Regular Nerd Font Complete.ttf)
polybar|notice:  Loaded font "feather:size=14" (name=feather, offset=3, file=/home/lucas/.local/share/fonts/Icomoon-Feather.ttf)
polybar|notice:  Loaded font "feather:size=14" (name=feather, offset=3, file=/home/lucas/.local/share/fonts/Icomoon-Feather.ttf)
polybar|notice:  Loaded font "Material Icons:size=14" (name=Material Icons, offset=3, file=/usr/share/fonts/TTF/MaterialIcons-Regular.ttf)
polybar|notice:  Loaded font "Material Icons:size=14" (name=Material Icons, offset=3, file=/usr/share/fonts/TTF/MaterialIcons-Regular.ttf)
polybar|notice:  Loaded font "Material Icons Outlined:size=12" (name=Material Icons Outlined, offset=4, file=/home/lucas/.fonts/MaterialIcons/MaterialIconsOutlined-Regular.otf)
polybar|notice:  Loaded font "Material Icons Outlined:size=12" (name=Material Icons Outlined, offset=4, file=/home/lucas/.fonts/MaterialIcons/MaterialIconsOutlined-Regular.otf)
polybar|notice:  Loaded font "Material Icons Round:size=14" (name=Material Icons Round, offset=4, file=/home/lucas/.fonts/MaterialIcons/MaterialIconsRound-Regular.otf)
polybar|notice:  Loaded font "Material Icons Round:size=14" (name=Material Icons Round, offset=4, file=/home/lucas/.fonts/MaterialIcons/MaterialIconsRound-Regular.otf)
polybar|notice:  Loaded font "Material Icons Sharp:size=12" (name=Material Icons Sharp, offset=4, file=/home/lucas/.fonts/MaterialIcons/MaterialIconsSharp-Regular.otf)
polybar|notice:  Loaded font "Material Icons Sharp:size=12" (name=Material Icons Sharp, offset=4, file=/home/lucas/.fonts/MaterialIcons/MaterialIconsSharp-Regular.otf)
polybar|notice:  Loaded font "Material Icons TwoTone:size=12" (name=Material Icons Two Tone, offset=4, file=/home/lucas/.fonts/MaterialIcons/MaterialIconsTwoTone-Regular.otf)
polybar|notice:  Loaded font "Material Icons TwoTone:size=12" (name=Material Icons Two Tone, offset=4, file=/home/lucas/.fonts/MaterialIcons/MaterialIconsTwoTone-Regular.otf)
polybar|notice:  Loaded font "Material Icons Round:size=15" (name=Material Icons Round, offset=4, file=/home/lucas/.fonts/MaterialIcons/MaterialIconsRound-Regular.otf)
polybar|notice:  Loaded font "Material Icons Round:size=15" (name=Material Icons Round, offset=4, file=/home/lucas/.fonts/MaterialIcons/MaterialIconsRound-Regular.otf)
polybar|notice:  Loaded font "Weather Icons:size=11" (name=Weather Icons, offset=1, file=/home/lucas/.fonts/weather-icons/weathericons-regular-webfont.ttf)
polybar|notice:  Loaded font "Weather Icons:size=11" (name=Weather Icons, offset=1, file=/home/lucas/.fonts/weather-icons/weathericons-regular-webfont.ttf)
polybar|notice:  Loaded font "Font Awesome 6 Brands, Font Awesome 6 Brands Regular;size=17" (name=Font Awesome 6 Brands, offset=1, file=/usr/share/fonts/TTF/fa-brands-400.ttf)
polybar|notice:  Loaded font "Font Awesome 6 Brands, Font Awesome 6 Brands Regular;size=17" (name=Font Awesome 6 Brands, offset=1, file=/usr/share/fonts/TTF/fa-brands-400.ttf)
polybar|notice:  Loaded font "feather:size=11" (name=feather, offset=3, file=/home/lucas/.local/share/fonts/Icomoon-Feather.ttf)
polybar|notice:  Loaded font "feather:size=11" (name=feather, offset=3, file=/home/lucas/.local/share/fonts/Icomoon-Feather.ttf)

Expected behavior

Polybar should work as expected, updating and being responsive

Actual behavior

Total freeze, modules do not respond anymore, the bar is virtually hanging forever. The only solution is to kill the bar and start it again

Window Manager and Version

i3 version 4.22 (2023-01-02)

Linux Distribution

Arch kernel 6.5.5-arch1-1

Polybar version

polybar 3.6.3-211-g53661e99

Features: +alsa +curl +i3 +mpd +network(libnl) +pulseaudio +xkeyboard

X extensions: +randr (+monitors) +composite +xkb +xrm +xcursor

Build type: Release
Compiler: /usr/bin/c++
Compiler flags: -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -O3 -DNDEBUG -Wall -Wextra -Wpedantic -Wdeprecated-copy-dtor -Wsuggest-override
Linker flags: -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wall -Wextra -Wpedantic -Wdeprecated-copy-dtor -Wsuggest-override  -Wall -Wextra -Wpedantic -Wdeprecated-copy-dtor -Wsuggest-override

Additional Context / Screenshots

If it is of any help, I'm starting polybar from i3 using a simple script:

#!/bin/bash 
SCREEN_INFO=$(xrandr | grep "^DP-2" | cut -d' ' -f3 | cut -d'+' -f 1)

pkill polybar

# bars in the default monitor
polybar --reload simple & 

# we are not running a mirrored screen on secondary monitor
if [ "$SCREEN_INFO" == "1920x1080" ]; then
  # bars in the second monitor
  PRIMARY_MONITOR=DP-2 polybar --reload simple & 
fi

Per testing, the responsible module(s) is/are battery-dualshock4-icon and battery-dualshock4

Here's the script called by the module:

#!/bin/sh

PARENT_BAR="simple"
PARENT_BAR_PID=$(pgrep -a "polybar" | grep "$PARENT_BAR" | cut -d" " -f1)
DS_DIR='/sys/class/power_supply/ps-controller-battery-'

# lookup the status of the controller to see if its charging
check_status() {
  CHARGE_STATE=$(cat "$DS_DIR"*/status 2>/dev/null)
  if [ "$CHARGE_STATE" == "Charging" ];
  then
    update_hooks 1
  else
    update_hooks 0
  fi
}

# hook 0 -> disconnected/full
# hook 1 -> charging
update_hooks(){
  # lookup only for the parent bars
  for PID in $PARENT_BAR_PID; do
    polybar-msg -p $PID action "#battery-dualshock4-icon.hook.$1" &>/dev/null
  done
}

# checks if ds4 is connected and charging
check_status
BATTERY_PERC=$(cat "$DS_DIR"*/capacity 2>/dev/null)
if [ $? -eq 0 ]; then
  echo $BATTERY_PERC%
else
  echo "not connected"
fi

Also, here's ps --forest output for good measure:

610875 pts/16   S      0:00 /bin/bash /home/lucas/.config/polybar/scripts/polybar-spotify/get_spotify_status.sh
2463906 pts/16   S      0:00 /bin/sh /home/lucas/.config/polybar/scripts/info-dualshock4.sh
2463917 pts/16   Sl     0:00  \_ polybar-msg -p 2280152 action #battery-dualshock4-icon.hook.0
2463900 pts/16   S      0:00 /bin/sh /home/lucas/.config/polybar/scripts/info-dualshock4.sh
2463913 pts/16   Sl     0:00  \_ polybar-msg -p 2280152 action #battery-dualshock4-icon.hook.0
2463886 pts/16   S      0:00 /bin/bash /home/lucas/.config/polybar/scripts/polybar-spotify/get_spotify_status.sh
2463897 pts/16   Sl     0:00  \_ polybar-msg -p 2280152 action ncspot-playpausestop hook 1
2463872 pts/16   S      0:00 /bin/bash /home/lucas/.config/polybar/scripts/polybar-spotify/get_spotify_status.sh
2463883 pts/16   Sl     0:00  \_ polybar-msg -p 2280152 action ncspot-playpausestop hook 1
2463855 pts/16   S      0:00 /bin/bash /home/lucas/.config/polybar/scripts/polybar-spotify/get_spotify_status.sh
2463869 pts/16   Sl     0:00  \_ polybar-msg -p 2280152 action ncspot-playpausestop hook 1
2280153 pts/16   Rl     0:29 polybar --reload simple
2280152 pts/16   Sl     0:20 polybar --reload simple
2463851 pts/16   Z      0:00  \_ [sh] <defunct>
2610874 pts/16   Z      0:00  \_ [sh] <defunct>
@patrick96
Copy link
Member

Thanks for the detailed report. There is nothing obvious sticking out right now. I'll need to reproduce this myself.

Just a few followup questions for that:

  • How did you determine that the two modules are responsible? Did you run the bar with only the two modules and they still froze?
  • If yes, how did you detect the freeze? With only the two modules, there are no clickable areas.
  • The ps --forest output is when you run polybar on two monitors, right?

@lucasreis1
Copy link
Author

lucasreis1 commented Oct 5, 2023

How did you determine that the two modules are responsible? Did you run the bar with only the two modules and they still froze?

I've been on-an-off removing modules and testing the bars without them, and it seems the issues stop when these are removed. I haven't made any tests with only these modules isolated yet since reproducing it is really random and it's terrible to have no functional bars while I wait for crashes. If it helps, I have a music script that used to cause the same issue, so they both seem to trigger it. It was just easier to spot with the dualshock modules.

I can try isolating the bar and running some tests, but I'll probably still keep the i3 modules to make it easier to detect the freeze.

If yes, how did you detect the freeze? With only the two modules, there are no clickable areas.

I keep at least the i3 module so I have an easy way to detect the issue when workspaces are not updating any more

The ps --forest output is when you run polybar on two monitors, right?

Yeah, I'm running two bars for each monitor, one on top and one on the bottom of the screen.

@lucasreis1
Copy link
Author

lucasreis1 commented Oct 16, 2023

Quick update: I was able to replicate it more consistently with the following modules:

modules-left = i3 
modules-center = ncspot-playpausestop ncspot
modules-right = battery-dualshock4-icon battery-dualshock4 

Here's how the remaining modules are structured:

[module/ncspot-playpausestop]
type = custom/ipc
hook-0 = echo ""
hook-1 = echo ""
hook-2 = echo ""
label-font = 10
format-foreground = ${colors.primary}
initial = 2

[module/ncspot]
type = custom/script
tail = true
interval = 1

format = <label>
exec = ~/.config/polybar/scripts/polybar-spotify/get_spotify_status.sh &
click-left = i3-msg '[instance="music"] scratchpad show'

And get_spotify_status.sh:

#!/bin/bash

# The name of polybar bar which houses the main spotify module and the control modules.
PARENT_BAR="simple"
PARENT_BAR_PID=$(pgrep -a "polybar" | grep "$PARENT_BAR" | cut -d" " -f1)

# Set the source audio player here.
# Players supporting the MPRIS spec are supported.
# Examples: spotify, vlc, chrome, mpv and others.
# Use `playerctld` to always detect the latest player.
# See more here: https://github.com/altdesktop/playerctl/#selecting-players-to-control
PLAYER="ncspot"
MODULE="ncspot-playpausestop"

# Format of the information displayed
# Eg. {{ artist }} - {{ album }} - {{ title }}
# See more attributes here: https://github.com/altdesktop/playerctl/#printing-properties-and-metadata
FORMAT="{{ title }} - {{ artist }}"

# Sends $2 as message to all polybar PIDs that are part of $1
update_hooks() {
  #polybar-msg action "#$MODULE" $2 1>/dev/null 2>&1
  while IFS= read -r id
  do
    polybar-msg -p "$id" action $MODULE hook $2 &>/dev/null 
  done < <(echo "$1")
}

PLAYERCTL_STATUS=$(playerctl --player=$PLAYER status 2>/dev/null)
EXIT_CODE=$?

if [ $EXIT_CODE -eq 0 ]; then
    STATUS=$PLAYERCTL_STATUS
else
    STATUS="No player is running"
fi

if [ "$1" == "--status" ]; then
    echo "$STATUS"
else
    if [ "$STATUS" = "Stopped" ]; then
        update_hooks "$PARENT_BAR_PID" 2
        echo "No music is playing"
    elif [ "$STATUS" = "Paused"  ]; then
        update_hooks "$PARENT_BAR_PID" 1
        playerctl --player=$PLAYER metadata --format "$FORMAT"
    elif [ "$STATUS" = "No player is running"  ]; then
        echo "$STATUS"
    else
        update_hooks "$PARENT_BAR_PID" 0
        playerctl --player=$PLAYER metadata --format "$FORMAT"
    fi
fi

I've also been running my main bar together with this one, which contains a ton of modules, including the ncspot music modules, but does not include the dualshock modules. This bar has not crashed on me for as long as I remember starting these experiments.

I still have no idea what causes the issue as freezes are pretty random in my system, but they often occur hourly/semi-hourly. If there's any more missing context that could be of help, please let me know!

@lucasreis1
Copy link
Author

Just a quick update as I'm still dealing with the issues at hand. The presence of modules such as ncspot and dualshock4-battery seems to be an integral part of the issue. With any of these included, the crashes are bound to happen. I realized that it happens more frequently when Steam is open, and killing polybar and restarting after a freeze immediately sends me to the workspace that Steam is on. In fact, this issue seem more frequent ever since steam updated their UI.

Also, I've run strace to see if I could get more info, but found nothing that could be of help (when the bar crashes, some syscall outputs are just left dangling). Really wish I could help more, but it is pretty hard to reproduce this on demand.

@patrick96
Copy link
Member

Since I don't have dualshock controllers, this will be hard for me to reproduce.

But what would be immensely helpful is a full thread dump of all the bars when they are hanging, this way we should see where/why they are stuck.
For that you would need to compile polybar with debug symbols enabled (add -DCMAKE_BUILD_TYPE=Debug to the cmake command in a clean clone of the repo).
You can also just use the following PGKBUILD:

# Maintainer: Patrick Ziegler <[email protected]>
_pkgname=polybar
pkgname="${_pkgname}-git"
pkgver=3.7.1
pkgrel=1
pkgdesc="A fast and easy-to-use status bar"
# aarch64 is not officially supported by polybar, it is only listed here for convenience
arch=("i686" "x86_64" "aarch64")
url="https://github.com/polybar/polybar"
license=("MIT")
depends=("libuv" "cairo" "xcb-util-image" "xcb-util-wm" "xcb-util-xrm"
         "xcb-util-cursor" "alsa-lib" "libpulse" "libmpdclient" "libnl"
         "jsoncpp" "curl")
optdepends=("i3-wm: i3 module support")
makedepends=("cmake" "git" "python" "pkg-config" "python-sphinx"
             "python-packaging" "i3-wm")
backup=("etc/polybar/config.ini")
provides=("polybar")
conflicts=("polybar")
source=("${_pkgname}::git+${url}.git")
sha256sums=("SKIP")
options=(debug !strip)

pkgver() {
  git -C "${_pkgname}" describe --long --tags | sed "s/-/.r/;s/-/./g"
}

prepare() {
  git -C "${_pkgname}" submodule update --init --recursive
  mkdir -p "${_pkgname}/build"
}

build() {
  cd "${_pkgname}/build" || exit 1
  # Force cmake to use system python (to detect xcbgen)
  cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug -DPYTHON_EXECUTABLE=/usr/bin/python3 ..
  cmake --build .
}

package() {
  cmake --build "${_pkgname}/build" --target install -- DESTDIR="${pkgdir}"
  install -Dm644 "${_pkgname}/LICENSE" "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE"
}

With this, any debugging you do on the process should give you proper file names and line numbers.

The command output that would be most interesting for me is the following:

sudo gdb -p <PID> -ex "set pagination off" -ex "thread apply all bt full" -ex "set confirm off" -ex "quit" 

You can run polybar as you normally would, and once it freezes, you run the gdb command above to get the debug info. The command does the following:

  • Attaches gdb to the given pid
  • Runs the following gdb commands in order:
    • set pagination off: Turns of pagination in the output
    • thread apply all bt full: Produces a full stacktrace on all threads
    • set confirm off: Turn of confirmation for the quit command
    • quit: Exit gdb again

@lucasreis1
Copy link
Author

Thank you for the detailed guide! Just to clarify, the issue is not exclusive to the dualshock modules. It is increasingly more common while either ncspot-playpausestop ncspot or battery-dualshock4-icon battery-dualshock4 are active, as well as with steam running in the background. Either way, I'm pretty sure I had it happen while none of these modules were active, even though is pretty rare and I lost count of how many iterations I've been testing at this point.

Anyways, here's the gdb output, as requested:

GNU gdb (GDB) 13.2
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
Attaching to process 301309
[New LWP 301314]
[New LWP 301362]
[New LWP 301365]
[New LWP 301367]
[New LWP 301368]
[New LWP 301369]
[New LWP 301370]
[New LWP 301382]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
0x00007f752043456c in read () from /usr/lib/libc.so.6

Thread 9 (Thread 0x7f7513fff6c0 (LWP 301382) "polybar"):
#0  0x00007f75203ba4ae in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#1  0x00007f75203bd325 in pthread_cond_clockwait () from /usr/lib/libc.so.6
No symbol table info available.
#2  0x000055eb02657f4c in std::__condvar::wait_until (__abs_time=..., __clock=1, __m=..., this=0x55eb03d4d988) at /usr/include/c++/13.2.1/bits/std_mutex.h:137
No locals.
#3  std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=this@entry=0x55eb03d4d988, __lock=..., __atime=std::chrono::_V2::steady_clock time_point = { 7806500000000ns }) at /usr/include/c++/13.2.1/condition_variable:203
        __s = std::chrono::_V2::steady_clock time_point = { 7806s }
        __ns = <optimized out>
        __ts = {tv_sec = 7806, tv_nsec = 500000000}
#4  0x000055eb02709dde in std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (__atime=std::chrono::_V2::steady_clock time_point = { 7806500000000ns }, __lock=..., this=0x55eb03d4d988) at /usr/include/c++/13.2.1/condition_variable:113
No locals.
#5  polybar::modules::module<polybar::modules::date_module>::sleep_until<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=this@entry=0x55eb03d4d8e0, point=std::chrono::_V2::steady_clock time_point = { 7806500000000ns }) at /home/lucas/Documents/polybar_dbg/include/modules/meta/base.inl:180
        lck = {_M_device = 0x55eb03d4d960, _M_owns = true}
#6  0x000055eb0270a079 in polybar::modules::timer_module<polybar::modules::date_module>::runner (this=0x55eb03d4d8e0) at /home/lucas/Documents/polybar_dbg/include/modules/meta/timer_module.hpp:66
        sys_interval = <optimized out>
        now = std::chrono::_V2::steady_clock time_point = { 7805500107324ns }
        adjusted = std::chrono::duration = { 499892676ns }
        check = {__this = 0x55eb03d4d8e0}
#7  0x000055eb0270a1af in std::__invoke_impl<void, void (polybar::modules::timer_module<polybar::modules::date_module>::*)(), polybar::modules::timer_module<polybar::modules::date_module>*> (__f=<optimized out>, __t=<optimized out>) at /usr/include/c++/13.2.1/bits/invoke.h:74
No locals.
#8  0x000055eb0270a1c5 in std::__invoke<void (polybar::modules::timer_module<polybar::modules::date_module>::*)(), polybar::modules::timer_module<polybar::modules::date_module>*> (__fn=<optimized out>) at /usr/include/c++/13.2.1/bits/invoke.h:90
No locals.
#9  std::thread::_Invoker<std::tuple<void (polybar::modules::timer_module<polybar::modules::date_module>::*)(), polybar::modules::timer_module<polybar::modules::date_module>*> >::_M_invoke<0ul, 1ul> (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:292
No locals.
#10 std::thread::_Invoker<std::tuple<void (polybar::modules::timer_module<polybar::modules::date_module>::*)(), polybar::modules::timer_module<polybar::modules::date_module>*> >::operator() (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:299
No locals.
#11 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (polybar::modules::timer_module<polybar::modules::date_module>::*)(), polybar::modules::timer_module<polybar::modules::date_module>*> > >::_M_run (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:244
No locals.
#12 0x00007f75206e1943 in std::execute_native_thread_routine (__p=0x55eb03e1c080) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
        __t = <optimized out>
#13 0x00007f75203bd9eb in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#14 0x00007f75204417cc in ?? () from /usr/lib/libc.so.6
No symbol table info available.

Thread 8 (Thread 0x7f7518ff86c0 (LWP 301370) "polybar"):
#0  0x00007f75203ba4ae in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#1  0x00007f75203bd325 in pthread_cond_clockwait () from /usr/lib/libc.so.6
No symbol table info available.
#2  0x000055eb02657f4c in std::__condvar::wait_until (__abs_time=..., __clock=1, __m=..., this=0x55eb03d4cc28) at /usr/include/c++/13.2.1/bits/std_mutex.h:137
No locals.
#3  std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=this@entry=0x55eb03d4cc28, __lock=..., __atime=std::chrono::_V2::steady_clock time_point = { 7806500000000ns }) at /usr/include/c++/13.2.1/condition_variable:203
        __s = std::chrono::_V2::steady_clock time_point = { 7806s }
        __ns = <optimized out>
        __ts = {tv_sec = 7806, tv_nsec = 500000000}
#4  0x000055eb02709dde in std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (__atime=std::chrono::_V2::steady_clock time_point = { 7806500000000ns }, __lock=..., this=0x55eb03d4cc28) at /usr/include/c++/13.2.1/condition_variable:113
No locals.
#5  polybar::modules::module<polybar::modules::date_module>::sleep_until<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=this@entry=0x55eb03d4cb80, point=std::chrono::_V2::steady_clock time_point = { 7806500000000ns }) at /home/lucas/Documents/polybar_dbg/include/modules/meta/base.inl:180
        lck = {_M_device = 0x55eb03d4cc00, _M_owns = true}
#6  0x000055eb0270a079 in polybar::modules::timer_module<polybar::modules::date_module>::runner (this=0x55eb03d4cb80) at /home/lucas/Documents/polybar_dbg/include/modules/meta/timer_module.hpp:66
        sys_interval = <optimized out>
        now = std::chrono::_V2::steady_clock time_point = { 7805500111994ns }
        adjusted = std::chrono::duration = { 499888006ns }
        check = {__this = 0x55eb03d4cb80}
#7  0x000055eb0270a1af in std::__invoke_impl<void, void (polybar::modules::timer_module<polybar::modules::date_module>::*)(), polybar::modules::timer_module<polybar::modules::date_module>*> (__f=<optimized out>, __t=<optimized out>) at /usr/include/c++/13.2.1/bits/invoke.h:74
No locals.
#8  0x000055eb0270a1c5 in std::__invoke<void (polybar::modules::timer_module<polybar::modules::date_module>::*)(), polybar::modules::timer_module<polybar::modules::date_module>*> (__fn=<optimized out>) at /usr/include/c++/13.2.1/bits/invoke.h:90
No locals.
#9  std::thread::_Invoker<std::tuple<void (polybar::modules::timer_module<polybar::modules::date_module>::*)(), polybar::modules::timer_module<polybar::modules::date_module>*> >::_M_invoke<0ul, 1ul> (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:292
No locals.
#10 std::thread::_Invoker<std::tuple<void (polybar::modules::timer_module<polybar::modules::date_module>::*)(), polybar::modules::timer_module<polybar::modules::date_module>*> >::operator() (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:299
No locals.
#11 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (polybar::modules::timer_module<polybar::modules::date_module>::*)(), polybar::modules::timer_module<polybar::modules::date_module>*> > >::_M_run (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:244
No locals.
#12 0x00007f75206e1943 in std::execute_native_thread_routine (__p=0x55eb03e1c050) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
        __t = <optimized out>
#13 0x00007f75203bd9eb in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#14 0x00007f75204417cc in ?? () from /usr/lib/libc.so.6
No symbol table info available.

Thread 7 (Thread 0x7f7510ff86c0 (LWP 301369) "polybar"):
#0  0x00007f75203ba4ae in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#1  0x00007f75203bd325 in pthread_cond_clockwait () from /usr/lib/libc.so.6
No symbol table info available.
#2  0x000055eb02657f4c in std::__condvar::wait_until (__abs_time=..., __clock=1, __m=..., this=0x55eb03d4b3f8) at /usr/include/c++/13.2.1/bits/std_mutex.h:137
No locals.
#3  std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=this@entry=0x55eb03d4b3f8, __lock=..., __atime=std::chrono::_V2::steady_clock time_point = { 7806500000000ns }) at /usr/include/c++/13.2.1/condition_variable:203
        __s = std::chrono::_V2::steady_clock time_point = { 7806s }
        __ns = <optimized out>
        __ts = {tv_sec = 7806, tv_nsec = 500000000}
#4  0x000055eb026d4928 in std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (__atime=std::chrono::_V2::steady_clock time_point = { 7806500000000ns }, __lock=..., this=0x55eb03d4b3f8) at /usr/include/c++/13.2.1/condition_variable:113
No locals.
#5  polybar::modules::module<polybar::modules::network_module>::sleep_until<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=this@entry=0x55eb03d4b350, point=std::chrono::_V2::steady_clock time_point = { 7806500000000ns }) at /home/lucas/Documents/polybar_dbg/include/modules/meta/base.inl:180
        lck = {_M_device = 0x55eb03d4b3d0, _M_owns = true}
#6  0x000055eb026d4a7f in polybar::modules::timer_module<polybar::modules::network_module>::runner (this=0x55eb03d4b350) at /home/lucas/Documents/polybar_dbg/include/modules/meta/timer_module.hpp:66
        sys_interval = <optimized out>
        now = std::chrono::_V2::steady_clock time_point = { 7805500340655ns }
        adjusted = std::chrono::duration = { 499659345ns }
        check = {__this = 0x55eb03d4b350}
#7  0x000055eb026d4bf5 in std::__invoke_impl<void, void (polybar::modules::timer_module<polybar::modules::network_module>::*)(), polybar::modules::timer_module<polybar::modules::network_module>*> (__f=<optimized out>, __t=<optimized out>) at /usr/include/c++/13.2.1/bits/invoke.h:74
No locals.
#8  0x000055eb026d4c0b in std::__invoke<void (polybar::modules::timer_module<polybar::modules::network_module>::*)(), polybar::modules::timer_module<polybar::modules::network_module>*> (__fn=<optimized out>) at /usr/include/c++/13.2.1/bits/invoke.h:90
No locals.
#9  std::thread::_Invoker<std::tuple<void (polybar::modules::timer_module<polybar::modules::network_module>::*)(), polybar::modules::timer_module<polybar::modules::network_module>*> >::_M_invoke<0ul, 1ul> (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:292
No locals.
#10 std::thread::_Invoker<std::tuple<void (polybar::modules::timer_module<polybar::modules::network_module>::*)(), polybar::modules::timer_module<polybar::modules::network_module>*> >::operator() (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:299
No locals.
#11 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (polybar::modules::timer_module<polybar::modules::network_module>::*)(), polybar::modules::timer_module<polybar::modules::network_module>*> > >::_M_run (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:244
No locals.
#12 0x00007f75206e1943 in std::execute_native_thread_routine (__p=0x55eb03e1c020) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
        __t = <optimized out>
#13 0x00007f75203bd9eb in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#14 0x00007f75204417cc in ?? () from /usr/lib/libc.so.6
No symbol table info available.

Thread 6 (Thread 0x7f75197f96c0 (LWP 301368) "polybar"):
#0  0x00007f75203ba4ae in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#1  0x00007f75203bd325 in pthread_cond_clockwait () from /usr/lib/libc.so.6
No symbol table info available.
#2  0x000055eb02657f4c in std::__condvar::wait_until (__abs_time=..., __clock=1, __m=..., this=0x55eb03d4a0d8) at /usr/include/c++/13.2.1/bits/std_mutex.h:137
No locals.
#3  std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=this@entry=0x55eb03d4a0d8, __lock=..., __atime=std::chrono::_V2::steady_clock time_point = { 7806236662181ns }) at /usr/include/c++/13.2.1/condition_variable:203
        __s = std::chrono::_V2::steady_clock time_point = { 7806s }
        __ns = <optimized out>
        __ts = {tv_sec = 7806, tv_nsec = 236662181}
#4  0x000055eb02657fe6 in std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (__atime=std::chrono::_V2::steady_clock time_point = { 7806236662181ns }, __lock=..., this=0x55eb03d4a0d8) at /usr/include/c++/13.2.1/condition_variable:113
No locals.
#5  std::condition_variable::wait_for<double, std::ratio<1l, 1l> > (this=this@entry=0x55eb03d4a0d8, __lock=..., __rtime=std::chrono::duration = { 1s }) at /usr/include/c++/13.2.1/condition_variable:165
No locals.
#6  0x000055eb026666ad in polybar::modules::module<polybar::modules::script_module>::sleep (this=0x55eb03d4a030, sleep_duration=sleep_duration@entry=std::chrono::duration = { 1s }) at /home/lucas/Documents/polybar_dbg/include/modules/meta/base.inl:171
        lck = {_M_device = 0x55eb03d4a0b0, _M_owns = true}
#7  0x000055eb026646db in operator() (__closure=0x55eb03e01988) at /home/lucas/Documents/polybar_dbg/src/modules/script.cpp:60
        sleep_time = std::chrono::duration = { 1s }
        this = 0x55eb03d4a030
#8  0x000055eb026647bb in std::__invoke_impl<void, polybar::modules::script_module::start()::<lambda()> > (__f=...) at /usr/include/c++/13.2.1/bits/invoke.h:60
No locals.
#9  std::__invoke<polybar::modules::script_module::start()::<lambda()> > (__fn=...) at /usr/include/c++/13.2.1/bits/invoke.h:96
No locals.
#10 std::thread::_Invoker<std::tuple<polybar::modules::script_module::start()::<lambda()> > >::_M_invoke<0> (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:292
No locals.
#11 std::thread::_Invoker<std::tuple<polybar::modules::script_module::start()::<lambda()> > >::operator() (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:299
No locals.
#12 std::thread::_State_impl<std::thread::_Invoker<std::tuple<polybar::modules::script_module::start()::<lambda()> > > >::_M_run(void) (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:244
No locals.
#13 0x00007f75206e1943 in std::execute_native_thread_routine (__p=0x55eb03e01980) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
        __t = <optimized out>
#14 0x00007f75203bd9eb in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#15 0x00007f75204417cc in ?? () from /usr/lib/libc.so.6
No symbol table info available.

Thread 5 (Thread 0x7f7519ffa6c0 (LWP 301367) "polybar"):
#0  0x00007f75203ba4ae in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#1  0x00007f75203bd325 in pthread_cond_clockwait () from /usr/lib/libc.so.6
No symbol table info available.
#2  0x000055eb02657f4c in std::__condvar::wait_until (__abs_time=..., __clock=1, __m=..., this=0x55eb03d48b38) at /usr/include/c++/13.2.1/bits/std_mutex.h:137
No locals.
#3  std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=this@entry=0x55eb03d48b38, __lock=..., __atime=std::chrono::_V2::steady_clock time_point = { 7810810371374ns }) at /usr/include/c++/13.2.1/condition_variable:203
        __s = std::chrono::_V2::steady_clock time_point = { 7810s }
        __ns = <optimized out>
        __ts = {tv_sec = 7810, tv_nsec = 810371374}
#4  0x000055eb02657fe6 in std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (__atime=std::chrono::_V2::steady_clock time_point = { 7810810371374ns }, __lock=..., this=0x55eb03d48b38) at /usr/include/c++/13.2.1/condition_variable:113
No locals.
#5  std::condition_variable::wait_for<double, std::ratio<1l, 1l> > (this=this@entry=0x55eb03d48b38, __lock=..., __rtime=std::chrono::duration = { 10s }) at /usr/include/c++/13.2.1/condition_variable:165
No locals.
#6  0x000055eb026666ad in polybar::modules::module<polybar::modules::script_module>::sleep (this=0x55eb03d48a90, sleep_duration=sleep_duration@entry=std::chrono::duration = { 10s }) at /home/lucas/Documents/polybar_dbg/include/modules/meta/base.inl:171
        lck = {_M_device = 0x55eb03d48b10, _M_owns = true}
#7  0x000055eb026646db in operator() (__closure=0x55eb03e01338) at /home/lucas/Documents/polybar_dbg/src/modules/script.cpp:60
        sleep_time = std::chrono::duration = { 10s }
        this = 0x55eb03d48a90
#8  0x000055eb026647bb in std::__invoke_impl<void, polybar::modules::script_module::start()::<lambda()> > (__f=...) at /usr/include/c++/13.2.1/bits/invoke.h:60
No locals.
#9  std::__invoke<polybar::modules::script_module::start()::<lambda()> > (__fn=...) at /usr/include/c++/13.2.1/bits/invoke.h:96
No locals.
#10 std::thread::_Invoker<std::tuple<polybar::modules::script_module::start()::<lambda()> > >::_M_invoke<0> (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:292
No locals.
#11 std::thread::_Invoker<std::tuple<polybar::modules::script_module::start()::<lambda()> > >::operator() (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:299
No locals.
#12 std::thread::_State_impl<std::thread::_Invoker<std::tuple<polybar::modules::script_module::start()::<lambda()> > > >::_M_run(void) (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:244
No locals.
#13 0x00007f75206e1943 in std::execute_native_thread_routine (__p=0x55eb03e01330) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
        __t = <optimized out>
#14 0x00007f75203bd9eb in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#15 0x00007f75204417cc in ?? () from /usr/lib/libc.so.6
No symbol table info available.

Thread 4 (Thread 0x7f751affc6c0 (LWP 301365) "polybar"):
#0  0x00007f75203ba4ae in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#1  0x00007f75203bd325 in pthread_cond_clockwait () from /usr/lib/libc.so.6
No symbol table info available.
#2  0x000055eb02657f4c in std::__condvar::wait_until (__abs_time=..., __clock=1, __m=..., this=0x55eb03d46c58) at /usr/include/c++/13.2.1/bits/std_mutex.h:137
No locals.
#3  std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=this@entry=0x55eb03d46c58, __lock=..., __atime=std::chrono::_V2::steady_clock time_point = { 7806466264378ns }) at /usr/include/c++/13.2.1/condition_variable:203
        __s = std::chrono::_V2::steady_clock time_point = { 7806s }
        __ns = <optimized out>
        __ts = {tv_sec = 7806, tv_nsec = 466264378}
#4  0x000055eb02657fe6 in std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (__atime=std::chrono::_V2::steady_clock time_point = { 7806466264378ns }, __lock=..., this=0x55eb03d46c58) at /usr/include/c++/13.2.1/condition_variable:113
No locals.
#5  std::condition_variable::wait_for<double, std::ratio<1l, 1l> > (this=this@entry=0x55eb03d46c58, __lock=..., __rtime=std::chrono::duration = { 1s }) at /usr/include/c++/13.2.1/condition_variable:165
No locals.
#6  0x000055eb026666ad in polybar::modules::module<polybar::modules::script_module>::sleep (this=0x55eb03d46bb0, sleep_duration=sleep_duration@entry=std::chrono::duration = { 1s }) at /home/lucas/Documents/polybar_dbg/include/modules/meta/base.inl:171
        lck = {_M_device = 0x55eb03d46c30, _M_owns = true}
#7  0x000055eb026646db in operator() (__closure=0x55eb03e018a8) at /home/lucas/Documents/polybar_dbg/src/modules/script.cpp:60
        sleep_time = std::chrono::duration = { 1s }
        this = 0x55eb03d46bb0
#8  0x000055eb026647bb in std::__invoke_impl<void, polybar::modules::script_module::start()::<lambda()> > (__f=...) at /usr/include/c++/13.2.1/bits/invoke.h:60
No locals.
#9  std::__invoke<polybar::modules::script_module::start()::<lambda()> > (__fn=...) at /usr/include/c++/13.2.1/bits/invoke.h:96
No locals.
#10 std::thread::_Invoker<std::tuple<polybar::modules::script_module::start()::<lambda()> > >::_M_invoke<0> (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:292
No locals.
#11 std::thread::_Invoker<std::tuple<polybar::modules::script_module::start()::<lambda()> > >::operator() (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:299
No locals.
#12 std::thread::_State_impl<std::thread::_Invoker<std::tuple<polybar::modules::script_module::start()::<lambda()> > > >::_M_run(void) (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:244
No locals.
#13 0x00007f75206e1943 in std::execute_native_thread_routine (__p=0x55eb03e018a0) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
        __t = <optimized out>
#14 0x00007f75203bd9eb in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#15 0x00007f75204417cc in ?? () from /usr/lib/libc.so.6
No symbol table info available.

Thread 3 (Thread 0x7f751c7ff6c0 (LWP 301362) "polybar"):
#0  0x00007f752043456c in read () from /usr/lib/libc.so.6
No symbol table info available.
#1  0x000055eb0273350f in i3ipc::i3_recv (sockfd=20) at /home/lucas/Documents/polybar_dbg/lib/i3ipcpp/src/ipc-util.cpp:121
        n = 32628
        header = 0x7f74f4008910 "i3-ipc"
        readed = 0
        buff = std::shared_ptr<i3ipc::buf_t> (use count 1, weak count 0) = {get() = 0x7f74f4008620}
        header_size = 14
#2  0x000055eb02726e1b in i3ipc::connection::handle_event (this=0x55eb03d42fd0) at /home/lucas/Documents/polybar_dbg/lib/i3ipcpp/src/ipc.cpp:449
        buf = std::shared_ptr<i3ipc::buf_t> (use count 1, weak count 0) = {get() = 0x7f74f4008620}
#3  0x000055eb026c0185 in polybar::modules::i3_module::has_event (this=0x55eb03d429d0) at /home/lucas/Documents/polybar_dbg/src/modules/i3.cpp:119
No locals.
#4  0x000055eb026c5216 in polybar::modules::event_module<polybar::modules::i3_module>::runner()::{lambda()#1}::operator()() const (__closure=__closure@entry=0x7f751c7feb98) at /home/lucas/Documents/polybar_dbg/include/modules/meta/event_module.hpp:30
        guard = {_M_device = @0x55eb03d42a28}
        this = 0x55eb03d429d0
#5  0x000055eb026c5482 in polybar::modules::event_module<polybar::modules::i3_module>::runner (this=0x55eb03d429d0) at /home/lucas/Documents/polybar_dbg/include/modules/meta/event_module.hpp:34
        guard = {_M_device = 0x55eb03d42a28, _M_owns = false}
        check = {__this = 0x55eb03d429d0}
#6  0x000055eb026c55d5 in std::__invoke_impl<void, void (polybar::modules::event_module<polybar::modules::i3_module>::*)(), polybar::modules::event_module<polybar::modules::i3_module>*> (__f=<optimized out>, __t=<optimized out>) at /usr/include/c++/13.2.1/bits/invoke.h:74
No locals.
#7  0x000055eb026c55eb in std::__invoke<void (polybar::modules::event_module<polybar::modules::i3_module>::*)(), polybar::modules::event_module<polybar::modules::i3_module>*> (__fn=<optimized out>) at /usr/include/c++/13.2.1/bits/invoke.h:90
No locals.
#8  std::thread::_Invoker<std::tuple<void (polybar::modules::event_module<polybar::modules::i3_module>::*)(), polybar::modules::event_module<polybar::modules::i3_module>*> >::_M_invoke<0ul, 1ul> (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:292
No locals.
#9  std::thread::_Invoker<std::tuple<void (polybar::modules::event_module<polybar::modules::i3_module>::*)(), polybar::modules::event_module<polybar::modules::i3_module>*> >::operator() (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:299
No locals.
#10 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (polybar::modules::event_module<polybar::modules::i3_module>::*)(), polybar::modules::event_module<polybar::modules::i3_module>*> > >::_M_run (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_thread.h:244
No locals.
#11 0x00007f75206e1943 in std::execute_native_thread_routine (__p=0x55eb03e0aca0) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
        __t = <optimized out>
#12 0x00007f75203bd9eb in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#13 0x00007f75204417cc in ?? () from /usr/lib/libc.so.6
No symbol table info available.

Thread 2 (Thread 0x7f751ec429c0 (LWP 301314) "iou-sqp-301309"):
#0  0x0000000000000000 in ?? ()
No symbol table info available.
Backtrace stopped: Cannot access memory at address 0x0

Thread 1 (Thread 0x7f751ec429c0 (LWP 301309) "polybar"):
#0  0x00007f752043456c in read () from /usr/lib/libc.so.6
No symbol table info available.
#1  0x000055eb0268ae54 in polybar::fd_streambuf::underflow (this=0x7ffd97e45df0) at /home/lucas/Documents/polybar_dbg/src/utils/file.cpp:127
        bytes = <optimized out>
#2  0x00007f75206cc71a in std::basic_streambuf<char, std::char_traits<char> >::sgetc (this=0x7ffd97e45df0) at /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/streambuf:351
        __ret = <optimized out>
#3  std::basic_streambuf<char, std::char_traits<char> >::sgetc (this=0x7ffd97e45df0) at /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/streambuf:345
        __ret = <optimized out>
        __ret = <optimized out>
#4  std::getline<char, std::char_traits<char>, std::allocator<char> > (__in=..., __str="", __delim=10 '\n') at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++98/istream-string.cc:145
        __idelim = 10
        __eof = -1
        __sb = 0x7ffd97e45df0
        __c = <optimized out>
        __extracted = 0
        __n = 4611686018427387903
        __err = std::_S_goodbit
        __cerb = {_M_ok = true}
#5  0x000055eb0268cbd1 in polybar::io_util::tail(int, std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)> const&) (read_fd=<optimized out>, callback=...) at /home/lucas/Documents/polybar_dbg/src/utils/io.cpp:21
        line = ""
        in = {<std::basic_istream<char, std::char_traits<char> >> = {<std::basic_ios<char, std::char_traits<char> >> = {<std::ios_base> = {_vptr.ios_base = 0x55eb027cdd38 <vtable for polybar::fd_stream<std::basic_istream<char, std::char_traits<char> > >+64>, static boolalpha = std::_S_boolalpha, static dec = std::_S_dec, static fixed = std::_S_fixed, static hex = std::_S_hex, static internal = std::_S_internal, static left = std::_S_left, static oct = std::_S_oct, static right = std::_S_right, static scientific = std::_S_scientific, static showbase = std::_S_showbase, static showpoint = std::_S_showpoint, static showpos = std::_S_showpos, static skipws = std::_S_skipws, static unitbuf = std::_S_unitbuf, static uppercase = std::_S_uppercase, static adjustfield = std::_S_adjustfield, static basefield = std::_S_basefield, static floatfield = std::_S_floatfield, static badbit = std::_S_badbit, static eofbit = std::_S_eofbit, static failbit = std::_S_failbit, static goodbit = std::_S_goodbit, static app = std::_S_app, static ate = std::_S_ate, static binary = std::_S_bin, static in = std::_S_in, static out = std::_S_out, static trunc = std::_S_trunc, static __noreplace = std::_S_noreplace, static beg = std::_S_beg, static cur = std::_S_cur, static end = std::_S_end, _M_precision = 6, _M_width = 0, _M_flags = 4098, _M_exception = std::_S_goodbit, _M_streambuf_state = std::_S_goodbit, _M_callbacks = 0x0, _M_word_zero = {_M_pword = 0x0, _M_iword = 0}, _M_local_word = {{_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}}, _M_word_size = 8, _M_word = 0x7ffd97e46678, _M_ios_locale = {static none = 0, static ctype = 1, static numeric = 2, static collate = 4, static time = 8, static monetary = 16, static messages = 32, static all = 63, _M_impl = 0x7f7520878d20 <(anonymous namespace)::c_locale_impl>}}, _M_tie = 0x0, _M_fill = 0 '\000', _M_fill_init = false, _M_streambuf = 0x7ffd97e45df0, _M_ctype = 0x7f7520878740 <(anonymous namespace)::ctype_c>, _M_num_put = 0x7f75208786d0 <(anonymous namespace)::num_put_c>, _M_num_get = 0x7f75208786e0 <(anonymous namespace)::num_get_c>}, _vptr.basic_istream = 0x55eb027cdd10 <vtable for polybar::fd_stream<std::basic_istream<char, std::char_traits<char> > >+24>, _M_gcount = 0}, m_buf = {<std::basic_streambuf<char, std::char_traits<char> >> = {_vptr.basic_streambuf = 0x55eb027d6638 <vtable for polybar::fd_streambuf+16>, _M_in_beg = 0x7ffd97e46238 "\nMbp\277ff6de8ff", _M_in_cur = 0x7ffd97e4623c "Mbp\277ff6de8ff", _M_in_end = 0x7ffd97e4623c "Mbp\277ff6de8ff", _M_out_beg = 0x7ffd97e45e38 "\030", _M_out_cur = 0x7ffd97e45e38 "\030", _M_out_end = 0x7ffd97e46237 "\277\nMbp\277ff6de8ff", _M_buf_locale = {static none = 0, static ctype = 1, static numeric = 2, static collate = 4, static time = 8, static monetary = 16, static messages = 32, static all = 63, _M_impl = 0x7f7520878d20 <(anonymous namespace)::c_locale_impl>}}, static BUFSIZE_OUT = 1024, static BUFSIZE_IN = 1024, m_fd = {m_fd = 21, m_autoclose = false}, m_out = "\030\000\000\0000\000\000\0000d\344\227\375\177\000\000pc\344\227\375\177\000\0008\336\321\003\353U\000\000\000\000\000\000\000\000\000\000\200_\344\227\375\177\000\000\345@\300 u\177\000\000\002", '\000' <repeats 15 times>, "\b\214\321\003\353U\000\000\360G\300 u\177\000\000\000\000\000\0000\000\000\000\320\n\031 u\177\000\000\b\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000 '\324\003\353U\000\000\274a\344\227\375\177\000\000З\341\003\353U", '\000' <repeats 19 times>, "\342\305=>@\v\252\020K\336\003\353U\000\000\000\342\305=>@\v\252\002"..., m_in = "\nMbp\277ff6de8ff\000\342\305=>@\v\252\000\000\000\000\000\000\000\000\220b\344\227\375\177\000\000>d\344\227\375\177\000\000xd\344\227\375\177\000\000 f\344\227\375\177\000\0000\240\324\003\353U\000\000\000\000\000\000\000\000\000\000\216$; u\177\000\000>d\344\227\375\177\000\000Gd\344\227\375\177\000\000Hd\344\227\375\177\000\000\000\000\000\000\000\000\000\000\002\000\000\000\001\000\000\000\240\301\346 u\177", '\000' <repeats 11 times>, "c\344\227\375\177\000\000\020\036\325\003\353U\000\000cK\325 u\177\000\000`\276\346 u\177\000\000\355c\325 u\177\000\000\340\031\347\003\353U\000\000\000\000\000\000\000\000\000\000\020\036"...}}
#6  0x000055eb026891a4 in polybar::command<(polybar::output_policy)0>::tail(std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)>) (this=this@entry=0x7ffd97e467d0, cb=...) at /home/lucas/Documents/polybar_dbg/src/utils/command.cpp:188
No locals.
#7  0x000055eb026550d1 in polybar::modules::ipc_module::exec_hook (this=this@entry=0x55eb03d45960) at /home/lucas/Documents/polybar_dbg/src/modules/ipc.cpp:243
        cmd = {<polybar::command<(polybar::output_policy)1>> = {m_log = @0x55eb03d165c0, m_cmd = "echo \"\"", m_forkpid = 693228, m_forkstatus = -1}, m_stdout = {21, 0}, m_stdin = {0, 19}, m_stdout_reader = std::unique_ptr<polybar::fd_stream<std::basic_istream<char, std::char_traits<char> > >> = {get() = 0x0}}
#8  0x000055eb0265539f in polybar::modules::ipc_module::set_hook (this=this@entry=0x55eb03d45960, h=<optimized out>) at /home/lucas/Documents/polybar_dbg/src/modules/ipc.cpp:233
        __PRETTY_FUNCTION__ = "void polybar::modules::ipc_module::set_hook(int)"
#9  0x000055eb02655578 in polybar::modules::ipc_module::action_hook (this=0x55eb03d45960, data="0") at /home/lucas/Documents/polybar_dbg/src/modules/ipc.cpp:171
        hook = <optimized out>
#10 0x000055eb02655708 in operator() (data=..., __closure=<optimized out>) at /home/lucas/Documents/polybar_dbg/src/modules/ipc.cpp:20
        this = <optimized out>
#11 std::__invoke_impl<void, polybar::modules::ipc_module::ipc_module(const polybar::bar_settings&, std::string, const polybar::config&)::<lambda(const std::string&)>&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&> (__f=...) at /usr/include/c++/13.2.1/bits/invoke.h:61
No locals.
#12 std::__invoke_r<void, polybar::modules::ipc_module::ipc_module(const polybar::bar_settings&, std::string, const polybar::config&)::<lambda(const std::string&)>&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&> (__fn=...) at /usr/include/c++/13.2.1/bits/invoke.h:111
No locals.
#13 std::_Function_handler<void(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&), polybar::modules::ipc_module::ipc_module(const polybar::bar_settings&, std::string, const polybar::config&)::<lambda(const std::string&)> >::_M_invoke(const std::_Any_data &, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > &) (__functor=..., __args#0=...) at /usr/include/c++/13.2.1/bits/std_function.h:290
No locals.
#14 0x000055eb02686f8e in std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const (this=<optimized out>, __args#0="0") at /usr/include/c++/13.2.1/bits/std_function.h:591
No locals.
#15 0x000055eb02686eca in polybar::action_router::invoke (this=<optimized out>, name="hook", data="0") at /home/lucas/Documents/polybar_dbg/src/utils/action_router.cpp:39
        it = <optimized out>
        __PRETTY_FUNCTION__ = "void polybar::action_router::invoke(const std::string&, const std::string&)"
        e = <optimized out>
#16 0x000055eb02658f7a in polybar::modules::module<polybar::modules::ipc_module>::input (this=0x55eb03d45960, name="hook", data="0") at /home/lucas/Documents/polybar_dbg/include/modules/meta/base.inl:144
No locals.
#17 0x000055eb026309ba in polybar::controller::forward_action (this=this@entry=0x55eb03d2cfe0, action_triple=std::tuple containing = {...}) at /home/lucas/Documents/polybar_dbg/src/components/controller.cpp:439
        module = std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d45960}
        __for_range = std::vector of length 13, capacity 16 = {std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d429d0}, std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d43ff0}, std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d45960}, std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d46bb0}, std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d47860}, std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d48a90}, std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d494f0}, std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d4a030}, std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d4ab60}, std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d4b350}, std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d4c580}, std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d4cb80}, std::shared_ptr<polybar::modules::module_interface> (use count 2, weak count 0) = {get() = 0x55eb03d4d8e0}}
        __for_begin = <optimized out>
        __for_end = <optimized out>
        module_name = "ncspot-playpausestop"
        action = "hook"
        data = "0"
        num_delivered = 0
#18 0x000055eb02635bd3 in polybar::controller::process_inputdata (this=this@entry=0x55eb03d2cfe0, cmd=...) at /home/lucas/Documents/polybar_dbg/src/components/controller.cpp:465
No locals.
#19 0x000055eb02635fc6 in polybar::controller::notifier_handler (this=0x55eb03d2cfe0) at /home/lucas/Documents/polybar_dbg/src/components/controller.cpp:212
        inputdata = "#ncspot-playpausestop.hook.0"
        data = {quit = false, reload = false, update = false, force_update = false, inputdata = std::queue wrapping: std::deque with 0 elements}
#20 0x000055eb0263af65 in polybar::controller::m_notifier::{lambda()#1}::operator()() const (__closure=<optimized out>) at /home/lucas/Documents/polybar_dbg/include/components/controller.hpp:113
        this = <optimized out>
#21 std::__invoke_impl<void, polybar::controller::m_notifier::{lambda()#1}&>(std::__invoke_other, polybar::controller::m_notifier::{lambda()#1}&) (__f=...) at /usr/include/c++/13.2.1/bits/invoke.h:61
No locals.
#22 std::__invoke_r<void, polybar::controller::m_notifier::{lambda()#1}&>(void&&, (polybar::controller::m_notifier::{lambda()#1}&)...) (__fn=...) at /usr/include/c++/13.2.1/bits/invoke.h:111
No locals.
#23 std::_Function_handler<void (), polybar::controller::m_notifier::{lambda()#1}>::_M_invoke(std::_Any_data const&) (__functor=...) at /usr/include/c++/13.2.1/bits/std_function.h:290
No locals.
#24 0x000055eb02640c14 in std::function<void ()>::operator()() const (this=<optimized out>) at /usr/include/c++/13.2.1/bits/std_function.h:591
No locals.
#25 0x000055eb0264a44b in polybar::eventloop::Handle<polybar::eventloop::AsyncHandle, uv_async_s>::void_event_cb<&polybar::eventloop::AsyncHandle::callback> (handle=<optimized out>) at /home/lucas/Documents/polybar_dbg/include/components/eventloop.hpp:106
        This = <optimized out>
#26 0x00007f7520b6ba1b in ?? () from /usr/lib/libuv.so.1
No symbol table info available.
#27 0x00007f7520b88d48 in ?? () from /usr/lib/libuv.so.1
No symbol table info available.
#28 0x00007f7520b70fbf in uv_run () from /usr/lib/libuv.so.1
No symbol table info available.
#29 0x000055eb026495e9 in polybar::eventloop::loop::run (this=<optimized out>) at /home/lucas/Documents/polybar_dbg/src/components/eventloop.cpp:288
        res = <optimized out>
#30 0x000055eb026317aa in polybar::controller::read_events (this=this@entry=0x55eb03d2cfe0, confwatch=confwatch@entry=true) at /home/lucas/Documents/polybar_dbg/src/components/controller.cpp:304
        x_poll_handle = std::shared_ptr<polybar::eventloop::PollHandle> (use count 2, weak count 0) = {get() = 0x55eb03e1acf0}
        x_prepare_handle = std::shared_ptr<polybar::eventloop::PrepareHandle> (use count 2, weak count 0) = {get() = 0x55eb03da6cb0}
#31 0x000055eb02632c44 in polybar::controller::run (this=this@entry=0x55eb03d2cfe0, writeback=false, snapshot_dst="", confwatch=confwatch@entry=true) at /home/lucas/Documents/polybar_dbg/src/components/controller.cpp:106
        __PRETTY_FUNCTION__ = "bool polybar::controller::run(bool, std::string, bool)"
#32 0x000055eb02608cbc in main (argc=<optimized out>, argv=0x7ffd97e4c1e8) at /home/lucas/Documents/polybar_dbg/src/main.cpp:161
        loop = {<polybar::non_copyable_mixin> = {<No data fields>}, <polybar::non_movable_mixin> = {<No data fields>}, m_loop = std::unique_ptr<uv_loop_s> = {get() = 0x55eb03d17270}}
        xcb_screen = 0
        xcb_connection = <optimized out>
        conn = <optimized out>
        confpath = "/home/lucas/.config/polybar/config.ini"
        parser = {m_files = std::vector of length 2, capacity 2 = {"/home/lucas/.config/polybar/config.ini", "/home/lucas/.config/polybar/colors.ini"}, use_xrm = true, m_log = @0x55eb03d165c0, m_config_file = "", m_lines = std::vector of length 263, capacity 512 = {{useful = true, file_index = 1, line_no = 1, is_header = true, header = "colors", key = "", value = ""}, {useful = true, file_index = 1, line_no = 2, is_header = false, header = "", key = "background-alt", value = "${xrdb:color11:$ffff00}"}, {useful = true, file_index = 1, line_no = 3, is_header = false, header = "", key = "secondary", value = "${xrdb:color8:$ffff00}"}, {useful = true, file_index = 1, line_no = 4, is_header = false, header = "", key = "background", value = "${xrdb:color3:$ffff00}"}, {useful = true, file_index = 1, line_no = 5, is_header = false, header = "", key = "foreground", value = "${xrdb:color15:$ffff00}"}, {useful = true, file_index = 1, line_no = 6, is_header = false, header = "", key = "foreground-alt", value = "${xrdb:color7:$ffff00}"}, {useful = true, file_index = 1, line_no = 7, is_header = false, header = "", key = "disabled", value = "${xrdb:color0:$ffff00}"}, {useful = true, file_index = 1, line_no = 8, is_header = false, header = "", key = "primary", value = "${xrdb:color9:$ffff00}"}, {useful = true, file_index = 1, line_no = 9, is_header = false, header = "", key = "color0", value = "${xrdb:color0:$ffff00}"}, {useful = true, file_index = 1, line_no = 10, is_header = false, header = "", key = "color2", value = "${xrdb:color2:$ffff00}"}, {useful = true, file_index = 1, line_no = 11, is_header = false, header = "", key = "color3", value = "${xrdb:color3:$ffff00}"}, {useful = true, file_index = 1, line_no = 12, is_header = false, header = "", key = "color4", value = "${xrdb:color4:$ffff00}"}, {useful = true, file_index = 1, line_no = 13, is_header = false, header = "", key = "color7", value = "${xrdb:color7:$ffff00}"}, {useful = true, file_index = 1, line_no = 14, is_header = false, header = "", key = "color9", value = "${xrdb:color9:$ffff00}"}, {useful = true, file_index = 1, line_no = 15, is_header = false, header = "", key = "color11", value = "${xrdb:color11:$ffff00}"}, {useful = true, file_index = 1, line_no = 16, is_header = false, header = "", key = "color12", value = "${xrdb:color12:$ffff00}"}, {useful = true, file_index = 1, line_no = 17, is_header = false, header = "", key = "color14", value = "${xrdb:color14:$ffff00}"}, {useful = true, file_index = 1, line_no = 18, is_header = false, header = "", key = "color15", value = "${xrdb:color15:$ffff00}"}, {useful = true, file_index = 0, line_no = 21, is_header = true, header = "bar/main", key = "", value = ""}, {useful = true, file_index = 0, line_no = 23, is_header = false, header = "", key = "monitor", value = "${env:PRIMARY_MONITOR:DP-4}"}, {useful = true, file_index = 0, line_no = 24, is_header = false, header = "", key = "width", value = "100%"}, {useful = true, file_index = 0, line_no = 26, is_header = false, header = "", key = "height", value = "22pt"}, {useful = true, file_index = 0, line_no = 28, is_header = false, header = "", key = "background", value = "${colors.background}"}, {useful = true, file_index = 0, line_no = 29, is_header = false, header = "", key = "foreground", value = "${colors.foreground}"}, {useful = true, file_index = 0, line_no = 32, is_header = false, header = "", key = "padding-left", value = "0"}, {useful = true, file_index = 0, line_no = 33, is_header = false, header = "", key = "padding-right", value = "1"}, {useful = true, file_index = 0, line_no = 35, is_header = false, header = "", key = "module-margin", value = "1"}, {useful = true, file_index = 0, line_no = 38, is_header = false, header = "", key = "separator-foreground", value = "${colors.disabled}"}, {useful = true, file_index = 0, line_no = 40, is_header = false, header = "", key = "font-0", value = "JetBrainsMono Nerd Font:style=Normal:size=10;3"}, {useful = true, file_index = 0, line_no = 41, is_header = false, header = "", key = "font-1", value = "JetBrainsMono Nerd Font:style=Medium:size=10;3"}, {useful = true, file_index = 0, line_no = 42, is_header = false, header = "", key = "font-2", value = "JetBrainsMono Nerd Font:style=Bold:size=11;3"}, {useful = true, file_index = 0, line_no = 43, is_header = false, header = "", key = "font-3", value = "JetBrainsMono Nerd Font:style=Italic:size=10;3"}, {useful = true, file_index = 0, line_no = 44, is_header = false, header = "", key = "font-4", value = "JetBrainsMono Nerd Font:style=Medium Italic:size=10;3"}, {useful = true, file_index = 0, line_no = 45, is_header = false, header = "", key = "font-5", value = "JetBrainsMono Nerd Font:size=10;5"}, {useful = true, file_index = 0, line_no = 47, is_header = false, header = "", key = "font-6", value = "icomoon\\-feather:size=14;3.5"}, {useful = true, file_index = 0, line_no = 48, is_header = false, header = "", key = "font-7", value = "Material Icons:size=14;3"}, {useful = true, file_index = 0, line_no = 49, is_header = false, header = "", key = "font-8", value = "Material Symbols Outlined:size=12;4"}, {useful = true, file_index = 0, line_no = 50, is_header = false, header = "", key = "font-9", value = "Material Symbols Rounded:size=14;4"}, {useful = true, file_index = 0, line_no = 51, is_header = false, header = "", key = "font-10", value = "Material Symbols Sharp:size=12;4"}, {useful = true, file_index = 0, line_no = 52, is_header = false, header = "", key = "font-11", value = "Material Symbols TwoTone:size=12;4"}, {useful = true, file_index = 0, line_no = 54, is_header = false, header = "", key = "font-12", value = "Material Symbols Rounded:size=15;4"}, {useful = true, file_index = 0, line_no = 55, is_header = false, header = "", key = "font-13", value = "Weather Icons:size=11;1"}, {useful = true, file_index = 0, line_no = 56, is_header = false, header = "", key = "font-14", value = "Font Awesome 6 Brands, Font Awesome 6 Brands Regular;size=17;1"}, {useful = true, file_index = 0, line_no = 57, is_header = false, header = "", key = "font-15", value = "feather:size=11;3.5"}, {useful = true, file_index = 0, line_no = 58, is_header = false, header = "", key = "font-16", value = "DroidSansM Nerd Font:size=23;3"}, {useful = true, file_index = 0, line_no = 60, is_header = true, header = "bar/top", key = "", value = ""}, {useful = true, file_index = 0, line_no = 61, is_header = false, header = "", key = "inherit", value = "bar/main"}, {useful = true, file_index = 0, line_no = 63, is_header = false, header = "", key = "radius", value = "6"}, {useful = true, file_index = 0, line_no = 64, is_header = false, header = "", key = "border-size", value = "4pt"}, {useful = true, file_index = 0, line_no = 66, is_header = false, header = "", key = "border-color", value = "#00000000"}, {useful = true, file_index = 0, line_no = 67, is_header = false, header = "", key = "line-size", value = "4pt"}, {useful = true, file_index = 0, line_no = 68, is_header = false, header = "", key = "border-bottom-size", value = "2"}, {useful = true, file_index = 0, line_no = 69, is_header = false, header = "", key = "border-bottom-color", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 70, is_header = false, header = "", key = "enable-ipc", value = "true"}, {useful = true, file_index = 0, line_no = 72, is_header = false, header = "", key = "modules-left", value = "i3 powermenu-info"}, {useful = true, file_index = 0, line_no = 73, is_header = false, header = "", key = "modules-center", value = "ncspot-playpausestop ncspot"}, {useful = true, file_index = 0, line_no = 74, is_header = false, header = "", key = "modules-right", value = "battery-dualshock4-icon battery-dualshock4 sep sink-output sep eth sep date time"}, {useful = true, file_index = 0, line_no = 76, is_header = false, header = "", key = "cursor-click", value = "pointer"}, {useful = true, file_index = 0, line_no = 77, is_header = false, header = "", key = "cursor-scroll", value = "ns-resize"}, {useful = true, file_index = 0, line_no = 81, is_header = false, header = "", key = "wm-restack", value = "i3"}, {useful = true, file_index = 0, line_no = 83, is_header = false, header = "", key = "override-redirect", value = "false"}, {useful = true, file_index = 0, line_no = 85, is_header = true, header = "bar/bottom", key = "", value = ""}, {useful = true, file_index = 0, line_no = 86, is_header = false, header = "", key = "inherit", value = "bar/main"}, {useful = true, file_index = 0, line_no = 88, is_header = false, header = "", key = "modules-left", value = "xkeyboard sep openweather-forecast"}, {useful = true, file_index = 0, line_no = 89, is_header = false, header = "", key = "modules-center", value = "filesystem sep cpu temperature sep gpu-util gpu-temp sep memory"}, {useful = true, file_index = 0, line_no = 91, is_header = false, header = "", key = "bottom", value = "true"}, {useful = true, file_index = 0, line_no = 92, is_header = false, header = "", key = "tray-position", value = "${env:TRAY_POS:none}"}, {useful = true, file_index = 0, line_no = 94, is_header = false, header = "", key = "enable-ipc", value = "true"}, {useful = true, file_index = 0, line_no = 96, is_header = true, header = "module/xwindow", key = "", value = ""}, {useful = true, file_index = 0, line_no = 97, is_header = false, header = "", key = "type", value = "internal/xwindow"}, {useful = true, file_index = 0, line_no = 98, is_header = false, header = "", key = "label", value = "%title:0:60:...%"}, {useful = true, file_index = 0, line_no = 100, is_header = true, header = "module/filesystem", key = "", value = ""}, {useful = true, file_index = 0, line_no = 101, is_header = false, header = "", key = "type", value = "internal/fs"}, {useful = true, file_index = 0, line_no = 102, is_header = false, header = "", key = "interval", value = "25"}, {useful = true, file_index = 0, line_no = 104, is_header = false, header = "", key = "mount-0", value = "/"}, {useful = true, file_index = 0, line_no = 105, is_header = false, header = "", key = "mount-1", value = "/mnt/linux"}, {useful = true, file_index = 0, line_no = 106, is_header = false, header = "", key = "spacing", value = "4"}, {useful = true, file_index = 0, line_no = 108, is_header = false, header = "", key = "format-mounted-prefix", value = "  "}, {useful = true, file_index = 0, line_no = 109, is_header = false, header = "", key = "format-mounted-prefix-foreground", value = "${colors.color9}"}, {useful = true, file_index = 0, line_no = 110, is_header = false, header = "", key = "format-mounted", value = "<label-mounted>"}, {useful = true, file_index = 0, line_no = 112, is_header = false, header = "", key = "label-mounted", value = "%{T3}%mountpoint%%{T-} %percentage_used%%"}, {useful = true, file_index = 0, line_no = 114, is_header = false, header = "", key = "format-unmounted-prefix", value = "  "}, {useful = true, file_index = 0, line_no = 115, is_header = false, header = "", key = "format-unmounted-prefix-foreground", value = "${colors.color9}"}, {useful = true, file_index = 0, line_no = 116, is_header = false, header = "", key = "label-unmounted", value = "%{T3}%mountpoint%${T-} not mounted"}, {useful = true, file_index = 0, line_no = 117, is_header = false, header = "", key = "label-unmounted-foreground", value = "${colors.disabled}"}, {useful = true, file_index = 0, line_no = 119, is_header = true, header = "module/pulseaudio", key = "", value = ""}, {useful = true, file_index = 0, line_no = 120, is_header = false, header = "", key = "type", value = "internal/pulseaudio"}, {useful = true, file_index = 0, line_no = 122, is_header = false, header = "", key = "format-volume-prefix", value = "VOL "}, {useful = true, file_index = 0, line_no = 123, is_header = false, header = "", key = "format-volume-prefix-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 124, is_header = false, header = "", key = "format-volume", value = "<label-volume>"}, {useful = true, file_index = 0, line_no = 126, is_header = false, header = "", key = "label-volume", value = "%percentage%%"}, {useful = true, file_index = 0, line_no = 128, is_header = false, header = "", key = "label-muted", value = "muted"}, {useful = true, file_index = 0, line_no = 129, is_header = false, header = "", key = "label-muted-foreground", value = "${colors.disabled}"}, {useful = true, file_index = 0, line_no = 131, is_header = true, header = "module/xkeyboard", key = "", value = ""}, {useful = true, file_index = 0, line_no = 132, is_header = false, header = "", key = "type", value = "internal/xkeyboard"}, {useful = true, file_index = 0, line_no = 133, is_header = false, header = "", key = "blacklist-0", value = "num lock"}, {useful = true, file_index = 0, line_no = 135, is_header = false, header = "", key = "label-layout", value = "%layout%"}, {useful = true, file_index = 0, line_no = 136, is_header = false, header = "", key = "label-layout-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 138, is_header = false, header = "", key = "label-indicator-padding", value = "2"}, {useful = true, file_index = 0, line_no = 139, is_header = false, header = "", key = "label-indicator-margin", value = "1"}, {useful = true, file_index = 0, line_no = 140, is_header = false, header = "", key = "label-indicator-foreground", value = "${colors.color15}"}, {useful = true, file_index = 0, line_no = 141, is_header = false, header = "", key = "label-indicator-background", value = "${colors.secondary}"}, {useful = true, file_index = 0, line_no = 143, is_header = true, header = "module/memory", key = "", value = ""}, {useful = true, file_index = 0, line_no = 144, is_header = false, header = "", key = "type", value = "internal/memory"}, {useful = true, file_index = 0, line_no = 145, is_header = false, header = "", key = "interval", value = "2"}, {useful = true, file_index = 0, line_no = 146, is_header = false, header = "", key = "format-prefix", value = "RAM "}, {useful = true, file_index = 0, line_no = 147, is_header = false, header = "", key = "format-prefix-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 148, is_header = false, header = "", key = "label", value = "%percentage_used:2%%"}, {useful = true, file_index = 0, line_no = 150, is_header = true, header = "module/cpu", key = "", value = ""}, {useful = true, file_index = 0, line_no = 151, is_header = false, header = "", key = "type", value = "internal/cpu"}, {useful = true, file_index = 0, line_no = 152, is_header = false, header = "", key = "interval", value = "2"}, {useful = true, file_index = 0, line_no = 153, is_header = false, header = "", key = "format-prefix", value = "CPU "}, {useful = true, file_index = 0, line_no = 154, is_header = false, header = "", key = "format-prefix-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 155, is_header = false, header = "", key = "label", value = "%percentage:2%%"}, {useful = true, file_index = 0, line_no = 157, is_header = true, header = "module/eth", key = "", value = ""}, {useful = true, file_index = 0, line_no = 158, is_header = false, header = "", key = "type", value = "internal/network"}, {useful = true, file_index = 0, line_no = 159, is_header = false, header = "", key = "interface-type", value = "wired"}, {useful = true, file_index = 0, line_no = 160, is_header = false, header = "", key = "format-connected-prefix", value = "%{T10}%{T-}"}, {useful = true, file_index = 0, line_no = 161, is_header = false, header = "", key = "format-disconnected-prefix", value = "%{T10}%{T-}"}, {useful = true, file_index = 0, line_no = 162, is_header = false, header = "", key = "format-connected-prefix-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 163, is_header = false, header = "", key = "format-disconnected-prefix-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 164, is_header = false, header = "", key = "format-connected", value = "<label-connected>"}, {useful = true, file_index = 0, line_no = 165, is_header = false, header = "", key = "format-connected-padding", value = "1"}, {useful = true, file_index = 0, line_no = 167, is_header = false, header = "", key = "label-connected", value = "%local_ip%"}, {useful = true, file_index = 0, line_no = 168, is_header = false, header = "", key = "label-disconnected", value = "%{F#ff0000}disconnected%{F-}"}, {useful = true, file_index = 0, line_no = 170, is_header = true, header = "module/date", key = "", value = ""}, {useful = true, file_index = 0, line_no = 171, is_header = false, header = "", key = "type", value = "internal/date"}, {useful = true, file_index = 0, line_no = 172, is_header = false, header = "", key = "interval", value = "1"}, {useful = true, file_index = 0, line_no = 175, is_header = false, header = "", key = "date", value = "%d-%m-%Y"}, {useful = true, file_index = 0, line_no = 178, is_header = false, header = "", key = "format-prefix", value = " "}, {useful = true, file_index = 0, line_no = 179, is_header = false, header = "", key = "format-prefix-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 180, is_header = false, header = "", key = "label", value = "%date%"}, {useful = true, file_index = 0, line_no = 181, is_header = false, header = "", key = "format-background", value = "${colors.background}"}, {useful = true, file_index = 0, line_no = 184, is_header = true, header = "module/time", key = "", value = ""}, {useful = true, file_index = 0, line_no = 185, is_header = false, header = "", key = "type", value = "internal/date"}, {useful = true, file_index = 0, line_no = 186, is_header = false, header = "", key = "time", value = "%H:%M"}, {useful = true, file_index = 0, line_no = 187, is_header = false, header = "", key = "format-prefix", value = " "}, {useful = true, file_index = 0, line_no = 188, is_header = false, header = "", key = "label", value = "%time%"}, {useful = true, file_index = 0, line_no = 189, is_header = false, header = "", key = "format-prefix-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 190, is_header = false, header = "", key = "format-background", value = "${colors.background}"}, {useful = true, file_index = 0, line_no = 192, is_header = true, header = "module/temperature", key = "", value = ""}, {useful = true, file_index = 0, line_no = 193, is_header = false, header = "", key = "type", value = "internal/temperature"}, {useful = true, file_index = 0, line_no = 194, is_header = false, header = "", key = "interval", value = "0.5"}, {useful = true, file_index = 0, line_no = 195, is_header = false, header = "", key = "hwmon-path", value = "/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon1/temp1_input"}, {useful = true, file_index = 0, line_no = 196, is_header = false, header = "", key = "base-temperature", value = "20"}, {useful = true, file_index = 0, line_no = 197, is_header = false, header = "", key = "warn-temperature", value = "65"}, {useful = true, file_index = 0, line_no = 198, is_header = false, header = "", key = "units", value = "true"}, {useful = true, file_index = 0, line_no = 199, is_header = false, header = "", key = "format-prefix", value = ""}, {useful = true, file_index = 0, line_no = 200, is_header = false, header = "", key = "format-warn-prefix", value = ""}, {useful = true, file_index = 0, line_no = 201, is_header = false, header = "", key = "format-prefix-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 202, is_header = false, header = "", key = "format-warn-prefix-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 203, is_header = false, header = "", key = "format", value = "<label>"}, {useful = true, file_index = 0, line_no = 204, is_header = false, header = "", key = "label", value = "%temperature-c%"}, {useful = true, file_index = 0, line_no = 206, is_header = false, header = "", key = "format-warn", value = "<label-warn>"}, {useful = true, file_index = 0, line_no = 207, is_header = false, header = "", key = "label-warn", value = "%{F#ff0000}%temperature-c%%{F-}"}, {useful = true, file_index = 0, line_no = 209, is_header = true, header = "module/sink-output", key = "", value = ""}, {useful = true, file_index = 0, line_no = 210, is_header = false, header = "", key = "type", value = "custom/script"}, {useful = true, file_index = 0, line_no = 211, is_header = false, header = "", key = "exec", value = "~/.config/polybar/scripts/check-output/check_output.sh"}, {useful = true, file_index = 0, line_no = 212, is_header = false, header = "", key = "tail", value = "true"}, {useful = true, file_index = 0, line_no = 213, is_header = false, header = "", key = "interval", value = "1"}, {useful = true, file_index = 0, line_no = 214, is_header = false, header = "", key = "click-left", value = "~/.config/scripts/switch_sound"}, {useful = true, file_index = 0, line_no = 215, is_header = false, header = "", key = "label-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 217, is_header = true, header = "module/screen-temperature", key = "", value = ""}, {useful = true, file_index = 0, line_no = 218, is_header = false, header = "", key = "type", value = "custom/script"}, {useful = true, file_index = 0, line_no = 219, is_header = false, header = "", key = "exec", value = "~/.config/polybar/scripts/check-temperature/check-temperature.sh"}, {useful = true, file_index = 0, line_no = 220, is_header = false, header = "", key = "interval", value = "1"}, {useful = true, file_index = 0, line_no = 221, is_header = false, header = "", key = "click-left", value = "~/.config/polybar/scripts/check-temperature/invert-temperature.sh"}, {useful = true, file_index = 0, line_no = 222, is_header = false, header = "", key = "label-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 224, is_header = true, header = "module/ncspot-playpausestop", key = "", value = ""}, {useful = true, file_index = 0, line_no = 225, is_header = false, header = "", key = "type", value = "custom/ipc"}, {useful = true, file_index = 0, line_no = 226, is_header = false, header = "", key = "hook-0", value = "echo \"\""}, {useful = true, file_index = 0, line_no = 227, is_header = false, header = "", key = "hook-1", value = "echo \"\""}, {useful = true, file_index = 0, line_no = 228, is_header = false, header = "", key = "hook-2", value = "echo \"\""}, {useful = true, file_index = 0, line_no = 229, is_header = false, header = "", key = "label-font", value = "10"}, {useful = true, file_index = 0, line_no = 230, is_header = false, header = "", key = "format-foreground", value = "${colors.primary}"}, {useful = true, file_index = 0, line_no = 231, is_header = false, header = "", key = "initial", value = "2"}, {useful = true, file_index = 0, line_no = 233, is_header = true, header = "module/ncspot", key = "", value = ""}, {useful = true, file_index = 0, line_no = 234, is_header = false, header = "", key = "type", value = "custom/script"}, {useful = true, file_index = 0, line_no = 235, is_header = false, header = "", key = "tail", value = "true"}, {useful = true, file_index = 0, line_no = 236, is_header = false, header = "", key = "interval", value = "1"}, {useful = true, file_index = 0, line_no = 238, is_header = false, header = "", key = "format", value = "<label>"}, {useful = true, file_index = 0, line_no = 239, is_header = false, header = "", key = "exec", value = "~/.config/polybar/scripts/polybar-spotify/get_spotify_status.sh &"}, {useful = true, file_index = 0, line_no = 240, is_header = false, header = "", key = "click-left", value = "i3-msg '[instance=\"music\"] scratchpad show'"}, {useful = true, file_index = 0, line_no = 242, is_header = true, header = "module/sep", key = "", value = ""}, {useful = true, file_index = 0, line_no = 243, is_header = false, header = "", key = "type", value = "custom/text"}, {useful = true, file_index = 0, line_no = 244, is_header = false, header = "", key = "label-font", value = "3"}, {useful = true, file_index = 0, line_no = 245, is_header = false, header = "", key = "content", value = "|"}, {useful = true, file_index = 0, line_no = 246, is_header = false, header = "", key = "content-padding", value = "0"}, {useful = true, file_index = 0, line_no = 247, is_header = false, header = "", key = "content-foreground", value = "${colors.secondary}"}, {useful = true, file_index = 0, line_no = 249, is_header = true, header = "module/openweather-forecast", key = "", value = ""}, {useful = true, file_index = 0, line_no = 250, is_header = false, header = "", key = "type", value = "custom/script"}, {useful = true, file_index = 0, line_no = 251, is_header = false, header = "", key = "exec", value = "~/.config/polybar/scripts/openweathermap-detailed/openweathermap-detailed.sh"}, {useful = true, file_index = 0, line_no = 252, is_header = false, header = "", key = "interval", value = "600"}, {useful = true, file_index = 0, line_no = 253, is_header = false, header = "", key = "label-font", value = "14"}, {useful = true, file_index = 0, line_no = 255, is_header = true, header = "module/i3", key = "", value = ""}, {useful = true, file_index = 0, line_no = 256, is_header = false, header = "", key = "type", value = "internal/i3"}, {useful = true, file_index = 0, line_no = 258, is_header = false, header = "", key = "pin-workspaces", value = "true"}, {useful = true, file_index = 0, line_no = 259, is_header = false, header = "", key = "strip-wsnumbers", value = "true"}, {useful = true, file_index = 0, line_no = 260, is_header = false, header = "", key = "index-sort", value = "true"}, {useful = true, file_index = 0, line_no = 267, is_header = false, header = "", key = "fuzzy-match", value = "true"}...}, m_forbidden_chars = "\"'=;#[](){}:.$\\%", m_reserved_section_names = std::set with 3 elements = {[0] = "BAR", [1] = "root", [2] = "self"}}
        cli = std::unique_ptr<polybar::command_line::parser> = {get() = 0x55eb03d13880}
        barname = ""
        conf = {m_log = @0x55eb03d165c0, m_file = "/home/lucas/.config/polybar/config.ini", m_barname = "top", m_sections = std::map with 27 elements = {["bar/bottom"] = std::unordered_map with 32 elements = {["font-12"] = "Material Symbols Rounded:size=15;4", ["font-8"] = "Material Symbols Outlined:size=12;4", ["font-7"] = "Material Icons:size=14;3", ["font-11"] = "Material Symbols TwoTone:size=12;4", ["font-13"] = "Weather Icons:size=11;1", ["font-14"] = "Font Awesome 6 Brands, Font Awesome 6 Brands Regular;size=17;1", ["font-15"] = "feather:size=11;3.5", ["font-3"] = "JetBrainsMono Nerd Font:style=Italic:size=10;3", ["height"] = "22pt", ["foreground"] = "${colors.foreground}", ["enable-ipc"] = "true", ["modules-center"] = "filesystem sep cpu temperature sep gpu-util gpu-temp sep memory", ["font-9"] = "Material Symbols Rounded:size=14;4", ["width"] = "100%", ["modules-left"] = "xkeyboard sep openweather-forecast", ["inherit"] = "bar/main", ["tray-position"] = "${env:TRAY_POS:none}", ["padding-left"] = "0", ["monitor"] = "${env:PRIMARY_MONITOR:DP-4}", ["font-6"] = "icomoon\\-feather:size=14;3.5", ["font-1"] = "JetBrainsMono Nerd Font:style=Medium:size=10;3", ["bottom"] = "true", ["font-5"] = "JetBrainsMono Nerd Font:size=10;5", ["font-4"] = "JetBrainsMono Nerd Font:style=Medium Italic:size=10;3", ["padding-right"] = "1", ["font-0"] = "JetBrainsMono Nerd Font:style=Normal:size=10;3", ["separator-foreground"] = "${colors.disabled}", ["background"] = "${colors.background}", ["font-2"] = "JetBrainsMono Nerd Font:style=Bold:size=11;3", ["font-10"] = "Material Symbols Sharp:size=12;4", ["module-margin"] = "1", ["font-16"] = "DroidSansM Nerd Font:size=23;3"}, ["bar/main"] = std::unordered_map with 26 elements = {["font-14"] = "Font Awesome 6 Brands, Font Awesome 6 Brands Regular;size=17;1", ["font-13"] = "Weather Icons:size=11;1", ["font-11"] = "Material Symbols TwoTone:size=12;4", ["font-15"] = "feather:size=11;3.5", ["font-10"] = "Material Symbols Sharp:size=12;4", ["font-9"] = "Material Symbols Rounded:size=14;4", ["font-8"] = "Material Symbols Outlined:size=12;4", ["font-7"] = "Material Icons:size=14;3", ["font-6"] = "icomoon\\-feather:size=14;3.5", ["font-5"] = "JetBrainsMono Nerd Font:size=10;5", ["font-4"] = "JetBrainsMono Nerd Font:style=Medium Italic:size=10;3", ["monitor"] = "${env:PRIMARY_MONITOR:DP-4}", ["width"] = "100%", ["padding-right"] = "1", ["background"] = "${colors.background}", ["font-0"] = "JetBrainsMono Nerd Font:style=Normal:size=10;3", ["font-3"] = "JetBrainsMono Nerd Font:style=Italic:size=10;3", ["foreground"] = "${colors.foreground}", ["separator-foreground"] = "${colors.disabled}", ["padding-left"] = "0", ["font-2"] = "JetBrainsMono Nerd Font:style=Bold:size=11;3", ["module-margin"] = "1", ["font-16"] = "DroidSansM Nerd Font:size=23;3", ["font-12"] = "Material Symbols Rounded:size=15;4", ["height"] = "22pt", ["font-1"] = "JetBrainsMono Nerd Font:style=Medium:size=10;3"}, ["bar/top"] = std::unordered_map with 41 elements = {["font-12"] = "Material Symbols Rounded:size=15;4", ["font-16"] = "DroidSansM Nerd Font:size=23;3", ["padding-left"] = "0", ["separator-foreground"] = "${colors.disabled}", ["height"] = "22pt", ["foreground"] = "${colors.foreground}", ["font-0"] = "JetBrainsMono Nerd Font:style=Normal:size=10;3", ["font-2"] = "JetBrainsMono Nerd Font:style=Bold:size=11;3", ["background"] = "${colors.background}", ["cursor-scroll"] = "ns-resize", ["border-bottom-color"] = "${colors.primary}", ["cursor-click"] = "pointer", ["border-bottom-size"] = "2", ["border-color"] = "#00000000", ["font-8"] = "Material Symbols Outlined:size=12;4", ["font-7"] = "Material Icons:size=14;3", ["font-3"] = "JetBrainsMono Nerd Font:style=Italic:size=10;3", ["line-size"] = "4pt", ["border-size"] = "4pt", ["radius"] = "6", ["modules-right"] = "battery-dualshock4-icon battery-dualshock4 sep sink-output sep eth sep date time", ["font-13"] = "Weather Icons:size=11;1", ["font-11"] = "Material Symbols TwoTone:size=12;4", ["modules-center"] = "ncspot-playpausestop ncspot", ["font-9"] = "Material Symbols Rounded:size=14;4", ["width"] = "100%", ["enable-ipc"] = "true", ["modules-left"] = "i3 powermenu-info", ["inherit"] = "bar/main", ["wm-restack"] = "i3", ["override-redirect"] = "false", ["font-4"] = "JetBrainsMono Nerd Font:style=Medium Italic:size=10;3", ["font-14"] = "Font Awesome 6 Brands, Font Awesome 6 Brands Regular;size=17;1", ["font-15"] = "feather:size=11;3.5", ["module-margin"] = "1", ["font-10"] = "Material Symbols Sharp:size=12;4", ["monitor"] = "${env:PRIMARY_MONITOR:DP-4}", ["font-6"] = "icomoon\\-feather:size=14;3.5", ["font-1"] = "JetBrainsMono Nerd Font:style=Medium:size=10;3", ["font-5"] = "JetBrainsMono Nerd Font:size=10;5", ["padding-right"] = "1"}, ["colors"] = std::unordered_map with 17 elements = {["color15"] = "${xrdb:color15:$ffff00}", ["color14"] = "${xrdb:color14:$ffff00}", ["color12"] = "${xrdb:color12:$ffff00}", ["color11"] = "${xrdb:color11:$ffff00}", ["background-alt"] = "${xrdb:color11:$ffff00}", ["background"] = "${xrdb:color3:$ffff00}", ["secondary"] = "${xrdb:color8:$ffff00}", ["foreground"] = "${xrdb:color15:$ffff00}", ["foreground-alt"] = "${xrdb:color7:$ffff00}", ["disabled"] = "${xrdb:color0:$ffff00}", ["color7"] = "${xrdb:color7:$ffff00}", ["primary"] = "${xrdb:color9:$ffff00}", ["color0"] = "${xrdb:color0:$ffff00}", ["color3"] = "${xrdb:color3:$ffff00}", ["color2"] = "${xrdb:color2:$ffff00}", ["color4"] = "${xrdb:color4:$ffff00}", ["color9"] = "${xrdb:color9:$ffff00}"}, ["module/battery-dualshock4"] = std::unordered_map with 3 elements = {["interval"] = "10", ["exec"] = "~/.config/polybar/scripts/info-dualshock4.sh &", ["type"] = "custom/script"}, ["module/battery-dualshock4-icon"] = std::unordered_map with 6 elements = {["initial"] = "1", ["format-foreground"] = "${colors.primary}", ["label-font"] = "10", ["hook-1"] = "echo \"  %{T16}%{T-}\"", ["hook-0"] = "echo \"\"", ["type"] = "custom/ipc"}, ["module/cpu"] = std::unordered_map with 5 elements = {["label"] = "%percentage:2%%", ["format-prefix-foreground"] = "${colors.primary}", ["format-prefix"] = "CPU ", ["interval"] = "2", ["type"] = "internal/cpu"}, ["module/date"] = std::unordered_map with 7 elements = {["format-background"] = "${colors.background}", ["label"] = "%date%", ["format-prefix-foreground"] = "${colors.primary}", ["format-prefix"] = " ", ["date"] = "%d-%m-%Y", ["interval"] = "1", ["type"] = "internal/date"}, ["module/eth"] = std::unordered_map with 10 elements = {["label-disconnected"] = "%{F#ff0000}disconnected%{F-}", ["label-connected"] = "%local_ip%", ["format-connected"] = "<label-connected>", ["format-disconnected-prefix-foreground"] = "${colors.primary}", ["format-connected-prefix-foreground"] = "${colors.primary}", ["format-connected-padding"] = "1", ["format-disconnected-prefix"] = "%{T10}%{T-}", ["format-connected-prefix"] = "%{T10}%{T-}", ["interface-type"] = "wired", ["type"] = "internal/network"}, ["module/filesystem"] = std::unordered_map with 13 elements = {["format-unmounted-prefix-foreground"] = "${colors.color9}", ["format-mounted"] = "<label-mounted>", ["format-mounted-prefix-foreground"] = "${colors.color9}", ["format-mounted-prefix"] = "  ", ["label-unmounted-foreground"] = "${colors.disabled}", ["format-unmounted-prefix"] = "  ", ["spacing"] = "4", ["mount-1"] = "/mnt/linux", ["mount-0"] = "/", ["label-unmounted"] = "%{T3}%mountpoint%${T-} not mounted", ["interval"] = "25", ["label-mounted"] = "%{T3}%mountpoint%%{T-} %percentage_used%%", ["type"] = "internal/fs"}, ["module/gpu-temp"] = std::unordered_map with 5 elements = {["interval"] = "2", ["format-prefix-foreground"] = "${colors.primary}", ["format-prefix"] = "", ["exec"] = "~/.config/polybar/scripts/nvidia-gpu/gpu_info.sh -t &", ["type"] = "custom/script"}, ["module/gpu-util"] = std::unordered_map with 5 elements = {["interval"] = "2", ["format-prefix-foreground"] = "${colors.primary}", ["format-prefix"] = "GPU  ", ["exec"] = "~/.config/polybar/scripts/nvidia-gpu/gpu_info.sh -u &", ["type"] = "custom/script"}, ["module/i3"] = std::unordered_map with 36 elements = {["label-urgent-background"] = "#bd2c40", ["label-urgent-foreground"] = "#000000", ["label-urgent"] = "%index%", ["label-visible-padding"] = "4", ["label-visible-background"] = "${colors.color2}", ["label-visible-foreground"] = "${colors.foreground-alt}", ["ws-icon-5"] = "6;%{T8}%{T-}", ["ws-icon-3"] = "4;%{T8}%{T-}", ["label-unfocused-background"] = "${colors.color2}", ["ws-icon-2"] = "3;", ["label-mode-background"] = "${colors.background-alt}", ["ws-icon-0"] = "1:terminal;%{T13}%{T-}", ["ws-icon-6"] = "7;%{T8}%{T-}", ["index-sort"] = "true", ["ws-icon-1"] = "2:chrome;", ["strip-wsnumbers"] = "true", ["label-urgent-padding"] = "4", ["label-visible"] = "%icon%", ["type"] = "internal/i3", ["label-mode"] = "%mode%", ["label-unfocused"] = "%icon%", ["ws-icon-8"] = "9;", ["ws-icon-default"] = "0", ["label-dimmed-underline"] = "${root.background}", ["label-mode-padding"] = "0", ["ws-icon-4"] = "5;%{T8}%{T-}", ["label-focused"] = "%icon%", ["pin-workspaces"] = "true", ["label-focused-padding"] = "4", ["label-focused-foreground"] = "${colors.foreground}", ["ws-icon-7"] = "8;%{T8}%{T-}", ["format"] = "<label-state> <label-mode>", ["label-focused-background"] = "${colors.background-alt}", ["fuzzy-match"] = "true", ["label-unfocused-foreground"] = "${colors.foreground-alt}", ["label-unfocused-padding"] = "4"}, ["module/memory"] = std::unordered_map with 5 elements = {["label"] = "%percentage_used:2%%", ["format-prefix-foreground"] = "${colors.primary}", ["format-prefix"] = "RAM ", ["interval"] = "2", ["type"] = "internal/memory"}, ["module/ncspot"] = std::unordered_map with 6 elements = {["exec"] = "~/.config/polybar/scripts/polybar-spotify/get_spotify_status.sh &", ["format"] = "<label>", ["interval"] = "1", ["tail"] = "true", ["click-left"] = "i3-msg '[instance=\"music\"] scratchpad show'", ["type"] = "custom/script"}, ["module/ncspot-playpausestop"] = std::unordered_map with 7 elements = {["initial"] = "2", ["label-font"] = "10", ["format-foreground"] = "${colors.primary}", ["hook-2"] = "echo \"\"", ["hook-1"] = "echo \"\"", ["hook-0"] = "echo \"\"", ["type"] = "custom/ipc"}, ["module/openweather-forecast"] = std::unordered_map with 4 elements = {["label-font"] = "14", ["interval"] = "600", ["exec"] = "~/.config/polybar/scripts/openweathermap-detailed/openweathermap-detailed.sh", ["type"] = "custom/script"}, ["module/powermenu-info"] = std::unordered_map with 5 elements = {["hook-2"] = "echo \"(y)es, (n)o\"", ["hook-1"] = "echo \"(l)ock, (s)uspend, (e)xit session, (r)eboot, reboot to (w)indows, (Shift+s)shutdown\"", ["hook-0"] = "echo \"\"", ["initial"] = "1", ["type"] = "custom/ipc"}, ["module/pulseaudio"] = std::unordered_map with 7 elements = {["label-muted"] = "muted", ["label-volume"] = "%percentage%%", ["label-muted-foreground"] = "${colors.disabled}", ["format-volume"] = "<label-volume>", ["format-volume-prefix-foreground"] = "${colors.primary}", ["format-volume-prefix"] = "VOL ", ["type"] = "internal/pulseaudio"}, ["module/screen-temperature"] = std::unordered_map with 5 elements = {["label-foreground"] = "${colors.primary}", ["interval"] = "1", ["exec"] = "~/.config/polybar/scripts/check-temperature/check-temperature.sh", ["click-left"] = "~/.config/polybar/scripts/check-temperature/invert-temperature.sh", ["type"] = "custom/script"}, ["module/sep"] = std::unordered_map with 5 elements = {["content-padding"] = "0", ["content"] = "|", ["label-font"] = "3", ["content-foreground"] = "${colors.secondary}", ["type"] = "custom/text"}, ["module/sink-output"] = std::unordered_map with 6 elements = {["label-foreground"] = "${colors.primary}", ["interval"] = "1", ["tail"] = "true", ["exec"] = "~/.config/polybar/scripts/check-output/check_output.sh", ["click-left"] = "~/.config/scripts/switch_sound", ["type"] = "custom/script"}, ["module/temperature"] = std::unordered_map with 14 elements = {["label-warn"] = "%{F#ff0000}%temperature-c%%{F-}", ["type"] = "internal/temperature", ["interval"] = "0.5", ["hwmon-path"] = "/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon1/temp1_input", ["format-prefix-foreground"] = "${colors.primary}", ["base-temperature"] = "20", ["warn-temperature"] = "65", ["format"] = "<label>", ["label"] = "%temperature-c%", ["units"] = "true", ["format-warn-prefix"] = "", ["format-warn"] = "<label-warn>", ["format-prefix"] = "", ["format-warn-prefix-foreground"] = "${colors.primary}"}, ["module/time"] = std::unordered_map with 6 elements = {["format-prefix-foreground"] = "${colors.primary}", ["format-background"] = "${colors.background}", ["label"] = "%time%", ["format-prefix"] = " ", ["time"] = "%H:%M", ["type"] = "internal/date"}, ["module/xkeyboard"] = std::unordered_map with 8 elements = {["label-indicator-background"] = "${colors.secondary}", ["label-indicator-foreground"] = "${colors.color15}", ["label-indicator-margin"] = "1", ["label-indicator-padding"] = "2", ["label-layout-foreground"] = "${colors.primary}", ["label-layout"] = "%layout%", ["blacklist-0"] = "num lock", ["type"] = "internal/xkeyboard"}, ["module/xwindow"] = std::unordered_map with 2 elements = {["label"] = "%title:0:60:...%", ["type"] = "internal/xwindow"}, ["settings"] = std::unordered_map with 2 elements = {["pseudo-transparency"] = "true", ["screenchange-reload"] = "true"}}, m_included = std::vector of length 1, capacity 1 = {"/home/lucas/.config/polybar/colors.ini"}, m_xrm = std::unique_ptr<polybar::xresource_manager> = {get() = 0x55eb03d2b650}}
        ctrl = std::unique_ptr<polybar::controller> = {get() = 0x55eb03d2cfe0}
        scriptname = "/home/lucas/Documents/polybar_dbg/build/bin/polybar"
        args = std::vector of length 2, capacity 2 = {"--reload", "top"}
        xcb_error = <optimized out>
        ipc = std::unique_ptr<polybar::ipc::ipc> = {get() = 0x55eb03d189c0}
        opts = std::vector of length 12, capacity 12 = {{flag = "-h", flag_long = "--help", desc = "Display this help and exit", token = "", values = std::vector of length 0, capacity 0}, {flag = "-v", flag_long = "--version", desc = "Display build details and exit", token = "", values = std::vector of length 0, capacity 0}, {flag = "-l", flag_long = "--log", desc = "Set the logging verbosity (default: notice)", token = "LEVEL", values = std::vector of length 5, capacity 5 = {"error", "warning", "notice", "info", "trace"}}, {flag = "-q", flag_long = "--quiet", desc = "Be quiet (will override -l)", token = "", values = std::vector of length 0, capacity 0}, {flag = "-c", flag_long = "--config", desc = "Path to the configuration file", token = "FILE", values = std::vector of length 0, capacity 0}, {flag = "-r", flag_long = "--reload", desc = "Reload when the configuration has been modified", token = "", values = std::vector of length 0, capacity 0}, {flag = "-d", flag_long = "--dump", desc = "Print value of PARAM in bar section and exit", token = "PARAM", values = std::vector of length 0, capacity 0}, {flag = "-m", flag_long = "--list-monitors", desc = "Print list of available monitors and exit (Removes cloned monitors)", token = "", values = std::vector of length 0, capacity 0}, {flag = "-M", flag_long = "--list-all-monitors", desc = "Print list of all available monitors (Including cloned monitors) and exit", token = "", values = std::vector of length 0, capacity 0}, {flag = "-w", flag_long = "--print-wmname", desc = "Print the generated WM_NAME and exit", token = "", values = std::vector of length 0, capacity 0}, {flag = "-s", flag_long = "--stdout", desc = "Output data to stdout instead of drawing it to the X window", token = "", values = std::vector of length 0, capacity 0}, {flag = "-p", flag_long = "--png", desc = "Save png snapshot to FILE after running for 3 seconds", token = "FILE", values = std::vector of length 0, capacity 0}}
        exit_code = 0 '\000'
        reload = false
        logger = @0x55eb03d165c0: {m_level = polybar::loglevel::NOTICE, m_fd = 2, m_prefixes = std::map with 5 elements = {[polybar::loglevel::ERROR] = "polybar|error: ", [polybar::loglevel::WARNING] = "polybar|warn:  ", [polybar::loglevel::NOTICE] = "polybar|notice:  ", [polybar::loglevel::INFO] = "polybar|info:  ", [polybar::loglevel::TRACE] = "polybar|trace: "}, m_suffixes = std::map with 5 elements = {[polybar::loglevel::ERROR] = "", [polybar::loglevel::WARNING] = "", [polybar::loglevel::NOTICE] = "", [polybar::loglevel::INFO] = "", [polybar::loglevel::TRACE] = ""}}
Detaching from program: /home/lucas/Documents/polybar_dbg/build/bin/polybar, process 301309
[Inferior 1 (process 301309) detached]

polybar_log_gdb.txt

@patrick96
Copy link
Member

Thanks :)

Now we know where the bar is stuck. For some reason, the ncspot-playpausestop module is getting stuck while reading the script output for hook-0.
Even with that knowledge, I haven't been able to reproduce this so far.

The ipc module doesn't have the best design, but I don't see anything there that could cause this. Your ipc hooks are very simple commands and I really don't see how it could get stuck there.

I wanted to rewrite how the ipc module reads script output anyway. Maybe I'll just have to do that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants