Browse Source

Before I screw things up

master
Geoffrey Frogeye 1 month ago
parent
commit
346a89249e
4 changed files with 71 additions and 4 deletions
  1. +1
    -0
      config/i3/config
  2. +66
    -0
      config/i3/screentime
  3. +2
    -2
      config/mpd/mpd.conf
  4. +2
    -2
      config/shell/shenv

+ 1
- 0
config/i3/config View File

@@ -398,6 +398,7 @@ exec --no-startup-id keynav # Keyboard cursor controller
# exec --no-startup-id ~/.config/i3/ashuffle # MPD Auto-refill
exec --no-startup-id autorandr --change # Screen configuration and everything that depends on it
exec --no-startup-id ~/.config/i3/batteryNotify -d # Battery state notification
exec --no-startup-id ~/.config/i3/screentime # Activity tracker

set $ignore #ff00000


+ 66
- 0
config/i3/screentime View File

@@ -0,0 +1,66 @@
#!/usr/bin/env python3

"""
Logs what window is in focus
"""

import csv
import datetime
import os
import typing

import i3ipc


class ScreenTime:
FIELDS = ["date", "type", "class", "role", "instance", "title"]

def write(self, line: typing.Dict) -> None:
now = datetime.datetime.now()
line["date"] = now.timestamp()

print("WROTE", line)
with open(self.csv_path, 'a') as typedfd:
writer = csv.DictWriter(typedfd, fieldnames=self.FIELDS)
writer.writerow(line)

def on_window_event(self, _: i3ipc.connection.Connection,
e: i3ipc.events.WindowEvent) -> None:
focused = self.i3.get_tree().find_focused()
self.write({
"type": "window_" + e.change,
"class": focused.window_class,
"role": focused.window_role,
"title": focused.window_title,
"instance": focused.window_instance,
})

def on_mode_event(self, _: i3ipc.connection.Connection,
e: i3ipc.events.ModeEvent) -> None:
self.write({
"type": "mode",
"title": e.change
})

def __init__(self) -> None:
self.i3 = i3ipc.Connection()
self.i3.on(i3ipc.Event.WINDOW, self.on_window_event)
self.i3.on(i3ipc.Event.MODE, self.on_mode_event)

self.csv_path = os.path.join(
os.path.expanduser(
os.getenv('XDG_CACHE_PATH', '~/.cache/')),
'screentime.csv')
if not os.path.isfile(self.csv_path):
with open(self.csv_path, 'w') as typedfd:
writer = csv.DictWriter(typedfd, fieldnames=self.FIELDS)
writer.writeheader()
self.write({"type": "start"})

def main(self) -> None:
self.i3.main()


if __name__ == '__main__':
ST = ScreenTime()
ST.main()

+ 2
- 2
config/mpd/mpd.conf View File

@@ -266,7 +266,7 @@ input {
#
audio_output {
type "httpd"
name "Musique de Geoffrey"
name "geoffrey-music-httpd"
encoder "vorbis" # optional, vorbis or lame
port "8600"
bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
@@ -280,7 +280,7 @@ audio_output {
#
audio_output {
type "pulse"
name "Musiques de Geoffrey"
name "geoffrey-music-pulse"
## server "remote_server" # optional
## sink "remote_server_sink" # optional
}

+ 2
- 2
config/shell/shenv View File

@@ -83,8 +83,8 @@ direnv XDG_CONFIG_HOME "$HOME/.config"
export XDG_DATA_DIRS="/usr/local/share/:/usr/share/"
export XDG_CONFIG_DIRS="/etc/xdg"
direnv XDG_CACHE_HOME "$HOME/.cache"
direnv XDG_RUNTIME_DIR "$HOME/.local/run"
chmod 0700 "$XDG_RUNTIME_DIR"
# Please don't set XDG_RUNTIME_DIR as it
# screw with user daemons such as PulseAudio

# Path


Loading…
Cancel
Save