Skip to content
/ gm Public

πŸ”– Simple tool for manage your bookmarks

License

Notifications You must be signed in to change notification settings

haaag/gm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”– GoMarks

Simple cli tool for manage your bookmarks 🚧 WIP

GitHub go.mod Go version Linux SQLite

Warning

This repo is a work in progress! Needing both cleaning up and documenting.

✨ Features

  • Support multiple databases
  • Restore deleted bookmarks
  • Import bookmarks from firefox based browsers
  • Import bookmarks from chromium based browsers
  • Fetch title and description from added URL
  • Check bookmark status (http status)
  • Support for NO_COLOR env variable.
  • Configure menu keybinds, prompt, header, preview (fzf) using a YAML file.
  • Migrate items from one database to another
  • Encrypt database priority
  • Add docker|podman support priority
  • ...

πŸ“¦ Installation

git clone "https://github.com/haaag/gm" && cd gm

# build using make
make

# or build using `go build`
go build -o ./bin

This will create a ./bin/gm binary in your current directory.

πŸ“– Usage (🚧WIP)

This must be simplified a bit.

$ gm --help
Simple yet powerful bookmark manager for your terminal

Available Commands:
  add         add a new bookmark
  bk          backup management
  db          database management
  help        Help about any command
  import      import bookmarks from browser/database
  restore     restore deleted bookmarks
  version     print version information

Flags:
      --color string   output with pretty colors [always|never] (default "always")
  -c, --copy           copy bookmark to clipboard
  -e, --edit           edit with preferred text editor
  -f, --field string   output by field [id|url|title|tags]
      --force          force action | don't ask confirmation
  -H, --head int       the <int> first part of bookmarks
  -h, --help           help for gm
  -j, --json           output in JSON format
  -m, --menu           menu mode (fzf)
  -M, --multiline      output in formatted multiline (fzf)
  -n, --name string    database name (default "bookmarks.db")
  -O, --oneline        output in formatted oneline (fzf)
  -o, --open           open bookmark in default browser
  -q, --qr             generate qr-code
  -r, --remove         remove a bookmarks by query or id
  -s, --status         check bookmarks status
  -t, --tag strings    list by tag
  -T, --tail int       the <int> last part of bookmarks
  -v, --verbose        verbose mode

πŸ”‘ Supported Env Vars

Name type Description Status
GOMARKS_HOME str Path to database/yaml done
GOMARKS_EDITOR str Preferred text editor done
GOMARKS_BACKUP_MAX int Maximum number of backups (def: 3) done
NO_COLOR int Disable all colors done
πŸ“œ Menu support

Single/multiple selection for open, copy, edit, delete, check status.

gm-menu.mp4
βž• Add a bookmark
gm-add.mp4
πŸ“ Edit a bookmark
gm-edit.mp4
πŸ”³ Create QR-Code
gm-qr.mp4
β˜‘οΈ Check status
gm-status.mp4
βš™οΈ Configuration
  • $GOMARKS_HOME/menu.yml file

YAML file structure

prompt: "ο”Ÿ Gomarks> "
header: true
preview: true
keymaps:
  edit:
    bind: ctrl-e
    description: edit
    enabled: true
    hidden: false
  open:
    bind: ctrl-o
    description: open
    enabled: true
    hidden: false
  preview:
    bind: ctrl-/
    description: toggle-preview
    enabled: true
    hidden: false
  qr:
    bind: ctrl-k
    description: QRcode
    enabled: true
    hidden: false
  toggle_all:
    bind: ctrl-a
    description: toggle-all
    enabled: true
    hidden: true
  yank:
    bind: ctrl-y
    description: yank
    enabled: true
    hidden: false
⏳ TODO

TODO

❗ Priority

  • Use a ORM
    • Add multiple databases option (default.db, work.db, client.db)
  • Add Sync to remote repo???

XDG

  • Store db in XDG_DATA_HOME
  • Store menu config in XDG_CONFIG_HOME (WIP: for now in XDG_DATA_HOME)

πŸ“¦ Packages

  • terminal package
  • color package
  • files package

🟨 Redo

  • Backups
  • Databases

⛓️ Import

  • From firefox
  • From chrome chromium

♻️ Misc

  • Add a logging library
  • Support NO_COLOR env var. no-color