{"id":13554498,"url":"https://github.com/slgobinath/SafeEyes","last_synced_at":"2025-04-03T07:31:28.532Z","repository":{"id":38272859,"uuid":"49256317","full_name":"slgobinath/SafeEyes","owner":"slgobinath","description":"Protect your eyes from eye strain using this simple and beautiful, yet extensible break reminder","archived":false,"fork":false,"pushed_at":"2025-03-25T17:48:32.000Z","size":7570,"stargazers_count":1529,"open_issues_count":97,"forks_count":168,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-04-02T18:08:06.372Z","etag":null,"topics":["eye-strain","health","linux","safe-eyes","utility"],"latest_commit_sha":null,"homepage":"http://slgobinath.github.io/SafeEyes/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/slgobinath.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"slgobinath","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"https://www.paypal.com/paypalme/slgobinath"}},"created_at":"2016-01-08T07:15:22.000Z","updated_at":"2025-04-02T06:18:13.000Z","dependencies_parsed_at":"2023-02-18T04:01:10.002Z","dependency_job_id":"0a4b5fe7-e564-4131-a61b-1d48b20c872f","html_url":"https://github.com/slgobinath/SafeEyes","commit_stats":{"total_commits":783,"total_committers":169,"mean_commits":4.633136094674557,"dds":0.59514687100894,"last_synced_commit":"45a633d31fc16f2c3fc2da23bc598b7a10aabff0"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slgobinath%2FSafeEyes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slgobinath%2FSafeEyes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slgobinath%2FSafeEyes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slgobinath%2FSafeEyes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slgobinath","download_url":"https://codeload.github.com/slgobinath/SafeEyes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246956453,"owners_count":20860440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eye-strain","health","linux","safe-eyes","utility"],"created_at":"2024-08-01T12:02:49.059Z","updated_at":"2025-04-03T07:31:28.524Z","avatar_url":"https://github.com/slgobinath.png","language":"Python","funding_links":["https://github.com/sponsors/slgobinath","https://www.paypal.com/paypalme/slgobinath"],"categories":["Python","Productivity Tools"],"sub_categories":["Time Management"],"readme":"\u003cimg src=\"https://raw.githubusercontent.com/slgobinath/SafeEyes/master/safeeyes/platform/icons/hicolor/64x64/apps/io.github.slgobinath.SafeEyes.png\" align=\"left\"\u003e\n\n# Safe Eyes\n\n[![Release](https://img.shields.io/github/v/release/slgobinath/SafeEyes)](https://github.com/slgobinath/SafeEyes/releases)\n[![PyPI version](https://badge.fury.io/py/safeeyes.svg)](https://badge.fury.io/py/safeeyes)\n[![Debian](https://badges.debian.net/badges/debian/unstable/safeeyes/version.svg)](https://packages.debian.org/unstable/safeeyes)\n[![AUR](https://img.shields.io/aur/version/safeeyes)](https://aur.archlinux.org/packages/safeeyes)\n[![Flathub](https://img.shields.io/flathub/v/io.github.slgobinath.SafeEyes)](https://flathub.org/apps/details/io.github.slgobinath.SafeEyes)\n[![Translation status](https://hosted.weblate.org/widgets/safe-eyes/-/translations/svg-badge.svg)](https://hosted.weblate.org/engage/safe-eyes/?utm_source=widget)\n[![Awesome Humane Tech](https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg?sanitize=true)](https://github.com/humanetech-community/awesome-humane-tech)\n\nProtect your eyes from eye strain using this simple and beautiful, yet extensible break reminder.\n\nVisit the official site: https://slgobinath.github.io/SafeEyes/ for more details.\n\n## Safe Eyes command-line arguments\n\n```text\nusage: safeeyes [-h] [-a | -d | -e | -q | -s | -t] [--debug] [--version]\n\nSafe Eyes protects your eyes from eye strain (asthenopia) by reminding you to\ntake breaks while you're working long hours at the computer.\n\noptional arguments:\n  -h, --help        show this help message and exit\n  -a, --about       show the about dialog\n  -d, --disable     disable the currently running safeeyes instance\n  -e, --enable      enable the currently running safeeyes instance\n  -q, --quit        quit the running safeeyes instance and exit\n  -s, --settings    show the settings dialog\n  -t, --take-break  take a break now\n  --debug           start safeeyes in debug mode\n  --status          print the status of running safeeyes instance and exit\n  --version         show program's version number and exit\n```\n\n## Installation guide\n\nSafe Eyes is available on the official repositories of many popular the distributions.\n\n\u003ca href=\"https://repology.org/project/safeeyes/versions\"\u003e\n    \u003cimg src=\"https://repology.org/badge/vertical-allrepos/safeeyes.svg\" alt=\"Packaging status\" align=\"right\"\u003e\n\u003c/a\u003e\n\nIt 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.\n\n\n### Ubuntu, Linux Mint and other Ubuntu Derivatives\n\nThe [Official PPA for Safe Eyes](https://launchpad.net/~safeeyes-team/+archive/ubuntu/safeeyes) hosts the latest version of safeeyes **for Ubuntu 22.04 and above**. \n```bash\nsudo add-apt-repository ppa:safeeyes-team/safeeyes\nsudo apt update\nsudo apt install safeeyes\n```\n\nOn older versions of Ubuntu, an older version of Safe Eyes is available on the official repositories.\n```bash\nsudo apt install safeeyes\n```\n\n### Arch\n\n```bash\nyay -S safeeyes\n```\n\n### Gentoo\n\n```bash\nsudo emerge -av x11-misc/safeeyes\n```\n\n### Debian\n\n```bash\nsudo apt-get install safeeyes\n```\n\n### Fedora\n If you want to use Smart Pause plugin, install the latest xprintidle from: [alonid/xprintidle](https://copr.fedorainfracloud.org/coprs/alonid/xprintidle/)\n```bash\nsudo dnf install python3-psutil python3-packaging cairo-devel python3-devel gobject-introspection-devel cairo-gobject-devel\nsudo pip3 install safeeyes\nsudo gtk-update-icon-cache /usr/share/icons/hicolor\n```\n\nWe are looking for an official package maintainer for Fedora. Please [contact us](https://github.com/slgobinath/SafeEyes/issues/611) if you are interested.\n\n### OpenSUSE Tumbleweed\n\n```bash\nsudo zypper refresh\nsudo zypper install safeeyes\n```\n\n### Alpine Linux\n\n```bash\nsudo apk add safeeyes\n```\n\n### Flatpak\n**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.\n```bash\nflatpak install flathub io.github.slgobinath.SafeEyes\n```\n\n### Other Linux \u0026 Run from source\n\nEnsure to meet the following dependencies:\n\n- gir1.2-notify-0.7\n- python3-babel\n- python3-croniter\n- python3-psutil\n- python3-packaging\n- python3-xlib\n- xprintidle (optional)\n- wlrctl (wayland optional)\n- Python 3.10+\n\n**To install Safe Eyes:**\n\n```bash\nsudo pip3 install safeeyes\n```\n\nAfter installation, restart your system to update the icons,\n\n**To run from source:**\n\n```bash\ngit clone https://github.com/slgobinath/SafeEyes.git\ncd SafeEyes\npython3 -m safeeyes\n```\n\nSafe Eyes installers install the required icons to `/usr/share/icons/hicolor`. When you run Safe Eyes from source without, some icons may not appear.\n\n\n### Install in a virtual environment\n\nSome Linux systems like CentOS do not have matching dependencies available in their repository. In such systems, you can install and use Safe Eyes in a Python virtual environment.\n\n1. Install the necessary dependencies for CentOS 7\n\n    ```bash\n    sudo yum install python3-devel dbus dbus-devel cairo cairo-devel cairomm-devel libjpeg-turbo-devel pango pango-devel pangomm pangomm-devel gobject-introspection-devel cairo-gobject-devel\n    ```\n\n2. Create a virtual environment in your home folder\n\n    ```bash\n    mkdir ~/safeeyes\n    cd ~/safeeyes/\n\n    python3 -m venv venv\n    source venv/bin/activate\n    pip3 install safeeyes\n    ```\n\n3. Start Safe Eyes from the terminal\n\n    ```bash\n    cd ~/safeeyes \u0026 source venv/bin/activate\n    python3 -m safeeyes\n    ```\n\nFor more details, please check the issue: [#329](https://github.com/slgobinath/SafeEyes/issues/329)\n\n## Features\n\n- Remind you to take breaks with exercises to reduce RSI\n- Disable keyboard during breaks\n- Notification before and after breaks\n- Smart pause if system is idle\n- Multi-screen support\n- Customizable user interface\n- RPC API to control externally\n- Command-line arguments to control the running instance\n- Customizable using plug-ins\n\n## Third-party Plugins\n\nThirdparty plugins are available at another GitHub repository: [safeeyes-plugins](https://github.com/slgobinath/safeeyes-plugins). More details about how to write your own plugin and how to install third-party plugin are available there.\n\n## Local development\n\nWhen 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.\n\nExamples for translatable strings are `_(\"This is a string\")` in Python code, or `\u003cproperty name=\"label\" translatable=\"yes\"\u003eThis is a label\u003c/property\u003e` in Glade/xml files.\n\nTo ensure the new strings are well-formed, you can use `python validate_po.py --validate`.\n\nTo ensure that the coding and formatting guidelines are followed, install [ruff](https://docs.astral.sh/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.\n\n## How to Release?\n\n0. Run `update-po.sh` to generate new translation files (which will be eventually updated by translators). Commit and push the changes to the master branch.\n1. Checkout the latest commits from the `master` branch\n2. Run `python3 -m safeeyes` to make sure nothing is broken\n3. Update the Safe Eyes version in the following places (Open the project in VSCode and search for the current version):\n    - [pyproject.toml](https://github.com/slgobinath/SafeEyes/blob/master/pyproject.toml#L4)\n    - [pyproject.toml](https://github.com/slgobinath/SafeEyes/blob/master/pyproject.toml#L35)\n    - [io.github.slgobinath.SafeEyes.metainfo.xml](https://github.com/slgobinath/SafeEyes/blob/master/safeeyes/platform/io.github.slgobinath.SafeEyes.metainfo.xml#L56)\n    - [about_dialog.glade](https://github.com/slgobinath/SafeEyes/blob/master/safeeyes/glade/about_dialog.glade#L74)\n4. Update the [changelog](https://github.com/slgobinath/SafeEyes/blob/master/debian/changelog) (for Ubuntu PPA release)\n5. Commit the changes to `master`\n6. Create a pull-request from `master` to `release`\n7. Merge the PR to release **with merge commit** (Important to merge with merge commit)\n\n## How you can help improving translation of Safe Eyes\n\nFirst check if translations for your language are already available on [Weblate](https://hosted.weblate.org/engage/safe-eyes/), which is the cloud based translation platform we use. \n\n- If the language is already there, feel free to add new translations or improve the existing ones.\n- If it is not there, please [open an issue](https://github.com/slgobinath/SafeEyes/issues) in Github so that we can add your language to Weblate.\n\n## License\n\nGNU General Public License v3\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslgobinath%2FSafeEyes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslgobinath%2FSafeEyes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslgobinath%2FSafeEyes/lists"}