cmdg

command module
v0.0.0-...-4809f3f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 8, 2016 License: GPL-2.0 Imports: 30 Imported by: 0

README

cmdg - A command line client to Gmail

Copyright Thomas Habets thomas@habets.se 2015

https://github.com/ThomasHabets/cmdg

Licence: This software is dual-licensed GPL and "Thomas is allowed to release a binary version that adds shared API keys and nothing else".

Introduction

cmdg is a commandline client to Gmail that provides a UI more similar to Pine.

It uses the Gmail API to interact with your mailbox. This has several benefits.

Benefits over IMAP

  • No passwords stored on disk. (application-specific passwords are also passwords, and can be used for more than Gmail). OAuth2 is used instead, and cmdgs access can be revoked here. cmdg can only access your Gmail, and cannot lose your password even if the machine it runs on gets hacked.
  • The "labels" model is native in the cmdg UI, unlike IMAP clients that try to map Gmail labels onto IMAP.
  • TODO: others

Benefits over the Gmail web UI

  • Emacs keys.
  • Uses a real $EDITOR.
  • Really fast. No browser, CSS, or javascript gettin in the way.
  • Proper quoting. The Gmail web UI encourages top-posting. Ugh.
  • It uses 100% keyboard navigation. Gmail web UI has very good keyboard navigation for a web app, but still requires mouse for a few things.
  • cmdg works without a graphic terminal.
  • cmdg uses less bandwidth (citation needed), and much less memory.
  • Local GPG integration.

A security difference

  • Gmail web UI uses username and password to log in, which means they can be stolen. You should be using U2F Yubikeys, so that losing the password isn't as big of a deal. The user has to re-type the password every now and then, which is an opportunity for the attacker to steal the password.
  • OAuth token in cmdg.conf can be copied, and the thief would be able to access the users Gmail until the key is revoked. The access does not expire on its own.

Installing

$ sudo apt-get install libncurses-dev pkg-config
$ mkdir go
$ cd go
$ GOPATH=$(pwd) go get github.com/ThomasHabets/cmdg
$ GOPATH=$(pwd) go build github.com/ThomasHabets/cmdg
$ sudo cp cmdg /usr/local/bin

Configuring

$ cmdg -configure
[It will ask about ClientID and ClientSecret.
For now you have create those at https://console.developers.google.com]
Cut and paste this URL into your browser:
  https://long-url....
Returned code: <paste code here>
$

This creates ~/.cmdg.conf.

Running

$ cmdg

For keyboard shortcuts, see the manpage, or press '?' in most screens.

To quit, press 'q'.

Documentation

Overview

cmdg is a command line client to Gmail.

  • Copyright (C) 2015 Thomas Habets <thomas@habets.se> *
  • This software is dual-licensed GPL and "Thomas is allowed to release a
  • binary version that adds shared API keys and nothing else". *
  • This program is free software; you can redistribute it and/or modify
  • it under the terms of the GNU General Public License as published by
  • the Free Software Foundation; either version 2 of the License, or
  • (at your option) any later version. *
  • This program is distributed in the hope that it will be useful,
  • but WITHOUT ANY WARRANTY; without even the implied warranty of
  • MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  • GNU General Public License for more details. *
  • You should have received a copy of the GNU General Public License along
  • with this program; if not, write to the Free Software Foundation, Inc.,
  • 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Directories

Path Synopsis
Package messagegetter provides an async API for fetching a whole bunch of gmail messages.
Package messagegetter provides an async API for fetching a whole bunch of gmail messages.
Package ncwrap wraps ncurses to provide a race free interface to the UI.
Package ncwrap wraps ncurses to provide a race free interface to the UI.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL