2018-02-19 15:25:02 +08:00
# gotop
![image ](demo.gif )
Another TUI graphical activity monitor, inspired by [vtop ](https://github.com/MrRio/vtop ) and [gtop ](https://github.com/aksakalli/gtop ), this time written in [Go ](https://golang.org/ )!
Built with [gopsutil ](https://github.com/shirou/gopsutil ), [drawille-go ](https://github.com/exrook/drawille-go ), and a heavily modified version of [termui ](https://github.com/gizak/termui ) which uses [termbox-go ](https://github.com/nsf/termbox-go ).
## Installation
2018-02-20 04:03:14 +08:00
Go compiles to a single executable so you just need to get that into your $PATH.
2018-02-19 15:25:02 +08:00
2018-02-20 08:06:50 +08:00
To download the latest binary for your OS into `/usr/bin` , you can run the [install ](https://github.com/cjbassi/gotop/blob/master/install.sh ) script:
2018-02-19 15:25:02 +08:00
2018-02-19 16:22:14 +08:00
```
2018-02-20 03:30:38 +08:00
curl https://raw.githubusercontent.com/cjbassi/gotop/master/install.sh | sudo bash
2018-02-19 16:22:14 +08:00
```
2018-02-19 15:25:02 +08:00
2018-02-20 16:03:45 +08:00
If you install this way, starting gotop with the `-u` flag will update if there's a newer version.
2018-02-19 15:25:02 +08:00
2018-02-20 08:06:50 +08:00
To uninstall:
2018-02-20 03:30:38 +08:00
```
2018-02-20 03:57:05 +08:00
sudo rm /usr/bin/gotop
2018-02-20 03:30:38 +08:00
```
2018-02-19 15:33:48 +08:00
2018-02-20 16:03:45 +08:00
Currently only tested on Arch Linux x86_64, so create an issue if the binary for your OS doesn't work or if there isn't one.
2018-02-20 12:00:18 +08:00
2018-02-19 15:25:02 +08:00
### Arch Linux
2018-02-19 15:27:26 +08:00
Alternatively, if you're on Arch Linux you can install the `gotop` package from the AUR.
2018-02-19 15:25:02 +08:00
## Keybinds
* Quit: `q` or `Ctrl-c`
* Navigation:
* `<up>` /`< down > ` and `j` /`k`: up and down
* `C-d` and `C-u` : up and down half a page
* `C-f` and `C-b` : up and down a full page
* `gg` and `G` : jump to top and bottom
* Process Sorting:
* `c` : CPU
* `m` : Mem
* `p` : PID
* `<tab>` : toggle process grouping
* `dd` : kill the selected process or process group
* `<left>` /`< right > ` and `h` /`l`: zoom in and out of graphs
* `?` : toggles keybind help menu
* `u` : update gotop
## Mouse Control
* click to select process
2018-02-20 08:09:57 +08:00
* mouse wheel to scroll Process List
2018-02-19 15:25:02 +08:00
## Colorschemes
2018-02-20 03:54:04 +08:00
A different Colorscheme can be set with the `-c` flag followed its name. You can find them in the `colorschemes` folder.
Feel free to add a new one. You can use 256 colors, bold, underline, and reverse. More info [here ](https://godoc.org/github.com/nsf/termbox-go#Attribute ) and [here ](https://godoc.org/github.com/nsf/termbox-go#OutputMode ) under 'Output256'.
2018-02-19 15:25:02 +08:00
## TODO
* Network Usage
- increase height of sparkline depending on widget size
* Process List
- memory total goes above 100%
* Disk Usage
2018-02-20 16:03:45 +08:00
- color percentage based on usage
2018-02-19 15:25:02 +08:00
- change bar color to white
2018-02-19 15:33:48 +08:00
* CPU Usage
2018-02-20 16:03:45 +08:00
- support colors for more CPU cores
2018-02-19 15:25:02 +08:00
* general
2018-02-20 08:09:57 +08:00
- add support for themes
2018-02-20 16:03:45 +08:00
- copy over vtop themes
- command line option to set polling interval for CPU and mem
- command line updating
- command line option to only show processes, CPU, and mem
2018-02-19 15:25:02 +08:00
- zooming in and out of graphs
2018-02-20 16:03:45 +08:00
- add gif
- create a mac binary
2018-02-19 15:25:02 +08:00
* cleaning up code
- termui Blocks should ignore writing to the outside area
- Ignore writes to outside of inner area, or give error?
- termui Blocks should be indexed at 0, and maybe change X and Y variables too
2018-02-20 08:09:57 +08:00
- remove gotop unique logic from list and table
2018-02-20 16:03:45 +08:00
- turn column width logic into a function
2018-02-19 15:25:02 +08:00
- try to get drawille fork merged upstream
- more documentation
- Draw borders and label after other stuff
- Only merge stuff in the range
- Merge should include offset
- Remove merge from grid buffer function, just render
- Remove merge altogether
## License
AGPLv3