๐ผ Previously @github, @basecamp, @rails.
I'm not available for hire on sites like Upwork.
A simple menubar app for OSX and macOS that tracks how long you've been actively using your computer
Home Page: http://awaremac.com
I primarily use Aware to make sure that I'm getting up from my desk once an hour, and it's perfect for when I'm writing code and using my machine. The only place it falls short is in meetings - often I'm not touching my keyboard and mouse if I'm on a Zoom call, which means the timer will reset.
Is there any way to detect if either the microphone is being actively used or if the camera is on? I understand if this is not possible as it might require access to the microphone/camera permissions which could be a privacy issue. As a fallback, is it possible to detect if an application is full-screen and not reset the timer if so? (though I can see this causing other issues with video playback/screensavers etc.)
Right now idle time is set to 120s. Should users have a preference to change that?
While watching long youtube videos or any kind of video, if there weren't any user activity for more than a couple of minutes, the timer reset to 0, defeating the purpose of tracking user's time with the computer
Looking at the code, it appears that in the updateButton function, there appears to be a condition that if the user was not entering any keys, moving, clicking, or scrolling with the mouse for more than 120 seconds (or 2 minutes) the timer resets
Removing this
if (self.sinceUserActivity() > userIdleSeconds) {
timerStart = Date()
idle = true
} ...
does seems to stop the timer from resetting, however I do not know the implication that might be involved in removing that if block
Any suggestions on how to solve this?
@josh I've been working on some icon updates for the next release, what are your thoughts on this type of thing?
Trying to convey time passing on a computer without being so literal.
โ+drag should allow you to reorder the item in the menu bar.
Not sure why this just doesn't work by default. Maybe its as easy as enabling some allowReorder = true
flag. Need to research.
CC: @pmarsceill
When you try to visit the mac app store from your homepage from the UK, you get the following error when it opens the app store.
The item you requested is not currently available in the UK store
I'd love to recommend it, but an app that has to log keystrokes and mouse moves to work, but is revoked from the app store will naturally raise red flags in people's minds!
Aware is pretty popular outside the USA. Maybe some things could be done to improve the localized experience.
After reviewing #18, I'm wondering if we need a custom domain.
Right now, our gh-pages
branch would be hosted at https://josh.github.io/aware
. We'd use this page as the "Marketing URL" and "Support URL"s.
The domain also affects our "Bundle ID" which is a reverse domain, currently com.github.josh.Aware
. Once the App is published, we can no longer change this.
CC: @pmarsceill
Some things it might include:
NSDefaults
I think it's time to cave and finally add a proper Settings screen as a foundation for a couple other features.
I've already have a stubbed out DEBUG only Settings popover in visionOS that can be enabled to everyone. Though, I'm still going back and forth on the short vs long gesture and how to do a hover state that doesn't look terrible.
macOS has some established settings window code already we should be using. Since we don't have a classic menu bar as the app runs without an icon, we'll need to add a "Preferences..." to our little icon menu bar extra content. Also add a command+, hotkey.
I think this specific issue could be closed once both platform have at least an empty settings view we can start adding things to.
@pmarsceill if you're interested
I've just found this app and started using it as a nice replacement for Awareness, which isn't maintained. Thanks!!
One very useful feature that Awareness has is simple sound notifications at configurable times (e.g., every hour). I understand this may be out of the original scope of this app, but it would be an amazing feature to have.
UPD: I see this feature request is already addressed in #66.
Explore ways to make the visionOS window even smaller.
visionOS only lets you resize the window so small. Maybe that's something I'm doing that limits that. But it's weird you can trick it to go smaller by physically walking around and moving it somewhere else and it will stay small. But you gotta get up! If you move it forward and backward on that plane, visionOS does this thing where it scales the window bigger as it moves further.
https://developer.apple.com/documentation/visionos/positioning-and-sizing-windows
When I unlock Mac OS after locking it using CMD + CONTROL + Q
Aware's timer is not reset to 0m.
Note: The computer isn't put to sleep, just locked.
Timer reset to 0m when I unlock Mac Os.
Timer not been reset.
CMD + CONTROL + Q
MacBook Pro (15-Inch, 2017)
Mac OS version: 10.13.4
Let me know if you need anything else.
Aware/Aware/macOS/MenuBar.swift
Lines 20 to 21 in 86baeaf
Expose this idle timeout in settings #70
Is the release itself the .app file? I tried renaming the extracted zip, but no dice.
@josh should I move the /Assets
directory from master
to another orphan branch so it doesn't get published with each release? I feel like it should be here, but probably not on master
.
I have a hot corner setup to put the display to sleep whenever I walk away from my desk. It doesn't do a full sleep and therefore doesn't trigger the sleep event to clear the timer.
Research CGDisplayIsAsleep
API.
Add shortcut to toggle "Start at login" from menu.
In the Settings view #70,
we should add a button for "Export Logs" that gathers up the OSLog data, makes a zip, and does the system "Share sheet" dance so people can save it to Finder or email (to us).
Resources:
Might not be too much to do, but do a audit of the app using VoiceOver feature.
Gotta do it.
Expand the scope of Aware from tracking how long you are using a device, to how long you are NOT using a device.
Keep a few of the previous time states in memory. Then we should show "time since last reset" somewhere. On Mac, this can serve as a way to show how long your break was. On Vision Pro, it could tell you how long it's been sitting in a cabinet not really being used.
Aware/Aware/visionOS/ActivityMonitor.swift
Lines 17 to 18 in 86baeaf
uses both "app refresh" and "processing" tasks. I think we only need one, but I'm not sure which schedules the most reliably so I ended up adding both. If we had better log data #72 when real world usage, I think we figure out which to go with.
Depends on #70.
Now our custom duration formatting is more aligned with Swift's FormatStyle
, it should be pretty easy to swap up the format styles at these call sites.
Aware/Aware/macOS/MenuBar.swift
Line 50 in 86baeaf
Aware/Aware/visionOS/TimerTextView.swift
Line 17 in 86baeaf
This test case makes use of a few other styles we could expose as user settings:
Aware/AwareTests/FormatStylesTests.swift
Lines 55 to 62 in 86baeaf
The main two I kinda like are our current "1h 15m" and the more compact "1:15". Then for both, support adding seconds. I mostly want seconds cause I would turn that on while debugging the app hehe.
There might be some other styles by tweaking .components(style: .condensedAbbreviated, fields: [.hour, .minute])
.
Settings page would write this to UserDefaults via the @AppStorage
magic. Then we can run that back in the views. We probably just need to define a custom enum of the options we want to expose.
@pmarsceill maybe an interesting UI question, should this be a picker between 4 styles? Or two styles then "include seconds" toggle.
Expose more grace timeouts in settings #70
Aware/Aware/visionOS/ActivityMonitor.swift
Lines 24 to 34 in 86baeaf
Probably not all of these but backgroundGracePeriod
and lockGracePeriod
, I think.
Display a notification every time 30 minutes (or any adjustable time) is reached to remind the user to take a break.
It would be great to also display the total time one spend on the day.
Small marketing idea, when the app is available, we should try to promote it on Product Hunt.
CC: @pmarsceill
The icon is cool, but it could be cooler with a little more polish. I'd like to do the following before our official launch.
There should be some visual indication that the timer has paused and started idling. Possible implementations:
As a reminder, in June the App Store Review Guidelines were updated to require a privacy policy for all new apps and app updates as part of the app review process. Starting October 3, 2018, App Store Connect will require a privacy policy for all new apps and app updates before they can be submitted for distribution on the App Store. In addition, your appโs privacy policy link or text will only be editable when you submit a new version of your app.
To add or edit your privacy policy for the App Store:
- Go to My Apps in App Store Connect, and click on your app.
- Under App Store, click on App Information.
- In the top right corner, add your privacy policy link for iOS apps or macOS apps, or enter text directly for tvOS apps.
- Click Save.
Up to 5 screenshots can be posted. 1 is required.
(Reminder from Slack conversation with @pmarsceill)
Research ways to detect video playback to avoid resetting the timer. Users often do not interact with the keyboard while watching a video. So typically the timer is reset as the user appears to be idle while watching the screen.
See this user's report #51
Expected result:
Implementation requirements:
Process
or NSTask
).A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.