62
submitted 1 week ago* (last edited 6 days ago) by null_dot@lemmy.dbzer0.com to c/linux@lemmy.ml

I'm self employed. I need to record how much time I spend on whatever task for whatever client.

Sounds simple, but I'm terrible at it. I always get to the end of the day without having recorded anything and not knowing what I've actually done.

Basically, I'd like to create a text log of the active window title, and take a screen cap.

I'd like to do this periodically as in every 15 minutes or so.

For the text log I just haven't been able to achieve this at all.

For the screen caps I can use flameshot to take a screenshot from the CLI, but it makes a sound and shows an animation which is sub-optimal.

Any suggestions of where to look much appreciated.

Edit: I'm not asking for a time tracking app. I want something to log the active window title and take a screen cap so I can figure out what I was doing and write it in my time tracking app.

Edit: I'm narrowing in on a solution.

Firstly, a lot of previously available solutions don't work because of recently implemented security features in gnome.

You need to enter unsafe mode by entering this:

global.context.unsafe_mode = true

in the looking glass tool which you can access by running lg in the alt + f2 dialog

thereafter, this can grab the active window title for you:

gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "global.display.focus_window.title"
you are viewing a single comment's thread
view the rest of the comments
[-] null_dot@lemmy.dbzer0.com 1 points 6 days ago

No I'm not especially loyal to gnome.

How would I achieve this with hyprland ?

[-] communist@lemmy.frozeninferno.xyz 1 points 5 days ago* (last edited 5 days ago)
#!/usr/bin/env bash

# get hyprland event socket path
HIS=$HYPRLAND_INSTANCE_SIGNATURE
EVENT_SOCK="$XDG_RUNTIME_DIR/hypr/$HIS/.socket2.sock"

# fallback / error check
if [ -z "$HIS" ] || [ ! -S "$EVENT_SOCK" ]; then
  echo "Error: cannot locate Hyprland event socket at $EVENT_SOCK" >&2
  exit 1
fi

logfile="${HOME}/hypr_focus.log"

# function to handle a line from the event stream
handle_event() {
  local line="$1"
  # check for activewindow event
  if [[ $line == activewindow* ]]; then
    # format: activewindow>>CLASS,TITLE
    # strip prefix
    local payload=${line#activewindow>>}
    # split on comma (first comma)
    local cls="${payload%%,*}"
    local title="${payload#*,}"
    local ts
    ts=$(date '+%Y-%m-%d %H:%M:%S')
    echo "$ts — $title (class: $cls)" >> "$logfile"
  fi
  # optionally handle activewindowv2 if you want address instead
  # if [[ $line == activewindowv2* ]]; then
  #   ...
  # fi
}

# listen to the socket
socat -u "UNIX-CONNECT:$EVENT_SOCK" - | while IFS= read -r line; do
  handle_event "$line"
done

honestly if you're willing to do some work you can make hyprland do almost anything

**disclaimer i did not test this much

edit: forgot about the screenshot part, should be easy to add though, just add screenshotting everytime focus changes with grim or whatever

[-] MonkderVierte@lemmy.zip 1 points 5 days ago

compared to gnome, absolutely.

[-] eshep@social.trom.tf 1 points 6 days ago

@communist @null_dot Hyprland has the screenshotting functionality builtin.

hyprctl dispatch capture window

this post was submitted on 07 Oct 2025
62 points (100.0% liked)

Linux

57274 readers
704 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 6 years ago
MODERATORS