eww clock no longer spawns a new process every 0.5 seconds

This commit is contained in:
Ezri Brimhall 2024-03-19 13:32:42 -06:00
parent 362f4c1d0b
commit c2f6e81215
Signed by: ezri
GPG Key ID: 058A78E5680C6F24
2 changed files with 26 additions and 2 deletions

View File

@ -1,6 +1,6 @@
;; -*-lisp-*-
(defpoll clock--data :interval "500ms"
`date +'{"hour": "%H", "minute": "%M", "second": "%S", "year": "%Y", "day": "%d", "month": "%m", "dow": "%A", "month_name": "%B", "unix": %s}'`)
(deflisten clock--data :initial "{}"
`~/.config/eww/scripts/date.py`)
(defvar clock--show "clock")

24
.config/eww/scripts/date.py Executable file
View File

@ -0,0 +1,24 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""A simple Python script to output the current date and time as a JSON object string every 0.5 seconds.
Used instead of the `date` command in order to avoid spawning a new process every 0.5 seconds.
"""
import datetime
import sys
import time
def get_date():
"""Return the current date as a JSON object string."""
return datetime.datetime.now().strftime(
'{"hour": "%H", "minute": "%M", "second": "%S", "day": "%d", "month": "%m", "year": "%Y", "dow": "%w","month_name": "%B", "unix": %s}'
)
if __name__ == "__main__":
while True:
print(get_date())
sys.stdout.flush()
time.sleep(0.5)