From 1a4ab136dc8c8e3456b93aefe104dc31f2c30df5 Mon Sep 17 00:00:00 2001 From: eleksir Date: Mon, 23 Sep 2024 00:59:43 +0300 Subject: [PATCH] Fix embed path, add missing cmd/i3status-go dir --- .gitignore | 4 +- cmd/i3status-go/default-config.json | 858 +++++++++++++++++++++++++++ cmd/i3status-go/main.go | 584 +++++++++++++++++++ configs/i3status-go-example.json | 859 +--------------------------- 4 files changed, 1445 insertions(+), 860 deletions(-) create mode 100644 cmd/i3status-go/default-config.json create mode 100644 cmd/i3status-go/main.go mode change 100644 => 120000 configs/i3status-go-example.json diff --git a/.gitignore b/.gitignore index 2015c24..9b14de3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -i3status-go -i3status-go.json +/i3status-go +/battery-test diff --git a/cmd/i3status-go/default-config.json b/cmd/i3status-go/default-config.json new file mode 100644 index 0000000..c96ed88 --- /dev/null +++ b/cmd/i3status-go/default-config.json @@ -0,0 +1,858 @@ +{ +// Default text and *block* border colors. If not set #3e78fd is used. +"color" : "#3e78fd", + +// Default backbround color. If not set value of #edeceb is used. +"background" : "#000000", + +// Can be omitted, then Liberation Mono will be used. +"font": "Liberation Mono", + +// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes +// ‘smaller’ or ‘larger’ +"font_size": "medium", + +"separator" : { + "left": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to #edeceb color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to #3e78fd background color defined for separator up here. + "background": "#000000", + + // If omitted set to "|" (no quotes) symbol defined for separator up here. + "symbol": "▶", + + // If omitted set to "Noto Sans" font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + }, + + "right": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to #edeceb color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to #3e78fd background color defined for separator up here. + "background": "#000000", + + // If omitted set to "|" (no quotes) symbol defined for separator up here. + "symbol": "◀", + + // If omitted set to "Noto Sans" font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + } +}, + +// Memory stats +"mem" : { + "enabled": true, + + // If omitted set to default color defined up here. + "color": "#3e78fd", + + // If omitted set to default background color defined up here. + "background": "#000000", + + // If omitted set to default font defined up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. + "font_size": "medium", + + // Do we show used swap megs? + "show_swap": false, + + // Re-define separator parameters for net-if block here. + "separator" : { + "left": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "▶", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + }, + + "right": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "◀", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + } + } +}, + +// Load Average +"la" : { + "enabled": true, + + // If omitted set to default color defined up here. + "color": "#3e78fd", + + // If omitted set to default background color defined up here. + "background": "#000000", + + // If omitted set to default font defined up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. + "font_size": "medium", + + // Re-define separator parameters for net-if block here. + "separator" : { + "left": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "▶", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + }, + + "right": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "◀", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + } + } +}, + +"net-if" : { + "enabled" : false, + + // If omitted set to default color defined up here. + "color": "#3e78fd", + + // If omitted set to default background color defined up here. + "background": "#000000", + + // If omitted set to default font defined up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. + "font_size": "medium", + + // Net interface down symbol color, in html notation. + "down_color" : "red", + + // Net interface up symbol color, in html notation. + "up_color" : "green", + + // Re-define separator parameters for net-if block here. + "separator": { + "left": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "▶", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + }, + + "right": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "◀", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + } + }, + + "if" : [ + { + // Name as it displayed on i3bar + "name" : "eth0", + + // Directory containing net if status files + "dir" : "/sys/class/net/eth0" + } + ] +}, + +// OpenVPN status. Note that directive status in openvpn.conf should point to state file and *update* its timestamp at +// least as frequent as mtime_threshold in seconds. +"vpn": { + "enabled": false, + + // If omitted set to default color defined up here. + "color": "#3e78fd", + + // If omitted set to default background color defined up here. + "background": "#000000", + + // If omitted set to default font defined up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. + "font_size": "medium", + + // Status file location. Plugin will be disabled if this value omitted. + "statusfile" : "/tmp/openvpn-status.stat", + + // mtime check period. + "mtime_threshold": 10, + + // Vpn down symbol color, in html notation. + "down_color" : "red", + + // Vpn up symbol color, in html notation. + "up_color" : "green", + + // Re-define separator parameters for net-if block here. + "separator": { + "left": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "▶", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + }, + + "right": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "◀", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + } + }, + + // Also we can tcp-ping some service inside vpn network to ensure that connection is not stoned. + "tcp_check" : { + "enabled": false, + "host": "somehost.tld", + "port": 443, + "timeout" : 3 + } +}, + +// Simple sound volume indicator +"simple-volume-pa": { + "enabled": false, + + // If omitted set to default color defined up here. + "color": "#3e78fd", + + // If omitted set to default background color defined up here. + "background": "#000000", + + // If omitted set to default font defined up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. + "font_size": "medium", + + "symbol": "🔊", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of the relative sizes + // ‘smaller’ or ‘larger’. If omitted set to value of simple-volume-pa.font_size by default. + "symbol_font_size": "medium", + + // If not defined - will be "true" + "right_click_cmd": ["pavucontrol"], + + // Change volume step in %, if not configured it is 5 + "step": 3, + + // We'll change volume level with mouse wheel. Under X11 it is mapped to some buttons, typically 4 and 5 (z-axis). + // If omited, default value is 4 + "wheel_up": 4, + + // If omited, default value is 5 + "wheel_down": 5, + + // Maximum sound volume, can be over 100%, but sould not be :) Default value 100 if not set. + "max_volume_limit": 120, + + // PA has annoying feature - socket activation. Sound system must persist and be available to all users regardless + // of init or other things. They just fail to understand that. Or they fucked up pulseaudio just because they scary + // of security something of resposibility. Anyway this is grand disign flaw, but we still have to bear with it. + // This setting defines if pulseaudion will be run in manner that allows it to exit is other login detected (how + // they guess it - I do not know). In general case we do not want allow pa to exit and leave our session without + // audio. + "dont_exit_on_login": true, + + // Re-define separator parameters for net-if block here. + "separator": { + "left": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "▶", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + }, + + "right": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "◀", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + } + } +}, + +// Just clock +"clock": { + "enabled" : true, + + // If omitted set to default color defined up here. + "color": "#3e78fd", + + // If omitted set to default background color defined up here. + "background": "#000000", + + // If omitted set to default font defined up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. + "font_size": "medium", + + // Re-define separator parameters for net-if block here. + "separator": { + "left": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "▶", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + }, + + "right": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "◀", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + } + }, + + "left_click" : { + "enabled" : false, + // cmd is array of command itself and its arguments + "cmd" : [ "orage" ] + }, + + "right_click" : { + "enabled" : false, + "cmd" : [ "true" ] + } +}, + +// Battery, useful for laptops +"battery": { + "enabled": false, + + // If omitted set to default color defined up here. + "color": "#3e78fd", + + // If omitted set to default background color defined up here. + "background": "#000000", + + // If omitted set to default font defined up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. + "font_size": "medium", + + // If omitted "⚡" (no quotes) is used. + "symbol": "⚡", + + // If omitted battery.font is used. + "symbol_font" : "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of the relative sizes + // ‘smaller’ or ‘larger’. If omitted set to value of simple-volume-pa.font_size by default. + "symbol_font_size": "large", + + "charge_color": { + // colors in html notation + "full": "green", + "empty": "red", + "almost_full": "yellow", + "almost_empty": "orange" + }, + + // Re-define separator parameters for net-if block here. + "separator": { + "left": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "▶", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + }, + + "right": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "◀", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + } + } +}, + +// CPU Temperature monitor, shows average value among given sources +"cpu_temp": { + "enabled": false, + + // If omitted set to default color defined up here. + "color": "#3e78fd", + + // If omitted set to default background color defined up here. + "background": "#000000", + + // If omitted set to default font defined up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. + "font_size": "medium", + + // Re-define separator parameters for net-if block here. + "separator": { + "left": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "▶", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + }, + + "right": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "◀", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + } + }, + + // Files in sysfs that contains cpu temperatures + "file": [ + "/sys/class/hwmon/hwmon4/temp2_input", + "/sys/class/hwmon/hwmon4/temp3_input", + "/sys/class/hwmon/hwmon4/temp4_input", + "/sys/class/hwmon/hwmon4/temp5_input", + "/sys/class/hwmon/hwmon4/temp6_input", + "/sys/class/hwmon/hwmon4/temp7_input" + ] +}, + +// Intended mainly for use with desktop notifications +// Because it inherits all env vars from i3, it can intercat with dbus and other +// such user session services. +"cron" : { + "enabled" : false, + + "tasks" : [ + { + // Time in crontab notation + "time" : "55 23 * * *", + "cmd" : [ + "notify-send", "Sleeping Time!", "Take a nap." + ] + }, + { + // time in crontab format + "time" : "55 12 * * 2,4", + // commands as it should be invoked in bash script + "cmd" : [ + "notify-send", "Pizza time!", "M-m-m, tasty!" + ] + } + ] +}, + +// Whether to display Application Buttons. +"app_buttons": { + "enabled": true, + + // Re-define separator parameters for net-if block here. + "separator": { + "left": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "▶", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + }, + + "right": { + // Set to false if omitted. + "enabled": true, + + // If omitted set to default color defined for separator up here. + "color": "#3e78fd", + + // If omitted set to default background color defined for separator up here. + "background": "#000000", + + // If omitted set to default symbol defined for separator up here. + "symbol": "◀", + + // If omitted set to default font defined for separator up here. + "font": "Noto Sans", + + // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes + // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. + "font_size": "medium" + } + }, +}, + +// Buttons - application launch "buttons" +"apps": [ + { + // Text dispalyed on button + "full_text" : "📂", + // Internal name, can be any string, but unique for each app button + "name" : "thunar", + // Command itself + "cmd" : "thunar", + // Array of command args, optional + "args": [ "." ], + // Regexp that match with Instance component of WM_CLASS(STRING) of xprop output + "instance": "^thunar$", + // Regexp that match with Class component of WM_CLASS(STRING) of xprop output + "class": "^Thunar$", + // text color in html notation + "color": "#ffa500", + // background color in html notation + "background" : "#000000", + // border color in html notation + "border": "#666666", + // border color if there is at least one window with given Instance and/or Class exist + "border_active": "#3e78fd", + // Vertical line between objects on bar - if omitted true value is assumed by i3bar, but we set it to false + // in that case. It is limitation of golang json parser. + "separator": false, + "separator_block_width": 2 + }, + { + "full_text" : " ♬ ", + "name" : "deadbeef", + "cmd" : "deadbeef", + "instance" : "^deadbeef$", + "class" : "^Deadbeef$", + "color" : "#00aa33", + "border": "#666666", + "border_active": "#3e78fd", + "separator": false, + "separator_block_width": 2 + }, + { + "full_text" : " Term ", + "name" : "xterm", + "cmd" : "xterm", + "instance" : "^xterm$", + "class" : "^XTerm$", + "color" : "#666666", + "border": "#666666", + "border_active": "#3e78fd", + "separator": false, + "separator_block_width": 2 + }, + { + "full_text" : " Ff ", + "name" : "firefox", + "cmd" : "firefox", + "instance" : "^Navigator$", + "class" : "^Firefox$", + "color" : "#ffa500", + "border": "#666666", + "border_active": "#3e78fd", + "separator": false, + "separator_block_width": 2 + }, + { + "full_text" : " C ", + "name" : "chrome", + "cmd" : "chrome", + "instance" : "^google-chrome$", + "class" : "^Google-chrome$", + "color" : "#ffa500", + "border": "#666666", + "border_active": "#3e78fd", + "separator": false, + "separator_block_width": 2 + }, + { + "full_text" : " @ ", + "name" : "thunderbird", + "cmd" : "thunderbird", + "instance" : "^Mail$", + "class" : "^Thunderbird$", + "color" : "#006994", + "border": "#666666", + "border_active": "#3e78fd", + "separator": false, + "separator_block_width": 2 + }, + { + "full_text" : " Tg ", + "name" : "telegram", + "cmd" : "Telegram", + "instance" : "^Telegram$", + "class" : "^TelegramDesktop$", + "color" : "#5a8850", + "border": "#666666", + "border_active": "#3e78fd", + "separator": false, + "separator_block_width": 2 + }, + { + "full_text" : " T ", + "name" : "mousepad", + "cmd" : "mousepad", + "instance" : "^mousepad$", + "class" : "^Mousepad$", + "border": "#666666", + "border_active": "#3e78fd", + "separator": false, + "separator_block_width": 2 + } + ] +} diff --git a/cmd/i3status-go/main.go b/cmd/i3status-go/main.go new file mode 100644 index 0000000..22c8fc7 --- /dev/null +++ b/cmd/i3status-go/main.go @@ -0,0 +1,584 @@ +package main + +import ( + "bytes" + _ "embed" + "encoding/json" + "fmt" + "log" + "os" + "os/signal" + "strings" + "syscall" + + "i3status-go/internal/lib" +) + +//go:embed default-config.json +var DefaultConfig []byte + +// Program entry point. +func main() { + Conf, err := lib.ReadConf(DefaultConfig) + + if err != nil { + log.Panicf("Unable to read config: %s", err) + } + + Conf.UpdateReady = make(chan bool) + Conf.MsgChan = make(chan []lib.I3BarOutBlock, 64) + Conf.SigChan = make(chan os.Signal, 1) + Conf.BatteryString = "⚡ ??% •" + Conf.ClockTime = "Thu, 1 Jan 1970 1:00" + Conf.IfStatus = "" + Conf.VPNStatus = "" + Conf.Memory.Shared = 0 + Conf.Memory.Usedpct = 0 + Conf.Memory.Swap = 0 + Conf.La = "-1" + + // TODO: Проставить дефолтные значения для глобальных переменных модулей. + Batt := fmt.Sprintf( + "%s", + Conf.Battery.Color, + Conf.Battery.Background, + Conf.Battery.SymbolFont, + Conf.Battery.SymbolFontSize, + Conf.Battery.Symbol, + ) + + Batt += fmt.Sprintf( + " ??%% •", + Conf.Battery.Color, + Conf.Battery.Background, + Conf.Battery.Font, + Conf.Battery.FontSize, + ) + + SoundVolume := fmt.Sprintf( + "🔊", + Conf.SimpleVolumePa.Color, + Conf.SimpleVolumePa.Background, + Conf.SimpleVolumePa.SymbolFont, + Conf.SimpleVolumePa.SymbolFontSize, + ) + + SoundVolume += fmt.Sprintf( + ":0%%", + Conf.SimpleVolumePa.Color, + Conf.SimpleVolumePa.Background, + Conf.SimpleVolumePa.Font, + Conf.SimpleVolumePa.FontSize, + ) + + Clock := fmt.Sprintf( + "Thu, 1 Jan 1970 1:00", + Conf.Clock.Color, + Conf.Clock.Background, + Conf.Clock.Font, + Conf.Clock.FontSize, + ) + + go Conf.Spawner() + go Conf.ParseStdin() + go Conf.CleanZombies() + go Conf.SVPAHandler() + go PrintToI3bar(Conf) + + if Conf.AppButtons.Enabled { + go Conf.UpdateI3WinList() + } + + // Kick signal handler + go Conf.SigHandler() + signal.Notify(Conf.SigChan, + syscall.SIGUSR1, + syscall.SIGUSR2, + syscall.SIGQUIT, + syscall.SIGTERM, + syscall.SIGINT) + + // Populate memory stats + if Conf.Mem.Enabled { + go Conf.UpdateMemStats() + } + + // Populate LA stats + if Conf.LA.Enabled { + go Conf.UpdateLaStats() + } + + // Populate CPUTemperature + if Conf.CPUTemp.Enabled { + go Conf.UpdateCPUTemperature() + } + + // Populate Clock + if Conf.Clock.Enabled { + go Conf.UpdateClock() + } + + if Conf.Battery.Enabled { + go Conf.UpdateBatteryInfo() + } + + if Conf.SimpleVolumePa.Enabled { + go Conf.UpdateVolumeInfo() + } + + if Conf.NetIf.Enabled { + go Conf.UpdateIfStatus() + } + + if Conf.Cron.Enabled { + go lib.RunCron() + } + + if Conf.Vpn.Enabled { + go Conf.UpdateVPNStatus() + } + + /* + I3bar documentation pretends that message protocol must be valid json. In practice, we only have to print valid + header, empty json array and (potentially infinite) json lines (line that is valid json by itself) that is + actually json arrays. We do not need to *close* this json at all. + Gracefully closed json required when i3bar initiates our program to stop|quit, this (should) happens just before + i3bar itself terminating. So we don't care. + */ + + // Print header and one empty message and wait for updates + fmt.Printf( + "{\"version\": 1, \"stop_signal\": %d, \"cont_signal\": %d, \"click_events\": true}\n", + syscall.SIGUSR1, + syscall.SIGUSR2, + ) + + fmt.Println("[ [],") + + for { + if <-Conf.UpdateReady { + // Actually build json struct, marshal it and print result + var j []lib.I3BarOutBlock + + // TODO: впилить для первого и последнего батона separator + if Conf.AppButtons.Enabled { + for num, app := range Conf.Apps { + var b lib.I3BarOutBlock + + if num == 0 { + b.FullText = fmt.Sprintf( + "%s", + Conf.AppButtons.Separator.Left.Color, + Conf.AppButtons.Separator.Left.Background, + Conf.AppButtons.Separator.Left.Font, + Conf.AppButtons.Separator.Left.FontSize, + Conf.AppButtons.Separator.Left.Symbol, + ) + } + + b.FullText = app.FullText + + if num == len(Conf.Apps) { + b.FullText = fmt.Sprintf( + "%s", + Conf.AppButtons.Separator.Right.Color, + Conf.AppButtons.Separator.Right.Background, + Conf.AppButtons.Separator.Right.Font, + Conf.AppButtons.Separator.Right.FontSize, + Conf.AppButtons.Separator.Right.Symbol, + ) + } + + b.Background = app.Background + b.Color = app.Color + b.Instance = app.Instance + b.Markup = `pango` + b.Separator = app.Separator + b.SeparatorBlockWidth = app.SeparatorBlockWidth + b.Name = app.Name + + if lib.HasWindows(app.Class, app.Instance) { + b.Border = app.BorderActive + } else { + b.Border = app.Border + } + + b.BorderTop = 1 + b.BorderRight = 1 + b.BorderBottom = 1 + b.BorderLeft = 1 + + j = append(j, b) + } + } + + if Conf.CPUTemp.Enabled { + var b lib.I3BarOutBlock + + b.Color = Conf.CPUTemp.Color + b.Background = Conf.CPUTemp.Background + + if Conf.CPUTemp.Separator.Left.Enabled { + b.FullText = fmt.Sprintf( + "%s", + Conf.CPUTemp.Separator.Left.Color, + Conf.CPUTemp.Separator.Left.Background, + Conf.CPUTemp.Separator.Left.Font, + Conf.CPUTemp.Separator.Left.FontSize, + Conf.CPUTemp.Separator.Left.Symbol, + ) + } + + b.FullText += fmt.Sprintf( + "CPU: %d°", + Conf.CPUTemp.Color, + Conf.CPUTemp.Background, + Conf.CPUTemp.Font, + Conf.CPUTemp.FontSize, + Conf.CPUTemperature, + ) + + if Conf.CPUTemp.Separator.Right.Enabled { + b.FullText += fmt.Sprintf( + "%s", + Conf.CPUTemp.Separator.Right.Color, + Conf.CPUTemp.Separator.Right.Background, + Conf.CPUTemp.Separator.Right.Font, + Conf.CPUTemp.Separator.Right.FontSize, + Conf.CPUTemp.Separator.Right.Symbol, + ) + } + + b.Markup = "pango" + b.Separator = false + + j = append(j, b) + } + + if Conf.Mem.Enabled { + var b lib.I3BarOutBlock + + b.Color = Conf.Mem.Color + b.Background = Conf.Mem.Background + + if Conf.Mem.Separator.Left.Enabled { + b.FullText = fmt.Sprintf( + "%s", + Conf.Mem.Separator.Left.Color, + Conf.Mem.Separator.Left.Background, + Conf.Mem.Separator.Left.Font, + Conf.Mem.Separator.Left.FontSize, + Conf.Mem.Separator.Left.Symbol, + ) + } + + if Conf.Mem.ShowSwap { + b.FullText += fmt.Sprintf( + "M:%d%% SHM:%dM SW:%dM", + Conf.Mem.Color, + Conf.Mem.Background, + Conf.Mem.Font, + Conf.Mem.FontSize, + Conf.Memory.Usedpct, + Conf.Memory.Shared, + Conf.Memory.Swap, + ) + } else { + b.FullText += fmt.Sprintf( + "M:%d%% SHM:%dM", + Conf.Mem.Color, + Conf.Mem.Background, + Conf.Mem.Font, + Conf.Mem.FontSize, + Conf.Memory.Usedpct, + Conf.Memory.Shared, + ) + } + + if Conf.Mem.Separator.Right.Enabled { + b.FullText += fmt.Sprintf( + "%s", + Conf.Mem.Separator.Right.Color, + Conf.Mem.Separator.Right.Background, + Conf.Mem.Separator.Right.Font, + Conf.Mem.Separator.Right.FontSize, + Conf.Mem.Separator.Right.Symbol, + ) + } + + b.Markup = "pango" + b.Separator = false + + j = append(j, b) + } + + if Conf.LA.Enabled { + var b lib.I3BarOutBlock + + b.Color = Conf.LA.Color + b.Background = Conf.LA.Background + + if Conf.LA.Separator.Left.Enabled { + b.FullText = fmt.Sprintf( + "%s", + Conf.LA.Separator.Left.Color, + Conf.LA.Separator.Left.Background, + Conf.LA.Separator.Left.Font, + Conf.LA.Separator.Left.FontSize, + Conf.LA.Separator.Left.Symbol, + ) + } + + b.FullText += fmt.Sprintf( + "LA:%s", + Conf.LA.Color, + Conf.LA.Background, + Conf.LA.Font, + Conf.LA.FontSize, + Conf.La, + ) + + if Conf.LA.Separator.Right.Enabled { + b.FullText += fmt.Sprintf( + "%s", + Conf.LA.Separator.Right.Color, + Conf.LA.Separator.Right.Background, + Conf.LA.Separator.Right.Font, + Conf.LA.Separator.Right.FontSize, + Conf.LA.Separator.Right.Symbol, + ) + } + + b.Markup = "pango" + b.Separator = false + + j = append(j, b) + } + + if Conf.NetIf.Enabled { + var b lib.I3BarOutBlock + + b.Color = Conf.NetIf.Color + b.Background = Conf.NetIf.Background + + if Conf.NetIf.Separator.Left.Enabled { + b.FullText = fmt.Sprintf( + "%s", + Conf.NetIf.Separator.Left.Color, + Conf.NetIf.Separator.Left.Background, + Conf.NetIf.Separator.Left.Font, + Conf.NetIf.Separator.Left.FontSize, + Conf.NetIf.Separator.Left.Symbol, + ) + } + + b.FullText += fmt.Sprintf( + "%s", + Conf.NetIf.Color, + Conf.NetIf.Background, + Conf.NetIf.Font, + Conf.NetIf.FontSize, + Conf.IfStatus, + ) + + if Conf.NetIf.Separator.Right.Enabled { + b.FullText += fmt.Sprintf( + "%s", + Conf.NetIf.Separator.Right.Color, + Conf.NetIf.Separator.Right.Background, + Conf.NetIf.Separator.Right.Font, + Conf.NetIf.Separator.Right.FontSize, + Conf.NetIf.Separator.Right.Symbol, + ) + } + + b.Markup = "pango" + b.Separator = false + + j = append(j, b) + } + + if Conf.Vpn.Enabled { + var b lib.I3BarOutBlock + + b.Color = Conf.Vpn.Color + b.Background = Conf.Vpn.Background + + if Conf.Vpn.Separator.Left.Enabled { + b.FullText = fmt.Sprintf( + "%s", + Conf.Vpn.Separator.Left.Color, + Conf.Vpn.Separator.Left.Background, + Conf.Vpn.Separator.Left.Font, + Conf.Vpn.Separator.Left.FontSize, + Conf.Vpn.Separator.Left.Symbol, + ) + } + + b.FullText += fmt.Sprintf( + "%s", + Conf.Vpn.Color, + Conf.Vpn.Background, + Conf.Vpn.Font, + Conf.Vpn.FontSize, + Conf.VPNStatus, + ) + + if Conf.Vpn.Separator.Right.Enabled { + b.FullText += fmt.Sprintf( + "%s", + Conf.Vpn.Separator.Right.Color, + Conf.Vpn.Separator.Right.Background, + Conf.Vpn.Separator.Right.Font, + Conf.Vpn.Separator.Right.FontSize, + Conf.Vpn.Separator.Right.Symbol, + ) + } + + b.Markup = "pango" + b.Separator = false + + j = append(j, b) + } + + if Conf.Battery.Enabled { + var b lib.I3BarOutBlock + + b.Color = Conf.Battery.Color + b.Background = Conf.Battery.Background + + if Conf.Battery.Separator.Left.Enabled { + b.FullText = fmt.Sprintf( + "%s", + Conf.Battery.Separator.Left.Color, + Conf.Battery.Separator.Left.Background, + Conf.Battery.Separator.Left.Font, + Conf.Battery.Separator.Left.FontSize, + Conf.Battery.Separator.Left.Symbol, + ) + } + + b.FullText += Conf.BatteryString + + if Conf.Battery.Separator.Right.Enabled { + b.FullText += fmt.Sprintf( + "%s", + Conf.Battery.Separator.Right.Color, + Conf.Battery.Separator.Right.Background, + Conf.Battery.Separator.Right.Font, + Conf.Battery.Separator.Right.FontSize, + Conf.Battery.Separator.Right.Symbol, + ) + } + + b.Markup = "pango" + b.Separator = false + + j = append(j, b) + } + + if Conf.SimpleVolumePa.Enabled { + var b lib.I3BarOutBlock + + b.Name = "simple-volume-pa" + b.Color = Conf.SimpleVolumePa.Color + b.Background = Conf.SimpleVolumePa.Background + + if Conf.SimpleVolumePa.Separator.Left.Enabled { + b.FullText = fmt.Sprintf( + "%s", + Conf.SimpleVolumePa.Separator.Left.Color, + Conf.SimpleVolumePa.Separator.Left.Background, + Conf.SimpleVolumePa.Separator.Left.Font, + Conf.SimpleVolumePa.Separator.Left.FontSize, + Conf.SimpleVolumePa.Separator.Left.Symbol, + ) + } + + // Pango format is already applied in plugin src. + b.FullText += SoundVolume + + if Conf.SimpleVolumePa.Separator.Right.Enabled { + b.FullText += fmt.Sprintf( + "%s", + Conf.SimpleVolumePa.Separator.Right.Color, + Conf.SimpleVolumePa.Separator.Right.Background, + Conf.SimpleVolumePa.Separator.Right.Font, + Conf.SimpleVolumePa.Separator.Right.FontSize, + Conf.SimpleVolumePa.Separator.Right.Symbol, + ) + } + + b.Markup = "pango" + b.Separator = false + + j = append(j, b) + } + + if Conf.Clock.Enabled { + var b lib.I3BarOutBlock + + b.Name = `wallclock` + b.Color = Conf.Clock.Color + b.Background = Conf.Clock.Background + + if Conf.Clock.Separator.Left.Enabled { + b.FullText = fmt.Sprintf( + "%s", + Conf.Clock.Separator.Left.Color, + Conf.Clock.Separator.Left.Background, + Conf.Clock.Separator.Left.Font, + Conf.Clock.Separator.Left.FontSize, + Conf.Clock.Separator.Left.Symbol, + ) + } + + b.FullText += fmt.Sprintf( + "%s", + Conf.Clock.Color, + Conf.Clock.Background, + Conf.Clock.Font, + Conf.Clock.FontSize, + Clock, + ) + + if Conf.Clock.Separator.Right.Enabled { + b.FullText += fmt.Sprintf( + "%s", + Conf.Clock.Separator.Right.Color, + Conf.Clock.Separator.Right.Background, + Conf.Clock.Separator.Right.Font, + Conf.Clock.Separator.Right.FontSize, + Conf.Clock.Separator.Right.Symbol, + ) + } + + b.Markup = "pango" + b.Separator = false + + j = append(j, b) + } + + if Conf.PrintOutput && len(j) > 0 { + Conf.MsgChan <- j + } + } + } +} + +// PrintToI3bar prints info to stdout according to ipc docs (https://i3wm.org/docs/i3bar-protocol.html) +func PrintToI3bar(c lib.MyConfig) { + for message := range c.MsgChan { + // we do not need to html-encode output, json.Marshal does this forcefully, so invent our own Marshal + buf := new(bytes.Buffer) + encoder := json.NewEncoder(buf) + encoder.SetEscapeHTML(false) + err := encoder.Encode(message) + + if err != nil { + log.Printf("Unable to json-encode message, %s\n", err) + } + + fmt.Println(strings.TrimSuffix(buf.String(), "\n") + ",") + } +} diff --git a/configs/i3status-go-example.json b/configs/i3status-go-example.json deleted file mode 100644 index c96ed88..0000000 --- a/configs/i3status-go-example.json +++ /dev/null @@ -1,858 +0,0 @@ -{ -// Default text and *block* border colors. If not set #3e78fd is used. -"color" : "#3e78fd", - -// Default backbround color. If not set value of #edeceb is used. -"background" : "#000000", - -// Can be omitted, then Liberation Mono will be used. -"font": "Liberation Mono", - -// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes -// ‘smaller’ or ‘larger’ -"font_size": "medium", - -"separator" : { - "left": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to #edeceb color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to #3e78fd background color defined for separator up here. - "background": "#000000", - - // If omitted set to "|" (no quotes) symbol defined for separator up here. - "symbol": "▶", - - // If omitted set to "Noto Sans" font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - }, - - "right": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to #edeceb color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to #3e78fd background color defined for separator up here. - "background": "#000000", - - // If omitted set to "|" (no quotes) symbol defined for separator up here. - "symbol": "◀", - - // If omitted set to "Noto Sans" font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - } -}, - -// Memory stats -"mem" : { - "enabled": true, - - // If omitted set to default color defined up here. - "color": "#3e78fd", - - // If omitted set to default background color defined up here. - "background": "#000000", - - // If omitted set to default font defined up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. - "font_size": "medium", - - // Do we show used swap megs? - "show_swap": false, - - // Re-define separator parameters for net-if block here. - "separator" : { - "left": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "▶", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - }, - - "right": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "◀", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - } - } -}, - -// Load Average -"la" : { - "enabled": true, - - // If omitted set to default color defined up here. - "color": "#3e78fd", - - // If omitted set to default background color defined up here. - "background": "#000000", - - // If omitted set to default font defined up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. - "font_size": "medium", - - // Re-define separator parameters for net-if block here. - "separator" : { - "left": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "▶", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - }, - - "right": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "◀", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - } - } -}, - -"net-if" : { - "enabled" : false, - - // If omitted set to default color defined up here. - "color": "#3e78fd", - - // If omitted set to default background color defined up here. - "background": "#000000", - - // If omitted set to default font defined up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. - "font_size": "medium", - - // Net interface down symbol color, in html notation. - "down_color" : "red", - - // Net interface up symbol color, in html notation. - "up_color" : "green", - - // Re-define separator parameters for net-if block here. - "separator": { - "left": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "▶", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - }, - - "right": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "◀", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - } - }, - - "if" : [ - { - // Name as it displayed on i3bar - "name" : "eth0", - - // Directory containing net if status files - "dir" : "/sys/class/net/eth0" - } - ] -}, - -// OpenVPN status. Note that directive status in openvpn.conf should point to state file and *update* its timestamp at -// least as frequent as mtime_threshold in seconds. -"vpn": { - "enabled": false, - - // If omitted set to default color defined up here. - "color": "#3e78fd", - - // If omitted set to default background color defined up here. - "background": "#000000", - - // If omitted set to default font defined up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. - "font_size": "medium", - - // Status file location. Plugin will be disabled if this value omitted. - "statusfile" : "/tmp/openvpn-status.stat", - - // mtime check period. - "mtime_threshold": 10, - - // Vpn down symbol color, in html notation. - "down_color" : "red", - - // Vpn up symbol color, in html notation. - "up_color" : "green", - - // Re-define separator parameters for net-if block here. - "separator": { - "left": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "▶", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - }, - - "right": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "◀", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - } - }, - - // Also we can tcp-ping some service inside vpn network to ensure that connection is not stoned. - "tcp_check" : { - "enabled": false, - "host": "somehost.tld", - "port": 443, - "timeout" : 3 - } -}, - -// Simple sound volume indicator -"simple-volume-pa": { - "enabled": false, - - // If omitted set to default color defined up here. - "color": "#3e78fd", - - // If omitted set to default background color defined up here. - "background": "#000000", - - // If omitted set to default font defined up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. - "font_size": "medium", - - "symbol": "🔊", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of the relative sizes - // ‘smaller’ or ‘larger’. If omitted set to value of simple-volume-pa.font_size by default. - "symbol_font_size": "medium", - - // If not defined - will be "true" - "right_click_cmd": ["pavucontrol"], - - // Change volume step in %, if not configured it is 5 - "step": 3, - - // We'll change volume level with mouse wheel. Under X11 it is mapped to some buttons, typically 4 and 5 (z-axis). - // If omited, default value is 4 - "wheel_up": 4, - - // If omited, default value is 5 - "wheel_down": 5, - - // Maximum sound volume, can be over 100%, but sould not be :) Default value 100 if not set. - "max_volume_limit": 120, - - // PA has annoying feature - socket activation. Sound system must persist and be available to all users regardless - // of init or other things. They just fail to understand that. Or they fucked up pulseaudio just because they scary - // of security something of resposibility. Anyway this is grand disign flaw, but we still have to bear with it. - // This setting defines if pulseaudion will be run in manner that allows it to exit is other login detected (how - // they guess it - I do not know). In general case we do not want allow pa to exit and leave our session without - // audio. - "dont_exit_on_login": true, - - // Re-define separator parameters for net-if block here. - "separator": { - "left": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "▶", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - }, - - "right": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "◀", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - } - } -}, - -// Just clock -"clock": { - "enabled" : true, - - // If omitted set to default color defined up here. - "color": "#3e78fd", - - // If omitted set to default background color defined up here. - "background": "#000000", - - // If omitted set to default font defined up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. - "font_size": "medium", - - // Re-define separator parameters for net-if block here. - "separator": { - "left": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "▶", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - }, - - "right": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "◀", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - } - }, - - "left_click" : { - "enabled" : false, - // cmd is array of command itself and its arguments - "cmd" : [ "orage" ] - }, - - "right_click" : { - "enabled" : false, - "cmd" : [ "true" ] - } -}, - -// Battery, useful for laptops -"battery": { - "enabled": false, - - // If omitted set to default color defined up here. - "color": "#3e78fd", - - // If omitted set to default background color defined up here. - "background": "#000000", - - // If omitted set to default font defined up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. - "font_size": "medium", - - // If omitted "⚡" (no quotes) is used. - "symbol": "⚡", - - // If omitted battery.font is used. - "symbol_font" : "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of the relative sizes - // ‘smaller’ or ‘larger’. If omitted set to value of simple-volume-pa.font_size by default. - "symbol_font_size": "large", - - "charge_color": { - // colors in html notation - "full": "green", - "empty": "red", - "almost_full": "yellow", - "almost_empty": "orange" - }, - - // Re-define separator parameters for net-if block here. - "separator": { - "left": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "▶", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - }, - - "right": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "◀", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - } - } -}, - -// CPU Temperature monitor, shows average value among given sources -"cpu_temp": { - "enabled": false, - - // If omitted set to default color defined up here. - "color": "#3e78fd", - - // If omitted set to default background color defined up here. - "background": "#000000", - - // If omitted set to default font defined up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined up here. - "font_size": "medium", - - // Re-define separator parameters for net-if block here. - "separator": { - "left": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "▶", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - }, - - "right": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "◀", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - } - }, - - // Files in sysfs that contains cpu temperatures - "file": [ - "/sys/class/hwmon/hwmon4/temp2_input", - "/sys/class/hwmon/hwmon4/temp3_input", - "/sys/class/hwmon/hwmon4/temp4_input", - "/sys/class/hwmon/hwmon4/temp5_input", - "/sys/class/hwmon/hwmon4/temp6_input", - "/sys/class/hwmon/hwmon4/temp7_input" - ] -}, - -// Intended mainly for use with desktop notifications -// Because it inherits all env vars from i3, it can intercat with dbus and other -// such user session services. -"cron" : { - "enabled" : false, - - "tasks" : [ - { - // Time in crontab notation - "time" : "55 23 * * *", - "cmd" : [ - "notify-send", "Sleeping Time!", "Take a nap." - ] - }, - { - // time in crontab format - "time" : "55 12 * * 2,4", - // commands as it should be invoked in bash script - "cmd" : [ - "notify-send", "Pizza time!", "M-m-m, tasty!" - ] - } - ] -}, - -// Whether to display Application Buttons. -"app_buttons": { - "enabled": true, - - // Re-define separator parameters for net-if block here. - "separator": { - "left": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "▶", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - }, - - "right": { - // Set to false if omitted. - "enabled": true, - - // If omitted set to default color defined for separator up here. - "color": "#3e78fd", - - // If omitted set to default background color defined for separator up here. - "background": "#000000", - - // If omitted set to default symbol defined for separator up here. - "symbol": "◀", - - // If omitted set to default font defined for separator up here. - "font": "Noto Sans", - - // ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes - // ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here. - "font_size": "medium" - } - }, -}, - -// Buttons - application launch "buttons" -"apps": [ - { - // Text dispalyed on button - "full_text" : "📂", - // Internal name, can be any string, but unique for each app button - "name" : "thunar", - // Command itself - "cmd" : "thunar", - // Array of command args, optional - "args": [ "." ], - // Regexp that match with Instance component of WM_CLASS(STRING) of xprop output - "instance": "^thunar$", - // Regexp that match with Class component of WM_CLASS(STRING) of xprop output - "class": "^Thunar$", - // text color in html notation - "color": "#ffa500", - // background color in html notation - "background" : "#000000", - // border color in html notation - "border": "#666666", - // border color if there is at least one window with given Instance and/or Class exist - "border_active": "#3e78fd", - // Vertical line between objects on bar - if omitted true value is assumed by i3bar, but we set it to false - // in that case. It is limitation of golang json parser. - "separator": false, - "separator_block_width": 2 - }, - { - "full_text" : " ♬ ", - "name" : "deadbeef", - "cmd" : "deadbeef", - "instance" : "^deadbeef$", - "class" : "^Deadbeef$", - "color" : "#00aa33", - "border": "#666666", - "border_active": "#3e78fd", - "separator": false, - "separator_block_width": 2 - }, - { - "full_text" : " Term ", - "name" : "xterm", - "cmd" : "xterm", - "instance" : "^xterm$", - "class" : "^XTerm$", - "color" : "#666666", - "border": "#666666", - "border_active": "#3e78fd", - "separator": false, - "separator_block_width": 2 - }, - { - "full_text" : " Ff ", - "name" : "firefox", - "cmd" : "firefox", - "instance" : "^Navigator$", - "class" : "^Firefox$", - "color" : "#ffa500", - "border": "#666666", - "border_active": "#3e78fd", - "separator": false, - "separator_block_width": 2 - }, - { - "full_text" : " C ", - "name" : "chrome", - "cmd" : "chrome", - "instance" : "^google-chrome$", - "class" : "^Google-chrome$", - "color" : "#ffa500", - "border": "#666666", - "border_active": "#3e78fd", - "separator": false, - "separator_block_width": 2 - }, - { - "full_text" : " @ ", - "name" : "thunderbird", - "cmd" : "thunderbird", - "instance" : "^Mail$", - "class" : "^Thunderbird$", - "color" : "#006994", - "border": "#666666", - "border_active": "#3e78fd", - "separator": false, - "separator_block_width": 2 - }, - { - "full_text" : " Tg ", - "name" : "telegram", - "cmd" : "Telegram", - "instance" : "^Telegram$", - "class" : "^TelegramDesktop$", - "color" : "#5a8850", - "border": "#666666", - "border_active": "#3e78fd", - "separator": false, - "separator_block_width": 2 - }, - { - "full_text" : " T ", - "name" : "mousepad", - "cmd" : "mousepad", - "instance" : "^mousepad$", - "class" : "^Mousepad$", - "border": "#666666", - "border_active": "#3e78fd", - "separator": false, - "separator_block_width": 2 - } - ] -} diff --git a/configs/i3status-go-example.json b/configs/i3status-go-example.json new file mode 120000 index 0000000..297e1f1 --- /dev/null +++ b/configs/i3status-go-example.json @@ -0,0 +1 @@ +/home/eleksir/git/i3status-go/cmd/i3status-go/default-config.json \ No newline at end of file