https://github.com/bra1ndump/kill-my-mac
Sick and tired of staying up late because of your mac? Schedule it to be shutdown during sleep hours
https://github.com/bra1ndump/kill-my-mac
discipline health mac routine schedule sleep wind-down
Last synced: 12 months ago
JSON representation
Sick and tired of staying up late because of your mac? Schedule it to be shutdown during sleep hours
- Host: GitHub
- URL: https://github.com/bra1ndump/kill-my-mac
- Owner: bra1nDump
- Created: 2024-04-13T20:00:45.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-28T20:35:41.000Z (almost 2 years ago)
- Last Synced: 2025-03-23T23:51:24.269Z (about 1 year ago)
- Topics: discipline, health, mac, routine, schedule, sleep, wind-down
- Language: Shell
- Homepage: https://bra1ndump.com/blog/product-kill-pc-at-12
- Size: 1.21 MB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# kill my mac, let me sleep
Are you sick and tired of **staying up late because of your mac?** This script suggests you to wind down using customizable voice annoucements. If your mac is still on during sleep hours - **this script will shut your mac down for you.** You are welcome.
## How it works
- Your computer will be shut down during hours **12am - 6am**
- 2.5hr, 1hr, and 10 minutes before the sleep hours start the computer will warn you, if your sound is on
- Open an issue if you want customizable sleep hours, for now edit the [shutdown-job.sh](./shutdown-job.sh)
## How to install:
> Warning: Before you install, please understand that it might be hard to turn the computer back on during sleep hours. Every time the computer is turned on, you will have 1 minute to disable it from shutting down your computer.
In your terminal run:
```bash
echo "Cloning the repo"
git clone https://github.com/bra1nDump/kill-my-mac.git
cd kill-my-mac
echo "Setting up"
./install.sh
```
## How to make sure it works correctly?
TODO: Currently you can change the sleep hours to be closer to current time in the [shutdown-job.sh](./shutdown-job.sh) script. You can also change the warning times.
## I want a more agressive version!
I got you! How agressive?
- To make sure I get asked for the password / touch id after every sleep - search in System Settings for Lock Screen and set to 'Immediately' 
- To make the computer shut down instead of sleeping, uncomment piece of [shutdown-job.sh](./shutdown-job.sh), this line: `osascript -e 'tell application "System Events" to shut down'`
## How to uninstall?
You can do either option:
- In terminal run `rm ~/Library/LaunchAgents/com.bra1ndump.kill-my-mac.plist`, this will prevent the script from running. You can run `./install.sh` to enable again
- In the directory where you cloned the project run `./uninstall.sh`. Same as above.
- Open the [shutdown-job.sh](./shutdown-job.sh) script where you installed this project and comment out the last if statement that has this line: `osascript -e 'tell application "System Events" to shut down'`. Uncomment it again to re-enable
## How does it actually work?
- It installs a [LaunchAgent](./templates/com.bra1ndump.shutdown-during-sleep-hours.plist) that runs shutdown-job every minute
- You can find the agent configuration here `ls ~/Library/LaunchAgents`
- [shutdown-job.sh](./shutdown-job.sh)
- If computer is already asleep (uses `pmset`), do nothing
- If close to sleep hours, warns the user
- If in sleep hours, shut down using apple script `osascript -e 'tell application "System Events" to shut down'`
# TODO:
- Post about it
- TELL MY FRIENDS TO TRY IT
# Later:
- Package with Homebrew tap
- More user trust because of the brew prefix
- Easier upgrading (not sure if the taps get auto-upgraded though)
- Allow configuring sleep time - will need to symlink the cli bash script that will update the configurations so its accessible from anywhere
- Prompted:
- Choose a time when you want to ensure your computer is not running
- Format is: 00:20-06:00, no spaces, period start, period end, 24 hr format
- In this example starting at 20 past midnight until 6, if your computer is not asleep, it will be forcefully shut down
- Enter the time - default is 00:00-06:00 (midnight until 6am): Get
- How can I make editing the configuration difficult?
- By allowing to skip the shutdown once by looking at a message to self you wrote when setting this up, and forcing to look at it for 5 minutes before allowing to skip
- Maybe switch to python? Since it will be installed by brew, I can just set python as a dependency. Its installed everywhere already so does not really matter. Bash is fucking ridiculous. Functions are unlike in any other programming language
# Alternatives:
- Work on the discipline in other ways
- `pmset repeat shutdown TWRFS 11:00:00`
- Almighty https://indiegoodies.com/almighty - many different shortcuts