diff options
-rw-r--r-- | i3blocks.conf | 107 | ||||
-rw-r--r-- | i3status.conf | 43 | ||||
-rw-r--r-- | i3wm.conf | 44 | ||||
-rwxr-xr-x | install | 39 | ||||
-rw-r--r-- | install.config | 1 | ||||
-rwxr-xr-x | scripts/battery.sh | 60 | ||||
-rwxr-xr-x | scripts/eth.sh | 15 | ||||
-rwxr-xr-x | scripts/print_bash_color (renamed from print_bash_color) | 0 | ||||
-rwxr-xr-x | scripts/wifi.sh | 42 |
9 files changed, 330 insertions, 21 deletions
diff --git a/i3blocks.conf b/i3blocks.conf new file mode 100644 index 0000000..54dc8d6 --- /dev/null +++ b/i3blocks.conf @@ -0,0 +1,107 @@ +# dotfiles -- i3blocks +# author: johannst + + +# NOTE: +# Env Variables exported to scripts specified in 'command=' +# BLOCK_NAME=name # indicator block name '[name]' +# BLOCK_INSTANCE=inst # value of 'instance=inst' +# BLOCK_INTERVAL=10 # value of 'interval=10' +# BLOCK_BUTTON=1 # set to '1' if script gets triggered by click event +# BLOCK_X=795 # x coordinate of click event +# BLOCK_Y=9 # y coordinate of click event +# +# Coloring indicator blocks +# color=#FF0000 # sets text color +# background=#222222 # sets block background +# border=#9FBC00 # sets color of visible block border +# +# Trigger block action by signal +# signal=1 # trigger command by sending SIGRTMIN+1 +# signal=8 # trigger command by sending SIGRTMIN+8 + + +# +# Global settings +# + +command=/usr/lib/i3blocks/$BLOCK_NAME +markup=none +separator_block_width=15 +#separator=false +border_top=0 +border_left=0 +border_right=0 +border_bottom=2 + +# +# Network +# + +[eth] +command=$HOME/.scripts/eth.sh +instance=enp0s25 +label=: +interval=10 +# light green +border=#9FBC00 + +[wifi] +command=$HOME/.scripts/wifi.sh --ap_quality --ap_name +instance=wlp3s0 +label=: +interval=10 +# bright grey +border=#928374 + +# +# Load +# + +[load_average] +label=: +interval=10 +# red +border=#cc241d + +# +# Battery +# + +[battery] +command=$HOME/.scripts/battery.sh +label=: +instance=BAT0 +interval=5 +# yellow - orange +border=#d79921 + +# +# Volume +# + +[volume] +label=: +instance=Master +interval=5 +# light purple +border=#b16286 + +# +# Date Time +# + +[date] +command=echo ":$(date '+%Y-%m-%d')" +interval=60 +separator=false +separator_block_width=5 +# blue +border=#458588 + +[time] +command=echo ":$(date '+%H:%M:%S')" +interval=5 +# olive +border=#98971a + diff --git a/i3status.conf b/i3status.conf index 0f96e5e..287e71d 100644 --- a/i3status.conf +++ b/i3status.conf @@ -6,44 +6,61 @@ general { interval = 5 } -order += "wireless wlan0" -order += "ethernet eth0" +__DEF__WIFI_START__ +order += "wireless __NIF_WIFI__" +__DEF__WIFI_END__ +__DEF__ETH_START__ +order += "ethernet __NIF_ETH__" +__DEF__ETH_END__ order += "battery 0" order += "load" order += "volume master" order += "tztime local" -wireless wlan0 { - format_up = "W: (%quality at %essid, %bitrate) %ip" - format_down = "W: down" +__DEF__WIFI_START__ +# wifi: f1eb +wireless __NIF_WIFI__ { + format_up = ": (%quality at %essid, %bitrate) %ip" + #format_down = ": down" } +__DEF__WIFI_END__ -ethernet eth0 { - format_up = "E: %ip (%speed)" - format_down = "E: down" +__DEF__ETH_START__ +# sitemap: f0e8 +# ion-arrow-swap: f268 +ethernet __NIF_ETH__ { + format_up = ": %ip (%speed)" + format_down = ":down" } +__DEF__ETH_END__ +# plug: f1e6 battery 0 { # show battery capacity in relation to last full capacity instead of the design capacity last_full_capacity = true integer_battery_capacity = true low_threshold = 30 threshold_type = "percentage" - format = "%status %percentage %remaining %consumption" + format = ": %status %percentage %remaining %consumption" path = "/sys/class/power_supply/BAT%d/uevent" } tztime local { - format = "%Y-%m-%d %H:%M:%S" + format = ": %Y-%m-%d : %H:%M:%S" } +# chart: f1fe load { - format = "%1min" + format = ": %1min" } +# headphone: f025 +# X: f00d +# volume-off f3b9 +# volume-up f3ba volume master { - format = "♪: %volume" - format_muted = "♪: muted (%volume)" + format = ": %volume" + format_muted = ": muted (%volume)" device = "default" mixer = "Master" mixer_idx = 0 @@ -1,8 +1,6 @@ # dotfiles -- i3config # author: johannst -# i3 config file (v4) - # helpful cmdline tools: # * xev # * xmodmap @@ -12,15 +10,18 @@ set $mod Mod1 # super key #set $mod Mod4 -font pango:Terminus 10 +#font pango:Terminus 12 +font pango:xos4 Terminus 12 # mouse+$mod to move/rezie window in floating mode floating_modifier $mod # launch terminal -bindsym $mod+Return exec st +bindsym $mod+Return exec i3-sensible-terminal # launch dmenu_run bindsym $mod+d exec dmenu_run +# launch dmenu_run +bindsym $mod+p exec passmenu # kill focused Window bindsym $mod+Shift+c kill # reload the configuration file @@ -142,7 +143,23 @@ bindsym XF86AudioMute exec "amixer set Master toggle" #}}} #{{{ lock/suspend -set $lock_cmd i3lock --inactivity-timeout 30s -d --ignore-empty-password -c 455a64 +#set $lock_cmd i3lock --inactivity-timeout 30s -d --ignore-empty-password -c 455a64 -i ~/.i3/lock.png +set $lock_cmd i3lock \ + --ignore-empty-password \ + -B=100 \ + --indicator \ + --indpos="100:800" \ + --radius 30 \ + --insidecolor=00000000 \ + --insidevercolor=00000000 \ + --insidewrongcolor=00000000 \ + --ringcolor=ffffff80 \ + --ringvercolor=fffffff0 \ + --ringwrongcolor=ff0000ff \ + --veriftext="" \ + --wrongtext="" \ + --keyhlcolor=00ff0080 \ + --bshlcolor=ff000080 # lock screen bindsym $mod+Control+l exec $lock_cmd @@ -164,17 +181,28 @@ mode "$power_mode" { # Start i3bar bar { - status_command i3status --config ~/.i3/i3status.conf + font pango: xos4 Terminus, Font Awesome 5 Free, Ionicons 10 + position top + height 26 + status_command i3blocks -c ~/.i3/i3blocks.conf + #status_command i3status --config ~/.i3/i3status.conf + + #separator_symbol "■" + #tray_output LVDS-1 + #tray_padding 0 } #}}} # PLAYGROUND +gaps outer 0 +gaps inner 5 + # pin applications to specific workspace # helpfull to get name: 'xprop | grep WM_CLASS' (then click window) -assign [class="Firefox"] 9 +#assign [class="Firefox"] 9 -bindsym $mod+p exec "notify-send \\"Hello, i3; $USER\\"" +#bindsym $mod+p exec "notify-send \\"Hello, i3; $USER\\"" #% vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1 @@ -16,6 +16,7 @@ gToolsConfig=( "Xresources:xterm:xtermConfigInstaller" "i3config:i3:i3ConfigInstaller" "i3status:i3status:i3statusConfigInstaller" +"i3blocks:i3blocks:i3blocksConfigInstaller" ) gMagicNumber=e2718281 @@ -153,6 +154,44 @@ function i3statusConfigInstaller() { return 1 fi cp i3status.conf $i3_status_conf + + local nif=$(ip link show | grep ^[1-9] | grep -v LOOPBACK | sed 's/ //g' | cut -d ':' -f 2) + + local num_wlanif=$(echo -e $nif | tr ' ' '\n' | grep wl | wc -l) + local wlanif=$(echo -e $nif | tr ' ' '\n' | grep wl) + if [[ $num_wlanif != 1 || -z $wlanif ]]; then + echo "[Warning]: i3statusConfigInstaller couldn't find name of WIFI IF!" + sed -i '/__DEF__WIFI_START__/,/__DEF__WIFI_END__/d' $i3_status_conf + else + sed -i "s/__NIF_WIFI__/$wlanif/g" $i3_status_conf + fi + + local num_ethif=$(echo -e $nif | tr ' ' '\n' | grep en | wc -l) + local ethif=$(echo -e $nif | tr ' ' '\n' | grep en) + if [[ $num_ethif != 1 || -z $ethif ]]; then + echo "[Warning]: i3statusConfigInstaller couldn't find name of ETH IF!" + sed -i '/__DEF__ETH_START__/,/__DEF__ETH_END__/d' $i3_status_conf + else + sed -i "s/__NIF_ETH__/$ethif/g" $i3_status_conf + fi + + sed -i '/__DEF__.*__/d' $i3_status_conf + + return 0 +} + +#}}} +#{{{ i3blocksConfigInstaller + +function i3blocksConfigInstaller() { + local i3_home=~/.i3 + local i3_blocks_conf=$i3_home/i3blocks.conf + mkdir $i3_home 2> /dev/null + if [ -f $i3_blocks_conf ]; then + return 1 + fi + cp i3blocks.conf $i3_blocks_conf + return 0 } diff --git a/install.config b/install.config index 5e82273..42b8c9c 100644 --- a/install.config +++ b/install.config @@ -13,3 +13,4 @@ n - vimrc n - Xresources n - i3config n - i3status +n - i3blocks diff --git a/scripts/battery.sh b/scripts/battery.sh new file mode 100755 index 0000000..05ac440 --- /dev/null +++ b/scripts/battery.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# dotfiles -- scripts/battery.sh +# author: johannst + +bat="${BLOCK_INSTANCE:-BAT0}" +[[ ! -f "/sys/class/power_supply/$bat/type" ]] && exit 0 + +show_bat_use_design_capacity=0 +show_bat_status=0 +show_bat_color_output=0 +for arg in "$@"; do + case $arg in + -dc | --design_capacity) show_bat_use_design_capacity=1 + ;; + -s | --status) show_bat_status=1 + ;; + -c | --color) show_bat_color_output=1 + ;; + *) # ignore unknown + ;; + esac +done + +# Unknown, Charging, Discharging, Full +BAT_STATUS=$(cat /sys/class/power_supply/$bat/status) +BAT_NOW=$(cat /sys/class/power_supply/$bat/charge_now) +[[ $show_bat_use_design_capacity == 1 ]] \ + && BAT_FULL=$(cat /sys/class/power_supply/$bat/charge_full_design) \ + || BAT_FULL=$(cat /sys/class/power_supply/$bat/charge_full) + +BAT_POWER=$(echo $BAT_NOW $BAT_FULL | awk '{ print int($1 * 100 / $2); }') + +OUT="$BAT_POWER%" +[[ $show_bat_status == 1 ]] && \ + case $BAT_STATUS in + Charging) OUT="$OUT (Charging)" + ;; + *) # only show charging state for now + ;; + esac + +echo "$OUT" + +[[ $show_bat_color_output == 1 ]] && \ + # print twice, else colors not working?! + echo "$OUT" + if [[ $BAT_POWER -ge 80 ]]; then + # green + echo "#00FF00" + elif [[ $BAT_POWER -ge 60 ]]; then + # yellow + echo "#FFF600" + elif [[ $BAT_POWER -ge 40 ]]; then + # dark orange + echo "#FFAE00" + else + # red + echo "#FF0000" + fi + diff --git a/scripts/eth.sh b/scripts/eth.sh new file mode 100755 index 0000000..2fb8b30 --- /dev/null +++ b/scripts/eth.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# dotfiles -- scripts/eth.sh +# author: johannst + +if="${BLOCK_INSTANCE:-enp0s25}" +[[ ! -d /sys/class/net/${if} ]] && exit 0 + +# operstate: down, up +[[ "$(cat /sys/class/net/$IF/operstate)" = 'down' ]] && exit 0 + +# first ipv4 addr +IP_ADDR=$(ip address show $if | grep 'inet ' | sed 's/\s\+inet \([0-9.]\+\)\/.*/\1/') + +echo "$IP_ADDR" + diff --git a/print_bash_color b/scripts/print_bash_color index 43f6fcc..43f6fcc 100755 --- a/print_bash_color +++ b/scripts/print_bash_color diff --git a/scripts/wifi.sh b/scripts/wifi.sh new file mode 100755 index 0000000..6f8417a --- /dev/null +++ b/scripts/wifi.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# dotfiles -- scripts/wifi.sh +# author: johannst + +if="${BLOCK_INSTANCE:-wlp3s0}" +[[ ! -d /sys/class/net/${if} ]] && exit 0 + +show_ap_mac=0 +show_ap_quality=0 +show_ap_name=0 +for arg in "$@"; do + case $arg in + -aq | --ap_quality) show_ap_quality=1 + ;; + -am | --ap_mac) show_ap_mac=1 + ;; + -an | --ap_name) show_ap_name=1 + ;; + *) # ignore unknown + ;; + esac +done + +AP_NAME=$(iwgetid -r $if) +AP_MAC=$(iwgetid -a $if | sed 's/.*\(\([0-9A-F]\{2\}:\)\{5\}[0-9A-F]\{2\}\).*/\1/') +AP_QUALITY=$(grep $if /proc/net/wireless | awk '{ print int($3 * 100 / 70) }')% + +# first ipv4 addr +IP_ADDR=$(ip address show $if | grep 'inet ' | sed 's/\s\+inet \([0-9.]\+\)\/.*/\1/') + +OUT="$IP_ADDR" +if [[ $show_ap_name == 1 && $show_ap_quality == 1 ]]; then + OUT="$OUT ($AP_NAME $AP_QUALITY)" +elif [[ $show_ap_name == 1 ]]; then + OUT="$OUT ($AP_NAME)" +elif [[ $show_ap_quality == 1 ]]; then + OUT="$OUT ($AP_QUALITY)" +fi +[[ $show_ap_mac == 1 ]] && OUT="$OUT $AP_MAC" + +echo "$OUT" + |