Protect your eyes from eye strain using this simple and beautiful, yet extensible break reminder
See the codeProtect your eyes from eye strain using this simple and beautiful, yet extensible break reminder.
Visit the official site: https://slgobinath.github.io/safeeyes/ for more details.
Usage:
safeeyes [OPTION…]
Help Options:
-h, --help Show help options
--help-all Show all help options
--help-gapplication Show GApplication options
Application Options:
-a, --about show the about dialog
-s, --settings show the settings dialog
-t, --take-break take a break now
-b, --short-break take a short break now
-l, --long-break take a long break now
-d, --disable disable the currently running Safe Eyes instance
-e, --enable enable the currently running Safe Eyes instance
-q, --quit quit the running Safe Eyes instance and exit
--status print the status of running Safe Eyes instance and exit
--debug start Safe Eyes in debug mode
--version show program's version number and exit
Safe Eyes is available on the official repositories of many popular the distributions.
It is also available in Ubuntu PPA, Arch AUR and Python PyPI. You can choose any installation source and install on any Linux system with Python 3.
The Official PPA for Safe Eyes hosts the latest (as much as allowed by dependencies) version of Safe Eyes for Ubuntu 22.04 and above.
sudo add-apt-repository ppa:safeeyes-team/safeeyes
sudo apt update
sudo apt install safeeyes
On older versions of Ubuntu, an older version of Safe Eyes is available on the official repositories.
sudo apt install safeeyes
yay -S safeeyes
sudo emerge -av x11-misc/safeeyes
sudo apt-get install safeeyes
You can install with pip
pip3 install --user safeeyes
For smartpause in Wayland, install the python3-pywayland package (in case the installer does not automatically install it as a dependency). For smart pause plugin in X11, you may have to install the latest xprintidle from: alonid/xprintidle.
Alternatively, use the Flatpak version, which comes preinstalls with dependencies and features automatic updates.
sudo zypper refresh
sudo zypper install safeeyes
sudo apk add safeeyes
Enable the Linux container (which is actually Debian), and install Safe Eyes with
sudo apt install safeeyes
While no tray icon is available, if you run the app, it will function in the background and will show breaks as usual. You can also change the settings by clicking on the Safe Eyes icon from the menu while the app is running, or by running the command safeeyes -s.
Warning: Many plugins and features don't work well in the flatpak. We recommend that you use one of the native packages listed above. Flatpak-only bugs should be reported at https://github.com/flathub/io.github.slgobinath.SafeEyes.
flatpak install flathub io.github.slgobinath.SafeEyes
Ensure to meet the following dependencies:
gir1.2-notify-0.7gir1.2-gtk-4.0ffmpeg or pipewire (any of them works)python3 (>= 3.10.0)python3-gipython3-babelpython3-croniterpython3-packagingpython3-xlib (required on x11)python3-pywayland (provides smartpause in Wayland) or xprintidle (provides smartpause in x11).To install Safe Eyes from PyPI:
sudo pip3 install safeeyes
After installation, restart your system to update the icons,
To run from source:
git clone https://github.com/slgobinath/safeeyes.git
cd SafeEyes
python3 -m safeeyes
Safe Eyes installers install the required icons to /usr/share/icons/hicolor. When you run Safe Eyes from source without, some icons may not appear.
Note that on Wayland, this may still not be enough to get window icons working properly, as Wayland requires the .desktop file to match the running application, which is hard to do when running from source. If at all possible, prefer using an installed package.
Some Linux systems like CentOS do not have matching dependencies available in their repository (of course you can use the flatpak there). In such systems, you can install and use Safe Eyes in a Python virtual environment.
Install the necessary dependencies for CentOS 7
sudo yum install python3-devel cairo cairo-devel cairomm-devel libjpeg-turbo-devel pango pango-devel pangomm pangomm-devel gobject-introspection-devel cairo-gobject-devel
Create a virtual environment in your home folder
mkdir ~/safeeyes
cd ~/safeeyes/
python3 -m venv venv
source venv/bin/activate
pip3 install safeeyes
Start Safe Eyes from the terminal
cd ~/safeeyes & source venv/bin/activate
python3 -m safeeyes
For more details, please check the issue: #329
This method has the same caveats about icons/window icons as running from source.
Thirdparty plugins are available at another GitHub repository: safeeyes-plugins. More details about how to write your own plugin and how to install third-party plugin are available there.
When adding new translatable strings in the source code, make sure to run python validate_po.py --extract to add them to the translation template. You will need to install python3-polib for this.
Examples for translatable strings are _("This is a string") in Python code, or <property name="label" translatable="yes">This is a label</property> in Glade/xml files.
To ensure the new strings are well-formed, you can use python validate_po.py --validate.
To ensure that the coding and formatting guidelines are followed, install ruff and run ruff check and ruff format --check to check for issues, as well as ruff check --fix and ruff format to autofix them.
To ensure that any types are correct, install mypy and run mypy safeeyes.
To ensure that the tests still pass, install pytest and run pytest.
The last four checks are also run in CI, so a PR must pass all the tests for it to be mmerged.
It is also possible to use dependency groups to install the needed dependencies. When using a new enough version of pip, run pip install --group types to install all dependencies to run the type check.
The available dependency groups can be found in the pyproject.toml file.
update-po.sh to generate new translation files (which will be eventually updated by translators). Commit and push the changes to the master branch.master branchpython3 -m safeeyes to make sure nothing is broken./update-version.sh "version.number.number" "New version with shiny new feature".
To manually change the version number, update the following places (Open the project in VSCode and search for the current version):
./update-version.sh script mentioned above, but you may want to manually add more lines to describe what's new in this release.mastermaster to releaseFirst check if translations for your language are already available on Weblate, which is the cloud based translation platform we use.
GNU General Public License v3
136 followers · starred Jul 2020
37 followers · starred Sep 2023
233 followers · starred Oct 2020
83 followers · starred May 2022
Protect your eyes from eye strain using this simple and beautiful, yet extensible break reminder
See the codeProtect your eyes from eye strain using this simple and beautiful, yet extensible break reminder.
Visit the official site: https://slgobinath.github.io/safeeyes/ for more details.
Usage:
safeeyes [OPTION…]
Help Options:
-h, --help Show help options
--help-all Show all help options
--help-gapplication Show GApplication options
Application Options:
-a, --about show the about dialog
-s, --settings show the settings dialog
-t, --take-break take a break now
-b, --short-break take a short break now
-l, --long-break take a long break now
-d, --disable disable the currently running Safe Eyes instance
-e, --enable enable the currently running Safe Eyes instance
-q, --quit quit the running Safe Eyes instance and exit
--status print the status of running Safe Eyes instance and exit
--debug start Safe Eyes in debug mode
--version show program's version number and exit
Safe Eyes is available on the official repositories of many popular the distributions.
It is also available in Ubuntu PPA, Arch AUR and Python PyPI. You can choose any installation source and install on any Linux system with Python 3.
The Official PPA for Safe Eyes hosts the latest (as much as allowed by dependencies) version of Safe Eyes for Ubuntu 22.04 and above.
sudo add-apt-repository ppa:safeeyes-team/safeeyes
sudo apt update
sudo apt install safeeyes
On older versions of Ubuntu, an older version of Safe Eyes is available on the official repositories.
sudo apt install safeeyes
yay -S safeeyes
sudo emerge -av x11-misc/safeeyes
sudo apt-get install safeeyes
You can install with pip
pip3 install --user safeeyes
For smartpause in Wayland, install the python3-pywayland package (in case the installer does not automatically install it as a dependency). For smart pause plugin in X11, you may have to install the latest xprintidle from: alonid/xprintidle.
Alternatively, use the Flatpak version, which comes preinstalls with dependencies and features automatic updates.
sudo zypper refresh
sudo zypper install safeeyes
sudo apk add safeeyes
Enable the Linux container (which is actually Debian), and install Safe Eyes with
sudo apt install safeeyes
While no tray icon is available, if you run the app, it will function in the background and will show breaks as usual. You can also change the settings by clicking on the Safe Eyes icon from the menu while the app is running, or by running the command safeeyes -s.
Warning: Many plugins and features don't work well in the flatpak. We recommend that you use one of the native packages listed above. Flatpak-only bugs should be reported at https://github.com/flathub/io.github.slgobinath.SafeEyes.
flatpak install flathub io.github.slgobinath.SafeEyes
Ensure to meet the following dependencies:
gir1.2-notify-0.7gir1.2-gtk-4.0ffmpeg or pipewire (any of them works)python3 (>= 3.10.0)python3-gipython3-babelpython3-croniterpython3-packagingpython3-xlib (required on x11)python3-pywayland (provides smartpause in Wayland) or xprintidle (provides smartpause in x11).To install Safe Eyes from PyPI:
sudo pip3 install safeeyes
After installation, restart your system to update the icons,
To run from source:
git clone https://github.com/slgobinath/safeeyes.git
cd SafeEyes
python3 -m safeeyes
Safe Eyes installers install the required icons to /usr/share/icons/hicolor. When you run Safe Eyes from source without, some icons may not appear.
Note that on Wayland, this may still not be enough to get window icons working properly, as Wayland requires the .desktop file to match the running application, which is hard to do when running from source. If at all possible, prefer using an installed package.
Some Linux systems like CentOS do not have matching dependencies available in their repository (of course you can use the flatpak there). In such systems, you can install and use Safe Eyes in a Python virtual environment.
Install the necessary dependencies for CentOS 7
sudo yum install python3-devel cairo cairo-devel cairomm-devel libjpeg-turbo-devel pango pango-devel pangomm pangomm-devel gobject-introspection-devel cairo-gobject-devel
Create a virtual environment in your home folder
mkdir ~/safeeyes
cd ~/safeeyes/
python3 -m venv venv
source venv/bin/activate
pip3 install safeeyes
Start Safe Eyes from the terminal
cd ~/safeeyes & source venv/bin/activate
python3 -m safeeyes
For more details, please check the issue: #329
This method has the same caveats about icons/window icons as running from source.
Thirdparty plugins are available at another GitHub repository: safeeyes-plugins. More details about how to write your own plugin and how to install third-party plugin are available there.
When adding new translatable strings in the source code, make sure to run python validate_po.py --extract to add them to the translation template. You will need to install python3-polib for this.
Examples for translatable strings are _("This is a string") in Python code, or <property name="label" translatable="yes">This is a label</property> in Glade/xml files.
To ensure the new strings are well-formed, you can use python validate_po.py --validate.
To ensure that the coding and formatting guidelines are followed, install ruff and run ruff check and ruff format --check to check for issues, as well as ruff check --fix and ruff format to autofix them.
To ensure that any types are correct, install mypy and run mypy safeeyes.
To ensure that the tests still pass, install pytest and run pytest.
The last four checks are also run in CI, so a PR must pass all the tests for it to be mmerged.
It is also possible to use dependency groups to install the needed dependencies. When using a new enough version of pip, run pip install --group types to install all dependencies to run the type check.
The available dependency groups can be found in the pyproject.toml file.
update-po.sh to generate new translation files (which will be eventually updated by translators). Commit and push the changes to the master branch.master branchpython3 -m safeeyes to make sure nothing is broken./update-version.sh "version.number.number" "New version with shiny new feature".
To manually change the version number, update the following places (Open the project in VSCode and search for the current version):
./update-version.sh script mentioned above, but you may want to manually add more lines to describe what's new in this release.mastermaster to releaseFirst check if translations for your language are already available on Weblate, which is the cloud based translation platform we use.
GNU General Public License v3
136 followers · starred Jul 2020
37 followers · starred Sep 2023
233 followers · starred Oct 2020
83 followers · starred May 2022