Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/spamwax/alfred-pinboard-rs

Alfred Workflow for Pinboard (Rust)
https://github.com/spamwax/alfred-pinboard-rs

alfred alfred-workflow bookmark pinboard productivity rust

Last synced: about 1 month ago
JSON representation

Alfred Workflow for Pinboard (Rust)

Awesome Lists containing this project

README

        

# Alfred Workflow for Pinboard

[![Build/Test/Release Alfred Workflow](https://github.com/spamwax/alfred-pinboard-rs/actions/workflows/macos-universal.yml/badge.svg)](https://github.com/spamwax/alfred-pinboard-rs/actions/workflows/macos-universal.yml)
[![Clippy Lints](https://github.com/spamwax/alfred-pinboard-rs/actions/workflows/lint.yml/badge.svg)](https://github.com/spamwax/alfred-pinboard-rs/actions/workflows/lint.yml)
[![Build status](https://ci.appveyor.com/api/projects/status/3g5uvuocs52yc444/branch/master?svg=true)](https://ci.appveyor.com/project/spamwax/alfred-pinboard-rs/branch/master)
[![SemVer](https://img.shields.io/github/v/tag/spamwax/alfred-pinboard-rs?color=green&label=SemVer&logo=semver&sort=semver)](CHANGELOG.md)

Manage, post and **preview** your bookmarks on [Pinboard](https://pinboard.in) right from within [Alfred app](https://www.alfredapp.com).

## Features
Pinboard is a great and reliable bookmarking service. Its [front page](https://pinboard.in) sums it all:
"**Social Bookmarking for Introverts. Pinboard is a fast, no-nonsense bookmarking site.**"

This plugin will let you:

- _**post**_ a bookmark to Pinboard right from Alfred, with:
- Fetching bookmark information from active browser's window
- _tag_ auto-completion to show your current tags.
- _popular_ tags for the current _url_
- and more ...
- _**search**_ your current bookmarks
- Tap Shift to show a preview of selected item without opening browser.
- Tap Command+L to show _Large_ toast of title
- Tap Command to show current item's _tags_
- Tap Control to show current item's extended notes/descriptioin.
- Bookmark deletion & tag renaming (Universal Actions)
- Automatic [updates](#misc) of workflow
- Many options that can be easily adjusted. (see below)

### TLDR;
After initial [setup](#installation--setup):
- For posting you just need to enter the Workflow's keyword ( `p` ) into Alfred's window and follow it with couple of tags and an optional description. The workflow will then post a bookmark for the window/tab of the active browser to Pinboard.

- For searching, use ( `ps` ) and then type the search keywords.

### Supported Browsers:
- Safari
- Chromium
- Firefox (See [known issues](#known_issues) & a workaround)
- Orion
- Opera
- Vivaldi
- Brave
- qutebrowser (See [known issues](#known_issues) )
- Firefox Dev. Edition
- Safari Tech. Preview
- Brave Beta
- Chrome

## Installation / Setup
After [downloading](https://github.com/spamwax/alfred-pinboard-rs/releases/latest) the latest version of the workflow and installing it in Alfred, you need to do a one-time setup to authenticate the Workflow. This Workflow only uses username/token method so you won't need to enter your password. (This is the *suggested* way of using Pinboard's API).
If you don't have a token, get one from Pinbaord's [setting's page](https://pinboard.in/settings/password).

Then invoke Alfred and enter your username:token after the ***"pa"*** keyword:

![image](./res/images/authentication.png)

This workflow will keep a local cache of the tags and bookmarks that you have in Pinboard, and, by default, automatically update the cache. (See [manual updates](#cache_update) )

---

## Usage (post a bookmark):
The syntax to post a bookmark to Pinboard is :

```
p tag1 tag2 tag3 ; some optional note (semi-colon & note are optional)
```

The workflow will show a list of your current tags as you are typing:

![image](./res/images/non-fuzzy-search-tags.png)

The number below each tag shows how many times you have used it in Pinboard bookmarks.
You can move Alfred's highlighter to the desired tag and hit '**Tab**' to **autocomplete** it.

To finish the process just press Enter.

- If tag suggestion feature is enabled (see `pset suggest_tags`), 3 popular tags based on current active webpage will be added to the list of your tags. The list is fetched from Pinboard's API and is often helpful. However this feature will add a 1 second delay to showing the tag list after first keystroke. This delay is disabled for consequent keystrokes as the fetched popular tags are cached.

![image](./res/images/popular-tags.png)

#### Modifiers (Control ⌃, Option ⌥)
You can hold down modifiers to one-time change some of your settings:

- Control ⌃ : will toggle `toread` setting momentarily.
- Option ⌥ : will toggle `shared` setting momentarily.

After entering last desired tag, you can hit enter to post the bookmark.
If you want to add extra description to the bookmark you can add it after a semi-colon:

![image](./res/images/adding-notes.png)

#### Already saved bookmark
If the current page is already saved, you will be notified. However the workflow assumes that:

- `http://example.com/list.html`
- `https://example.com/list.html`
- `http://example.com/list.html#fragment`

are all different bookmarks and will not notify you about duplication!

![image](./res/images/already-saved.png)

---

## Usage (search bookmarks):
Searching your bookmarks is easy.

```
ps query1 query2 query3 ...
```

Workflow will use the text you enter in Alfred and show list of bookmarks that contain **all** of the search keywords in any of the bookmarks information (Description of bookmark, its tags, its url and its extended notes). However, these search fields can be adjusted, see [settings](#config).

So **the more** search keywords you enter **the less** results will be displayed as it tries to find the bookmarks that contain ***all*** of the keywords.

The search result is ordered in descending order of dates they were posted to your Pinboard account.

![image](./res/images/bookmarks-search-results.png)

To show tags (instead of URLs) in search results subtitles, use `pset url_tag`:

![image](./res/images/url_vs_tag.png)

#### Modifier keys (Command ⌘, Control ⌃, Option ⌥)
You can hold down modifiers to enable different behavior:

- Control ⌃ : will show the extended description of selected bookmark.
- Command ⌘ : will show tags of selected bookmark.
- Option ⌥ : Holding `⌥` and pressing enter will open the bookmark in [Pinboard's website](https://pinboard.in).
- Command ⌘ + Option ⌥ : Hitting Return ⏎ key with these combo modifiers will copy the bookmark's URL to clipboard.
- Shift ⇧: **Tap** ⇧ to load a preview of bookmark without opening your browser 😎 ⤵︎

![image](./res/images/quicklook-preview.png)

---

## Usage (delete a bookmark):
Either use `pind` while the bookmark you want to delete is currently on your active browrser.

![image](./res/images/delete-pin.png)

Or use the `Delete Pinboard Bookmark` action on a bookmark item anywhere in this Workflow or on any url entered in Alfred's window:

![image](./res/images/delete_action.gif)

To delete a bookmark, just make sure it is opened in your current browser's window. Then use `pind`.
Proposed workflow for deleting a bookmark is to first open it in browser (search for it using this workflow's keyword `ps`, and hit enter) and then use `pind` keyword followed by enter.

## Usage (rename a tag):
Use `pr` to search for old tags, select the desired one from Alfred and hit enter. You will be prompted to enter a new tag name. You can either choose from your current tags or enter a new one.
![image](./res/images/tag_rename.gif)

Additonally you can __Action__ on a tag item anywhere in this Workflow and use the `Rename Pinboard Tag` action to achieve the same thing. (Requires Alfred 4.5+)

![image](./res/images/tag_rename_action.gif)

**Note:** See [known issues](#known_issues) for some limitations caused by Pinboard's API issues.

## Settings

You can configure the behavior of workflow by entering `pconf` in Alfred:

![image](./res/images/configuration.png)

Selecting each setting and hitting ⏎ (Enter) will let you adjust it:

![image](./res/images/set-fuzzy.png)

On top of using `pconf`, you can directly type following commands to also adjust the settings:

- `pset fuzzy`: Enable/disable fuzzy search.
- `pset suggest_tags`: When posting a new bookmark, list popular tags for the active page. Note that this information is fetched from Pinboard and sometimes is not very _accurate_.
- `pset shared`: Mark all new bookmarks as _shared_.
- `pset toread`: Mark all new bookmarks as _toread_.
- `pset check_bookmarked`: Notify if active page is already bookmarked.
- `pset tagonly`: Only search within _tag_ field while doing any look-up.
- `pset auto`: After posting a new bookmark, automatically update the local cache.
- `pset tags`: Set number of tags to show: `pset tags 25`
- `pset bookmarks`: Set number of bookmarks to show: `pset bookmarks 12`
- `pset url_tag`: Show either URLs or tags in search results subtitles

### Manual cache update

To manually update the cache, you need to issue the ***`pu`*** command:

![image](./res/images/update.png)

---

Most of configuration settings are self-explanatory. However `fuzzy` search may need a demo.

When fuzzy search is enabled, the tags/bookmarks that contain the query letters in the given order are displayed:

![image](./res/images/fuzzy-search-tags.png)

Otherwise, _normal_ search will search for consecutive characters in query:

![image](./res/images/non-fuzzy-search-tags.png)

---

## Misc.
- Workflow will check for newever version of itself every 24 hours. This check only takes place when you actually use one of its keywords (no background service is ever used). You can also manually check for updates using `pcheck`.

![image](./res/images/upgrade_available.png)

- This workflow tries to show some helpful errors in different cases.

![image](./res/images/error-1.png)
![image](./res/images/error-2.png)
![image](./res/images/error-3.png)

- If you want to change some behavior take a look at Alfred's workflow page:

![image](./res/images/workflow-screenshot.png)

---

## Known Issues
- **Firefox**: While tag suggestions and "Check if page is bookmarked" options are enabled, posting bookmark from Firefox is broken. Deleting bookmarks using `pind` won't work when Firefox is your active browser. Reason: Firefox does not properly support interacting with it programatically. As a workaround you can install the [alfred-firefox](https://github.com/deanishe/alfred-firefox) workflow. You will **not** be using that workflow directly, this workflow will use one of `alfred-firefox` functions to work around the mentioned issue.
- If you get `cannot be opened because the developer cannot be verified.` error, check out [this issue](https://github.com/spamwax/alfred-pinboard-rs/issues/120) as well as the [post](https://www.alfredforum.com/topic/13824-workflow-fail-with-developer-cannot-be-verified-errors-in-catalina/?do=findComment&comment=72101) on Alfred forum
- Renaming a tag will not be reflected immediately in local cache. It seems that Pinboard takes up to a minute to internally update your tags! Additionally, Pinboard's tag renaming API lacks providing error message if `old_tag` is not in your tag collection!!! It basically says `success` even though no renaming was done!
- This workflow is setup to work with Aflred 5. It may or may not work with previous version as it has not been tested for them.

## Alfred 4 Support & Issues
- Alfred 4 users: If upgrading workflow from `0.16.12` (or `0.16.7` and before), you may have to directly [download](https://github.com/spamwax/alfred-pinboard-rs/releases/latest) latest version and then open it in Finder
- Alfred 5 has made some changes to internal structure of workflows. Therefore if you updated this workflow through the built-in *automatic update*, it's *likely* that it'll stop working. If that happens, you can fix it by first deleteing & then re-installing the workflow by [downloading the last version (0.16.12)](https://github.com/spamwax/alfred-pinboard-rs/releases/tag/0.16.12) that has Alfred 4 format.
- Moving forward, new features, changes & bug fixes will first target Alfred 5 users and then (time permitting) will be ported back to Alfred 4.

## TODO

I wish to add the following in the coming releases:

## Feedback / Bugs
This is my first non-trivial project using Rust language so so your [feedback or bug](https://github.com/spamwax/alfred-pinboard-rs/discussions) reports are greatly appreciated.

## License
This open source software is licensed under [MIT License](./LICENSE.md).