Today my OS (vanilla Ubuntu 22.04) warned me that I had only a couple of GB left on my main disk. After some dinging I found that aw-watcher-window was spamming my disk with error logs. For example ~/.cache/activitywatch/log/aw-watcher-window
is currently 160GB.
2022-12-05 09:17:59 [ERROR]: Exception thrown while trying to get active window (aw_watcher_window.main:110)
Traceback (most recent call last):
File "Xlib/protocol/display.py", line 583, in send_and_recv
BrokenPipeError: [Errno 32] Broken pipe
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
File "Xlib/xobject/drawable.py", line 472, in get_full_property
File "Xlib/xobject/drawable.py", line 455, in get_property
File "Xlib/protocol/rq.py", line 1369, in __init__
File "Xlib/protocol/rq.py", line 1381, in reply
File "Xlib/protocol/display.py", line 586, in send_and_recv
Xlib.error.ConnectionClosedError: Display connection closed by server: [Errno 32] Broken pipe