Coder Social home page Coder Social logo

elementary / tasks Goto Github PK

View Code? Open in Web Editor NEW
85.0 26.0 21.0 16.45 MB

Synced tasks and reminders on elementary OS

Home Page: https://elementary.io

License: GNU General Public License v3.0

Meson 2.10% Vala 96.99% CSS 0.90%
gtk gtk3 vala meson hacktoberfest evolution-data-server

tasks's Introduction

Tasks

Translation status

Screenshot

Building and Installation

You'll need the following dependencies:

  • glib-2.0
  • gobject-2.0
  • granite >=6.2.0
  • gtk+-3.0
  • libchamplain-0.12-dev
  • libchamplain-gtk-0.12-dev
  • libclutter-1.0-dev
  • libclutter-gtk-1.0-dev
  • libecal-2.0
  • libedataserver-1.2
  • libgdata-dev
  • libgeoclue-2-dev
  • libgeocode-glib-dev
  • libhandy-1-dev >= 0.90.0
  • libportal-dev
  • libportal-gtk3-dev
  • libical
  • meson
  • valac

Run meson build to configure the build environment. Change to the build directory and run ninja to build

meson build --prefix=/usr
cd build
ninja

To install, use ninja install, then execute with io.elementary.tasks

ninja install
io.elementary.tasks

tasks's People

Contributors

alvaroadlf avatar carnage-mode avatar colindemian avatar comradekingu avatar danirabbit avatar dartdeadia avatar davidmhewitt avatar dennis1248 avatar elementarybot avatar fitojb avatar hnklp avatar hugok79 avatar ianz56 avatar ihorhordiichuk avatar johndumpling avatar josprachi avatar lenemter avatar m93a avatar marbetschar avatar marcin-serwin avatar marukesu avatar nathanbnm avatar norwayfun avatar p-bo avatar queeup avatar ryonakano avatar supaeasy avatar tomiohl avatar weblate avatar yarons avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tasks's Issues

Renamed list does not get saved to backend

Seems like changing the name of a task list does get stored across multiple restarts of the task application. However, it does not seem to be persisted in the backend - there the list name keeps the same (tested against Nextcloud).

Add task description in task list view

right below the task summary - in a lighter font color. Similar to what Apple does in their reminder app: Without line breaks and just the first n characters. This makes it easier to work with a lot of tasks.

App Icon is too large

The Tasks App Icon is significantly higher compared to other elementary Apps.

Apart from its size, I'm not a huge fan of the icon at all - it is basically just a checkmark in a weird greenish color, but as I'm not a designer I'll leave this up to @elementary/ux :)

Screenshot from 2020-04-14 13-28-08

Add a new task

We need a method to add a new task to the selected task list

How to help?

Hi @danrabbit,

The community at the Slack channel pointed me towards this repo: I'm currently thinking of switching to elementaryOS - only thing I can't live without is a good Todo-App which is synced with Nextcloud.

As I got quite a strong programming background, I love to help get things done. Only thing which holds me back right now is, I don't have any clue what the current state is and - based on this state - what the next steps are.

I'm a bit lost in between switchboard-plug-onlineaccounts, where/how evolution is integrated, and what the goals for this task app are... etc.

Would love to become enlightened - and chime in :)

"Add Task" should always be visible

We should always be able to quickly add a new task - even if the list does contain a lot of tasks. That said, this functionality should always be visible to the user, without the need for scrolling back and forth.

Emacs GUI doesn’t run on elementary OS

Prerequisites

  • I have searched open and closed issues for duplicates.

Describe the bug

When I try to open Emacs GUI in elementary OS, it fails.

To Reproduce

  1. Install Emacs with apt install emacs
  2. Try to open Emacs either with the terminal or the elementary OS menu

Expected behavior

Emacs should be running properly.

Logs

Terminal output:

X protocol error: BadMatch (invalid parameter attributes) on protocol request 139
When compiled with GTK, Emacs cannot recover from X disconnects.
This is a GTK bug: https://bugzilla.gnome.org/show_bug.cgi?id=85715
For details, see etc/PROBLEMS.
Fatal error 6: Aborted
Backtrace:
emacs[0x50a4de]
emacs[0x4f0ad9]
emacs[0x50a583]
emacs[0x4c0920]
emacs[0x4c4c69]
emacs[0x4c4ceb]
/usr/lib/x86_64-linux-gnu/libX11.so.6(_XError+0x11a)[0x7fdf5a18b8fa]
/usr/lib/x86_64-linux-gnu/libX11.so.6(+0x3d82b)[0x7fdf5a18882b]
/usr/lib/x86_64-linux-gnu/libX11.so.6(+0x3d8d5)[0x7fdf5a1888d5]
/usr/lib/x86_64-linux-gnu/libX11.so.6(_XEventsQueued+0x55)[0x7fdf5a189205]
/usr/lib/x86_64-linux-gnu/libX11.so.6(XPending+0x5d)[0x7fdf5a17ad3d]
/usr/lib/x86_64-linux-gnu/libgdk-3.so.0(+0x6809e)[0x7fdf5b9a609e]
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_prepare+0x1c8)[0x7fdf5a8f1b28]
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x4c4fb)[0x7fdf5a8f24fb]
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_pending+0x27)[0x7fdf5a8f2687]
/usr/lib/x86_64-linux-gnu/libgtk-3.so.0(gtk_events_pending+0xd)[0x7fdf5be63a9d]
emacs[0x4c1327]
emacs[0x4f7a01]
emacs[0x4f8095]
emacs[0x5b2740]
emacs[0x5b3d48]
emacs[0x5b40d4]
emacs[0x49299a]
emacs[0x499ce5]
emacs[0x5231b3]
emacs[0x563b59]
emacs[0x598413]
emacs[0x565ead]
emacs[0x5639fb]
emacs[0x5669d9]
emacs[0x588cd1]
emacs[0x563b59]
emacs[0x598413]
emacs[0x565ead]
emacs[0x5639fb]
emacs[0x563cfa]
emacs[0x56cf0c]
emacs[0x56d36f]
emacs[0x563b92]
emacs[0x598413]
emacs[0x565ead]
...
Aborted

The mentioned issue is tagged as resolved in the GNOME tracker.

Platform Information

About screen

  • I'm using the latest version from git that I've manually compiled
  • I'm using the latest released stable version

Add missing palette colors to color button list

Prerequisites

  • I have searched open and closed issues for duplicates.

We've added new colors to the palette (bubblegum and mint) and they are missing from the colors selectable for tasks.

Get tasks with no due date

At the moment, these lines are fetching a view that only contains tasks that have a due date set: https://github.com/elementary/tasks/blob/master/src/ListView.vala#L80

But the problem is that we don't get any tasks that don't have a due date set. So for example my grocery list is empty, but I get all my reminders.

For reference, here is the query parsing code in Evolution https://github.com/Pecisk/evolution-data-server/blob/e6ea303ed9626561b57c59c28f53dff2a912f522/calendar/libedata-cal/e-cal-backend-sexp.c#L439

Abstraction between UI and EDS

During my attempt to create a scheduled task list I came across the situation where it is useful to untangle the EDS E.SourceRegistry and E.Source objects from UI interactions:

In order to retrieve the data from the eds backend, we need to initiate a E.SourceRegistry which in turn provides all available E.Source objects (aka "task lists").

How it works now: If we now want to display the tasks of each source in a dedicated list, we can simply pass the E.Source object to the UI list element and load the tasks from there. That's exactly how its done now.

The downside of this approach: If we want to display a list of scheduled tasks which are provided by more than one E.Source object, there is no easy way to integrate this using the current state of work. We need to start duplicating code and adapt it to allow more than one of those E.Source objects.

That said: it seems to be cleaner to refactor the way tasks are handled (loaded, changed, deleted) right now in order to support both scenarios using a UI agnostic approach. Similar to how it is done in Planner or in Calendar.

How to render tasks?

@danrabbit

Was able to get the callbacks of ClientView fired and they seem to provide now objects:
marbetschar@1785655

I assume these objects are the tasks and like to render those as a list in the right part of the app. Can you please put me into the right direction on how to do this? Don't have any experience with Gtk yet.

Edit task details

Prerequisites

  • I have searched open and closed issues for duplicates.

Feature

Edit task details
It should be possible to edit the task details.

Describe the solution you'd like
The edit should take place within a popover form. The popover should be shown if the user either double clicks on a task row, or selects the task row and hits the Enter button. Similar to what Apple Reminders does:

Bildschirmfoto 2019-10-22 um 19 50 10

Time Zone Calculation Error for Due Date Preview in Task List

Describe the bug

The task due time preview calculates the wrong offset. For example: The task's due date is set to 20:15, which is the current time. But the task list shows, that the task is due "in 59m" - which is obviously wrong.

Since my local time offset is 1h I expect the time object to be interpreted in the wrong time zone.

Task backend event handlers don't fire

Describe the bug

The attached view event handlers on_objects_added, on_objects_removed and on_objects_modified are not fired after initial load of the list. This causes tasks to be shown, but the list does not get updated to reflect any potential remote changes. This is also the root cause for a newly added task not appearing in the list:

tasks/src/ListView.vala

Lines 95 to 102 in f50c106

var client = (ECal.Client) ECal.Client.connect_sync (source, ECal.ClientSourceType.TASKS, -1, null);
client.get_view_sync ("", out view, null);
view.objects_added.connect ((objects) => on_objects_added (source, client, objects));
view.objects_removed.connect ((objects) => on_objects_removed (source, client, objects));
view.objects_modified.connect ((objects) => on_objects_modified (source, client, objects));
view.start ();

To Reproduce

  1. Start elementary Task
  2. Navigation to a specific task list
  3. Start Evolution
  4. In Evolution: Add a new task to the chosen task list
  5. Go back to elementary Task
  6. The task does not automatically appear in elementary Task
  7. Choose another task list in elementary task and then select the task list in question again - now you'll see the new task

Expected behavior

  • Added tasks should automatically appear in the currently selected task list
  • Edited tasks should automatically update in the currently selected task list
  • Deleted tasks should automatically be removed from the currently selected task list

Get better names for list parents

Right now we get what looks like an ID or we get foo-stub. I'm sure there's a way to get human-readable names for where these lists come from.

Complete a repeating task

Prerequisites

  • I have searched open and closed issues for duplicates.

Describe the bug

When we check a recurring task as complete, it does mark the whole series of task as completed which causes the task to "disappear".

Expected behavior

The task app should just set this one occurrence of the task to "completed". If the user truly wishes to get rid of a recurring task it should be "deleted" instead of "completed". This way, we can handle both scenarios without the need for more features in the UI.

Add native EteSync support

EteSync "Secure, end-to-end encrypted, and privacy respecting sync for your contacts, calendars and tasks." Reference to the discussion in the Planner repository alainm23/planify#307 (comment)

I have no experience with EteSync myself, but I find the idea of end-to-end encryption of sensitive data in the context of elementary OS very useful.
This issue should provide room for discussion. Consciously also about possible alternatives, how the desired qualities can be provided independently of certain products.

Show due date in list if any

Prerequisites

  • I have searched open and closed issues for duplicates.

Feature

Is your feature request related to a problem? Please describe.
It would be beneficial to show the due date of a task in the list view. This way the user can see due tasks at a glance without going to any detail view of each task first.

Describe the solution you'd like
If a due date is set, it should be shown after summary on a new line - between summary and description (if any). It should be formatted in the users locale.

Additional context
We may also consider to accentuate this output if the task is overdue with the lists color. See #47

Save task changes

What the title says: We need to persist any changes the user made to a task.

Add a new task list

It should be possible to add a new task list. Something like the following:

mac_reminders

Add "planned" list

Prerequisites

  • I have searched open and closed issues for duplicates.

Feature

Is your feature request related to a problem? Please describe.
Right now its hard to see if I'm acting according to my created plan. That is, I can't see which tasks are planned to be done next and if there are any tasks which are overdue - regardless of the list they are in.

Describe the solution you'd like
We should consider adding a new, dynamically created list which shows all "planned" tasks. Where "planned" is defined as tasks which either one of the following is true:

  • due date is set to the past, but they are still incomplete
  • due date is set to the future

Existing work
The querying routine is already in place, so we might just want to copy and adapt it accordingly.

Additional context
We need to define whether we want to show such a list per origin (Nextcloud, iCloud, ...) or just one consolidated list across all origins. In my opinion the consolidated list is preferable because it makes planning easier for the user.

Sometimes tasks refuses to start

Describe the bug

Sometimes the tasks application does not start and seems to hang endlessly. No app window is shown in these cases.

Platform Information

  • I'm using the latest version from git that I've manually compiled

Additional context

I guess we are dealing with some kind of race condition related to connecting to registry and drawing the UI. Maybe the get_registry_sync gets fired too early sometimes and this causes the application to block:

registry = Tasks.Application.model.get_registry_sync ();

Make "Delete Task" less prominent

@elementary/ux is there a way to make the "Delete" button less prominent?

Right now it grabs a lot of attention during task editing:

Delete

Notifications

Feature

Any alarm of a given task should trigger a notification.

Kanban board

Prerequisites

  • I have searched open and closed issues for duplicates.

Feature

Is your feature request related to a problem? Please describe.

I'm always frustrated when i feel overwhelmed with the number of tasks i planned to do, especially when i work on so many at once that i couldn't enumerate them. Right now i feel like working on 20-30 projects at once. To-Do lists don't help here and even Getting things done (GTD) don't helped me.

Describe the solution you'd like

A solution i found yesterday are personal kanban boards. We started to use Kanban at work in our team and it works really well, so i asked myself if that is a common thing to use also for personal tasks.

I found some resources online that this is a thing and really helps people to focus!

https://hackernoon.com/personal-kanban-part-1-why-todo-lists-don-t-work-3b5c6dc78708
http://www.ericlee.info/blog/?p=1068
https://lifehacker.com/productivity-101-how-to-use-personal-kanban-to-visuali-1687948640
https://www.personalkanban.com/personal-kanban-101
https://nomad8.com/articles/everyone-needs-kanbanfor1

So please consider creating a powerful tool that really help people to organize and focus on getting tasks done instead of creating the hundred thousandth basic todo app (there are actually 5 in AppCenter!).

https://appcenter.elementary.io/com.github.alainm23.planner/
https://appcenter.elementary.io/com.github.dahenson.agenda/
https://appcenter.elementary.io/com.github.jmoerman.go-for-it/
https://appcenter.elementary.io/com.github.juarezfranco.tarefas-desktop/
https://appcenter.elementary.io/com.github.lainsce.yishu/

Don't accidentally recreate them!

Existing work

https://hackernoon.com/personal-kanban-part-2-personal-kanban-with-trello-a6bd6cdb0588

He seems to really like Trello. But it's a cloud service where you don't own your data. The data should be stored locally in an open format you can migrate to other programs. I really like todo.txt for tasks, but there is no intuitive GUI with kanban support.

Describe alternatives you've considered

There are browser-based kanban boards you can host yourself, but no intuitive GUI program that fit's the elementary OS experience.

https://wekan.github.io/
https://kanboard.org/
https://apps.nextcloud.com/apps/deck
https://restya.com/board
https://github.com/huytd/kanelm
https://greggigon.github.io/my-personal-kanban/
https://github.com/kiswa/TaskBoard
https://github.com/apankrat/nullboard
https://github.com/wheatbin/wheatbin

UX improvements to edit tasks.

  1. Is it intuitive to double click on the task to edit it?
  • Double clicking is fine, but we can add a button at the end of the task so that the edition is also activated (and have the Popover shown from this button)
  1. Focus for the Gtk.Entry of the task name.
  • When the popover is shown we can make the name of the task focus, this with the intention of making the edition faster.

Accentuate items of list with list color

Maybe we can accentuate some items of the task list by reusing its color on these elements. Some ideas:

  • Colorize the task checkbox
  • Colorize the task summary if it is overdue
  • ...

ListView: Show a loading indicator

When we first start tasks, the view will claim to be empty, but after a couple seconds it will populate. We should show a loading indicator while the view is emtpy instead of a "No Tasks" placeholder

Use a popover instead of a dialog to change the properties of each task list

Why is a dialog used to change the properties of a task list? Do we want to edit many task list at the same time?

I would prefer to use a Gtk.Popover for this purpose, in this way we make the editing of the task list somewhat secondary and not overlap the main purpose of completing tasks.

I will present a PR to see my idea.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.