diff --git a/.i3blocks/batterybar b/.i3blocks/batterybar new file mode 100755 index 0000000..9491b6f --- /dev/null +++ b/.i3blocks/batterybar @@ -0,0 +1,180 @@ +#!/usr/bin/env bash +# batterybar; displays battery percentage as a bar on i3blocks +# +# Copyright 2015 Keftaa +# +# 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 2 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, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# +readarray -t output <<< $(acpi battery) +battery_count=${#output[@]} + +for line in "${output[@]}"; +do + percentages+=($(echo "$line" | grep -o -m1 '[0-9]\{1,3\}%' | tr -d '%')) + statuses+=($(echo "$line" | egrep -o -m1 'Discharging|Charging|AC|Full|Unknown')) + remaining=$(echo "$line" | egrep -o -m1 '[0-9][0-9]:[0-9][0-9]') + if [[ -n $remaining ]]; then + remainings+=(" ($remaining)") + else + remainings+=("") + fi +done + +#There are 8 colors that reflect the current battery percentage when +#discharging +dis_colors=("#F2777A" "#F2777A" "#F99157" "#F99157" "#FFCC66" "#FFCC66" + "#99CC99" "#99CC99") +charging_color="#66CCCC" +full_color="#D3D0C8" +ac_color="#6699CC" + + +while getopts 1:2:3:4:5:6:7:8:c:f:a:h opt; do + case "$opt" in + 1) dis_colors[0]="$OPTARG";; + 2) dis_colors[1]="$OPTARG";; + 3) dis_colors[2]="$OPTARG";; + 4) dis_colors[3]="$OPTARG";; + 5) dis_colors[4]="$OPTARG";; + 6) dis_colors[5]="$OPTARG";; + 7) dis_colors[6]="$OPTARG";; + 8) dis_colors[7]="$OPTARG";; + c) charging_color="$OPTARG";; + f) full_color="$OPTARG";; + a) ac_color="$OPTARG";; + h) printf "Usage: batterybar [OPTION] color + When discharging, there are 8 [1-8] levels colors. + You can specify custom colors, for example: + + batterybar -1 red -2 \"#F6F6F6\" -8 green + + You can also specify the colors for the charging, AC and + charged states: + + batterybar -c green -f white -a \"#EEEEEE\"\n"; + exit 0; + esac +done + +end=$(($battery_count - 1)) +for i in $(seq 0 $end); +do +# if (( percentages[$i] > 0 && percentages[$i] < 20 )); then +# squares="■" +# elif (( percentages[$i] >= 20 && percentages[$i] < 40 )); then +# squares="■■" +# elif (( percentages[$i] >= 40 && percentages[$i] < 60 )); then +# squares="■■■" +# elif (( percentages[$i] >= 60 && percentages[$i] < 80 )); then +# squares="■■■■" +# elif (( percentages[$i] >=80 )); then +# squares="■■■■■" +# fi + percents[$i]=$(( percentages[$i] / 2 )) + (( percents > 48 )) && percents=48 + _full_squares=$(( percents[$i] /8 )) + for t in $(seq 1 $_full_squares) + do + squares+="█" + done + + if [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 7 ]] + then + squares+="▉" + #squares+="▇" + elif [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 6 ]] + then + squares+="▊" + #squares+="▆" + elif [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 5 ]] + then + squares+="▋" + #squares+="▅" + elif [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 4 ]] + then + squares+="▌" + #squares+="▄" + elif [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 3 ]] + then + squares+="▍" + #squares+="▃" + elif [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 2 ]] + then + squares+="▎" + #squares+="▂" + elif [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 1 ]] + then + squares+="▏" + #squares+="▁" + fi + + if [[ "${statuses[$i]}" = "Unknown" ]]; then + squares="?$squares" + fi + + case "${statuses[$i]}" in + "Charging") + color="$charging_color" + if (( percentages[$i] <= 10 )) + then echo 0 on > /proc/acpi/ibm/led + fi + ;; + "Full") + color="$full_color" + ;; + "AC") + color="$ac_color" + ;; + "Discharging"|"Unknown") + if (( percentages[$i] >= 0 && percentages[$i] < 10 )); then + color="${dis_colors[0]}" + echo 0 blink > /proc/acpi/ibm/led + elif (( percentages[$i] >= 10 && percentages[$i] < 20 )); then + color="${dis_colors[1]}" + elif (( percentages[$i] >= 20 && percentages[$i] < 30 )); then + color="${dis_colors[2]}" + elif (( percentages[$i] >= 30 && percentages[$i] < 40 )); then + color="${dis_colors[3]}" + elif (( percentages[$i] >= 40 && percentages[$i] < 60 )); then + color="${dis_colors[4]}" + elif (( percentages[$i] >= 60 && percentages[$i] < 70 )); then + color="${dis_colors[5]}" + elif (( percentages[$i] >= 70 && percentages[$i] < 80 )); then + color="${dis_colors[6]}" + elif (( percentages[$i] >= 80 )); then + color="${dis_colors[7]}" + fi + ;; + esac + + _blanks=$(( 6 - ${#squares} )) + for t in $(seq 1 $_blanks) + do + squares+=" " + done + # Print Battery number if there is more than one + if (( $end > 0 )) ; then + message="$message$(($i + 1)): " + fi + + if [[ "$BLOCK_BUTTON" -eq 1 ]]; then + message="$message${statuses[$i]} ${percentages[$i]}%${remainings[i]} " + fi + message="$message$squares" +done + +echo "$message" diff --git a/.i3blocks/internet b/.i3blocks/internet new file mode 100755 index 0000000..a551b26 --- /dev/null +++ b/.i3blocks/internet @@ -0,0 +1,31 @@ +#!/bin/bash + +color="" + +if ! nmcli dev | grep " connecté" &>/dev/null +then + color="#515151" + if [ ! -f /dev/shm/claws_offline ] + then + claws-mail --offline + touch /dev/shm/claws_offline + fi +elif ping -c 1 93.184.216.34 -W 1 &>/dev/null +then + color="#99CC99" + if [ -f /dev/shm/claws_offline ] + then + claws-mail --online + rm /dev/shm/claws_offline + fi +else + color="#F2777A" + if [ ! -f /dev/shm/claws_offline ] + then + claws-mail --offline + touch /dev/shm/claws_offline + color="#FFCC66" + fi +fi + +echo "" diff --git a/.i3blocks/openvpn b/.i3blocks/openvpn deleted file mode 100755 index 02aaba4..0000000 --- a/.i3blocks/openvpn +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/perl -# Made by Pierre Mavro/Deimosfr -# Licensed under the terms of the GNU GPL v3, or any later version. -# Version: 0.2 - -# Usage: -# 1. The configuration name of OpenVPN should be familiar for you (home,work...) -# 2. The device name in your configuration file should be fully named (tun0,tap1...not only tun or tap) -# 3. When you launch one or multiple OpenVPN connexion, be sure the PID file is written in the correct folder (ex: --writepid /run/openvpn/home.pid) - -use strict; -use warnings; -use utf8; -use Getopt::Long; - -my $openvpn_enabled='/dev/shm/openvpn_i3blocks_enabled'; -my $openvpn_disabled='/dev/shm/openvpn_i3blocks_disabled'; - -# Print output -sub print_output { - my $ref_pid_files = shift; - my @pid_files = @$ref_pid_files; - my $change=0; - - # Total pid files - my $total_pid = @pid_files; - if ($total_pid == 0) { - print "VPN: down\n"x2; - # Delete OpenVPN i3blocks temp files - if (-f $openvpn_enabled) { - unlink $openvpn_enabled or die "Can't delete $openvpn_enabled\n"; - # Colorize if VPN has just went down - print '#FF0000\n'; - } - unless (-f $openvpn_disabled) { - open(my $shm, '>', $openvpn_disabled) or die "Can't write $openvpn_disabled\n"; - } - exit(0); - } - - # Check if interface device is present - my $vpn_found=0; - my $pid; - my $cmd_line; - my @config_name; - my @config_path; - my $interface; - my $current_config_path; - my $current_config_name; - foreach (@pid_files) { - # Get current PID - $pid=0; - open(PID, '<', $_); - while() { - chomp $_; - $pid = $_; - } - close(PID); - # Check if PID has been found - if ($pid ==0) { - print "Can't get PID $_: $!\n"; - } - - # Check if PID is still alive - $cmd_line='/proc/'.$pid.'/cmdline'; - if (-f $cmd_line) { - # Get config name - open(CMD_LINE, '<', $cmd_line); - while() { - chomp $_; - if ($_ =~ /--config\s*(.*\.conf)/) { - # Get interface from config file - $current_config_path = $1; - # Remove unwanted escape chars - $current_config_path =~ s/\x{00}//g; - $interface = 'null'; - # Get configuration name - if ($current_config_path =~ /(\w+).conf/) { - $current_config_name=$1; - } else { - $current_config_name='unknow'; - } - # Get OpenVPN interface device name - open(CONFIG, '<', $current_config_path) or die "Can't read config file '$current_config_path': $!\n"; - while() { - chomp $_; - if ($_ =~ /dev\s+(\w+)/) { - $interface=$1; - last; - } - } - close(CONFIG); - # check if interface exist - unless ($interface eq 'null') { - if (-d "/sys/class/net/$interface") { - push @config_name, $current_config_name; - $vpn_found=1; - # Write enabled file - unless (-f $openvpn_enabled) { - open(my $shm, '>', $openvpn_enabled) or die "Can't write $openvpn_enabled\n"; - $change=1; - } - } - } - } - } - close(CMD_LINE); - } - } - - # Check if PID found - my $names; - my $short_status; - if ($vpn_found == 1) { - $names = join('/', @config_name); - $short_status='up'; - } else { - $short_status='down'; - $names = $short_status; - } - - print "VPN: $names\n"; - print "VPN: $short_status\n"; - - # Print color if there were changes - print "#00FF00\n" if ($change == 1); - - exit(0); -} - -sub check_opts { - # Vars - my @pid_file=glob '/run/openvpn/*.pid'; - - # Set options - GetOptions( "help|h" => \&help, - "p=s" => \@pid_file); - - print_output(\@pid_file); -} - -sub help { - print "Usage: openvpn [-d pid folder files]\n"; - print "-d : pid folder files (default /run/openvpn/*.pid)\n"; - print "Note: devices in configuration file should be named with their number (ex: tun0, tap1)\n"; - exit(1); -} - -&check_opts;