xilopaint / alfred-things

Interact with Things using Alfred.
MIT License
367 stars 17 forks source link

Searching Things from Alfred and jumping to the selected item #2

Closed boettges closed 6 years ago

boettges commented 7 years ago

Hello again, searching Things would be a very handy feature, but I am not sure whether it can be accomplished with AppleScripts?

Best regards

xilopaint commented 7 years ago

What do you mean with "searching Things"? Currently you can already search to dos from Alfred and jump to them in Things UI.

boettges commented 7 years ago

If I open Alfred and type "todo" the default lists and my areas are shown. I can then navigate into one of the lists or areas, which will show sub-grouped tasks or projects.

Yes, selecting one of the items will open it in Things, but there is no "fuzzy search" that includes all types (lists, areas, projects, todos) at once.

Example: Let's say I have a task "my task" nested in a project "my project", which is nested in the area "my area".

I then would have to open Alfred, type "todo" and start typing "area" (or navigate with arrow keys), then hit return, then start typing "project" (or navigate), hit return, then start typing "task" (or navigate) and select it to get redirected to the Things app.

I would love to just open Alfred and type "todo my task" and get a global suggestion, just like I would in the searchbox of Things. Also, if I just enter "todo my" it should list "my area", "my project" and "my task" independently of their type and therefore hierarchy, because they all begin with "my…".

Thanks a lot in advance 🙂

alehandrof commented 6 years ago

I came to here looking for this feature as well. You can do this already by typing going into the workflow's anytime view. But to get there you have to:

  1. Type todo any
  2. Press enter
  3. Type to fuzzy search through tasks & projects
  4. Press enter again to open things

My question is, is there a way to open the workflow directly into Step 3?

Also, is it possible to add the ability to search headings as well?

boettges commented 6 years ago

@alehandrof Thank you for your reply. I can't get it to work. todo any results in Alfred defaulting to its fallback search providers. 🤔

xilopaint commented 6 years ago

My question is, is there a way to open the workflow directly into Step 3?

I can think about this. Could you suggest a keyword?

Also, is it possible to add the ability to search headings as well?

No, it's not supported by the AppleScript dictionary.

alehandrof commented 6 years ago

@xilopaint Having used this Omnifocus Alfred workflow, my preference is for very short keywords like .t, tt ts, etc. I don't mind what it is by default, as long as I can change it, though :)

boettges commented 6 years ago

@alehandrof entering todo any (well in the German localization it would be todo jederzeit) doesn't work for me. It is however working fine with todo some(German: todo irgendwann). The list gets propagated and fuzzy searching works.

I think it due to another localization conflict? Maybe you, @xilopaint, have an idea 🤔 Anything done differently for "anytime" that might only work in the English locale?

Thanks a lot

xilopaint commented 6 years ago

entering todo any (well in the German localization it would be todo jederzeit) doesn't work for me. It is however working fine with todo some(German: todo irgendwann). The list gets propagated and fuzzy searching works.

Both ways work for me in German. What do you get in debug console? Note that since Anytime list congregates all to-dos, it should take more time to fetch the results.

Furthermore, you don't need to type todo jederzeit (or todo any for the English UI), you can just type todo j (or todo a) and hit return.

Getting into Anytime list demands so few keypresses that I'm not convinced, after some reflection, it's worth adding a new keyword for the sole purpose of searching Anytime list as requested by @alehandrof, which means to add new code and complicate the simple usability of the workflow that requires a single keyword.

alehandrof commented 6 years ago

Getting into Anytime list demands so few keypresses that I'm not convinced, after some reflection, that it's worth adding a new keyword for the sole purpose of searching Anytime list as requested by @alehandrof, which means to add new code and complicate the simple usability of the workflow that requires a single keyword.

The Omnifocus workflow I linked to earlier had this format .s <search query>. The second you pressed the first character after .s, the workflow began searching. You only pressed enter when you had found what you were looking for. It was incredibly fast. It also seems more Alfred-ish. It behaves much like the ' keyword for searching files and folders.

I suspect we all share the understanding that improvements in speed are beneficial. That is why we're all using Alfred in the first place. But of course, it's up to you :)

boettges commented 6 years ago

@xilopaint sure, I only type todo j, but used the full word for the sake of clearness, due to the language differences.

Actually you were right. It is indeed listing the items and it simply takes time. debug consoles get stuck at: [2018-02-17 19:55:05][input.scriptfilter] Queuing argument '(null)' A lot of time…around 22 seconds.

I do keep track of a lot of todos and ideas and even draft out many steps in potential projects. I guess that adds to the loading time.

Maybe caching would be an option?

boettges commented 6 years ago

@xilopaint CulturedCode seems to be working on a url-scheme based API, which allows to work with JSON: https://support.culturedcode.com/customer/en/portal/articles/2803573 As far as I can see this only allows to forward search/show queries, as well as to add to-dos and projects.

I just sent an email to CulturedCode asking, whether a GET method of querying entire data-sets (all to-dos and projects by name and id) is also planned. As this won't rely on AppleScript, but more so be a direct internal query to Things database it should be much faster.

I'll keep you posted, if I hear from them 👌

xilopaint commented 6 years ago

I suspect we all share the understanding that improvements in speed are beneficial. That is why we're all using Alfred in the first place. But of course, it's up to you :)

Speed is beneficial but it's not the only aspect to take in consideration. Most of us have an enormous amount of workflows which is why a good guideline is always to define easy-to-recall keywords. And you cannot easily recall a keyword if it's not enough meaningful and linkable to its function.

Also, if I decide to expand the workflow by creating a new keyword and adding more code I need a good reason for it. I just think that offering an already available feature with a new keyword (eventually meaningless) in order to gain 1 second or less on a single list search is not a good reason.

Don't get me wrong, I like to hear your voice, I'm just not convinced yet. At the moment I prefer to keep the workflow cleaner but I'm open to new arguments.