diff --git a/.gitignore b/.gitignore index 0a19790..a92495f 100644 --- a/.gitignore +++ b/.gitignore @@ -172,3 +172,6 @@ cython_debug/ # PyPI configuration file .pypirc + +# Flatpak builder +.flatpak-builder/ diff --git a/MANIFEST.in b/MANIFEST.in index ead7aba..7ab5cc0 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1 +1,2 @@ include yafi/ui/*.ui +include yafi/yafi.gresource diff --git a/README.md b/README.md index e9b7502..05a5808 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,40 @@ YAFI is another GUI for the Framework Laptop Embedded Controller. It is written in Python with a GTK4 Adwaita theme, and uses the `CrOS_EC_Python` library to communicate with the EC. -## Features +It has support for fan control, temperature monitoring, LED control, and battery limiting. + +## Installation + +### udev Rules (MUST READ) + +To allow YAFI to communicate with the EC, you need to copy the [`60-cros_ec_python.rules`](https://github.com/Steve-Tech/YAFI/blob/main/60-cros_ec_python.rules) file to `/etc/udev/rules.d/` and reload the rules with `sudo udevadm control --reload-rules && sudo udevadm trigger`. + +### Flatpak + +Build and install the Flatpak package with `flatpak-builder --install --user build au.stevetech.yafi.json`. + +You can also create a flatpak bundle with `flatpak-builder --repo=repo build au.stevetech.yafi.json` and install it with `flatpak install --user repo au.stevetech.yafi.flatpak`. + +### Pip + +#### System Dependencies + +The following system dependencies are required for `PyGObject`: + +- `python3-dev` +- `libcairo2-dev` +- `libgirepository-2.0-dev` +- `gir1.2-adw-1` + +There's probably more, but I happened to have them installed. + +#### Install + +Install the package with `pip install git+https://github.com/Steve-Tech/YAFI.git`. + +Pipx is also supported. + +## Screenshots ### Fan Control and Temperature Monitoring @@ -24,15 +57,3 @@ It is written in Python with a GTK4 Adwaita theme, and uses the `CrOS_EC_Python` ### Hardware Info ![Hardware Page](docs/4-hardware.png) - -## Installation - -### udev Rules (MUST READ) - -To allow YAFI to communicate with the EC, you need to copy the `60-cros_ec_python.rules` file to `/etc/udev/rules.d/` and reload the rules with `sudo udevadm control --reload-rules && sudo udevadm trigger`. - -### Flatpak - -Build and install the Flatpak package with `flatpak-builder --install --user build au.stevetech.yafi.json`. - -You can also create a flatpak bundle with `flatpak-builder --repo=repo build au.stevetech.yafi.json` and install it with `flatpak install --user repo au.stevetech.yafi.flatpak`. diff --git a/pyproject.toml b/pyproject.toml index ae33340..8893d34 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,10 +15,10 @@ classifiers = [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: End Users/Desktop", "Programming Language :: Python :: 3", - "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Operating System :: POSIX :: Linux", "Topic :: System :: Hardware", ] +license = "GPL-2.0-or-later" [project.optional-dependencies] lpc = ["portio"] @@ -33,3 +33,6 @@ yafi = "yafi:main" [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" + +[tool.setuptools] +packages = ["yafi"] diff --git a/yafi/__init__.py b/yafi/__init__.py index 12a7e52..a486981 100644 --- a/yafi/__init__.py +++ b/yafi/__init__.py @@ -1 +1,9 @@ -from . import main +import os + +# Register resources if not running in Flatpak +if not os.environ.get('FLATPAK_ID'): + from gi.repository import Gio + resource = Gio.Resource.load(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'yafi.gresource')) + resource._register() + +from .main import main diff --git a/yafi/__main__.py b/yafi/__main__.py index 1648817..e69de29 100644 --- a/yafi/__main__.py +++ b/yafi/__main__.py @@ -1,3 +0,0 @@ -from . import main - -main.main() \ No newline at end of file diff --git a/yafi/hardware.py b/yafi/hardware.py index cb7816c..68d2ca3 100644 --- a/yafi/hardware.py +++ b/yafi/hardware.py @@ -62,6 +62,8 @@ class HardwarePage(Gtk.Box): else: self.hw_fp_pwr.set_visible(False) + self._update_hardware(app) + # Schedule _update_hardware to run every second GLib.timeout_add_seconds(1, self._update_hardware, app) diff --git a/yafi/main.py b/yafi/main.py index 18b0adf..1e2ca5c 100644 --- a/yafi/main.py +++ b/yafi/main.py @@ -36,6 +36,7 @@ from .hardware import HardwarePage from cros_ec_python import get_cros_ec + class YafiApplication(Adw.Application): """The main application singleton class.""" @@ -134,7 +135,7 @@ class YafiApplication(Adw.Application): dialog.present(self.win) -def main(version): +def main(): """The application's entry point.""" app = YafiApplication() return app.run(sys.argv) diff --git a/yafi/yafi.gresource b/yafi/yafi.gresource new file mode 100644 index 0000000..39ee0eb Binary files /dev/null and b/yafi/yafi.gresource differ diff --git a/yafi/yafi.in b/yafi/yafi.in index 4a76788..3423b16 100755 --- a/yafi/yafi.in +++ b/yafi/yafi.in @@ -26,7 +26,7 @@ import signal import locale import gettext -VERSION = '@VERSION@' +# VERSION = '@VERSION@' pkgdatadir = '@pkgdatadir@' localedir = '@localedir@' @@ -44,4 +44,4 @@ if __name__ == '__main__': resource._register() from yafi import main - sys.exit(main.main(VERSION)) + sys.exit(main.main())