Add an "Exclude" list

Just installed AW for the first time last night to play with it and immediately identified something desperately (IMO) needed.

There are many programs that it logs that I simply don’t need logged. i.e. I often keep my security camera app loaded on a second monitor all day long; I don’t need that logged. Similarly, I have a clipboard extender app running that it logs; I don’t need that logged either. I have many others I’d like not logged, as it just clutters up the actual ‘valuable’ info that I want to see.

Adding a simple textbox where we can add program names (.exe name) to that it won’t log anymore, would be perfect. :+1:

I will prefer custom string match rules like categories.


We recently integrated to aw-server a way to save other data than standard events.

With this change we could possibly in the web-ui add a way to add a interface to add window titles which should not be logged which aw-watcher-window could read when it starts up (the possibility for it to re-read it would also be good though).

This solution would be good from a security stand point because it would never ever save anything which matches these rules, in contrast to different solutions proposed before where we redact the window titles when querying activity in the web-ui.

1 Like

When I’m searching something on the web with incognito mode on, I probably don’t want aw to track this. I could just disable the watcher but auto exclude of some might be very useful.


Yes! Please implement a way to auto exclude incognito/private sessions in Firefox/Chrome/etc.


+1 request for this feature!

I use Firefox both for work and leisure, so firefox.exe is always the top entry on my application activity list. I want to be able to remove it from that list. I already categorise browser domains, as it’s personally more meaningful data.

1 Like

I have search the documentation but could not find how to exclude folder or program’s

+1 from me to. I’d like to exclude certain apps/websites/etc from tracking too.

I’m also looking for something like this, chrome.exe tends to cover my category sunburst, it would be great to exclude it from that so I can view the specific categories i.e. this time spent in Messenger, these websites are uncategorised etc. Something to exclude an application from this would be great if possible!

Yeah, for now my personal best effort is to make a category called “Exclude” that I can leave out of my filter views, but it’s certainly not an ideal workaround…

I am using this to track how many hours I have in games, for games that don’t have that built in. (cough cough minecraft) I don’t want it tracking how much I use firefox.

You can create a subcategory under chrome which will give details about which websites are used in a hierarchical manner.

+1 from me too.
Perhaps the current Categorization system could use an extension? Each rule could have an option to be “Hidden” that we can check and then system would not show them in summaries/etc?

+1. I would also like the ability to specify for some programs that they do not write the title to the history. For example, for OneNote it is not necessary and even harmful, because passwords, secret keys get into title and then in the file logs.


I learned the ActivityWatch schema, and we don’t have server side category data.
I create this feature request Server Side Category. It may potentially be used to serverside blocking of the events from AW-Watchers. Any sensitive information will never be stored. 1

I have AW on my Mac to logging the “loginwindow”. That’s the Mac login when I’m away from keyboard.
Although afk, it’s still counted in Uncategorized time. This creates a false report. I have to find and delete those “loginwindow” records

1 Like

i think API can be used for now, ive had success with this script,

import requests
from concurrent.futures import ThreadPoolExecutor

BUCKET = "aw-watcher-window_Titan"
POOL = ThreadPoolExecutor(max_workers=10)
CONTAINS = "Private"
events = requests.get(f'http://localhost:5600/api/0/buckets/{BUCKET}/events?limit=1000').json()

def delete(e):
    resp =  requests.delete(f'http://localhost:5600/api/0/buckets/{BUCKET}/events/{e["id"]}')
    if resp.status_code != 200:
        print("failed to delete event", e['data']['title'])
        print("deleted event", e['data']['title'])

for e in events:
    if "Private" in e['data']['title']:
        POOL.submit(delete, e)

code is prettymuch self explanatory just replace your bucket and pattern to delete unwanted events. tested for firefox private window.