Small collection of Bash scripts to launch functionalities in folders when new files appear, such as optimizing videos, converting images or battery management.
Go to file
2023-05-05 13:34:56 +02:00
assets Update social 2023-05-02 16:03:10 +02:00
bash-folders-battery-hook.sh Update bash script 2023-05-03 19:42:05 +02:00
bash-folders-image-to-webp.sh Update name 2023-04-19 19:32:45 +02:00
bash-folders-video-optimizer.sh Remove native notification 2023-05-02 16:18:26 +02:00
LICENSE Initial commit 2023-03-21 19:06:21 +01:00
README.md Update README.md 2023-05-05 13:17:03 +02:00

Bash folders

Bash folder brand

Collection of Bash scripts to execute functionalities in folders, such as:


Video optimizer

Folder that watches when new videos are added and optimizes them.

Requirements

  • ffmpeg

Example in Debian.

sudo apt install ffmpeg

Install

curl -o bash-folders-video-optimizer https://raw.githubusercontent.com/tanrax/bash-folders/main/bash-folders-video-optimizer.sh && chmod +x bash-folders-video-optimizer && sudo rm -f /usr/local/bin/bash-folders-video-optimizer && sudo mv bash-folders-video-optimizer /usr/local/bin && echo "🎉 Successfully installed! 🎉"

Test

bash-folders-video-optimizer --help

Run

bash-folders-video-optimizer --folder [folder to watch]

Example.

mkdir optimizer
bash-folders-video-optimizer --folder optimizer

And leave a video that you want to optimize in the folder optimizer.

Start at operating system startup

Option 1: Service

Create a file in /etc/systemd/system/bash-folders-video-optimizer.service with the following content.

[Unit]
Description=Folder that watches when new videos are added and optimizes them.

[Service]
Restart=always
RestartSec=5
User=[user]
ExecStart=bash-folders-video-optimizer --folder [folder to watch]

[Install]
WantedBy=multi-user.target

Edit it to your needs.

Recharge services.

sudo systemctl daemon-reload

And activate it.

sudo systemctl enable bash-folders-video-optimizer
sudo systemctl start bash-folders-video-optimizer

Option 2: Cron

Open.

crontab -e

Add to document.

@reboot bash-folders-video-optimizer --folder [folder to watch] >/dev/null 2>&1 &

Battery hook

Folder with custom scripts to be launched in different battery states.

The filename of the scripts, or your custom scripts, must be:

  • discharging: When the battery is in use.
  • charging: When the battery is charging.
  • low: When it reaches the low percentage. Default 15.
  • high: When it reaches the high percentage. Default 85.
  • full: When the battery is full.

They must have execution permissions. If any of them do not exist, they will be ignored.

Install

curl -o bash-folders-battery-hook https://raw.githubusercontent.com/tanrax/bash-folders/main/bash-folders-battery-hook.sh && chmod +x bash-folders-battery-hook && sudo rm -f /usr/local/bin/bash-folders-battery-hook && sudo mv bash-folders-battery-hook /usr/local/bin && echo "🎉 Successfully installed! 🎉"

Test

bash-folders-battery-hook --help

Run

bash-folders-battery-hook --folder [folder path]

Example.

mkdir battery-scripts

bash-folders-battery-hook --folder battery-scripts

Inside the folder all the empty scripts will be created, which you will have to edit to include the instructions in Bash.

Start at operating system startup

Option 1: Service

Create a file in /etc/systemd/system/bash-folders-battery-hook.service with the following content.

[Unit]
Description=Folder with custom scripts to be launched in different battery states.

[Service]
Restart=always
RestartSec=5
User=[user]
ExecStart=bash-folders-battery-hook --folder [folder path]

[Install]
WantedBy=multi-user.target

Edit it to your needs.

Now you will need the script to run every so often to check the battery status. The best solution is to create a timer.

Create a file in /etc/systemd/system/bash-folders-battery-hook.timer with the following content.

[Unit]
Description=Folder with custom scripts to be launched in different battery states every minute.

[Timer]
OnCalendar=*-*-* *:*:00
Persistent=true

[Install]
WantedBy=timers.target

Recharge services.

sudo systemctl daemon-reload

And activate it.

sudo systemctl enable bash-folders-battery-hook.timer
sudo systemctl start bash-folders-battery-hook.timer

Option 2: Cron

Open.

crontab -e

Add to document.

* * * * * bash-folders-battery-hook --folder [folder path]

Image to WebP

Folder that watches when new image (PNG or JPEG) are added and transform to WebP format.

Requirements

  • webp

Example in Debian.

sudo apt install webp

Install

curl -o bash-folders-image-to-webp https://raw.githubusercontent.com/tanrax/bash-folders/main/bash-folders-image-to-webp.sh && chmod +x bash-folders-image-to-webp && sudo rm -f /usr/local/bin/bash-folders-image-to-webp && sudo mv bash-folders-image-to-webp /usr/local/bin && echo "🎉 Successfully installed! 🎉"

Test

bash-folders-image-to-webp --help

Run

bash-folders-image-to-webp --folder [folder to watch]

Example.

mkdir image-to-webp-converter
bash-folders-image-to-webp --folder image-to-webp-converter

And leave a image that you want to optimize in the folder image-to-webp-converter.

Start at operating system startup

Option 1: Service

Create a file in /etc/systemd/system/bash-folders-image-to-webp.service with the following content.

[Unit]
Description=Folder that watches when new image (PNG or JPEG) are added and transform to WebP format.

[Service]
Restart=always
RestartSec=5
User=[user]
ExecStart=bash-folders-image-to-webp --folder [folder to watch]

[Install]
WantedBy=multi-user.target

Edit it to your needs.

Recharge services.

sudo systemctl daemon-reload

And activate it.

sudo systemctl enable bash-folders-image-to-webp
sudo systemctl start bash-folders-image-to-webp

Option 2: Cron

Open.

crontab -e

Add to document.

@reboot bash-folders-image-to-webp --folder [folder to watch] >/dev/null 2>&1 &

Development

Check syntax

shellcheck [script]