💼 CLI / TUI for Pocket

Related tags

Command Line gocket
Overview

gocket

Logo of Gocket

travis CLI Go Report Card Codacy Badge Hits-of-Code License Tweet

A simple CLI (or TUI) for Pocket.

  • Read your Pocket goodies from your comfy shell.
  • Archive or delete multiple entries easily.
  • Use a TUI or pipe the pages' URLs (or titles) to any CLI you want.
  • Search through your Pocket list.
  • Works on Linux, macOS (not tested), and Windows (not tested).

screenshot of gocket tui

Gocket is in early version. Its interface might change. See the CHANGELOG

Installation

General

You can simply grab the latest binary file and download the version you need, depending on your OS.

Linux script

If you use a Linux-based OS, here's a simple way to download gocket and move it to /usr/local/bin. You can then call it wherever you want.

curl -L https://raw.githubusercontent.com/Phantas0s/gocket/master/install/linux.sh | bash

Manual installation

  • You need the last version of Golang installed.
  • You need to clone this repository and build the binary in the root directory with the command go build.

Authorization

You need to authorize gocket to access your Pocket account. It's very easy:

Steps

  1. Go to Gocket apps and create an application
  2. Authorize the application to add, modify, and retrieve if you want to use the full set of gocket's feature
  3. You need to pass the consumer key to gocket each time you use it (-k option) or you can use a config file:
    1. Create the file $XDG_CONFIG_HOME/gocket/config.yml
    2. Create an entry with key as index and the consumer key as value, for example key: 1234-5a6b7c
    3. Your config can be a YAML, TOML, or JSON file
  4. The first time you use pocket, you'll need to confirm your authorization. A webpage will open automatically in your favorite browser to do so
  5. Enjoy!

XDG Home Directory

Running gocket list without any consumer key will display an error message indicating where to create the config file.

The value of $XDG_CONFIG_HOME depends of your OS. Here are the defaults (if you didn't modify it):

  • Unix systems: ~/.config
  • macOS: ~/Library/Application Support
  • Windows: %LOCALAPPDATA%

Commands

Use the option -h for each command to output the help.

List

  • gocket list: list your Pocket pages.
  • gocket list archive: list the archives.

The options for these two commands are almost identical. Here are the difference:

  • Use -a with gocket list to bulk add every listed entry to the archive (with confirmation).
  • Use -a with gocket list archive to bulk add every listed archive to the unread list (with confirmation).

Adding New Pages

  • gocket add <URLs...>: Add the URLs <URLs....> to pocket. You can add multiple URLs separated with spaces.

This command will read the standard input stream (stdin) if no argument is given. For example:

echo "https://thevaluable.dev" | gocket add

If you want to display a message when each URL is successfully added, use the option verbose (-v).

Usage

If you choose to use the TUI, you can select a page and open it with your favorite browser using the ENTER key.

Description Command
Output every page's URLs gocket list
Display every page's URLs in a TUI gocket list --tui
Output the last 5 pages' URLs added gocket list -c 5
Display pages in a TUI and don't ask confirmation for any operation gocket list -c 5 --tui --noconfirm
Filter for type 'video' ('article' or 'image' possible too) gocket list -f "video"
Search for "youtube" in titles and URLs gocket list -s "golang"
Open the last page added with Firefox gocket list -c 1 | xargs firefox
Open the last page added with Lynx gocket list -c 1 | lynx -
Open the oldest page added with Firefox gocket list -c 1 -o "oldest" | xargs firefox
Open the last 5 pages added with Firefox and archive them gocket list -c 5 -a --noconfirm | xargs firefox
Open the last page added with Firefox and delete it gocket list -c 1 -d --noconfirm | xargs firefox
Print only the pages' titles gocket list -c 10 -t | sed 'n;d'

As a bonus for Linux users (might work on macOS too), you can use fzf to fuzzy search the page you want and open it with Firefox:

gocket list -c 5 -t | sed 'N;s#\n# /// #' | fzf | awk -F ' /// ' '{print $2}' | xargs firefox

Option, Configuration, and Environment Variables

You can provide the different options to gocket using:

  1. Command-line options (i.e gocket list --tui)
  2. Environment variables (i.e export GOCKET_TUI=true)
  3. Configuration file (i.e tui: true in $XDG_CONFIG_HOME/gocket/config.yaml|json|toml)

If these options are defined multiple times, the priorities follow the order above (from higher priority to lower).

The names of the environment variables need to be uppercase and prefixed with GOCKET_. Every hyphen - in the option's name needs to be replaced with an underscore _.

TUI Keystrokes

Navigation

 ↑ or k: up
 ↓ or j: down
 PgUp or CTRL+u: One screen up
 PgDn or CTRL+d: One screen down
 Home or g: Top of the list
 End or G: Bottom of the list

Action

 ENTER: Open the selected page with your favorite browser
 d: Delete Pocket entry
 a: Add (if list archive) or archive (if list unread)

Sponsorship

Consider sponsoring my work if you want to see new, fresh, and crunchy little CLIs (and TUIs) all over your system.

Shameless Mouseless Plug

Switching between a keyboard and mouse costs cognitive energy. My book will help you set up a Linux-based development environment that keeps your hands on your keyboard. Take the brain power you've been using to juggle input devices and focus it where it belongs: on the things you create.

Acknowledgements

  • Thanks to the project go-pocket, it gave me the basic data structures and other ideas.
  • Thanks to MariaLetta for the awesome and beautiful Gopher pack! I used it for my logo on top.
  • Thanks to Lukasz Adam for his free and amazing illustrations I use basically everywhere.

Licence

Apache Licence 2.0

Issues
  • continuous url fetching

    continuous url fetching

    url fetching process is continuous without stop, when i issued the following command in terminal.

    gocket list -c 20 -t | sed 'N;s#\n# /// #' | fzf | awk -F ' /// ' '{print $2}' | xargs w3m 
    or
    gocket list -c 20 -t | sed 'N;s#\n# /// #' | fzf | awk -F ' /// ' '{print $2}' | xargs firefox
    
    

    gocket list -c 20 is fetchng urls list without any problem.

    I request you to give browser option in configuration file ( to set terminal browsers like w3m ) as interface of terminal browser goes well with gocket tui and change over to view mode is quick.

    w3m with readerview gives distraction free reading experience.

    opened by muralikodali 9
  • Authorization issue with Pocket on Windows

    Authorization issue with Pocket on Windows

    Hi there,

    Thanks for making this tool, this is great! I always like seeing new TUI clients for online services.

    Issue

    I'm trying to run gocket from Powershell in Windows Terminal on Windows 10. I've built the binary from source and followed the authorization instructions in the README and saved the application key in C:\Users\<user>\AppData\Local\gocket\config.yml.

    However, when I run gocket list, a new webpage opens to authorize the application with Pocket for the first time, and the application doesn't authorize.

    image

    There isn't any more specific information than this, so I'm not sure where the issue might be.

    Troubleshooting

    Gocket does run properly within Windows Subsystem for Linux

    Using the Windows Subsystem for Linux, I've built the binary again in my Ubuntu subsystem and copied the config.yml file from C:\Users\<user>\AppData\Local\gocket\config.yml. to /home/<user>/.config/gocket/config.yml. When I run gocket list, the app authorizes correctly and I can see my saved list.

    So I think I've made the application key correctly and stored it in the right format.

    Console error message

    On Windows, when the authorization step fails, there are a couple errors listed in the Firefox console that may help with diagnosing the issue.

    image

    On Microsoft Edge (Chromium version), the console error is similar but slightly different.

    image

    Machine information

    Just in case this will help, here is some information about my system.

    | Variable | Value | | --------- | ------ | | Operating system | Windows 10 Pro version 20H2 x86_64 | | Kernel | Kernel: 10.0.19042 | | Browser | Firefox 87.0, Edge 89.0.774.63 |

    Thanks

    opened by jrhawley 2
Releases(v0.2.4)
Owner
Matthieu Cneude
My "bio" is here => https://thevaluable.dev/page/about/
Matthieu Cneude
Tabouli: a TUI for interacting with firmware/embedded devices that support a CLI via serial interface/virtual COM Port

Tabouli Information Tabouli is a TUI for interacting with firmware/embedded devi

Ovyl 26 Apr 2, 2022
TUI process monitor written in Go

pst This is TUI process monitor written in Go. Features Monitor process's list, info, tree, open files, Kill process Support OS Mac Linux Requirements

skanehira 326 Jun 22, 2022
a TUI for signal messenger, written in Go

siggo A terminal ui for signal-cli, written in Go. Features vim-style ux useful for quick messages or use $EDITOR to compose fancy ones emoji support,

Derric Williams 307 Jun 14, 2022
A powerful little TUI framework 🏗

Bubble Tea The fun, functional and stateful way to build terminal apps. A Go framework based on The Elm Architecture. Bubble Tea is well-suited for si

Charm 13.4k Jun 26, 2022
Canard. A command line TUI client for the journalist RSS aggregator.

Canard Canard. A command line TUI client for the Journalist RSS aggregator. Installation Download a binary from the releases page. Or build it yoursel

マリウス 79 Jun 24, 2022
🧭 TUI for command navigation

devgo a command-line launcher Install latest version curl -o- https://raw.githubusercontent.com/TheWinds/devgo/main/install.sh | bash special version

风影. 14 Apr 19, 2022
A terminal UI (TUI) for HashiCorp Nomad

Damon - A terminal Dashboard for HashiCorp Nomad Damon is a terminal user interface (TUI) for Nomad. It provides functionality to observe and interact

HashiCorp 231 Jun 25, 2022
A TUI multitool for day-to-day operations for software applications.

Bench (WIP) A TUI multitool for day-to-day operations for software applications. Lets you do common operations needed during IT work that are common e

null 1 Dec 5, 2021
🦜 Navigate github repos in a tui

goh Navigate github repos in a tui Why I am constantly refering to my github repos and repos from others for code snippets that are relevant to what I

Taylor Gamache 11 Dec 10, 2021
A tui for playing media from a caddy fileserver

kwatch a little tui interface to play media from a caddy fileserver. options: -a: server address -u: server http username -p: server http password -o:

Rylee 5 Jan 10, 2022
Light weight Terminal User Interface (TUI) to pick material colors written by Go.

mcpick Light weight Terminal User Interface (TUI) to pick material colors. You do NOT need to take your hands off the keyboard to pick colors. Getting

tenkoh 4 May 29, 2022
TUI Flappy Bird. It‘s a lil bit jank tbh

EBIRD TUI Flappy Bird. It's a lil bit jank tbh. Build and Install Build dependen

kota 1 Dec 22, 2021
A TUI implementation of the popular word quiz wordle!

gordle A TUI implementation of the popular word quiz Wordle! Building Build the cli command: $ go build ./cmd/cli <Empty output on build success> Buil

Christian Dobert 12 Apr 9, 2022
Podman-tui - A Terminal User Interface to interact with the podman (v3.x)

podman-tui podman-tui is a Terminal User Interface to interact with the podman (

Containers 152 Jun 28, 2022
The Cloud Aviator: TUI client for cloud services (AWS, Vultr, Heroku, Render.com, ...)

=== T H E C L O U D A V I A T O R === ⠀⠀⠀⠀⠀⠀⠀⠀⢶⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

◤◢◤◢◤◢◤◢ 22 Jun 9, 2022
Elegant CLI wrapper for kubeseal CLI

Overview This is a wrapper CLI ofkubeseal CLI, specifically the raw mode. If you just need to encrypt your secret on RAW mode, this CLI will be the ea

Elm 4 Jan 8, 2022
CLI to run a docker image with R. CLI built using cobra library in go.

BlueBeak Installation Guide Task 1: Building the CLI The directory structure looks like Fastest process: 1)cd into bbtools 2)cd into bbtools/bin 3)I h

Aniruddha Chattopadhyay 0 Dec 20, 2021
A wrapper of aliyun-cli subcommand alidns, run aliyun-cli in Declarative mode.

aliyun-dns A wrapper of aliyun-cli subcommand alidns, run aliyun-cli in Declarative mode. Installation Install aliyun-cli. Usage $ aliyun-dns -h A wra

许嘉华 0 Dec 21, 2021
Symfony-cli - The Symfony CLI tool For Golang

Symfony CLI Install To install Symfony CLI, please download the appropriate vers

Symfony CLI 330 Jun 20, 2022