Skip to main content

Forces shutdown once timer runs out or force quits specified applications if timer is interrupted.

Project description

Forceful Timer

Forces shutdown once timer runs out or force quits specified applications if timer is interrupted. Plays sound notifications once timer is almost out.

Motivation

Every played a video game for way too long in one session? Yeah, me neither cough cough. This program allows you to set time till when your system will shutdown. By default, you will get notified via sound once the time limit is close to hitting zero. Allowing you to save and quit a singleplayer game before it's too late.

It is not meant to be used on remote servers or to specify a scheduled shutdown. Rather, it's meant as a timer that will force stop whatever you are doing.

Prerequisites

Linux

In order to use all features you need wmctrl. On Debian like systems run

sudo apt install wmctrl

Windows

As of now, it's not fully supported. You can not use it to auto close applications.

Installtion

If you have pipx, run

pipx install forceful-timer

otherwise you can just run

pip install forceful-timer

Usage

To run the script with default settings, you can run

forceful-timer

OR

ftimer

which will shutdown the system after 60 minutes. The output will look something like this

Shutting down in:   0%|                        | 2/3600 [00:02<1:00:03,  1.00s/it]

You can cancel the process with CTRL + C. In order to bind applications to the cancellation process you can add them via -a <app_name>. This will close the app if you cancel the shutdown. To list all running apps run -l.

usage: main.py [-h] [-a APP] [-l] [--sound-theme {big-sur,chime,mario,material,pokemon,sonic,zelda}] [minutes]

Shut down the system after the given time period.

positional arguments:
  minutes               time in minutes till shutdown

options:
  -h, --help            show this help message and exit
  -a APP, --app APP     the app that will get closed if the timer is interrupted
  -l, --list-apps       list all running applications and exit.
  --sound-theme {big-sur,chime,mario,material,pokemon,sonic,zelda}
                        the theme to use to play sounds, see chime

Examples

Let's say I want to play minecraft for 45 minutes and I am in a call with a friend. I could run

ftimer 45 -a minecraft -a discord

which would bind both minecraft and discord to the cancellation process. If I cancel the shutdown process, both of them will be closed.

Note that for this to work, you will need to know the name of both minecraft and discord. In order to get a list of running applications, run

ftimer -l

which will print out something like

('0x01200003', 'xfce4-panel')
('0x01000003', 'Desktop')
('0x02e00003', 'forceful-timer · PyPI - Brave')

you don't have to care about the first entry (it's mainly for debugging), all you have to care about is to match the name somewhat closely.

Development

If you want to contribute to this repo or simple want to develop your own repo locally, install it through

Linux

git clone https://github.com/PraxTube/timed-shutdown.git
cd timed-shutdown
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -e .

Windows

git clone https://github.com/PraxTube/timed-shutdown.git
cd timed-shutdown
python -m venv venv
venv\Scripts\activate.bat
pip install -r requirements.txt
pip install -e .

once you installed and set up your virtual environment, you can use the script and make changes to it.

To contribute, feel free to simple fork and open up a pull request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

forceful-timer-0.1.1.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

forceful_timer-0.1.1-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file forceful-timer-0.1.1.tar.gz.

File metadata

  • Download URL: forceful-timer-0.1.1.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for forceful-timer-0.1.1.tar.gz
Algorithm Hash digest
SHA256 bad065153c69c9d79ad881454aa7a2c2550fbbea9af71c6d756b8b4d8d684d13
MD5 cfaf8e6920b6fd602bb5c832a7f08674
BLAKE2b-256 0317a907a36e808bd49519e50e0198757dbcfb43a91de4e6184b1790f726721e

See more details on using hashes here.

File details

Details for the file forceful_timer-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for forceful_timer-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d7985f75b596fa1cb448226def534cd134486b5cce754c0120fa114f9e600276
MD5 327c749c6556869465ab50e9fccc4ec6
BLAKE2b-256 5a406f720ddb9a81cb8d1712271e5907b5fe5b892bc48e947047a4cf65803b6f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page