diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..d0046e94 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,13 @@ +# Changelog +All notable changes to this project will be documented in this file. + + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + +## [0.1.0] - 2019-06-14 +### Features + - System tray icon. + - Applications management window. + - Support for the following locales: PT, EN, ES. + - System notification for new updates. + - Update applications. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..178c7035 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,22 @@ +# How can I contribute? +Well, you can... +* Report bugs +* Add improvements +* Fix bugs +* Add new translations or fix the current ones + +# Reporting bugs +The best means of reporting bugs is by following these basic guidelines: + +* First describe in the title of the issue tracker what's gone wrong. +* In the body, explain a basic synopsis of what exactly happens, explain how you got the bug one step at a time. If you're including script output, make sure you run the script with the verbose flag `-v`. +* Explain what you had expected to occur, and what really occurred. +* Optionally, if you want, if you're a programmer, you can try to issue a pull request yourself that fixes the issue. + +# Adding improvements +The way to go here is to ask yourself if the improvement would be useful for more than just a singular person, if it's for a certain use case then sure! + +* In any pull request, explain thoroughly what changes you made +* Explain why you think these changes could be useful +* If it fixes a bug, be sure to link to the issue itself. +* Follow the [PEP 8](https://www.python.org/dev/peps/pep-0008/) code style to keep the code consistent. diff --git a/README.md b/README.md index f154c754..09eff06c 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,46 @@ ## fpakman -Graphical interface for Flatpak application management. It is a tray icon to let the user known when new updates are available. -It has also a management window allowing the user to see all installed apllications and update them. +Graphical user interface for Flatpak application management. It is a tray icon to let the user known when new updates are available. +It has also a management window allowing the user to see all installed applications and update them. ### Developed with: - Python3 and QT 5. ### Requirements -- Python >= 3.5 -- qt5 packages +#### Debian-based distros - libappindicator3 (for GTK3 desktop environments) -- python3-venv (for Debian based distros -> Ubuntu, Linux Mint, ...) +- python3-venv +#### Arch-based distros +- python +- python-requests +- python-pip +- python-pyqt5 -## Installation script -You can install the application without compromising your system via the provided installation script called 'sandbox_installer.py'. -Type in the terminal: sudo python3 sandbox_installer.py. If you want to uninstall the application, just call the script the same way. + +### Installation script +You can install the application without compromising your system via the provided installation script called 'install.py'. +Type in the terminal: +``` +sudo python3 install.py. +``` +If you want to uninstall the application, just call the script the same way. + +To start the application, type in the terminal: +``` +fpakman +``` + +### Manual installation: +Inside the project directory type the following commands: +``` +python3 -m venv env +env/bin/pip install -r requirements.txt +chmod +x app.py +./app.py +``` + +### Autostart +In order to autostart the application, use your Desktop Environment settings to register it as startup script ("fpakman"). +(P.S: the installation script currently does not do that) ### Settings You can change some application settings via environment variables: @@ -21,5 +48,6 @@ You can change some application settings via environment variables: - **FPAKMAN_CHECK_INTERVAL**: define the updates check interval in seconds. Default: 60. ### Roadmap -- Show update commands +- Show updates being applied. - Search and install applications. +- Uninstall applications. diff --git a/app.py b/app.py index 764ce9fe..11e21960 100755 --- a/app.py +++ b/app.py @@ -8,7 +8,7 @@ from PyQt5.QtWidgets import QApplication, QWidget from core.controller import FlatpakController from core.model import FlatpakManager from view.qt.systray import TrayIcon -from core import __version__, resource, util +from core import __version__, util parser = argparse.ArgumentParser(prog='fpakman', description="GUI for Flatpak applications management") parser.add_argument('-v', '--version', action='version', version='%(prog)s {}'.format(__version__)) @@ -25,7 +25,7 @@ hidden_widget = QWidget() trayIcon = TrayIcon(locale_keys=locale_keys, parent=hidden_widget, controller=controller, - check_interval=int(os.getenv('FPAKMAN_CHECK_INTERVAL', 30))) + check_interval=int(os.getenv('FPAKMAN_CHECK_INTERVAL', 60))) trayIcon.show() sys.exit(app.exec_()) diff --git a/sandbox_installer.py b/install.py similarity index 70% rename from sandbox_installer.py rename to install.py index f51adb5b..b2b8ec8e 100755 --- a/sandbox_installer.py +++ b/install.py @@ -1,9 +1,5 @@ #!/usr/bin/env python3 ################################################################ -# It installs the application without compromising you system. # -# libraries. 'qt5' is required to be installed. # -# # -# If you use GTK, install 'libappindicator3' also. # # # # EXECUTE THIS SCRIPT INSIDE THE PROJECT FOLDER AS ROOT # # # @@ -18,8 +14,7 @@ if not os.geteuid() == 0: sys.exit("\nOnly root can run this script\n") -link_path = '/usr/local/bin/fpakman' -runner_file = 'run.sh' +runner_file = '/usr/local/bin/fpakman' env_name = 'env' @@ -27,19 +22,21 @@ def log(msg: str): print('[fpakman] {}'.format(msg)) -if os.path.exists(link_path): +if os.path.exists(runner_file): log('already installed') log('Do you wish to uninstall it ? (y/N)') uninstall = input() if uninstall.lower() == 'y': - try: - os.unlink(link_path) - except: - log("Could not remove the runner syslink '{}'".format(link_path)) - log("Aborting...") - exit(1) + if os.path.exists(runner_file): + + try: + os.remove(runner_file) + except: + log("Could not remove the runner file '{}'".format(runner_file)) + log("Aborting...") + exit(1) if os.path.exists('{}/{}'.format(os.getcwd(), env_name)): try: @@ -49,15 +46,6 @@ if os.path.exists(link_path): log("Aborting") exit(1) - if os.path.exists('{}/{}'.format(os.getcwd(), runner_file)): - - try: - os.remove(runner_file) - except: - log("Could not remove the runner file '{}'".format(runner_file)) - log("Aborting...") - exit(1) - log("Successfully uninstalled") else: @@ -80,20 +68,11 @@ else: if res: log("Creating runner as '{}'".format(runner_file)) - with open('run.sh', 'w+') as f: + with open(runner_file, 'w+') as f: f.write('#!/bin/bash\n{d}/env/bin/python {d}/app.py'.format(d=os.getcwd())) system.run_cmd('chmod +x ' + runner_file) - log("Creating syslink as '{}'".format(link_path)) - - try: - os.link('{}/{}'.format(os.getcwd(), runner_file), link_path) - except: - log("Could not create the syslink") - log("Aborting...") - exit(1) - log('Successfully installed') else: log('Could not install python requirements to the virtualenv')