{"id":13494848,"url":"https://github.com/getting-things-gnome/gtg","last_synced_at":"2025-05-15T01:08:35.024Z","repository":{"id":37285087,"uuid":"17773756","full_name":"getting-things-gnome/gtg","owner":"getting-things-gnome","description":"Getting Things GNOME! desktop app development","archived":false,"fork":false,"pushed_at":"2025-05-07T15:05:31.000Z","size":20904,"stargazers_count":576,"open_issues_count":230,"forks_count":168,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-05-07T16:24:12.874Z","etag":null,"topics":["desktop","desktop-app","getting-things-done","gnome","gtd","gtd-applications","gtd-assistant","gtd-workflow","gtk","gtk4","linux-app","productivity","productivity-tools","python","todo","todo-app","todo-list","todolist-app","todolist-application"],"latest_commit_sha":null,"homepage":"https://getting-things-gnome.github.io","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/getting-things-gnome.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-03-15T11:16:19.000Z","updated_at":"2025-05-07T15:05:36.000Z","dependencies_parsed_at":"2024-02-20T00:32:11.927Z","dependency_job_id":"8af80488-3bef-4b5a-a87d-c845c1c74930","html_url":"https://github.com/getting-things-gnome/gtg","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getting-things-gnome%2Fgtg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getting-things-gnome%2Fgtg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getting-things-gnome%2Fgtg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getting-things-gnome%2Fgtg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getting-things-gnome","download_url":"https://codeload.github.com/getting-things-gnome/gtg/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254042,"owners_count":22039792,"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":["desktop","desktop-app","getting-things-done","gnome","gtd","gtd-applications","gtd-assistant","gtd-workflow","gtk","gtk4","linux-app","productivity","productivity-tools","python","todo","todo-app","todo-list","todolist-app","todolist-application"],"created_at":"2024-07-31T19:01:28.807Z","updated_at":"2025-05-15T01:08:30.016Z","avatar_url":"https://github.com/getting-things-gnome.png","language":"Python","funding_links":[],"categories":["Python","Productivity"],"sub_categories":["To-do Lists"],"readme":"**Getting Things GNOME!** (GTG) is a personal tasks and TODO list items organizer for the GNOME desktop environment inspired by the [*Getting Things Done* (GTD) methodology][gtd-info].\nGTG is designed with flexibility, adaptability, and ease of use in mind so it can be used as more than just GTD software.\nGTG is intended to help you track everything you need to do and need to know, from small tasks to large projects.\n\n[gtd-info]: https://gettingthingsdone.com/what-is-gtd/\n\nYou are currently reading the index of the information intended for **new contributors** (beta testers, developers, packagers, etc.), found in [the project's main software development and management hub](https://github.com/getting-things-gnome/gtg).\n\nSee [our website](https://getting-things-gnome.github.io/) for the list of features and information intended for **users** (including how to install the stable release with pre-built packages).\nExcept if you're here to report an issue – then you can just directly create\nan issue rather than continue reading.\n\n[![Mastodon badge](https://img.shields.io/mastodon/follow/232134?domain=https%3A%2F%2Ffosstodon.org\u0026label=Follow%20us%20on%20Mastodon\u0026style=social)](https://fosstodon.org/@GettingThingsGNOME)\n[![Twitter badge](https://img.shields.io/twitter/follow/getthingsgnome.svg?style=social\u0026label=Follow%20us%20on%20Twitter)](https://twitter.com/GetThingsGNOME)\n\n# Starting point for testers, bug reporters, and new contributors\n\n* Keep reading below for basic instructions on how to get the development version of GTG running.\n* See the [CONTRIBUTING.md](CONTRIBUTING.md) file to ensure you have realistic expectations regarding feature requests, and to learn how you can effectively help the project. Your involvement is what keeps this project moving forward, and we need you to play an active part in implementing desired improvements!\n  * Explore the [docs/contributors/ subfolder](./docs/contributors) to see reference documentation for contributors, including coding/style conventions, how to deal with Git and submit patches, etc.\n\n## Setting up \u0026 running the development version\n\n### Getting the code\n\nExecute this command to get the latest development code (if you don't have it already) and then move to that directory:\n\n```sh\ngit clone https://github.com/getting-things-gnome/gtg.git \u0026\u0026 cd gtg\n```\n\nLater, when you want to update to the latest development version (assuming you are still in the \"gtg\" directory and did not make changes locally), you can do so with:\n\n```sh\ngit pull --rebase\n```\n\n### Dependencies\n\n* meson (\u003e= 0.51.0)\n* python3 (\u003e= 3.8)\n* python-caldav\n* pycairo\n* pygobject (\u003e= 3.20)\n* lxml\n* itstool\n* gettext\n* GtkSourceView (\u003e= 4.0)\n* libsecret\n* Introspection (GIR) files and libraries from:\n  - GLib\n  - pango\n  - gdk-pixbuf\n  - GTK 3\n  - GtkSourceView 4\n  - secret\n\nYou can get most of those from your distribution packages:\n\n```sh\n# On Fedora:\nsudo dnf install meson python3-cairo python3-gobject gtk3 itstool gettext python3-lxml libsecret gtksourceview4\n# On Debian 10 (buster), you need to install the backported version, activate it with:\necho 'deb http://deb.debian.org/debian buster-backports main' | sudo tee -a /etc/apt/sources.list\n# On Debian/Ubuntu:\nsudo apt install meson python3-gi-cairo python3-gi gir1.2-pango-1.0 gir1.2-gdkpixbuf-2.0 gir1.2-gtk-3.0 itstool gettext python3-lxml libgirepository1.0-dev libsecret-1.0 gir1.2-secret-1\n```\n\n#### Optional Dependencies\n\n* [setproctitle](https://pypi.org/project/setproctitle/)\n  (to set the process title when listing processes with `ps` et al.)\n\n### Test dependencies\n\nTo run the current test suite, you need some additional packages (this list may be out of date):\n\n```sh\n# On Fedora:\nsudo dnf install python3-pytest python3-pyflakes python3-spec python3-pycodestyle\n# On Ubuntu/Debian:\nsudo apt install python3-pytest python3-pyflakes python3-pep8 python3-pycodestyle python3-caldav\n```\n\nYou currently also need the optional plugin dependencies, as the tests don't automatically skip them. (Help welcome improving that!)\n\n### Solving dependencies for plugins (optional)\n\nThere are additional plugins (modules for extending the user interface) and synchronization services (modules for importing/exporting tasks from/to external services) that might need additional packages to work correctly.\n\nDependencies for the \"Export and print\" plugin:\n\n* python3-cheetah\n* pdflatex (in the `texlive-extra-utils` package on Ubuntu and Debian)\n* pdfjam (in the `texlive-extra-utils` package on Ubuntu and Debian, possibly in `texlive-pdfjam` on Fedora)\n* pdftk (now called `pdftk-java` in Ubuntu, and no longer available in Fedora)\n\nOn Ubuntu and Debian you can install all that with:\n\n```sh\n# On Ubuntu/Debian:\nsudo apt install python3-cheetah pdftk-java texlive-extra-utils texlive-latex-base\n```\n\n### Running the beast\n\nIn order to run the development/git version of GTG, you need to launch the `debug.sh` script\nThere is a shortcut to it in the root directory where you downloaded the code, that you can execute simply with this command:\n\n```sh\n./launch.sh\n```\n\nThis is the safest way to run the git version, as it does not touch your normal user data (see below).\n\nYou can use `./launch.sh -?` to get a list of options useful for development\nyou can append to the command, such as:\n* `-d` to enable debug logs\n* `-w` to enable additional [python development][pythondevmode] stuff\n  like deprecation warnings\n* `-p prefix-prog` to prepend `prefix-prog` to the main gtg executable script,\n  useful to run under a debugger: `./launch.sh -p 'python3 -m pudb'` (with\n  [pudb][pudb]) or a profiler: `./launch.sh -p 'python3 -m cProfile -o gtg.prof'`\n* `-s dataset` to use the dataset called `dataset`. It'll store it inside the `tmp`\n  folder of the current working directory. If it doesn't exists, it'll create\n  a new clean one. There are pre-made ones you can use by replacing `dataset`\n  with one of the following:\n  * `bryce` - An anonymized dataset with a fair number of tasks\n  * `screenshots` - Pre-made tasks that can be used to show off GTG\n\nIf you somehow need to pass arguments directly to the `gtg` binary itself,\nanything after `--` is passed to gtg directly.\nFor example, use the following command to show the help for `gtg` itself:\n\n```sh\n./launch.sh -- --help\n```\n\nTo examine the UI elements, you might be interested to use [GTKs interactive debugger][gtk-interactive], that you can use by prepending `GTK_DEBUG=interactive` like:\n```sh\nGTK_DEBUG=interactive ./launch.sh\n```\n\nIf there is any problem with meson (the build system) or anything else,\ntry deleting the build folder first and try again: `rm -rf .local_build`.\nNo data should be lost since it is just re-generateable build files.\n\n[pythondevmode]: https://docs.python.org/3/library/devmode.html\n[pudb]: https://pypi.org/project/pudb/\n[gtk-interactive]: https://developer.gnome.org/gtk3/stable/gtk-running.html#interactive-debugging\n\n## Setting up a development environment\n\nNow that you have installed all the dependencies and know how to run the tests,\nit's possible that you would like to make code changes and submit them for\nreview.\n\nWe use [pre-commit](https://pre-commit.com) to run some checks that ensure that\nour codebase is clean and consistent.\n\nInstall it with `pip install pre-commit`, and install the pre-commit hooks with\n`pre-commit install`.\n\nThe checks will now run every time you make a commit, and fix files if\nnecessary. It's generally a good idea to always run them, but you can also\nbypass them by running `git commit --no-verify`, if necessary.\n\nThe CI system runs the checks on each commit to master, and on each pull\nrequest. If you want to make sure they pass before opening your PR, you can run\nthem locally with `pre-commit run --all-files`.\n\nFor more guidelines about contributing, see\n[CONTRIBUTING.md](./CONTRIBUTING.md).\n\n# \"Where is my user data and config stored?\"\n\nIt depends:\n\n* If you are running a version installed system-wide (ex: a package provided by a Linux distribution), as GTG adheres to the [Freedesktop XDG Base Directories specification][basedir-spec], you will typically find it spread across:\n  * `${XDG_DATA_HOME:-$HOME/.local/share}/gtg` like `~/.local/share/gtg/`\n  * `${XDG_CONFIG_HOME:-$HOME/.config}/gtg`    like `~/.config/gtg/`\n  * `${XDG_CACHE_HOME:-$HOME/.cache}/gtg`      like `~/.cache/gtg/`\n* If you are running the Flatpak package version, those directories are all in `~/.var/app/org.gnome.GTG/` (or something similar)\n* If you are running `launch.sh` (the launcher from the Git/development version),\n  GTG doesn't touch your normal user data, it uses the `tmp` subdirectory in your current working directory (usually the repository root, the gtg folder).\n  You can pass `-s name` to use a different folder inside the `tmp` directory,\n  the default being `default`.\n\nIf you want to import a copy of your gtg data to the development version, simply run at the repository root one of the following commands:\n```sh\n./scripts/import_tasks_from_local.sh # local/system-wide install data\n./scripts/import_tasks_from_flatpak.sh # flatpak data\n```\n\n[basedir-spec]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html\n\n# Viewing the user manual\n\nWhether to learn how GTG works from a user's perspective, or to preview changes you may have made to the user manual, you will need the \"Yelp\" help viewer application, which you can easily install on any Linux distribution (if it is not already present).\n\nWhen installed system-wide, you can then view the user manual either by accessing it through GTG (press F1 or use the Help menu) or through the command line:\n\n```sh\nyelp help:gtg\n```\n\nIf you want to read the documentation directly from the source code, run this command (from the source root directory):\n\n```sh\nyelp docs/user_manual/C/index.page\n```\n\n# Other documentation\n\n* [GTG website](https://getting-things-gnome.github.io/)\n* Check out the [docs folder in the main repository](./docs/) for more\n  information and documentation for contributors\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetting-things-gnome%2Fgtg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetting-things-gnome%2Fgtg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetting-things-gnome%2Fgtg/lists"}