diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index de77df1..55311a0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,8 +15,8 @@ jobs: uses: actions/checkout@master - name: Compile - uses: xxxserxxx/actions/golang-build@v2.0.1 + uses: xxxserxxx/actions/golang-build@v2.1.0 env: SRCPATH: ./cmd/gotop with: - args: darwin/amd64/1 darwin/arm64/1 linux/amd64 linux/386 linux/arm64 linux/arm7 linux/arm6 linux/arm5 windows/amd64/1 windows/386/1 freebsd/amd64/1 + args: darwin/amd64/1 darwin/arm64/1 linux/amd64 linux/386 linux/arm64 linux/arm7 linux/arm6 linux/arm5 windows/amd64/1 windows/386/1 freebsd/amd64/1 diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index ecc6af8..fdd7f5a 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -14,7 +14,7 @@ jobs: uses: actions/checkout@master - name: Make binaries - uses: xxxserxxx/actions/golang-build@v2.0.1 + uses: xxxserxxx/actions/golang-build@v2.1.0 with: args: darwin/amd64/1 darwin/arm64/1 linux/amd64 linux/386 linux/arm64 linux/arm7 linux/arm6 linux/arm5 windows/amd64/1 windows/386/1 freebsd/amd64/1 env: @@ -36,3 +36,5 @@ jobs: files: | .release/*.tgz .release/*.zip + .release/*.rpm + .release/*.deb diff --git a/README.md b/README.md index 1c4d0a6..f23a061 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ If Go is not installed or is the wrong version, and you don't have root access o #### go generate -With Go 1.16, it is no longer necessary to call `go generate`. Translations and Apple SMC tags are emded with `go:embed`. +With Go 1.16, it is no longer necessary to call `go generate`. Translations and Apple SMC tags are embedded with `go:embed`. ## Usage diff --git a/build/gotop.conf b/build/gotop.conf new file mode 100644 index 0000000..20423ab --- /dev/null +++ b/build/gotop.conf @@ -0,0 +1,33 @@ +# Scale graphs to this level; 7 is the default, 2 is zoomed out. +graphhorizontalscale=7 +# If true, start the UI with the help visible +helpvisible=false +# The color scheme to use. See `--list colorschemes` +colorscheme=default +# How frequently to update the UI, in nanoseconds +updateinterval=1000000000 +# If true, show the average CPU load +averagecpu=false +# If true, show load per CPU +percpuload=true +# Temperature units. C for Celcius, F for Fahrenheit +tempscale=C +# If true, display a status bar +statusbar=false +# The network interface to monitor +netinterface=all +# A layout name. See `--list layouts` +layout=default +# The maximum log file size, in bytes +maxlogsize=5000000 +# If set, export data as Promethius metrics on the interface:port. +# E.g., `:8080` (colon is required, interface is not) +#metricsexportport= +# Display network IO in mpbs if true +mbps=false +# A list of enabled temp sensors. See `--list devices` +#temperatures= +# Enable NVidia GPU metrics. +nvidia=false +# To configure the NVidia refresh rate, set a duration: +#nvidiarefresh=30s diff --git a/build/nfpm.yml b/build/nfpm.yml index 69852e0..1457308 100644 --- a/build/nfpm.yml +++ b/build/nfpm.yml @@ -1,15 +1,27 @@ -name: "gotop" -arch: "amd64" -platform: "linux" -version: "v${VERSION}" -section: "default" -priority: "extra" -maintainer: "Sean Russell " -description: | - A terminal based graphical activity monitor inspired by gtop and vtop -vendor: "Sean Russell" -homepage: "https://github.com/xxxserxxx/gotop" -license: "GNU Affero General Public License v3.0" -bindir: "/usr/local/bin" -files: - build/gotop: "/usr/local/bin/gotop" +name: gotop +arch: amd64 +platform: linux +version: v${VERSION} +version_schema: semver +version_metadata: git +section: default +priority: extra +maintainer: Sean Russell +description: A terminal based graphical activity monitor inspired by gtop and vtop +vendor: Sean Russell +homepage: https://github.com/xxxserxxx/gotop +license: The MIT License (Festival variant) +contents: + # The executable + - src: gotop + dst: /usr/bin/gotop + + # Default configuration + - src: build/gotop.conf + dst: /etc/gotop/gotop.conf + type: config|noreplace + + # Contributed layouts + - src: layouts/htop + dst: /etc/gotop/htop + type: config|noreplace diff --git a/cmd/gotop/main.go b/cmd/gotop/main.go index 5f6c277..1e979c5 100644 --- a/cmd/gotop/main.go +++ b/cmd/gotop/main.go @@ -67,17 +67,23 @@ func parseArgs() error { version := opflag.BoolP("version", "v", false, tr.Value("args.version")) versioN := opflag.BoolP("", "V", false, tr.Value("args.version")) opflag.BoolVarP(&conf.PercpuLoad, "percpu", "p", conf.PercpuLoad, tr.Value("args.percpu")) + opflag.BoolVar(&conf.NoPercpuLoad, "no-percpu", conf.NoPercpuLoad, tr.Value("args.no-percpu")) opflag.BoolVarP(&conf.AverageLoad, "averagecpu", "a", conf.AverageLoad, tr.Value("args.cpuavg")) + opflag.BoolVar(&conf.NoAverageLoad, "no-averagecpu", conf.NoAverageLoad, tr.Value("args.no-cpuavg")) fahrenheit := opflag.BoolP("fahrenheit", "f", conf.TempScale == 'F', tr.Value("args.temp")) opflag.BoolVarP(&conf.Statusbar, "statusbar", "s", conf.Statusbar, tr.Value("args.statusbar")) + opflag.BoolVar(&conf.NoStatusbar, "no-statusbar", conf.NoStatusbar, tr.Value("args.no-statusbar")) opflag.DurationVarP(&conf.UpdateInterval, "rate", "r", conf.UpdateInterval, tr.Value("args.rate")) opflag.StringVarP(&conf.Layout, "layout", "l", conf.Layout, tr.Value("args.layout")) opflag.StringVarP(&conf.NetInterface, "interface", "i", "all", tr.Value("args.net")) opflag.StringVarP(&conf.ExportPort, "export", "x", conf.ExportPort, tr.Value("args.export")) opflag.BoolVarP(&conf.Mbps, "mbps", "", conf.Mbps, tr.Value("args.mbps")) + opflag.BoolVar(&conf.NoMbps, "no-mbps", conf.NoMbps, tr.Value("args.no-mbps")) opflag.BoolVar(&conf.Test, "test", conf.Test, tr.Value("args.test")) + opflag.BoolVar(&conf.NoTest, "no-test", conf.NoTest, tr.Value("args.no-test")) opflag.StringP("", "C", "", tr.Value("args.conffile")) opflag.BoolVarP(&conf.Nvidia, "nvidia", "", conf.Nvidia, "Enable NVidia GPU support") + opflag.BoolVarP(&conf.NoNvidia, "no-nvidia", "", conf.NoNvidia, "Disable NVidia GPU support") list := opflag.String("list", "", tr.Value("args.list")) wc := opflag.Bool("write-config", false, tr.Value("args.write")) opflag.SortFlags = false @@ -161,6 +167,26 @@ func parseArgs() error { fmt.Println(tr.Value("help.written", path)) os.Exit(0) } + + if conf.NoStatusbar { + conf.Statusbar = false + } + if conf.NoPercpuLoad { + conf.PercpuLoad = false + } + if conf.NoAverageLoad { + conf.AverageLoad = false + } + if conf.NoMbps { + conf.Mbps = false + } + if conf.NoTest { + conf.Test = false + } + if conf.NoNvidia { + conf.Nvidia = false + } + return nil } diff --git a/config.go b/config.go index 7ff2947..d818285 100644 --- a/config.go +++ b/config.go @@ -34,20 +34,26 @@ type Config struct { Colorscheme colorschemes.Colorscheme UpdateInterval time.Duration AverageLoad bool + NoAverageLoad bool PercpuLoad bool + NoPercpuLoad bool Statusbar bool + NoStatusbar bool TempScale widgets.TempScale NetInterface string Layout string MaxLogSize int64 ExportPort string Mbps bool + NoMbps bool Temps []string Test bool + NoTest bool ExtensionVars map[string]string ConfigFile string Tr lingo.Translations Nvidia bool + NoNvidia bool NvidiaRefresh time.Duration } @@ -61,9 +67,15 @@ func NewConfig() Config { HelpVisible: false, UpdateInterval: time.Second, AverageLoad: false, + NoAverageLoad: false, PercpuLoad: true, + NoPercpuLoad: false, TempScale: widgets.Celsius, Statusbar: false, + NoStatusbar: false, + NoMbps: false, + NoTest: false, + NoNvidia: false, NetInterface: widgets.NetInterfaceAll, MaxLogSize: 5000000, Layout: "default", diff --git a/dicts/de_DE.toml b/dicts/de_DE.toml index a06edaf..58897c4 100644 --- a/dicts/de_DE.toml +++ b/dicts/de_DE.toml @@ -77,15 +77,20 @@ color="Farbschema einstellen." scale="Skalierungsfaktor der Graphen, >0" version="Versionsangabe und Beenden." percpu="Jede CPU im CPU-Widget anzeigen." +no-percpu="Abschalten die CPU im CPU-Widget anzeigen." cpuavg="Durchschnittliche CPU im CPU-Widget anzeigen." +no-cpuavg="Abschalten die Durchschnittliche CPU im CPU-Widget anzeigen." temp="Temperaturen in Fahrenheit anzeigen." statusbar="Statusleiste mit Uhrzeit anzeigen." +no-statusbar="Abschalten die Statusleiste mit Uhrzeit anzeigen." rate="Frequenz aktualisieren. Die meisten Zeiteinheiten werden akzeptiert. \"1m\" = jede Minute aktualisieren. \"100 ms\" = alle 100 ms aktualisieren." layout="Name der Layoutspezifikationsdatei für die Benutzeroberfläche. \"-\" liest aus Standard-Eingabe." net="Netzwerkschnittstelle auswählen. Mehrere Schnittstellen können durch Kommata getrennt werden. Schnittstellen mit \"!\" werden ignoriert." export="Metriken für den Export auf dem angegebenen Port aktivieren." mbps="Netzwerkrate als MBit/s anzeigen." +no-mbps="Abschalten die Netzwerkrate als MBit/s anzeigen." test="Tests ausführen und mit Erfolgs- oder Fehlercode beenden." +no-test="Abschalten Tests" conffile="Konfigurationsdatei, die anstelle der Standardeinstellung verwendet werden soll (muss ERSTES ARGUMENT sein)." nvidia="NVidia-GPU-Metriken aktivieren." nvidiarefresh="Frequenz aktualisieren. Die meisten Zeiteinheiten werden akzeptiert." diff --git a/dicts/en_US.toml b/dicts/en_US.toml index c1f2d1f..87e3526 100644 --- a/dicts/en_US.toml +++ b/dicts/en_US.toml @@ -77,15 +77,20 @@ color="Set a colorscheme." scale="Graph scale factor, >0" version="Print version and exit." percpu="Show each CPU in the CPU widget." +no-percpu="Disable show each CPU in the CPU widget." cpuavg="Show average CPU in the CPU widget." +no-cpuavg="Disable show average CPU in the CPU widget." temp="Show temperatures in fahrenheit." statusbar="Show a statusbar with the time." +no-statusbar="Disable statusbar." rate="Refresh frequency. Most time units accepted. \"1m\" = refresh every minute. \"100ms\" = refresh every 100ms." layout="Name of layout spec file for the UI. Use \"-\" to pipe." net="Select network interface. Several interfaces can be defined using comma separated values. Interfaces can also be ignored using \"!\"" export="Enable metrics for export on the specified port." mbps="Show network rate as mbps." +no-mbps="Disable show network rate as mbps." test="Runs tests and exits with success/failure code." +no-test="Disable tests." conffile="Config file to use instead of default (MUST BE FIRST ARGUMENT)" nvidia="Enable NVidia GPU metrics" nvidiarefresh="Refresh frequency. Most time units accepted." diff --git a/dicts/eo.toml b/dicts/eo.toml index f316266..6ec5ad7 100644 --- a/dicts/eo.toml +++ b/dicts/eo.toml @@ -77,15 +77,20 @@ color="Agordi kloraj skemoj." scale="Agordi grafilan skalon, >0" version="Montri version kaj eliri." percpu="Montri ĉiun CPU en la CPU-fenestraĵo." +no-percpu="Malŝalti montri ĉiun CPU en la CPU-fenestraĵo." cpuavg="Montri duonan CPU en la CPU-fenestraĵo." +no-cpuavg="Malŝalti montri duonan CPU en la CPU-fenestraĵo." temp="Montri temperaturojn en fahrenheit." statusbar="Montri statusbarbaron kun la tempo." +no-statusbar="Malŝalti montri statusbarbaron kun la tempo." rate="Refreŝiga ofteco. Plej multaj unuoj akceptitaj. \"1m\" = refreŝigi ĉiun minuton. \"100ms\" = refreŝigi ĉiun dekonon minuton." layout="Nomo de aranĝa specifa dosiero por la UI. Uzu \"-\" por pipi." net="Elekti retinterfacon. Multaj interfacoj povas esti difinitaj per komparaj valoroj. Interfacoj ankaŭ povas esti ignorataj per \"!\"" export="Ebligu metrikojn por eksportado en la specifita haveno." mbps="Montri reta takson kiel mbps." +no-mbps="Malŝalti montri reta takson kiel mbps." test="Ekzekutas testojn kaj forirojn kun sukceso / fiaska kodo." +no-test="Malŝalti ekzekutas testojn kaj forirojn kun sukceso / fiaska kodo." conffile="Agordi dosiero por uzi anstataŭ defaŭlte (DEVAS ESTI UNUA ARGUMENTO)" nvidia="Ebligu NVidia GPU-metrikojn" nvidiarefresh="Refreŝigi oftecon. Plej multaj tempunuoj akceptis." diff --git a/dicts/es.toml b/dicts/es.toml index 048e2d2..7a04aef 100644 --- a/dicts/es.toml +++ b/dicts/es.toml @@ -77,15 +77,20 @@ color="Establecer una esquema de colores ." scale="Factor de escala de gráfico, >0" version="Imprimir versión y salir." percpu="Muestra cada CPU en el widget de CPU." +no-percpu="Inutilizar muestra cada CPU en el widget de CPU." cpuavg="Mostrar uso de CPU promedio en el widget de CPU." +no-cpuavg="Inutilizar mostrar uso de CPU promedio en el widget de CPU." temp="Mostrar temperaturas en grados Fahrenheit." statusbar="Muestra una barra de estado con la hora." +no-statusbar="Inutilizar muestra una barra de estado con la hora." rate="Actualizar frecuencia. Se aceptan la mayoría de las unidades de tiempo. \"1m\" = actualizar cada minuto. \"100ms\" = actualizar cada 100ms." layout="Nombre de archivo de especificaciones de diseño para la interfaz de usuario. Use \"-\" para pipe." net="Seleccionar interfaz de red. Se pueden definir varias interfaces utilizando valores separados por comas. Interfaces también se pueden ignorar usando \"!\"" export="Habilitar métricas para exportar en el puerto especificado." mbps="Muestra la velocidad de la red como mbps." +no-mbps="Inutilizar muestra la velocidad de la red como mbps." test="Ejecuta pruebas y sale con código de éxito / error." +no-test="Inutilizar ejecuta pruebas y sale con código de éxito / error." conffile="Archivo de configuración para usar en lugar de predeterminado (DEBE SER EL PRIMER ARGUMENTO)" nvidia="Habilitar métrica de NVidia GPU" nvidiarefresh="Frecuencia de actualización. Se aceptan la mayoría de las unidades de tiempo." diff --git a/dicts/fr.toml b/dicts/fr.toml index f13dc5f..d780522 100644 --- a/dicts/fr.toml +++ b/dicts/fr.toml @@ -77,15 +77,20 @@ color="Sélectionner un jeu de couleurs." scale="Facteur de mise à l'échelle, >0" version="Afficher la version et sortir." percpu="Montrer chaque CPU dans le widget CPU." +no-percpu="Désactiver montrer chaque CPU dans le widget CPU." cpuavg="Montrer le CPU moyen dans le widget CPU." +no-cpuavg="Désactiver montrer le CPU moyen dans le widget CPU." temp="Montrer les températures en fahrenheit." statusbar="Montrer une barre d'état avec l'heure." +no-statusbar="Désactiver montrer une barre d'état avec l'heure." rate="Fréquence de rafraîchissement. La plupart des unités de temps sont acceptées. \"1m\" = rafraîchir toutes les minutes. \"100ms\" = rafraîchir toutes les 100ms." layout="Nom du fichier de spécification de disposition pour l'interface utilisateur. Utiliser \"-\" pour l'entrée standard." net="Choisir l'interface réseau. Plusieurs interfaces peuvent être décrites en les séparant par des virgules. Elles peuvent aussi être ignorées avec \"!\"" export="Activer l'export des mesures sur le port indiqué." mbps="Montrer le débit réseau en mbps." +no-mbps="Désactiver montrer le débit réseau en mbps." test="Lancer les tests et sortir avec le code de succès ou d'échec." +no-test="Désactiver lancer les tests et sortir avec le code de succès ou d'échec." conffile="Fichier de configuration à utiliser au lieu du fichier par défaut (DOIT ÊTRE PASSÉ EN PREMIER)" nvidia="Activer les métriques GPU NVidia" nvidiarefresh="Rafraîchir la fréquence. La plupart des unités de temps sont acceptées." diff --git a/dicts/tt_TT.toml b/dicts/tt_TT.toml index f83cb8f..d6faa02 100644 --- a/dicts/tt_TT.toml +++ b/dicts/tt_TT.toml @@ -76,15 +76,20 @@ color=".emehcsroloc a teS" scale="0> ,rotcaf elacs hparG" version=".tixe dna noisrev tnirP" percpu=".tegdiw UPC eht ni UPC hcae wohS" +no-percpu=".tegdiw UPC eht ni UPC hcae wohs elbasiD" cpuavg=".tegdiw UPC eht ni UPC egareva wohS" +no-cpuavg=".tegdiw UPC eht ni UPC egareva wohs elbasiD" temp=".tiehnerhaf ni serutarepmet wohS.tiehnerhaf ni serutarepmet wohS" statusbar=".emit eht htiw rabsutats a wohS" +no-statusbar=".emit eht htiw rabsutats a wohs elbasiD" rate=".sm001 yreve hserfer = \"sm001\" .etunim yreve hserfer = \"m1\" .detpecca stinu emit tsoM .ycneuqerf hserfeR" layout="Name of layout spec file for the UI. Use \"-\" to pipe." net="gnisu derongi eb osla nac secafretnI .seulav detarapes ammoc gnisu denifed eb nac secafretni lareveS .ecafretni krowten tceleS \"!\"" export=".trop deificeps eht no tropxe rof scirtem elbanE" mbps=".spbm sa etar krowten wohS" +no-mbps=".spbm sa etar krowten wohs elbasiD" test=".edoc eruliaf/sseccus htiw stixe dna stset snuR" +no-test=".edoc eruliaf/sseccus htiw stixe dna stset snur elbasiD" conffile=")TNEMUGRA TSRIF EB TSUM( tluafed fo daetsni esu ot elif gifnoC" nvidia="scirtem UPG aidiVN elbanE" nvidiarefresh=".detpecca stinu emit tsoM .ycneuqerf hserfeR" diff --git a/layouts/htop b/layouts/htop new file mode 100644 index 0000000..6556639 --- /dev/null +++ b/layouts/htop @@ -0,0 +1,3 @@ +cpu mem +2:procs +net temp disk