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.
I haven’t done this myself but maybe you can script something with OBS? It is made for screencapturing and it seems to work with Wayland according to the Arch Wiki.
It’s been a while since I looked into details of wayland, but one thing I recall is that a lot of things depend on the specific compositor / desktop environment you are using.
X is very open: you can easily query open windows etc, while on wayland things are less standardized / more hidden.
Which compositor do you use?
Kinda cool, interesting. Thanks for the suggestion.
It’s not really suitable for me though. This kinda takes periodic screenshots and makes them searchable.
I need to know what I was doing at different times. So really it’s just the periodic screenshots that I need and the search functionality isn’t useful to me.
“searchable” in the sense that you can ask an AI what you were doing at certain times.
I am pretty sure you could ask it to generate per project timetables from that.
Or at the very least, you can use the codebase to see how they take continuous screenshots. Especially since all the wayland code is clearly seperated in the fork.
Yeah there’s a video on the upstream project page that shows how it works. It’s notreally “AI” so much as OCR. Like if you search “wayland” it will show you the times at which that word was visible on the screen.
I don’t think it accepts a “prompt” like “make a list of activities for me”.
I did have a quick look at how they’re doing it. It’s just a different python lib.
I did however discover, from looking at this project, that the sound and animation from taking a screenshot originates from gnome, not the thing taking the screen shot. There’s some notes in this project explaining how to disable that.
With this in mind, other screenshot apps like flameshot will be fine.
I don’t think it accepts a “prompt” like “make a list of activities for me”.
Ah I see, my bad.
Another idea that might or might not work is filming a video at 0.0011 fps (1 frame every 15 min). Not sure if it accepts values that low or handles them correctly.
wf-recorder --framerate=0.0011 --file=timelapse.mkv
Or maybe do a 1 frame video on a loop
while true; do wf-recorder -f frame_$(date +%Y%m%d_%H%M%S).png -t 1 sleep 900 done
As that will use a different interface it might not flash the screen. Just random ideas, no clue if they would work.
Good luck with your project.
Ok, this is both impressive and hilarious.
You can escape Windows, but you can never escape Recall.
No screen captures AFAIK (although it might be doable with a custom watcher), but maybe https://activitywatch.net/ can help.
What’s your window manager?
You can use grim+slurp to take screenshots. Scroll down to the Wayland section for a snippet:
https://wiki.archlinux.org/title/Screen_capture
I keep my desktop muted so I am not sure if it makes a sound or not. If you wrap the commands into a timer loop it will do what you’re looking for.
For the window title you can likely use your window manager’s IPC calls to get the active window title or list of windows on a workspace. My wayland experience is limited to hyprland and if you haven’t found a solution when I get home from work I can post the jank utility I made in rust to output the data I needed for my Eww bar.
I’m using a default debian / gnome setup, so that’s mutter + wayland.
Grim seems to error with
compositor doesn't support wlr-screencopy-unstable-v1
which I don’t really understand. Searching that term suggests that gnome will never support wlr-anything.
@null_dot
Haven’t ever done this in wayland, but in X, I always used toxdotool
to grab the title of the active window. I’d guess you could do the same using one of the wayland alternatives likeydotool
,wlrctl
,dotool
, or whatever else is out there. And something likegrim
to grab an image of the window.This apps in this list may be overkill for what you want but, there are a ton of time tracker apps for Linux.
25 Best Free and Open Source Linux GUI Time Tracking Software
I don’t use any personally, sorry, I don’t have any recommendations specifically.
Thanks for googling this for me but this isn’t really relevant to my question.
There’s nothing like you ask. Most time tracker apps are just a calendar where you write manually how much time you spent on something. So you can use something like Kimai, or use a paper calendar and write on it.
But text log of the active window and a screencap, that’s the stuff of Microsoft Recall AI nightmares that Linux developers wouldn’t be keen to implement. What you’re asking is intrusive AI for others. Maybe you need to actually learn to be punctual and write down your activities, or simply, buy a Snapdragon laptop with Windows AI on it. And even then, that info stays with the AI, I don’t think it’s shared much with the user.
Most time tracker apps
That’s not what I asked for.
use a paper calendar and write on it.
You don’t really understand time tracking, I see.
But text log of the active window and a screencap, that’s the stuff of Microsoft Recall AI nightmares
How is logging the title of the active window an AI nightmare ?
the stuff of Microsoft Recall AI nightmares that Linux developers wouldn’t be keen to implement
Like this you mean? Yes, surely that doesn’t exist.
Maybe you need to actually learn to be punctual and write down your activities
Maybe you need to try being… a bit less of a dick ?
buy a Snapdragon laptop with Windows AI on it
Kinda speechless at this one. Well done.
Chatgt says build a scrip using a few tools. xdotool and scrot. I don’t know if this code is good or not. And some hashes are making markdown headers. How do we paste code on here?
#!/bin/bash
Set interval (in seconds)
INTERVAL=10
Output directories
LOG_FILE=“$HOME/window_log.txt” IMG_DIR=“$HOME/window_snaps” mkdir -p “$IMG_DIR”
while true; do # Get timestamp TS=$(date “+%Y-%m-%d_%H-%M-%S”)
# Get active window title TITLE=$(xdotool getactivewindow getwindowname 2>/dev/null) # Fallback if title is empty if [ -z "$TITLE" ]; then TITLE="(No active window)" fi # Take screenshot IMG_FILE="$IMG_DIR/snap_$TS.png" scrot "$IMG_FILE" # Log entry echo "$TS | $TITLE" >> "$LOG_FILE" # Wait before next iteration sleep $INTERVAL
done
@BCsven
This is so much less helpful than just posting “I don’t know” or “beats me”.First, if you’re gonna post code, put it in a code block. And nevermind you not knowing if the ““code is good””, it doesn’t even adhere to the question that was asked; the two programs you suggested are not even wayland compatible tools.
@null_dotThere is an etiquette to not just copy and pasting from ChatGPT. The fact you couldn’t verify the code yourself is a bigger issue.
I understand you may have thought this may help, it really does not.
Maybe ask chatgpt whether xdotool is compatible with wayland.
I get that you’re trying to help but, this is not the way.
Look into EMACS and Org-Mode, it can help you do just that.
emacs can periodally log the focussed window title ?