Cannot install AW on my laptop using macOS Catalina

This is very weird but I previously had AW working on my macOS Catalina. I disconnected from my iCloud drive and lost all my files from my desktop and it’s impossible to download whole folders from iCloud Drive VERY STUPID APPLE!!!.

I cloned the submodules again from the AW GitHub and did everything I previously did to get AW working on my system:

  1. Create a virtual environment
  2. upgrade pip with ‘pip install --upgrade pip’
  3. run ‘pip install poetry’
  4. install rust outside of virtual environment with ‘curl --proto ‘=https’ --tlsv1.2 sSf https://sh.rustup.rs | sh’
  5. change to nightly build with ‘rustup default nightly’
  6. run ‘make build DEV=true’ to build activity watch
  7. You can then start it with aw-qt

I will say I have tried building this like 200 times so idk if that accounts for something but I’m in a dead lock now and I’m actually using this for a class.

When I run make build DEV=true it seems to build fine although I get some warning messages like:

warning: Prop "windowBucketId" should define at least its type (vue/require-prop-types) at src/visualizations/SunburstClock.vue:114:34:
  112 | export default {
  113 |   name: "aw-sunburst-clock",
> 114 |   props: ['date', 'afkBucketId', 'windowBucketId'],
      |                                  ^
  115 | 
  116 |   data: () => {
  117 |     return {


3 warnings found.

Module Warning (from ./node_modules/eslint-loader/index.js):
warning: Prop "periodusage_arr" should define at least its type (vue/require-prop-types) at src/visualizations/PeriodUsage.vue:24:11:
  22 | export default {
  23 |   name: "aw-periodusage",
> 24 |   props: ['periodusage_arr', 'link_prefix'],
     |           ^
  25 |   watch: {
  26 |     "periodusage_arr": function() {
  27 |       periodusage.update(this.$el, this.periodusage_arr, this.link_prefix);


warning: Prop "link_prefix" should define at least its type (vue/require-prop-types) at src/visualizations/PeriodUsage.vue:24:30:
  22 | export default {
  23 |   name: "aw-periodusage",
> 24 |   props: ['periodusage_arr', 'link_prefix'],
     |                              ^
  25 |   watch: {
  26 |     "periodusage_arr": function() {
  27 |       periodusage.update(this.$el, this.periodusage_arr, this.link_prefix);


2 warnings found.

You may use special comments to disable some warnings.
Use // eslint-disable-next-line to ignore the next line.
Use /* eslint-disable */ to ignore all warnings in a file.
 warning  in ./src/mixins/asyncErrorCaptured.js

Module Warning (from ./node_modules/thread-loader/dist/cjs.js):

/Users/rafeeqshodeinde/Desktop/repos/activitywatch/aw-server/aw-webui/src/mixins/asyncErrorCaptured.js
  18:11  warning  Unexpected aliasing of 'this' to local variable  @typescript-eslint/no-this-alias
  20:10  warning  Unexpected var, use let or const instead         no-var
  21:7   warning  Unexpected var, use let or const instead         no-var
  24:47  warning  Use the rest parameters instead of 'arguments'   prefer-rest-params


⠙  Building for production...Starting type checking service...
Using 1 worker with 2048MB memory limit
⠦  Building for production...Browserslist: caniuse-lite is outdated. Please run next command `npm update`
⠧  Building for production...

 WARNING  Compiled with 2 warnings                                                               2:07:52 AM

 warning  

asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
  js/chunk-963d1074.2e592250.js (429 KiB)
  js/chunk-vendors.c93cbf59.js (699 KiB)

 warning  

entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
  index (937 KiB)
      css/chunk-vendors.0bec1faa.css
      js/chunk-vendors.c93cbf59.js
      css/index.d3e85b6d.css
      js/index.d82706e6.js
✖ 4 problems (0 errors, 4 warnings)

—After building, I get this traceback error when I run aw-qt and I’m not sure why either.

(venv) rafeeqshodeinde@rafeeqs-mbp repos % aw-qt
2020-02-28 01:53:12 [INFO ]: Starting module aw-server  (aw_qt.manager:49)
2020-02-28 01:53:12 [INFO ]: Macos: Disable dock icon  (aw_qt.manager:67)
2020-02-28 01:53:12 [INFO ]: Starting module aw-watcher-window  (aw_qt.manager:49)
2020-02-28 01:53:12 [INFO ]: Macos: Disable dock icon  (aw_qt.manager:67)
Traceback (most recent call last):
  File "/Users/rafeeqshodeinde/Desktop/repos/venv/bin/aw-qt", line 11, in <module>
    load_entry_point('aw-qt', 'console_scripts', 'aw-qt')()
  File "/Users/rafeeqshodeinde/Desktop/repos/activitywatch/aw-qt/aw_qt/main.py", line 19, in main
    _manager.autostart(args.autostart_modules)
  File "/Users/rafeeqshodeinde/Desktop/repos/activitywatch/aw-qt/aw_qt/manager.py", line 162, in autostart
    self.start(module_name)
  File "/Users/rafeeqshodeinde/Desktop/repos/activitywatch/aw-qt/aw_qt/manager.py", line 149, in start
    self.modules[module_name].start()
  File "/Users/rafeeqshodeinde/Desktop/repos/activitywatch/aw-qt/aw_qt/manager.py", line 73, in start
    self._process = subprocess.Popen(exec_cmd, universal_newlines=True, startupinfo=startupinfo)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py", line 1702, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'aw-watcher-window'
(venv) rafeeqshodeinde@rafeeqs-mbp repos % WARNING:root:Could not import pymongo, not available as a datastore backend
2020-02-28 01:53:13 [INFO ]: Using storage method: peewee  (aw_server.main:26)
2020-02-28 01:53:13 [INFO ]: Starting up...  (aw_server.main:31)
2020-02-28 01:53:13 [INFO ]: Using database file: /Users/rafeeqshodeinde/Library/Application Support/activitywatch/aw-server/peewee-sqlite.v2.db  (aw_datastore.storages.peewee:90)
 * Serving Flask app "aw-server" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
2020-02-28 01:53:13 [ERROR]: [Errno 48] Address already in use  (aw_server.server:93)
Traceback (most recent call last):
  File "/Users/rafeeqshodeinde/Desktop/repos/venv/bin/aw-server", line 11, in <module>
    load_entry_point('aw-server', 'console_scripts', 'aw-server')()
  File "/Users/rafeeqshodeinde/Desktop/repos/activitywatch/aw-server/aw_server/main.py", line 32, in main
    _start(host=settings.host, port=settings.port,
  File "/Users/rafeeqshodeinde/Desktop/repos/activitywatch/aw-server/aw_server/server.py", line 94, in _start
    raise e
  File "/Users/rafeeqshodeinde/Desktop/repos/activitywatch/aw-server/aw_server/server.py", line 91, in _start
    app.run(debug=testing, host=host, port=port, request_handler=FlaskLogHandler, use_reloader=False, threaded=False)
  File "/Users/rafeeqshodeinde/Desktop/repos/venv/lib/python3.8/site-packages/flask/app.py", line 990, in run
    run_simple(host, port, self, **options)
  File "/Users/rafeeqshodeinde/Desktop/repos/venv/lib/python3.8/site-packages/werkzeug/serving.py", line 1012, in run_simple
    inner()
  File "/Users/rafeeqshodeinde/Desktop/repos/venv/lib/python3.8/site-packages/werkzeug/serving.py", line 956, in inner
    srv = make_server(
  File "/Users/rafeeqshodeinde/Desktop/repos/venv/lib/python3.8/site-packages/werkzeug/serving.py", line 822, in make_server
    return BaseWSGIServer(
  File "/Users/rafeeqshodeinde/Desktop/repos/venv/lib/python3.8/site-packages/werkzeug/serving.py", line 701, in __init__
    HTTPServer.__init__(self, server_address, handler)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/socketserver.py", line 452, in __init__
    self.server_bind()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/server.py", line 137, in server_bind
    socketserver.TCPServer.server_bind(self)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/socketserver.py", line 466, in server_bind
    self.socket.bind(self.server_address)
OSError: [Errno 48] Address already in use

PLEASE HELP ME.

This seems to be the only critical warning in the logs when I skimmed through it and this error often comes when activitywatch is already running but you try to start it twice.

Are you sure that it’s not already running? If so, try to restart your computer to be sure that you try to start everything from a clean slate.

FileNotFoundError: [Errno 2] No such file or directory: 'aw-watcher-window'

That also seems to suggest that aw-watcher-window couldn’t be found, maybe it wasn’t built correctly? In any case it seemed to have caused aw-qt to crash, since the following line starts with your prompt.

Also, I took the liberty of formatting your post to make the logs easier to read.

1 Like

Hi, thanks for the response. Is there a way, other than just deleting the cloned AW folder and virtual environment, where I can remove all things activity watch that may have been created on my machine when I build it so I can start this whole process from the scratch??

Why not do just this? Sounds like the best way to do it?

Hi Johan,

I did delete the cloned AW folder and virtual environment, multiple times actually to do the whole process from scratch. I was more referring to any AW files that may have been generated during the build process into other locations on my machine other than just the clone folder and virtual environment. I was assuming that there were other lower-level files created which the user may not necessarily be aware of which helps the whole program run properly.

Let me know if this is the wrong idea. Thank you!

If you installed it from source with a virtual environment this is the only thing that’s needed.
If you installed it without an virtual environment it’s different and if you installed it from a release you only need to remove the activitywatch folder with all applications.

The only other thing that will be left will be the configs and the database, but if you intend to reinstall you shouldn’t need to remove that.

Crazy thing! But it seems like I have it working now. I made a mistake in typing make build=DEV and it seemed to be working. I haven’t tried building it again but we’ll see how it goes.

Then I have another question. I don’t know if this is possible but I want to see if you think there is a solution. So I have an instance of aw-server running on a cloud. So instead of my machine saving my usage data locally on my machine with the aw-server on it, I want it to connect to the aw-server instance I have running on the cloud. I know I probably have to change how and what server the client communicates/connects with. Will I have to change the client.py file to redirect the buckets??

It’s possible, but please don’t do it because the transmission would be unencrypted so it’s a serious privacy issue. If you have a server on the local network it’s slightly less of an issue, but personally I still wouldn’t recommend it. It’s easy to change the destination ip in the aw-client.ini configuration file.

Yes, I kind of assumed that. But this will just be for personal software tweaking purposes. My team did find the aw-client.ini File but that’s on Linux. I can’t seem to locate it on the Mac. Can you help with the navigation??

The .ini file should be in ~/Application\ Support/activitywatch/ on macOS.