Make i3 work with new version of i3-blocks

master
Jonathan Hodgson 6 years ago
parent 06a45c6c68
commit 334633b16f
  1. 107
      i3/blocks/bandwidth
  2. 4
      i3/blocks/brightness
  3. 60
      i3/blocks/cpu
  4. 4
      i3/blocks/freeSpace
  5. 4
      i3/blocks/homeServerUpdates
  6. 3
      i3/blocks/mediaplayer
  7. 9
      i3/blocks/pacmanUpdates
  8. 83
      i3/blocks/volume
  9. 23
      i3/i3blocks-secondary.conf
  10. 9
      i3/i3blocks.conf

@ -0,0 +1,107 @@
#!/bin/bash
# Copyright (C) 2012 Stefan Breunig <stefan+measure-net-speed@mathphys.fsk.uni-heidelberg.de>
# Copyright (C) 2014 kaueraal
# Copyright (C) 2015 Thiago Perrotta <perrotta dot thiago at poli dot ufrj dot br>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Get custom IN and OUT labels if provided by command line arguments
while [[ $# -gt 1 ]]; do
key="$1"
case "$key" in
-i|--inlabel)
INLABEL="$2"
shift;;
-o|--outlabel)
OUTLABEL="$2"
shift;;
esac
shift
done
[[ -z $INLABEL ]] && INLABEL="IN "
[[ -z $OUTLABEL ]] && OUTLABEL="OUT "
# Use the provided interface, otherwise the device used for the default route.
if [[ -z $INTERFACE ]] && [[ -n $BLOCK_INSTANCE ]]; then
INTERFACE=$BLOCK_INSTANCE
elif [[ -z $INTERFACE ]]; then
INTERFACE=$(ip route | awk '/^default/ { print $5 ; exit }')
fi
# Issue #36 compliant.
if ! [ -e "/sys/class/net/${INTERFACE}/operstate" ] || ! [ "`cat /sys/class/net/${INTERFACE}/operstate`" = "up" ]
then
echo "$INTERFACE down"
echo "$INTERFACE down"
echo "#FF0000"
exit 0
fi
# path to store the old results in
path="/dev/shm/$(basename $0)-${INTERFACE}"
# grabbing data for each adapter.
read rx < "/sys/class/net/${INTERFACE}/statistics/rx_bytes"
read tx < "/sys/class/net/${INTERFACE}/statistics/tx_bytes"
# get time
time=$(date +%s)
# write current data if file does not exist. Do not exit, this will cause
# problems if this file is sourced instead of executed as another process.
if ! [[ -f "${path}" ]]; then
echo "${time} ${rx} ${tx}" > "${path}"
chmod 0666 "${path}"
fi
# read previous state and update data storage
read old < "${path}"
echo "${time} ${rx} ${tx}" > "${path}"
# parse old data and calc time passed
old=(${old//;/ })
time_diff=$(( $time - ${old[0]} ))
# sanity check: has a positive amount of time passed
[[ "${time_diff}" -gt 0 ]] || exit
# calc bytes transferred, and their rate in byte/s
rx_diff=$(( $rx - ${old[1]} ))
tx_diff=$(( $tx - ${old[2]} ))
rx_rate=$(( $rx_diff / $time_diff ))
tx_rate=$(( $tx_diff / $time_diff ))
# shift by 10 bytes to get KiB/s. If the value is larger than
# 1024^2 = 1048576, then display MiB/s instead
# incoming
echo -n "$INLABEL"
rx_kib=$(( $rx_rate >> 10 ))
if hash bc 2>/dev/null && [[ "$rx_rate" -gt 1048576 ]]; then
printf '%sM' "`echo "scale=1; $rx_kib / 1024" | bc`"
else
echo -n "${rx_kib}K"
fi
echo -n " "
# outgoing
echo -n "$OUTLABEL"
tx_kib=$(( $tx_rate >> 10 ))
if hash bc 2>/dev/null && [[ "$tx_rate" -gt 1048576 ]]; then
printf '%sM' "`echo "scale=1; $tx_kib / 1024" | bc`"
else
echo -n "${tx_kib}K"
fi

@ -48,8 +48,8 @@ if [[ "${percent}" -le 0 ]]; then
exit exit
fi fi
echo "🔆${percent}%" echo "${label} ${percent}%"
echo "${percent}%" echo "${label} ${percent}%"
echo "" echo ""
if [[ "${percent}" -le "${URGENT_VALUE}" ]]; then if [[ "${percent}" -le "${URGENT_VALUE}" ]]; then

@ -0,0 +1,60 @@
#!/usr/bin/perl
#
# Copyright 2014 Pierre Mavro <deimos@deimos.fr>
# Copyright 2014 Vivien Didelot <vivien@didelot.org>
# Copyright 2014 Andreas Guldstrand <andreas.guldstrand@gmail.com>
#
# Licensed under the terms of the GNU GPL v3, or any later version.
use strict;
use warnings;
use utf8;
use Getopt::Long;
# default values
my $t_warn = $ENV{T_WARN} || 50;
my $t_crit = $ENV{T_CRIT} || 80;
my $cpu_usage = -1;
my $decimals = $ENV{DECIMALS} || 2;
my $label = $ENV{label} || "";
sub help {
print "Usage: cpu_usage [-w <warning>] [-c <critical>] [-d <decimals>]\n";
print "-w <percent>: warning threshold to become yellow\n";
print "-c <percent>: critical threshold to become red\n";
print "-d <decimals>: Use <decimals> decimals for percentage (default is $decimals) \n";
exit 0;
}
GetOptions("help|h" => \&help,
"w=i" => \$t_warn,
"c=i" => \$t_crit,
"d=i" => \$decimals,
);
# Get CPU usage
$ENV{LC_ALL}="en_US"; # if mpstat is not run under en_US locale, things may break, so make sure it is
open (MPSTAT, 'mpstat 1 1 |') or die;
while (<MPSTAT>) {
if (/^.*\s+(\d+\.\d+)[\s\x00]?$/) {
$cpu_usage = 100 - $1; # 100% - %idle
last;
}
}
close(MPSTAT);
$cpu_usage eq -1 and die 'Can\'t find CPU information';
# Print short_text, full_text
printf "${label} %.${decimals}f%%\n", $cpu_usage;
printf "${label} %.${decimals}f%%\n", $cpu_usage;
# Print color, if needed
if ($cpu_usage >= $t_crit) {
print "#FF0000\n";
exit 33;
} elsif ($cpu_usage >= $t_warn) {
print "#FFFC00\n";
}
exit 0;

@ -18,8 +18,8 @@ if [ "$BLOCK_BUTTON" = "1" ]; then
echo "$used/$total" echo "$used/$total"
echo "$used/$total" echo "$used/$total"
else else
echo "$percent%" echo "$label $percent%"
echo "$percent%" echo "$label $percent%"
fi fi

@ -4,8 +4,8 @@ count=$(ssh homeServer -t checkupdates | wc -l)
if [ "$count" = "0" ]; then if [ "$count" = "0" ]; then
echo "" echo ""
else else
echo $count echo "$label $count"
echo $count echo "$label $count"
if [ "$count" -gt "5" ]; then if [ "$count" -gt "5" ]; then
echo "#FFOOOO" echo "#FFOOOO"
else else

@ -1,7 +1,8 @@
#!/usr/bin/sh #!/usr/bin/sh
COMMAND="playerctl --player=$BLOCK_INSTANCE" #COMMAND="playerctl --player=$BLOCK_INSTANCE"
COMMAND="playerctl"
case $BLOCK_BUTTON in case $BLOCK_BUTTON in
1) $COMMAND previous ;; 1) $COMMAND previous ;;

@ -7,10 +7,13 @@ if ! command -v checkupdates > /dev/null; then
else else
count=$(checkupdates | wc -l) count=$(checkupdates | wc -l)
if [ "$count" = "0" ]; then if [ "$count" = "0" ]; then
count="" echo ""
echo ""
echo ""
exit 0
fi fi
echo $count echo "$label $count"
echo $count echo "$label $count"
if [ "$count" -gt "5" ]; then if [ "$count" -gt "5" ]; then
echo "#FFOOOO" echo "#FFOOOO"
else else

@ -0,0 +1,83 @@
#!/bin/bash
# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
# Copyright (C) 2014 Alexander Keller <github@nycroth.com>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#------------------------------------------------------------------------
# The second parameter overrides the mixer selection
# For PulseAudio users, eventually use "pulse"
# For Jack/Jack2 users, use "jackplug"
# For ALSA users, you may use "default" for your primary card
# or you may use hw:# where # is the number of the card desired
if [[ -z "$MIXER" ]] ; then
MIXER="default"
if command -v pulseaudio >/dev/null 2>&1 && pulseaudio --check ; then
# pulseaudio is running, but not all installations use "pulse"
if amixer -D pulse info >/dev/null 2>&1 ; then
MIXER="pulse"
fi
fi
[ -n "$(lsmod | grep jack)" ] && MIXER="jackplug"
MIXER="${2:-$MIXER}"
fi
# The instance option sets the control to report and configure
# This defaults to the first control of your selected mixer
# For a list of the available, use `amixer -D $Your_Mixer scontrols`
if [[ -z "$SCONTROL" ]] ; then
SCONTROL="${BLOCK_INSTANCE:-$(amixer -D $MIXER scontrols |
sed -n "s/Simple mixer control '\([^']*\)',0/\1/p" |
head -n1
)}"
fi
# The first parameter sets the step to change the volume by (and units to display)
# This may be in in % or dB (eg. 5% or 3dB)
if [[ -z "$STEP" ]] ; then
STEP="${1:-5%}"
fi
#------------------------------------------------------------------------
capability() { # Return "Capture" if the device is a capture device
amixer -D $MIXER get $SCONTROL |
sed -n "s/ Capabilities:.*cvolume.*/Capture/p"
}
volume() {
amixer -D $MIXER get $SCONTROL $(capability)
}
format() {
perl_filter='if (/.*\[(\d+%)\] (\[(-?\d+.\d+dB)\] )?\[(on|off)\]/)'
perl_filter+='{CORE::say $4 eq "off" ? "MUTE" : "'
# If dB was selected, print that instead
perl_filter+=$([[ $STEP = *dB ]] && echo "$label "'$3' || echo "$label "'$1')
perl_filter+='"; exit}'
perl -ne "$perl_filter"
#tmp=$(perl -ne "$perl_filter")
#echo "$label $tmp"
}
#------------------------------------------------------------------------
case $BLOCK_BUTTON in
3) amixer -q -D $MIXER sset $SCONTROL $(capability) toggle ;; # right click, mute/unmute
4) amixer -q -D $MIXER sset $SCONTROL $(capability) ${STEP}+ unmute ;; # scroll up, increase
5) amixer -q -D $MIXER sset $SCONTROL $(capability) ${STEP}- unmute ;; # scroll down, decrease
esac
volume | format

@ -42,12 +42,19 @@ command=xset -q | grep Caps 2> /dev/null | cut -c23 | sed "s/n/CAPS/" | sed "s/f
signal=11 signal=11
color=#00FF00 color=#00FF00
#[nameservers] #[nameservers]
#interval=5 #interval=5
#command=~/.dotfiles/i3/blocks/nameservers domain.com #command=~/.dotfiles/i3/blocks/dns storedev.checkit.net a 185.181.126.141
#label=Example Nameservers #label=storedev.checkit.net
#separator=false
# #
#[siteStatis] #[anameserver]
#interval=5
#command=drill a example.com @ns.mainnameserver.com | sed -ne '/ANSWER SECTION/,/AUTHORITY SECTION/ p' | head -n -2 | tail -n +2 | awk '{ print $5" " }' | xargs echo
#[siteStatus]
#interval=5 #interval=5
#command=~/.dotfiles/i3/blocks/siteStatus https://www.domain.com "Something that should be found on a working request" #command=~/.dotfiles/i3/blocks/siteStatus https://www.domain.com "Something that should be found on a working request"
@ -85,13 +92,17 @@ separator=false
[vapourtecstatus] [vapourtecstatus]
command=~/.dotfiles/i3/blocks/serverStatus Vapourtec command=~/.dotfiles/i3/blocks/serverStatus Vapourtec
interval=30 interval=30
separator=false
[checkitstatus]
command=~/.dotfiles/i3/blocks/serverStatus Checkit
interval=30
[wanip] [wanip]
label=🌍 label=🌍
command=echo "<span foreground='#00FF00'> $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') </span>" command=echo "$label $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')"
interval=30 interval=30
markup=pango color=#00FF00
#colorI#=
# Date Time # Date Time

@ -76,6 +76,7 @@ markup=pango
[volume] [volume]
#label=VOL #label=VOL
label=🔊 label=🔊
command=~/.dotfiles/i3/blocks/volume
instance=Master instance=Master
#instance=PCM #instance=PCM
interval=once interval=once
@ -125,8 +126,11 @@ interval=10
separator=false separator=false
[bandwidth] [bandwidth]
command=/usr/lib/i3blocks/$BLOCK_NAME | sed "s/IN/↓/g" | sed "s/OUT/↑/g" command=~/.dotfiles/i3/blocks/bandwidth
#instance=eth0 #command=/usr/lib/i3blocks/$BLOCK_NAME | sed "s/IN/↓/g" | sed "s/OUT/↑/g"
#instance=eno1
#INLABEL=↓
#OUTLABEL=↑
interval=2 interval=2
# CPU usage # CPU usage
@ -136,6 +140,7 @@ interval=2
[cpu_usage] [cpu_usage]
label=CPU label=CPU
interval=10 interval=10
command=~/.dotfiles/i3/blocks/cpu
#min_width=CPU: 100.00% #min_width=CPU: 100.00%
#separator=false #separator=false

Loading…
Cancel
Save