From 37cb59610e43fe28794bbc73500c59a561157662 Mon Sep 17 00:00:00 2001 From: thecookingsenpai Date: Mon, 25 Dec 2023 13:27:34 +0100 Subject: [PATCH] Initial commit --- README.md | 65 +++++++++++++++++++++++++++++++++++++++++++++ frappuccino.service | 15 +++++++++++ hots.sh | 5 ++++ inhibitor.sh | 2 ++ install.sh | 63 +++++++++++++++++++++++++++++++++++++++++++ uninstall.sh | 3 +++ 6 files changed, 153 insertions(+) create mode 100644 README.md create mode 100644 frappuccino.service create mode 100644 hots.sh create mode 100644 inhibitor.sh create mode 100644 install.sh create mode 100644 uninstall.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..3169124 --- /dev/null +++ b/README.md @@ -0,0 +1,65 @@ +# Frappuccino + +A dirty response to dev's skill issues in installing Caffeine + +## What is Frappuccino? + +Following the Caffeine, Espresso and so on trend, Frappuccino is probably the most lightweight way to keep your Linux system awake forcefully. + +## Why not Caffeine? + +I am aware that this is probably just a problem of mine, but I can't seem to install Caffeine on Arch for some obscure reason so I wrote my version. + +## How does it work? + +Frappuccino is just a quick wrapper around systemd-inhibit that creates a service and an infinite 2-seconds loop logging in the service logs. +The logging loop is the argument to systemd-inhibit that will thus prevent any shutdown/sleep/hibernation to happen. + +## Is it safe / compatible with ...? + +Honestly, who knows. But being an innocent script and provided you don't have any other frappuccino named services, the worse that can happens is that it does not work. + +## Installation + +Clone or download this repository in your /home/username/ directory. + + cd + git clone https://github.com/thecookingsenpai/frappuccino + cd frappuccino + +Now give the installation file the right permissions and execute it: + + chmod +x install.sh + ./install.sh + +Done! + +## Management + +To inspect the service: + + sudo systemctl status frappuccino + +This should show you some logs lines with the most recent timestamp. + +To start/stop the service: + + sudo systemctl start frappuccino + sudo systemctl stop frappuccino + sudo systemctl restart frappuccino + +The service is automatically enabled for autostart. You can remove it with: + + sudo systemctl disable frappuccino + +And, vice versa: + + sudo systemctl enable frappuccino + +## Performances and workload + +Having a 2 seconds sleep, this script is basically guaranteed to have 0 impact on performance even on small systems like a Raspberry Pi 0 (on which I am aware isn't needed but you get the point). + +## License + +This software is released under the CC BY-NC-SA 4.0 License. diff --git a/frappuccino.service b/frappuccino.service new file mode 100644 index 0000000..b6d2930 --- /dev/null +++ b/frappuccino.service @@ -0,0 +1,15 @@ + +[Unit] +Description=Frappuccino daemon +After=network.target + +[Service] + +# Service execution +################### + +ExecStart="/home/USERNAMEPLACEHOLDER/frappuccino/inhibitor.sh" + +[Install] +WantedBy=multi-user.target + diff --git a/hots.sh b/hots.sh new file mode 100644 index 0000000..d29a405 --- /dev/null +++ b/hots.sh @@ -0,0 +1,5 @@ +#!/bin/bash +while true; do + echo "$(date) : I am once again wandering this empty slot..." + sleep 2 +done diff --git a/inhibitor.sh b/inhibitor.sh new file mode 100644 index 0000000..ca9cdb4 --- /dev/null +++ b/inhibitor.sh @@ -0,0 +1,2 @@ +#!/bin/bash +systemd-inhibit /home/tcsenpai/frappuccino/hots.sh diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..7bf2024 --- /dev/null +++ b/install.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +USER=$(whoami) + +if ! [ -d "/home/$USER/frappuccino" ]; then + echo "ERROR: You must have frappuccino in:" + echo "/home/$USER/frappuccino" + exit +fi + +echo "Hello, $USER! Let's install Frappuccino and keep your system wide awake!" + +if [ -f /etc/systemd/system/frappuccino.service ]; then + echo "You have already a frappuccino.service installed." + echo "To force this new installation, execute:" + echo "sudo rm -rf /etc/systemd/system/frappuccino.service" + exit +fi + +PRIVILEGES=$(id -u) + +if [ $PRIVILEGES -eq 0 ]; then + echo "You are using root. This is supported but not necessary. We advise you to use your user." + echo "Press CTRL+C in 5 seconds to exit..." + sleep 7 +fi + +echo "Everything seems to be nice and packed! Let's a go!" +echo "First, we need to check that we have the needed files" + +if ! [ -f "./hots.sh" ]; then + echo "Missing hots.sh file. Please redownload." + exit +fi + +if ! [ -f "./inhibitor.sh" ]; then + echo "Missing inhibitor.sh file. Please redownload." + exit +fi + +if ! [ -f "./frappuccino.service" ]; then + echo "Missing frappuccino.service. Please redownload." + exit +fi + +echo "We do have the files indeed." +echo "Setting up the service..." + +echo "Requesting privileges..." +sudo echo "Privileges acquired" + +cp ./frappuccino.service ./frappuccino.service.bak +sed -i "s/USERNAMEPLACEHOLDER/$(whoami)/g" frappuccino.service +sudo mv frappuccino.service /etc/systemd/system/frappuccino.service +cp ./frappuccino.service.bak ./frappuccino.service +sudo systemctl daemon-reload +sudo systemctl enable frappuccino.service +sudo systemctl start frappuccino.service + +echo "If everything is alright, you should see a green 'active' text now." +sleep 2 +sudo systemctl status frappuccino.service + diff --git a/uninstall.sh b/uninstall.sh new file mode 100644 index 0000000..331ff73 --- /dev/null +++ b/uninstall.sh @@ -0,0 +1,3 @@ +#!/bin/bash +sudo systemctl disable frappuccino.service +sudo rm -rf /etc/systemd/system/frappuccino.service