summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYaojun Feng <Tigerfyj@users.noreply.github.com>2022-02-18 18:09:12 +0800
committerGitHub <noreply@github.com>2022-02-18 18:09:12 +0800
commit7096393dd5b5aa5e628e4eb8ea7f522c0554efb7 (patch)
tree3a4561d4cc6823c121ce0a3516fc063a97c59267
parent1e8f89f1785c77f3548f4275be4bca4f6e4b7d93 (diff)
parent7d2656726e181968a8003607e1f0ab002706e443 (diff)
Merge branch 'master' into patch-3
-rw-r--r--.github/workflows/build.yml4
-rw-r--r--.github/workflows/prerelease.yml4
-rw-r--r--build/gotop.conf33
-rw-r--r--build/nfpm.yml46
-rw-r--r--cmd/gotop/description.txt96
-rw-r--r--cmd/gotop/main.go129
-rw-r--r--colorschemes/registry.go3
-rw-r--r--config.go12
-rw-r--r--devices/remote.go42
-rw-r--r--dicts/de_DE.toml4
-rw-r--r--dicts/en_US.toml10
-rw-r--r--dicts/eo.toml4
-rw-r--r--dicts/es.toml4
-rw-r--r--dicts/fr.toml4
-rw-r--r--dicts/ru_RU.toml4
-rw-r--r--dicts/tt_TT.toml4
-rw-r--r--dicts/zh_CN.toml4
-rw-r--r--docs/releasing.md45
-rw-r--r--go.mod2
-rw-r--r--go.sum4
20 files changed, 299 insertions, 159 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index a755a16..c639b2e 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.3
+ uses: xxxserxxx/actions/golang-build@v2.2.1
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 65b0238..2c522ea 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.3
+ uses: xxxserxxx/actions/golang-build@v2.2.1
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/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..6829e43 100644
--- a/build/nfpm.yml
+++ b/build/nfpm.yml
@@ -1,15 +1,31 @@
-name: "gotop"
-arch: "amd64"
-platform: "linux"
-version: "v${VERSION}"
-section: "default"
-priority: "extra"
-maintainer: "Sean Russell <ser@ser1.net>"
-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: ${GOARCH}
+platform: linux
+version: v${VERSION}
+version_schema: semver
+version_metadata: git
+section: default
+priority: extra
+maintainer: Sean Russell <ser@ser1.net>
+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: ${EXECUTABLE}
+ 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
+
+ # Manpage
+ - src: ${MANPAGE}
+ dst: /usr/share/man8/gotop.8.gz
diff --git a/cmd/gotop/description.txt b/cmd/gotop/description.txt
new file mode 100644
index 0000000..eb038eb
--- /dev/null
+++ b/cmd/gotop/description.txt
@@ -0,0 +1,96 @@
+gotop shows system information in a terminal UI. It can be configured to have
+different layouts, color schemes, and widgets, and it is able to show
+information from other computers.
+
+Anything you change on the command line can be written to a config file
+using the `--write-config` argument, which can then be edited further.
+Just get your arguments the way you like, then run gotop again with the same
+arguments and the `--write-config` flag, and gotop will persist your
+options.
+
+Colorschemes are json files; put them in the config directory (usually
+~/.config/gotop/{name}.json) and load them with the `-c {name}` argument.
+The keys are:
+
+ Fg -- int, foreground color
+ Bg -- int, background color
+ BorderLabel -- int, color of widget text
+ BorderLine -- int, color of borders
+ CPULines -- array of ints for the colors of lines
+ BattLines -- array of ints for the colors of lines
+ MemLines -- array of ints for the colors of lines
+ ProcCursor -- int, color of the cursor in the process widget
+ Sparkline -- int, color of the graph bars
+ DiskBar -- int, color of the disk bars
+ TempLow -- int, color used for low temperatures
+ TempHigh -- int, color used for high temperatures
+
+For example:
+
+ { "Fg": 7, "CPULines": [4, 3, 2, 1, 5, 6, 7, 8] }
+
+Colorschemes are referred to by their name minus the .json suffix. More
+examples are here:
+
+ https://github.com/xxxserxxx/gotop/tree/master/colorschemes
+
+Layout files are plain text files, with widget names on rows roughly representing
+a grid. The format is ROWSPAN:WIDGETNAME/COLSPAN. COLSPAN is relative to the
+rest of the line, so a line saying "cpu mem/3" will give the CPU widget 25% of
+the width, and the memory widget 75% of the width. ROWSPAN is the height of
+the widget, so "2:cpu mem" will make the CPU widget 2 rows high, and the memory
+widget 1 row high. An example is:
+
+ 2:cpu
+ disk/1 2:mem/2
+ temp
+ 2:net 2:procs
+
+Save your layout under any file name either in the config directory or your current
+directory and reference the file name with the `-l` argument. More details about
+the rules are here:
+
+ https://github.com/xxxserxxx/gotop/blob/master/docs/layouts.md
+
+and examples are here:
+
+ https://github.com/xxxserxxx/gotop/tree/master/layouts
+
+gotop can function as both a metrics exporter and viewer. As an exporter, it
+exports Prometheus metrics, and it does not handle either encryption or
+authentication, and so should be run behind a reverse proxy. When gotop is run
+with the `-x` argument, gotop will export metrics on the given port. To try it,
+run
+
+ gotop -x :8884
+
+and then from another shell, run:
+
+ curl http://localhost:8884/metrics
+
+To show these metrics in gotop, instead of curl run:
+
+ gotop --remote-url http://localhost:8884/metrics
+
+You will see additional values in your widgets. To monitor remote machines,
+run gotop on them with the `-x` export flag behind a reverse proxy such as
+Caddy:
+
+ myserver.net {
+ basicauth / gtuser gtpass
+ reverse-proxy /metrics http://localhost:8884
+ }
+
+and then on your local gotop:
+
+ gotop --remote-url https://gtuser:gtpass@myserver.net/metrics
+
+Config files, layouts, and color schemes are searched for (in order):
+
+- In the current directory
+- In $XDG_CONFIG_DIR/gotop
+- In /etc/gotop (on Linux and MacOS)
+
+More information and detailed documentation can found at
+https://github.com/xxxserxxx/gotop`
+
diff --git a/cmd/gotop/main.go b/cmd/gotop/main.go
index 4c04c89..272eecc 100644
--- a/cmd/gotop/main.go
+++ b/cmd/gotop/main.go
@@ -2,6 +2,7 @@ package main
import (
"bufio"
+ _ "embed"
"flag"
"fmt"
"io"
@@ -21,10 +22,10 @@ import (
"github.com/VictoriaMetrics/metrics"
jj "github.com/cloudfoundry-attic/jibber_jabber"
+ "github.com/droundy/goopt"
ui "github.com/gizak/termui/v3"
"github.com/shibukawa/configdir"
"github.com/xxxserxxx/lingo/v2"
- "github.com/xxxserxxx/opflag"
"github.com/xxxserxxx/gotop/v4"
"github.com/xxxserxxx/gotop/v4/colorschemes"
@@ -55,62 +56,78 @@ var (
tr lingo.Translations
)
+//go:embed "description.txt"
+var description string
+
func parseArgs() error {
cds := conf.ConfigDir.QueryFolders(configdir.All)
cpaths := make([]string, len(cds))
for i, p := range cds {
cpaths[i] = p.Path
}
- help := opflag.BoolP("help", "h", false, tr.Value("args.help"))
- color := opflag.StringP("color", "c", conf.Colorscheme.Name, tr.Value("args.color"))
- opflag.IntVarP(&conf.GraphHorizontalScale, "graphscale", "S", conf.GraphHorizontalScale, tr.Value("args.scale"))
- 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
- opflag.Usage = func() {
- fmt.Fprintf(os.Stderr, tr.Value("usage", os.Args[0]))
- opflag.PrintDefaults()
- fmt.Fprintf(os.Stderr, "Project home: https://github.com/xxxserxxx/gotop\n")
- }
- opflag.Parse()
- if *version || *versioN {
- fmt.Printf("gotop %s (%s)\n", Version, BuildDate)
- os.Exit(0)
- }
- if *help {
- opflag.Usage()
- os.Exit(0)
- }
- cs, err := colorschemes.FromName(conf.ConfigDir, *color)
- if err != nil {
- return err
+ goopt.Summary = "A terminal based graphical activity monitor, inspired by gtop and vtop"
+ goopt.Version = Version
+ goopt.Description = func() string {
+ return description
+ }
+ color := goopt.String([]string{"--color", "-c"}, conf.Colorscheme.Name, tr.Value("args.color"))
+ graphhorizontalscale := goopt.Int([]string{"--graphscale", "-S"}, conf.GraphHorizontalScale, tr.Value("args.scale"))
+ version := goopt.Flag([]string{"-v", "-V", "--version"}, []string{}, tr.Value("args.version"), "")
+ percpuload := goopt.Flag([]string{"--percpu", "-p"}, []string{"--no-percpu"}, tr.Value("args.percpu"), tr.Value("args.no-percpu"))
+ averageload := goopt.Flag([]string{"--averagecpu", "-a"}, []string{"--no-averagecpu"}, tr.Value("args.cpuavg"), tr.Value("args.no-cpuavg"))
+ tempScale := goopt.Flag([]string{"--fahrenheit"}, []string{"--celsius"}, tr.Value("args.temp"), tr.Value("args.tempc"))
+ statusbar := goopt.Flag([]string{"--statusbar", "-s"}, []string{"--no-statusbar"}, tr.Value("args.statusbar"), tr.Value("args.no-statusbar"))
+ updateinterval := goopt.String([]string{"--rate", "-r"}, conf.UpdateInterval.String(), tr.Value("args.rate"))
+ layout := goopt.String([]string{"--layout", "-l"}, conf.Layout, tr.Value("args.layout"))
+ netinterface := goopt.String([]string{"--interface", "-i"}, "all", tr.Value("args.net"))
+ exportport := goopt.String([]string{"--export", "-x"}, conf.ExportPort, tr.Value("args.export"))
+ mbps := goopt.Flag([]string{"--mbps"}, []string{"--bytes"}, tr.Value("args.mbps"), tr.Value("args.no-mbps"))
+ test := goopt.Flag([]string{"--test"}, []string{"--no-test"}, tr.Value("args.test"), tr.Value("args.no-test"))
+ // This is so the flag package doesn't barf on an unrecognized flag; it's processed earlier
+ goopt.String([]string{"-C"}, "", tr.Value("args.conffile"))
+ nvidia := goopt.Flag([]string{"--nvidia"}, []string{"--no-nvidia"}, tr.Value("args.nvidia"), tr.Value("args.no-nvidia"))
+ list := goopt.String([]string{"--list"}, "", tr.Value("args.list"))
+ wc := goopt.Flag([]string{"--write-config"}, []string{}, tr.Value("args.write"), "")
+ goopt.Parse(nil)
+
+ conf.PercpuLoad = *percpuload
+ conf.GraphHorizontalScale = *graphhorizontalscale
+ conf.PercpuLoad = *percpuload
+ conf.AverageLoad = *averageload
+ conf.Statusbar = *statusbar
+ conf.Layout = *layout
+ conf.NetInterface = *netinterface
+ conf.ExportPort = *exportport
+ conf.Mbps = *mbps
+ conf.Nvidia = *nvidia
+ conf.AverageLoad = *averageload
+ conf.Test = *test
+ conf.Statusbar = *statusbar
+ conf.Mbps = *mbps
+ conf.Nvidia = *nvidia
+ if upInt, err := time.ParseDuration(*updateinterval); err == nil {
+ conf.UpdateInterval = upInt
+ } else {
+ fmt.Printf("Update interval must be a time interval such as '10s' or '1m'")
+ os.Exit(1)
}
- conf.Colorscheme = cs
- if *fahrenheit {
+ if *tempScale {
conf.TempScale = 'F'
} else {
conf.TempScale = 'C'
}
+
+ if *version {
+ fmt.Printf("gotop %s (%s)\n", Version, BuildDate)
+ os.Exit(0)
+ }
+ if *color != "" {
+ cs, err := colorschemes.FromName(conf.ConfigDir, *color)
+ if err != nil {
+ return err
+ }
+ conf.Colorscheme = cs
+ }
if *list != "" {
switch *list {
case "layouts":
@@ -168,25 +185,6 @@ func parseArgs() error {
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
}
@@ -379,6 +377,7 @@ func eventLoop(c gotop.Config, grid *layout.MyGrid) {
}
// FIXME CPU use regression
+// TODO add CPU freq
func main() {
// TODO: Make this an option, for performance testing
//go func() {
diff --git a/colorschemes/registry.go b/colorschemes/registry.go
index 663ccab..0055ff4 100644
--- a/colorschemes/registry.go
+++ b/colorschemes/registry.go
@@ -29,6 +29,9 @@ func SetTr(tra lingo.Translations) {
// directories for a scheme matching the name. The search order
// is the same as for config files.
func FromName(confDir configdir.ConfigDir, c string) (Colorscheme, error) {
+ if c == "" {
+ c = "default"
+ }
if cs, ok := registry[c]; ok {
return cs, nil
}
diff --git a/config.go b/config.go
index d818285..7ff2947 100644
--- a/config.go
+++ b/config.go
@@ -34,26 +34,20 @@ 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
}
@@ -67,15 +61,9 @@ 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/devices/remote.go b/devices/remote.go
index 555df3e..9eadf13 100644
--- a/devices/remote.go
+++ b/devices/remote.go
@@ -10,11 +10,12 @@ import (
"sync"
"time"
- "github.com/xxxserxxx/opflag"
+ "github.com/droundy/goopt"
)
-var name string
-var remote_url string
+var nameP *string
+var remoteUrlP *string
+var sleepP *string
var sleep time.Duration
var remoteLock sync.Mutex
@@ -26,9 +27,9 @@ var remoteLock sync.Mutex
// FIXME high CPU use when remote goes offline
// FIXME higher CPU use when using remote in general
func init() {
- opflag.StringVarP(&name, "remote-name", "", "", "Remote: name of remote gotop")
- opflag.StringVarP(&remote_url, "remote-url", "", "", "Remote: URL of remote gotop")
- opflag.DurationVarP(&sleep, "remote-refresh", "", 0, "Remote: Frequency to refresh data, in seconds")
+ nameP = goopt.String([]string{"--remote-name"}, "", "Remote: name of remote gotop")
+ remoteUrlP = goopt.String([]string{"--remote-url"}, "", "Remote: URL of remote gotop")
+ sleepP = goopt.String([]string{"--remote-refresh"}, "", "Remote: Frequency to refresh data, in seconds")
RegisterStartup(startup)
}
@@ -47,27 +48,34 @@ func startup(vars map[string]string) error {
remoteLock = sync.Mutex{}
remotes := parseConfig(vars)
- // Don't set anything up if there's nothing to do
- if (name == "" || remote_url == "") && len(remotes) == 0 {
- return nil
- }
- if remote_url != "" {
+
+ if remoteUrlP != nil && *remoteUrlP != "" {
+ var name string
r := Remote{
- url: remote_url,
- refresh: 2 * time.Second,
+ url: *remoteUrlP,
+ refresh: 5 * time.Second,
}
- if name == "" {
+ if nameP == nil && *nameP != "" {
+ name = *nameP
+ } else {
name = "Remote"
}
- if sleep != 0 {
- r.refresh = sleep
+ if sleepP == nil && *sleepP != "" {
+ sleep, err := time.ParseDuration(*sleepP)
+ if err == nil {
+ r.refresh = sleep
+ } else {
+ log.Printf("invalid refresh duration %s for %s; using default", *sleepP, *remoteUrlP)
+ }
}
remotes[name] = r
}
+
if len(remotes) == 0 {
log.Println("Remote: no remote URL provided; disabling extension")
return nil
}
+
RegisterTemp(updateTemp)
RegisterMem(updateMem)
RegisterCPU(updateUsage)
@@ -83,7 +91,6 @@ func startup(vars map[string]string) error {
w := &sync.WaitGroup{}
for n, r := range remotes {
n = n + "-"
- r.url = r.url
var u *url.URL
w.Add(1)
go func(name string, remote Remote, wg *sync.WaitGroup) {
@@ -232,7 +239,6 @@ func updateUsage(cpus map[string]int, _ bool) map[string]error {
func parseConfig(vars map[string]string) map[string]Remote {
rv := make(map[string]Remote)
- log.Printf("VARS = %s", vars)
for key, value := range vars {
if strings.HasPrefix(key, "remote-") {
parts := strings.Split(key, "-")
diff --git a/dicts/de_DE.toml b/dicts/de_DE.toml
index 58897c4..edc74d8 100644
--- a/dicts/de_DE.toml
+++ b/dicts/de_DE.toml
@@ -81,6 +81,7 @@ 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."
+tempc="Temperaturen in Celsius 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."
@@ -88,11 +89,12 @@ layout="Name der Layoutspezifikationsdatei für die Benutzeroberfläche. \"-\" l
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."
+bytes="Netzwerkrate als bytes/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."
+no-nvidia="NVidia-GPU-Metriken abschalten."
nvidiarefresh="Frequenz aktualisieren. Die meisten Zeiteinheiten werden akzeptiert."
list="""
Auflisten von <devices|layouts|colorschemes|paths|keys|langs>
diff --git a/dicts/en_US.toml b/dicts/en_US.toml
index 87e3526..30dacfa 100644
--- a/dicts/en_US.toml
+++ b/dicts/en_US.toml
@@ -77,10 +77,11 @@ 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."
+no-percpu="Show aggregate 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."
+tempc="Show temperatures in celsius."
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."
@@ -88,11 +89,12 @@ 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."
+bytes="Show network rate as bytes."
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"
+conffile="Config file to use instead of default (MUST BE FIRST ARGUMENT)."
+nvidia="Enable NVidia GPU metrics."
+no-nvidia="Disable NVidia GPU metrics."
nvidiarefresh="Refresh frequency. Most time units accepted."
# TRANSLATORS: Please don't translate the **labels** ("devices", "layouts") as they don't change in the code.
list="""
diff --git a/dicts/eo.toml b/dicts/eo.toml
index 6ec5ad7..7371fa2 100644
--- a/dicts/eo.toml
+++ b/dicts/eo.toml
@@ -81,6 +81,7 @@ 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."
+tempc="Montri temperaturojn en celsius."
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."
@@ -88,11 +89,12 @@ 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."
+bytes="Malŝalti montri reta takson kiel bajtoj."
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"
+no-nvidia="Malŝalti NVidia GPU-metrikojn"
nvidiarefresh="Refreŝigi oftecon. Plej multaj tempunuoj akceptis."
# TRANSLATORS: Please don't translate the list entries
list="""
diff --git a/dicts/es.toml b/dicts/es.toml
index 7a04aef..bb4f3d1 100644
--- a/dicts/es.toml
+++ b/dicts/es.toml
@@ -81,6 +81,7 @@ 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."
+tempc="Mostrar temperaturas en grados Celsius."
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."
@@ -88,11 +89,12 @@ layout="Nombre de archivo de especificaciones de diseño para la interfaz de usu
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."
+bytes="Inutilizar muestra la velocidad de la red como bytes."
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"
+nonvidia="Inutilizar métrica de NVidia GPU"
nvidiarefresh="Frecuencia de actualización. Se aceptan la mayoría de las unidades de tiempo."
# TRANSLATORS: Please don't translate the **labels** ("devices", "layouts") as they don't change in the code.
list="""
diff --git a/dicts/fr.toml b/dicts/fr.toml
index d780522..e694ed3 100644
--- a/dicts/fr.toml
+++ b/dicts/fr.toml
@@ -81,6 +81,7 @@ 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."
+tempc="Montrer les températures en celsius."
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."
@@ -88,11 +89,12 @@ layout="Nom du fichier de spécification de disposition pour l'interface utilisa
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."
+bytes="Désactiver montrer le débit réseau en bytes."
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"
+no-nvidia="Désactiver les métriques GPU NVidia"
nvidiarefresh="Rafraîchir la fréquence. La plupart des unités de temps sont acceptées."
# TRANSLATORS: Please don't translate the **labels** ("devices", "layouts") as they don't change in the code.
list="""
diff --git a/dicts/ru_RU.toml b/dicts/ru_RU.toml
index 68dec8a..2656d18 100644
--- a/dicts/ru_RU.toml
+++ b/dicts/ru_RU.toml
@@ -73,14 +73,18 @@ version="Напечатать версию и выйти."
percpu="Показать каждый CPU в CPU виджете."
cpuavg="Показать средний CPU в CPU виджете."
temp="Показать температуру в фаренгейтах."
+tempc="Show temperatures in celsius."
statusbar="Показать статусбар со временем."
rate="Частота обновления. Поддерживается большинство единиц измерения. \"1m\" = обновлять каждую минуту. \"100ms\" = обновлять каждые 100мс."
layout="Название файла спецификации для раскладки. Используйте \"-\" для нескольких раскладок."
net="Выбрать сетевой интерфейс. Несколько интерфейсов можно определить через запятую. Для игнорирования определённых интерфейсов используйте \"!\""
export="Включить метрику для экспорта на указанном порту."
mbps="Показать скорость сети в мб/с"
+bytes="Show network rate as bytes."
test="Запуск тестов и выход с успешным/провальным кодом."
conffile="Файл конфигурации вместо того, что по умолчанию (ДОЛЖЕН БЫТЬ ПЕРВЫМ АРГУМЕНТОМ)"
+nvidia="Enable NVidia GPU metrics."
+nvidiarefresh="Refresh frequency. Most time units accepted."
# TRANSLATORS: Please don't translate the **labels** ("devices", "layouts") as they don't change in the code.
list="""
Перечислить <devices|layouts|colorschemes|paths|keys|langs>
diff --git a/dicts/tt_TT.toml b/dicts/tt_TT.toml
index d6faa02..3e778bc 100644
--- a/dicts/tt_TT.toml
+++ b/dicts/tt_TT.toml
@@ -80,6 +80,7 @@ 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"
+tempc=".suislec 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"
@@ -87,11 +88,12 @@ 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"
+bytes=".setyb 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"
+no-nvidia="scirtem UPG aidiVN elbasiD"
nvidiarefresh=".detpecca stinu emit tsoM .ycneuqerf hserfeR"
list="""
>snart|syek|shtap|semehcsroloc|stuoyal|secived< tsiL
diff --git a/dicts/zh_CN.toml b/dicts/zh_CN.toml
index cfab0e6..bcce304 100644
--- a/dicts/zh_CN.toml
+++ b/dicts/zh_CN.toml
@@ -81,6 +81,7 @@ no-percpu="在 CPU 组件中不显示每个 CPU。"
cpuavg="在 CPU 组件中显示平均 CPU。"
no-cpuavg="在 CPU 组件中不显示平均 CPU。"
temp="显示华氏温度。"
+tempc="Show temperatures in celsius."
statusbar="显示时间状态栏。"
no-statusbar="不显示状态栏。"
rate="刷新频率。常见的时间单位皆可用。\"1m\" = 每分钟刷新。\"100ms\" = 每100毫秒刷新。"
@@ -88,11 +89,12 @@ layout="布局描述文件名。使用 \"-\" 连接。"
net="选择网卡。多个网卡用逗号分隔。使用 \"!\" 忽略指定网卡。"
export="在指定端口上启用指标输出。"