Browse Source
Copied i3blocks scripts from orig dir
Copied i3blocks scripts from orig dir
Some were modified from original but can't be bothered to check which. 'backlight' is custom. Changed both PC/laptop i3blocks config to reference new i3blocks-scripts location. system: Fixed keyboard repeat rate for PC/laptop. Git: Added amending commit and forcing push aliases. i3: Changed '$mod+F[1-3]' mappings to just 'F[1-3]'.red-hat-laptop
Kevin Mok
7 years ago
18 changed files with 488 additions and 27 deletions
-
1.gitignore
-
7aliases/zsh_aliases
-
3configs/NZXT/i3blocks/i3blocks.conf
-
13configs/X1-Carbon/i3/config
-
44configs/X1-Carbon/i3blocks/i3blocks.conf
-
9configs/i3blocks-scripts/backlight
-
76configs/i3blocks-scripts/battery
-
55configs/i3blocks-scripts/cpu_usage
-
34configs/i3blocks-scripts/load_average
-
49configs/i3blocks-scripts/memory
-
1configs/i3blocks-scripts/name
-
15configs/i3blocks-scripts/spotify.py
-
69configs/i3blocks-scripts/temperature
-
70configs/i3blocks-scripts/volume
-
46configs/i3blocks-scripts/wifi
-
2dotfiles/Xresources
-
8dotfiles/vimrc
-
7dotfiles/zshrc
@ -0,0 +1,9 @@ |
|||
#!/bin/sh |
|||
# https://askubuntu.com/a/179949/794515 |
|||
round() |
|||
{ |
|||
echo $(printf %.$2f $(echo "scale=$2;(((10^$2)*$1)+0.5)/(10^$2)" | bc)) |
|||
}; |
|||
|
|||
cur_bl=$(xbacklight -get) |
|||
echo "$(round "$cur_bl" 0)%" |
@ -0,0 +1,76 @@ |
|||
#!/usr/bin/perl |
|||
# |
|||
# Copyright 2014 Pierre Mavro <deimos@deimos.fr> |
|||
# Copyright 2014 Vivien Didelot <vivien@didelot.org> |
|||
# |
|||
# Licensed under the terms of the GNU GPL v3, or any later version. |
|||
# |
|||
# This script is meant to use with i3blocks. It parses the output of the "acpi" |
|||
# command (often provided by a package of the same name) to read the status of |
|||
# the battery, and eventually its remaining time (to full charge or discharge). |
|||
# |
|||
# The color will gradually change for a percentage below 85%, and the urgency |
|||
# (exit code 33) is set if there is less that 5% remaining. |
|||
|
|||
use strict; |
|||
use warnings; |
|||
use utf8; |
|||
|
|||
my $acpi; |
|||
my $status; |
|||
my $percent; |
|||
my $full_text; |
|||
my $short_text; |
|||
my $bat_number = $ENV{BLOCK_INSTANCE} || 0; |
|||
|
|||
# read the first line of the "acpi" command output |
|||
open (ACPI, "acpi -b | grep 'Battery $bat_number' |") or die; |
|||
$acpi = <ACPI>; |
|||
close(ACPI); |
|||
|
|||
# fail on unexpected output |
|||
if ($acpi !~ /: (\w+), (\d+)%/) { |
|||
die "$acpi\n"; |
|||
} |
|||
|
|||
$status = $1; |
|||
$percent = $2; |
|||
$full_text = "$percent%"; |
|||
|
|||
if ($status eq 'Discharging') { |
|||
$full_text .= ' DIS'; |
|||
} elsif ($status eq 'Charging') { |
|||
$full_text .= ' CHR'; |
|||
} |
|||
|
|||
$short_text = $full_text; |
|||
|
|||
if ($acpi =~ /(\d\d:\d\d):/) { |
|||
$full_text .= " ($1)"; |
|||
} |
|||
|
|||
# print text |
|||
print "$full_text\n"; |
|||
print "$short_text\n"; |
|||
|
|||
# consider color and urgent flag only on discharge |
|||
if ($status eq 'Discharging') { |
|||
|
|||
if ($percent < 20) { |
|||
print "#FF0000\n"; |
|||
} elsif ($percent < 40) { |
|||
print "#FFAE00\n"; |
|||
} elsif ($percent < 60) { |
|||
print "#FFF600\n"; |
|||
} elsif ($percent < 85) { |
|||
print "#A8FF00\n"; |
|||
} |
|||
|
|||
if ($percent < 5) { |
|||
exit(33); |
|||
} |
|||
} else { |
|||
print "#2c9332\n"; |
|||
} |
|||
|
|||
exit(0); |
@ -0,0 +1,55 @@ |
|||
#!/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 = 50; |
|||
my $t_crit = 80; |
|||
my $cpu_usage = -1; |
|||
|
|||
sub help { |
|||
print "Usage: cpu_usage [-w <warning>] [-c <critical>]\n"; |
|||
print "-w <percent>: warning threshold to become yellow\n"; |
|||
print "-c <percent>: critical threshold to become red\n"; |
|||
exit 0; |
|||
} |
|||
|
|||
GetOptions("help|h" => \&help, |
|||
"w=i" => \$t_warn, |
|||
"c=i" => \$t_crit); |
|||
|
|||
# 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+$/) { |
|||
$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 "%.2f%%\n", $cpu_usage; |
|||
printf "%.2f%%\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; |
@ -0,0 +1,34 @@ |
|||
#!/bin/sh |
|||
# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info> |
|||
|
|||
# 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/>. |
|||
|
|||
load="$(cut -d ' ' -f1 /proc/loadavg)" |
|||
cpus="$(nproc)" |
|||
|
|||
# full text |
|||
echo "$load" |
|||
|
|||
# short text |
|||
echo "$load" |
|||
|
|||
# color if load is too high |
|||
awk -v cpus=$cpus -v cpuload=$load ' |
|||
BEGIN { |
|||
if (cpus <= cpuload) { |
|||
print "#FF0000"; |
|||
exit 33; |
|||
} |
|||
} |
|||
' |
@ -0,0 +1,49 @@ |
|||
#!/bin/sh |
|||
# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info> |
|||
|
|||
# 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/>. |
|||
|
|||
TYPE="${BLOCK_INSTANCE:-mem}" |
|||
|
|||
awk -v type=$TYPE ' |
|||
/^MemTotal:/ { |
|||
mem_total=$2 |
|||
} |
|||
/^MemFree:/ { |
|||
mem_free=$2 |
|||
} |
|||
/^Buffers:/ { |
|||
mem_free+=$2 |
|||
} |
|||
/^Cached:/ { |
|||
mem_free+=$2 |
|||
} |
|||
/^SwapTotal:/ { |
|||
swap_total=$2 |
|||
} |
|||
/^SwapFree:/ { |
|||
swap_free=$2 |
|||
} |
|||
END { |
|||
# full text |
|||
if (type == "swap") |
|||
printf("%.1fG\n", (swap_total-swap_free)/1024/1024) |
|||
else |
|||
printf("%.1fG\n", mem_free/1024/1024) |
|||
|
|||
# TODO: short text |
|||
|
|||
# TODO: color (if less than X%) |
|||
} |
|||
' /proc/meminfo |
@ -0,0 +1 @@ |
|||
echo "Kevin 🚀" |
@ -0,0 +1,15 @@ |
|||
#!/usr/bin/python |
|||
|
|||
import dbus |
|||
try: |
|||
bus = dbus.SessionBus() |
|||
spotify = bus.get_object("org.mpris.MediaPlayer2.spotify", "/org/mpris/MediaPlayer2") |
|||
spotify_iface = dbus.Interface(spotify, 'org.freedesktop.DBus.Properties') |
|||
props = spotify_iface.Get('org.mpris.MediaPlayer2.Player', 'Metadata') |
|||
print(str(props['xesam:artist'][0]) + " - " + str(props['xesam:title'])) |
|||
exit |
|||
except dbus.exceptions.DBusException: |
|||
exit |
|||
|
|||
|
|||
|
@ -0,0 +1,69 @@ |
|||
#!/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> |
|||
# Copyright 2014 Benjamin Chretien <chretien at lirmm dot fr> |
|||
|
|||
# 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/>. |
|||
|
|||
use strict; |
|||
use warnings; |
|||
use utf8; |
|||
use Getopt::Long; |
|||
|
|||
binmode(STDOUT, ":utf8"); |
|||
|
|||
# default values |
|||
my $t_warn = 70; |
|||
my $t_crit = 90; |
|||
my $chip = ""; |
|||
my $temperature = -9999; |
|||
|
|||
sub help { |
|||
print "Usage: temperature [-w <warning>] [-c <critical>] [--chip <chip>]\n"; |
|||
print "-w <percent>: warning threshold to become yellow\n"; |
|||
print "-c <percent>: critical threshold to become red\n"; |
|||
print "--chip <chip>: sensor chip\n"; |
|||
exit 0; |
|||
} |
|||
|
|||
GetOptions("help|h" => \&help, |
|||
"w=i" => \$t_warn, |
|||
"c=i" => \$t_crit, |
|||
"chip=s" => \$chip); |
|||
|
|||
# Get chip temperature |
|||
open (SENSORS, "sensors -u $chip |") or die; |
|||
while (<SENSORS>) { |
|||
if (/^\s+temp1_input:\s+[\+]*([\-]*\d+\.\d)/) { |
|||
$temperature = $1; |
|||
last; |
|||
} |
|||
} |
|||
close(SENSORS); |
|||
|
|||
$temperature eq -9999 and die 'Cannot find temperature'; |
|||
|
|||
# Print short_text, full_text |
|||
print "$temperature°C\n" x2; |
|||
|
|||
# Print color, if needed |
|||
if ($temperature >= $t_crit) { |
|||
print "#FF0000\n"; |
|||
exit 33; |
|||
} elsif ($temperature >= $t_warn) { |
|||
print "#FFFC00\n"; |
|||
} |
|||
|
|||
exit 0; |
@ -0,0 +1,70 @@ |
|||
#!/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, 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 |
|||
MIXER="default" |
|||
[ -n "$(lsmod | grep pulse)" ] && MIXER="pulse" |
|||
[ -n "$(lsmod | grep jack)" ] && MIXER="jackplug" |
|||
MIXER="${2:-$MIXER}" |
|||
|
|||
# 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` |
|||
SCONTROL="${BLOCK_INSTANCE:-$(amixer -D $MIXER scontrols | |
|||
sed -n "s/Simple mixer control '\([A-Za-z ]*\)',0/\1/p" | |
|||
head -n1 |
|||
)}" |
|||
|
|||
# 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) |
|||
STEP="${1:-5%}" |
|||
|
|||
#------------------------------------------------------------------------ |
|||
|
|||
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 '$3' || echo '$1') |
|||
perl_filter+='"; exit}' |
|||
perl -ne "$perl_filter" |
|||
} |
|||
|
|||
#------------------------------------------------------------------------ |
|||
|
|||
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 |
@ -0,0 +1,46 @@ |
|||
#!/bin/bash |
|||
# 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/>. |
|||
|
|||
#------------------------------------------------------------------------ |
|||
|
|||
INTERFACE="${BLOCK_INSTANCE:-wlan0}" |
|||
|
|||
#------------------------------------------------------------------------ |
|||
|
|||
# As per #36 -- It is transparent: e.g. if the machine has no battery or wireless |
|||
# connection (think desktop), the corresponding block should not be displayed. |
|||
[[ ! -d /sys/class/net/${INTERFACE}/wireless ]] || |
|||
[[ "$(cat /sys/class/net/$INTERFACE/operstate)" = 'down' ]] && exit |
|||
|
|||
#------------------------------------------------------------------------ |
|||
|
|||
QUALITY=$(grep $INTERFACE /proc/net/wireless | awk '{ print int($3 * 100 / 70) }') |
|||
|
|||
#------------------------------------------------------------------------ |
|||
|
|||
echo $QUALITY% # full text |
|||
echo $QUALITY% # short text |
|||
|
|||
# color |
|||
if [[ $QUALITY -ge 80 ]]; then |
|||
echo "#00FF00" |
|||
elif [[ $QUALITY -lt 80 ]]; then |
|||
echo "#FFF600" |
|||
elif [[ $QUALITY -lt 60 ]]; then |
|||
echo "#FFAE00" |
|||
elif [[ $QUALITY -lt 40 ]]; then |
|||
echo "#FF0000" |
|||
fi |
Write
Preview
Loading…
Cancel
Save
Reference in new issue