.flathub | ||
.github/ISSUE_TEMPLATE | ||
.rpm | ||
assets | ||
cmd | ||
cointop | ||
repo | ||
vendor | ||
.editorconfig | ||
.gitignore | ||
.goreleaser.yml | ||
.travis.yml | ||
CHANGELOG.md | ||
CODE_OF_CONDUCT.md | ||
cointop.rb | ||
CONTRIBUTING.md | ||
go.mod | ||
go.sum | ||
LICENSE.md | ||
main.go | ||
Makefile | ||
PULL_REQUEST_TEMPLATE.md | ||
README.md | ||
snapcraft.yaml |
cointop
Coin tracking for hackers
cointop
is a fast and lightweight interactive terminal based UI application for tracking and monitoring cryptocurrency coin stats in real-time.
The interface is inspired by htop
and shortcut keys are inspired by vim
.
In action
Table of Contents
Features
- Quick sort shortcuts
- Custom key bindings config
- Vim inspired shortcut keys
- Fast pagination
- Charts for coins and global market graphs
- Quick chart date range change
- Fuzzy searching for finding coins
- Currency conversion
- Save and view favorite coins
- Portfolio tracking of holdings
- Color support
- Help menu
- Offline cache
- Works on macOS, Linux, and Windows
- It's very lightweight; can be left running indefinitely
Installing
There are multiple ways you can install cointop depending on the platform you're on.
From source (always latest and recommeded)
Make sure to have go (1.10+) installed, then do:
go get -u github.com/miguelmota/cointop
Make sure $GOPATH/bin
is added to the $PATH
variable.
Now you can run cointop:
cointop
Binary (all platforms)
You can download the binary from the releases page
# replace x.x.x with the latest version
wget https://github.com/miguelmota/cointop/releases/download/x.x.x/cointop_x.x.x_linux_amd64.tar.gz
tar -xvzf cointop_x.x.x_linux_amd64.tar.gz cointop
./cointop
# optionally move to bin path
sudo mv cointop /usr/local/bin/cointop
Homebrew (macOS)
cointop is available via Homebrew for macOS:
brew install cointop
Run
cointop
Flatpak (Linux)
cointop is available as a Flatpak package via the Flathub registry.
Add the flathub repository (if not done so already)
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Install cointop flatpak
sudo flatpak install flathub com.github.miguelmota.Cointop
Run cointop flatpak
flatpak run com.github.miguelmota.Cointop
cointop flathub project page
Copr (Fedora)
cointop is available as a copr package.
First, enable the respository
sudo dnf copr enable miguelmota/cointop
Install cointop
sudo dnf install cointop
Run
cointop
cointop copr project page.
AUR (Arch Linux)
cointop is available as an AUR package.
git clone https://aur.archlinux.org/cointop.git
cd cointop
makepkg -si
Snap (Ubuntu)
cointop is available as a snap for Linux users.
sudo snap install cointop --stable
Running snap:
sudo snap run cointop
cointop snapcraft project page.
Note: snaps don't work in Windows WSL. See this issue thread.
Windows WSL (Windows)
Recommended to install using Go (instructions above).
You'll need additional font support for Windows WSL. Please see the wiki for instructions.
Binaries
You can find pre-built binaries on the releases page.
Updating
To update make sure to use the -u
flag if installed via Go.
go get -u github.com/miguelmota/cointop
Homebrew (macOS)
brew uninstall cointop && brew install cointop
Flatpak (Linux)
sudo flatpak uninstall com.github.miguelmota.Cointop
sudo flatpak install flathub com.github.miguelmota.Cointop
Copr (Fedora)
sudo dnf update cointop
Snap (Ubuntu)
Use the refresh
command to update snap.
sudo snap refresh cointop --stable
Getting started
Just run the cointop
command to get started:
$ cointop
Navigation
- Easiest way to navigate up and down is using the arrow keys ↑ and ↓, respectively
- To go the next and previous pages, use → and ←, respectively
- To go to the top and bottom of the page, use g and G (Shift+g), respectively
- Check out the rest of shortcut keys for vim-inspired navigation
Favorites
- To toggle a coin as a favorite, press Space on the highlighted coin
- To view all your favorite coins, press F (Shift+f)
- To exit out of the favorites view, press F (Shift+f) again or q
Portfolio
- To add a coin to your portfolio, press e on the highlighted coin
- To edit the holdings of coin in your portfolio, press e on the highlighted coin
- To view your portfolio, press P (Shift+p)
- To exit out of the portfolio view press, P (Shift+p) again or q
Search
- To search for coins, press / then enter the search query and hit Enter
Changing currency
- To change the currency, press c then enter the character next to the desired currency
Shortcuts
List of default shortcut keys:
Key | Action |
---|---|
↑ | Move up |
↓ | Move down |
→ | Go to next page |
← | Go to previous page |
Page Up | Jump page up |
Page Down | Jump page down |
Home | Go to first line of page |
End | Go to last line of page |
Enter | Toggle chart for highlighted coin |
Esc | Quit view |
Space | Toggle coin as favorite |
Ctrl+c | Quit application |
Ctrl+d | Jump page down (vim inspired) |
Ctrl+f | Search |
Ctrl+n | Go to next page |
Ctrl+p | Go to previous page |
Ctrl+r | Force refresh data |
Ctrl+s | Save config |
Ctrl+u | Jump page up (vim inspired) |
Alt+↑ | Sort current column in ascending order |
Alt+↓ | Sort current column in descending order |
Alt+← | Sort column to the left |
Alt+→ | Sort column to the right |
F1 | Show help |
F5 | Force refresh data |
0 | Go to first page (vim inspired) |
1 | Sort table by [1] hour change |
2 | Sort table by [2]4 hour change |
7 | Sort table by [7] day change |
a | Sort table by [a]vailable supply |
b | Sort table by [b]alance |
c | Show currency convert menu |
C | Show currency convert menu |
e | Show portfolio edit holdings menu |
E (Shift+e) | Show portfolio edit holdings menu |
f | Toggle coin as favorite |
F (Shift+f) | Toggle show favorites |
g | Go to first line of page (vim inspired) |
G (Shift+g) | Go to last line of page (vim inspired) |
h | Go to previous page (vim inspired) |
h | Sort table by [h]oldings (portfolio view only) |
H (Shift+h) | Go to top of table window (vim inspired) |
j | Move down (vim inspired) |
k | Move up (vim inspired) |
l | Go to next page (vim inspired) |
L (Shift+l) | Go to last line of visible table window (vim inspired) |
m | Sort table by [m]arket cap |
M (Shift+m) | Go to middle of visible table window (vim inspired) |
n | Sort table by [n]ame |
o | [o]pen link to highlighted coin (visits the API's coin page) |
p | Sort table by [p]rice |
P (Shift+p) | Toggle show portfolio |
r | Sort table by [r]ank |
s | Sort table by [s]ymbol |
t | Sort table by [t]otal supply |
u | Sort table by last [u]pdated |
v | Sort table by 24 hour [v]olume |
q | Quit view |
$ | Go to last page (vim inspired) |
? | Show help |
/ | Search (vim inspired) |
] | Next chart date range |
[ | Previous chart date range |
} | Last chart date range |
{ | First chart date range |
Config
The first time you run cointop, it'll create a config file in:
~/.cointop/config
You can then configure the actions you want for each key:
(default ~/.cointop/config
)
currency = "USD"
defaultView = "default"
[shortcuts]
"$" = "last_page"
0 = "first_page"
1 = "sort_column_1h_change"
2 = "sort_column_24h_change"
7 = "sort_column_7d_change"
"?" = "help"
"/" = "open_search"
"[" = "previous_chart_range"
"]" = "next_chart_range"
"{" = "first_chart_range"
"}" = "last_chart_range"
C = "show_currency_convert_menu"
E = "show_portfolio_edit_menu"
G = "move_to_page_last_row"
H = "move_to_page_visible_first_row"
L = "move_to_page_visible_last_row"
M = "move_to_page_visible_middle_row"
O = "open_link"
P = "toggle_portfolio"
a = "sort_column_available_supply"
"alt+down" = "sort_column_desc"
"alt+left" = "sort_left_column"
"alt+right" = "sort_right_column"
"alt+up" = "sort_column_asc"
down = "move_down"
left = "previous_page"
right = "next_page"
up = "move_up"
c = "show_currency_convert_menu"
b = "sort_column_balance"
"ctrl+c" = "quit"
"ctrl+d" = "page_down"
"ctrl+f" = "open_search"
"ctrl+n" = "next_page"
"ctrl+p" = "previous_page"
"ctrl+r" = "refresh"
"ctrl+s" = "save"
"ctrl+u" = "page_up"
e = "show_portfolio_edit_menu"
end = "move_to_page_last_row"
enter = "toggle_row_chart"
esc = "quit"
f = "toggle_favorite"
F = "toggle_show_favorites"
F1 = "help"
g = "move_to_page_first_row"
h = "previous_page"
home = "move_to_page_first_row"
j = "move_down"
k = "move_up"
l = "next_page"
m = "sort_column_market_cap"
n = "sort_column_name"
o = "open_link"
p = "sort_column_price"
pagedown = "page_down"
pageup = "page_up"
q = "quit_view"
Q = "quit_view"
r = "sort_column_rank"
s = "sort_column_symbol"
space = "toggle_favorite"
t = "sort_column_total_supply"
u = "sort_column_last_updated"
v = "sort_column_24h_volume"
You may specify a different config file to use by using the -config
flag:
cointop -config="/path/to/config"
List of actions
This are the action keywords you may use in the config file to change what the shortcut keys do.
Action | Description |
---|---|
first_chart_range |
Select first chart date range (e.g. 1H) |
first_page |
Go to first page |
help |
Show help |
hide_currency_convert_menu |
Hide currency convert menu |
last_chart_range |
Select last chart date range (e.g. All Time) |
last_page |
Go to last page |
move_to_page_first_row |
Move to first row on page |
move_to_page_last_row |
Move to last row on page |
move_to_page_visible_first_row |
Move to first visible row on page |
move_to_page_visible_last_row |
Move to last visible row on page |
move_to_page_visible_middle_row |
Move to middle visible row on page |
move_up |
Move one row up |
move_down |
Move one row down |
next_chart_range |
Select next chart date range (e.g. 3D → 7D) |
next_page |
Go to next page |
open_link |
Open row link |
open_search |
Open search field |
page_down |
Move one row down |
page_up |
Scroll one page up |
previous_chart_range |
Select previous chart date range (e.g. 7D → 3D) |
previous_page |
Go to previous page |
quit |
Quit application |
quit_view |
Quit view |
refresh |
Do a manual refresh on the data |
save |
Save config |
show_currency_convert_menu |
Show currency convert menu |
show_favorites |
Show favorites |
sort_column_1h_change |
Sort table by column 1 hour change |
sort_column_24h_change |
Sort table by column 24 hour change |
sort_column_24h_volume |
Sort table by column 24 hour volume |
sort_column_7d_change |
Sort table by column 7 day change |
sort_column_asc |
Sort highlighted column by ascending order |
sort_column_available_supply |
Sort table by column available supply |
sort_column_balance |
Sort table by column balance |
sort_column_desc |
Sort highlighted column by descending order |
sort_column_holdings |
Sort table by column holdings |
sort_column_last_updated |
Sort table by column last updated |
sort_column_market_cap |
Sort table by column market cap |
sort_column_name |
Sort table by column name |
sort_column_price |
Sort table by column price |
sort_column_rank |
Sort table by column rank |
sort_column_symbol |
Sort table by column symbol |
sort_column_total_supply |
Sort table by column total supply |
sort_left_column |
Sort the column to the left of the highlighted column |
sort_right_column |
Sort the column to the right of the highlighted column |
toggle_row_chart |
Toggle the chart for the highlighted row |
toggle_favorite |
Toggle coin as favorite |
toggle_show_currency_convert_menu |
Toggle show currency convert menu |
toggle_show_favorites |
Toggle show favorites |
toggle_portfolio |
Toggle portfolio view |
toggle_show_portfolio |
Toggle show portfolio view |
show_portfolio_edit_menu |
Show portfolio edit holdings menu |
FAQ
Frequently asked questions:
-
Q: Where is the data from?
- A: Currently the data is from CoinMarketCap.
-
Q: What coins does this support?
- A: This supports any coin supported by the API being used to fetch coin information.
-
Q: Will you be supporting more coin API's in the future?
- A: Yes supporting more coin APIs is planned.
-
Q: How often is the data polled?
- A: Data gets polled once every minute by default. You can press Ctrl+r to force refresh.
-
Q: I ran cointop for the first time and don't see any data?
- A: Running cointop for the first time will fetch the data and populate the cache which may take a few seconds.
-
Q: I'm no longer seeing any data!
- A: Run
cointop --clean
to delete the cache and then rerun cointop. If you're still not seeing any data, then please submit an issue.
- A: Run
-
Q: I installed cointop without errors but the command is not found.
-
A: Make sure your
GOPATH
andPATH
is set correctly.export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin
-
-
Q: Where is the config file located?
- A: The default configuration file is located under
~/.cointop/config
- A: The default configuration file is located under
-
Q: What format is the configuration file in?
- A: The configuration file is in TOML format.
-
Q: How do I search?
- A: The default key to open search is /. Type the search query after the
/
in the field and hit Enter.
- A: The default key to open search is /. Type the search query after the
-
Q: How do I exit search?
- A: Press ESC to exit search.
-
Q: Does this work on the Raspberry Pi?
- A: Yes, cointop works on the Rasperry Pi including the RPi Zero.
-
Q: How do I add/remove a favorite?
- A: Press the f key to toggle a coin as a favorite.
-
Q: How do I view all my favorites?
- A: Press F (Shift+f) to toggle view all your favorites.
-
Q: How do I save my favorites?
- A: Press ctrl+s to save your favorites.
-
Q: What does the yellow asterisk in the row mean?
- A: The yellow asterisk or star means that you've selected that coin to be a favorite.
-
Q: How do I add a coin to my portfolio?
- Press e on the highlighted coin to enter holdings and add to your portfolio.
-
Q: How do I edit the holdings of a coin in my portfolio?
- Press e on the highlighted coin to edit the holdings.
-
Q: How do I remove a coin in my portfolio?
- Press e on the highlighted coin to edit the holdings and set the value to any empty string (blank value). Set it to
0
if you want to keep the coin without a value.
- Press e on the highlighted coin to edit the holdings and set the value to any empty string (blank value). Set it to
-
Q: How do I view my portfolio?
- A: Press P (Shift+p) to toggle view your portfolio.
-
Q: I'm getting question marks or weird symbols instead of the correct characters.
-
A: Make sure that your terminal has the encoding set to UTF-8 and that your terminal font supports UTF-8.
You can also try running cointop with the following environment variables:
LANG=en_US.utf8 TERM=xterm-256color cointop
If you're on Windows WSL, please see the wiki for font support instructions.
-
-
Q: How do I install Go on Ubuntu?
- A: There's instructions on installing Go on Ubuntu in the wiki.
-
Q: I'm getting errors installing the snap in Windows WSL.
- A: Unfortunately Windows WSL doesn't support
snapd
which is required for snaps to run. See this issue thread.
- A: Unfortunately Windows WSL doesn't support
-
Q: How do I show the help menu?
- A: Press ? to toggle the help menu. Press q to close help menu.
-
Q: I'm getting the error:
new gocui: termbox: error while reading terminfo data: EOF
when trying to run.- A: Try setting the environment variable
TERM=screen-256color
- A: Try setting the environment variable
-
Q: Does cointop work inside an emacs shell?
- A: Yes, but it's slightly buggy.
-
Q: My shortcut keys are messed or not correct.
-
A: Delete the cointop config directory and rerun cointop.
rm -rf ~/.cointop
-
-
Q: How do I display the chart for the highlighted coin?
- A: Press Enter to toggle the chart for the highlighted coin.
-
Q: How do I change the chart date range?
-
A: Press ] to cycle to the next date range.
Press [ to cycle to the previous date range.
Press { to select the first date range.
Press } to selected the last date range.
-
-
Q: What chart date ranges are supported?
-
A: Supported date ranges are
All Time
,YTD
,1Y
,6M
,3M
,1M
,7D
,3D
,24H
,6H
,1H
.YTD = Year-to-date
-
-
Q: How do I change the fiat currency?
- A: Press c to show the currency convert menu, and press the corresponding key to select that as the fiat currency.
-
Q: Which currencies can I convert to?
-
A: The supported fiat currencies for conversion are
AUD
,BRL
,CAD
,CFH
,CLP
,CNY
,CZK
,DKK
,EUR
,GBP
,HKD
,HUF
,IDR
,ILS
,INR
,JPY
,KRW
,MXN
,MYR
,NOK
,NZD
,PLN
,PHP
,PKR
,RUB
,SEK
,SGD
,THB
,TRY
,TWD
,USD
, andZAR
.The supported crypto currencies for conversion are
BTC
andETH
.
-
-
Q: How do I save the selected currency to convert to?
- A: Press ctrl+s to save the selected currency to convert to.
-
Q: What does saving do?
- A: The save command (ctrl+s) saves your selected currency, selected favorite coins, and portfolio coins to the cointop config file.
-
Q: The data isn't refreshing!
- A: The coin APIs have rate limits, so make sure to keep manual refreshes to a minimum. If you've hit the rate limit then wait about half an hour to be able to fetch the data again. Keep in mind that some coin APIs, such as CoinMarketCap, update prices every 5 minutes so constant refreshes aren't necessary.
-
Q: How do I quit the application?
- A: Press ctrl+c to quit the application.
-
Q: How do I quit the open view/window?
- A: Press q to quit the open view/window.
-
Q: How do I set the favorites view to be the default view?
- A: In
~/.cointop/config
, setdefaultView = "favorites"
- A: In
-
Q: How do I set the portfolio view to be the default view?
- A: In
~/.cointop/config
, setdefaultView = "portfolio"
- A: In
-
Q: How do I set the table view to be the default view?
- A: In
~/.cointop/config
, setdefaultView = "default"
- A: In
-
Q: How can use a different config file other than the default?
- A: Run
cointop -config="/path/to/config/file"
to use the specified file as the config.
- A: Run
-
Q: I'm getting the error
open /dev/tty: no such device or address
.-A: Usually this error occurs when cointop is running as a daemon or slave which means that there is no terminal allocated, so
/dev/tty
doesn't exist for that process. Try running it with the following environment variables:DEV_IN=/dev/stdout DEV_OUT=/dev/stdout cointop
-
Q: I can only view the first page, why isn't the pagination is working?
- A: Sometimes the coin APIs will make updates and break things. If you see this problem please submit an issue.
-
Q: How can I delete the cache?
- A: Run
cointop -clean
to delete the cache files. Cointop will generate new cache files after fetching data.
- A: Run
-
Q: How can I reset cointop?
- A: Run
cointop -reset
to delete the config files and cache. Cointop will generate a new config when starting up.
- A: Run
-
Q: What is the size of the binary?
- A: The executable binary is ~6MB in size. Packed with UPX it's ~2.5MB
Development
Go
Running cointop from source
make run
Update vendor dependencies
make deps
Homebrew
Installing from source
make brew/build
Flatpak
Install the freedesktop runtime (if not done so already)
sudo flatpak install flathub org.freedesktop.Platform//1.6 org.freedesktop.Sdk//1.6
Install golang extension
sudo flatpak install flathub org.freedesktop.Sdk.Extension.golang
Building flatpak package
make flatpak/build
Copr
Install dependencies
make copr/install/cli
make rpm/install/deps
make rpm/dirs
Build package
make rpm/cp/specs
make rpm/download
make rpm/build
make copr/build
Snap
Building snap
make snap/build
Deployment
See this wiki.
License
Released under the Apache 2.0 license.