Skip to content

A simple graphical tool to purge old events from CalDAV calendars

License

Notifications You must be signed in to change notification settings

flozz/calcleaner

Repository files navigation

CalCleaner

Github Discord Github Actions Black License

A simple graphical tool to purge old events from CalDAV calendars
Screenshot of Calcleaner

Requirements

Python:

Install

Flatpak (Linux)

A Flatpak package is available on Flathub. This is currently the simplest way to install CalCleaner on all major Linux distributions:

Linux (source)

First, you will need to install some dependencies on your system. On Debian and Ubuntu this can be achieved with the following command:

sudo apt install git build-essential python3 python3-dev python3-pip libgirepository1.0-dev pkg-config gir1.2-gtk-3.0

Then clone this repository and navigate to it:

git clone https://github.com/flozz/calcleaner.git
cd calcleaner

Then install CalCleaner using pip:

sudo pip3 install .

Finally, you can install desktop file, icons and manual using the following command:

sudo ./linuxpkg/copy-data.sh /usr

Linux (PyPI)

First, you will need to install some dependencies on your system. On Debian and Ubuntu this can be achieved with the following command:

sudo apt install git build-essential python3 python3-dev python3-pip libgirepository1.0-dev pkg-config gir1.2-gtk-3.0

Then install CalCleaner using pip:

sudo pip3 install calcleaner

NOTE: Installing from PyPI will not install .desktop file and man page. You will not be able to run the software from your graphical app menu (GNOME Shell,...).

Contributing / Hacking

Questions

If you have any question, you can:

Bugs

If you found a bug, please open an issue on Github with as much information as possible:

  • What is your operating system / Linux distribution (and its version),
  • How you installed the software,
  • All the logs and message outputted by the software,
  • ...

Pull Requests

Please consider filing a bug before starting to work on a new feature. This will allow us to discuss the best way to do it. This is of course not necessary if you just want to fix some typo or small errors in the code.

Please note that your code must pass tests and follow the coding style defined by the pep8. Flake8 and Black are used on this project to enforce coding style.

Translating Calcleaner

If the software is not available in your language, you can help translate it.

To translate Calcleaner, you can submit your translations using a Pull Request on Github,

Do not forget to add your name as the translation of the translator-credits key (one name per line, e-mail is optional):

msgid "translator-credits"
msgstr ""
"John DOE\n"
"Other TRANSLATOR <foobar@example.org>\n"

Running the project

First, install dependencies (preferably in a virtualenv):

pip install -e ".[dev]"

Then run:

python -m calcleaner

Coding Style / Lint

This project follows Black's coding style.

To check coding style, you will first have to install nox:

pip3 install nox

Then you can check for lint error (Flake8 and Black):

nox --session lint

You can fix automatically coding style with:

nox -s black_fix

Tests

Tu run tests, you will first have to install nox:

pip3 install nox

Then run the following command:

nox -s test

Extract, Update or Build Translations

You will first have to install nox:

pip3 install nox

To extract messages and update locales run:

nox --session locales_update

To compile locales, run:

nox --session locales_compile

NOTE: you will need to have xgettext, msgmerge and msgfmt executable installed on your system to run the above commands. On Debian / Ubuntu, they can be installed with the following command:

sudo apt install gettext

Regenerating Icons

To regenerate icons, Inkscape must be installed. On Debian and Ubuntu you can install it with the following command:

sudo apt install inkscape

You will also need nox to run the generation command:

pip3 install nox

Once everithing installed, you can regenerate icons with the following command:

nox -s gen_icons

Supporting this project

Wanna support this project?

Changelog

  • [NEXT] (changes on master but not released yet):
    • chore: Added Python 3.12 support
    • chore!: Removed Python 3.7 support
  • v1.1.3:
    • Added Turkish translation (@sabriunal, #8)
  • v1.1.2:
    • Added Croatian translation (@milotype, #7)
    • Added Python 3.11 support
  • v1.1.1:
    • Added German translation (Jürgen Benvenuti)
  • v1.1.0:
    • UI improvements:
      • Double border removed in calendar view
      • Accessibility improved by changing the widgets used to build the "pages" of the main window
    • Translations:
      • Dutch (#5, @Vistaus)
      • Brazilian Portuguese (incomplete)
  • v1.0.0:
    • Allow to disable SSL certificate validation (self-signed certificate, etc.)
    • Improve error message on SSL errors
    • Set the user agent string to "CalCleaner/<VERSION>"
    • Fix calendar of removed account still displayed after closing account management dialog
    • Fix a crash when cleaning an empty (malformed) event
    • Italian translation (#1, @albanobattistella)
  • v0.9.1 (beta):
    • Fix data not included in packages
  • v0.9.0 (beta):
    • Initial release
    • French translation