mirror of
https://github.com/caelestia-dots/cli.git
synced 2026-06-06 07:19:29 -05:00
shell: filter log
This commit is contained in:
@@ -20,13 +20,12 @@ def parse_args() -> (argparse.ArgumentParser, argparse.Namespace):
|
||||
shell_parser.add_argument("message", nargs="*", help="a message to send to the shell")
|
||||
shell_parser.add_argument("-d", "--daemon", action="store_true", help="start the shell detached")
|
||||
shell_parser.add_argument("-s", "--show", action="store_true", help="print all shell IPC commands")
|
||||
shell_parser.add_argument("-l", "--log", action="store_true", help="print the shell log")
|
||||
shell_parser.add_argument(
|
||||
"-l",
|
||||
"--log",
|
||||
nargs="?",
|
||||
const="quickshell.dbus.properties.warning=false;quickshell.dbus.dbusmenu.warning=false;quickshell.service.notifications.warning=false;quickshell.service.sni.host.warning=false",
|
||||
"--log-rules",
|
||||
default="quickshell.dbus.properties.warning=false;quickshell.dbus.dbusmenu.warning=false;quickshell.service.notifications.warning=false;quickshell.service.sni.host.warning=false",
|
||||
metavar="RULES",
|
||||
help="print the shell log",
|
||||
help="log rules to apply",
|
||||
)
|
||||
|
||||
# Create parser for toggle opts
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import subprocess
|
||||
from argparse import Namespace
|
||||
|
||||
from caelestia.utils.paths import c_cache_dir
|
||||
|
||||
|
||||
class Command:
|
||||
args: Namespace
|
||||
@@ -20,22 +22,33 @@ class Command:
|
||||
self.message(*self.args.message)
|
||||
else:
|
||||
# Start the shell
|
||||
args = ["qs", "-n", "-c", "caelestia"]
|
||||
args = ["qs", "-n", "-c", "caelestia", "--log-rules", self.args.log_rules]
|
||||
if self.args.daemon:
|
||||
args.append("-d")
|
||||
subprocess.run(args)
|
||||
subprocess.run(args)
|
||||
else:
|
||||
shell = subprocess.Popen(args, stdout=subprocess.PIPE, universal_newlines=True)
|
||||
for line in shell.stdout:
|
||||
if self.filter_log(line):
|
||||
print(line, end="")
|
||||
|
||||
def shell(self, *args: list[str]) -> str:
|
||||
return subprocess.check_output(["qs", "-c", "caelestia", *args], text=True)
|
||||
|
||||
def filter_log(self, line: str) -> bool:
|
||||
return (
|
||||
"QProcess: Destroyed while process" not in line
|
||||
and f"Cannot open: file://{c_cache_dir}/imagecache/" not in line
|
||||
)
|
||||
|
||||
def print_ipc(self) -> None:
|
||||
print(self.shell("ipc", "show"), end="")
|
||||
|
||||
def print_log(self) -> None:
|
||||
log = self.shell("log")
|
||||
log = self.shell("log", "-r", self.args.log_rules)
|
||||
# FIXME: remove when logging rules are added/warning is removed
|
||||
for line in log.splitlines():
|
||||
if "QProcess: Destroyed while process" not in line:
|
||||
if self.filter_log(line):
|
||||
print(line)
|
||||
|
||||
def message(self, *args: list[str]) -> None:
|
||||
|
||||
Reference in New Issue
Block a user