mirror of
				https://github.com/frebib/dotfiles.git
				synced 2024-06-14 12:57:23 +00:00 
			
		
		
		
	polybar: replace i3 bar with polybar
This commit is contained in:
		| @@ -1,90 +0,0 @@ | ||||
| #!/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/>. | ||||
|  | ||||
| # Use the provided interface, otherwise the device used for the default route. | ||||
| if [[ -n $BLOCK_INSTANCE ]]; then | ||||
|   INTERFACE=$BLOCK_INSTANCE | ||||
| else | ||||
|   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 " " | ||||
| rx_kib=$(( $rx_rate >> 10 )) | ||||
| if [[ "$rx_rate" -gt 1048576 ]]; then | ||||
|   printf '%sk' "`echo "scale=1; $rx_kib / 1024" | bc`" | ||||
| else | ||||
|   echo -n "${rx_kib}k" | ||||
| fi | ||||
|  | ||||
| echo -n " " | ||||
|  | ||||
| # outgoing | ||||
| echo -n " " | ||||
| tx_kib=$(( $tx_rate >> 10 )) | ||||
| if [[ "$tx_rate" -gt 1048576 ]]; then | ||||
|   printf '%sm' "`echo "scale=1; $tx_kib / 1024" | bc`" | ||||
| else | ||||
|   echo -n "${tx_kib}k" | ||||
| fi | ||||
| @@ -1,97 +0,0 @@ | ||||
| #!/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 Switch; | ||||
|  | ||||
| my $acpi; | ||||
| my $status; | ||||
| my $percent; | ||||
| my $hours = -1; | ||||
| my $mins; | ||||
| 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; | ||||
|  | ||||
| if ($acpi =~ /, (\d+):(\d+)/) { | ||||
|     $hours = $1; | ||||
|     $mins = $2; | ||||
| } | ||||
|  | ||||
| if ($status eq 'Discharging') { | ||||
|     if ($percent <= 10) { | ||||
| 		$full_text = ""; | ||||
| 	} elsif ($percent <= 40) { | ||||
| 		$full_text = ""; | ||||
| 	} elsif ($percent <= 75) { | ||||
| 		$full_text = ""; | ||||
| 	} else { | ||||
| 		$full_text = ""; | ||||
| 	} | ||||
|  | ||||
| } elsif ($status eq 'Charging') { | ||||
| 	$full_text = ''; | ||||
| } else { | ||||
| 	$full_text = ''; | ||||
| } | ||||
|  | ||||
| $full_text .= " $percent%"; | ||||
| $short_text = $full_text; | ||||
|  | ||||
| switch($ENV{BLOCK_BUTTON} || 0) { | ||||
|     case "1" { | ||||
|         if ($hours lt 0) { | ||||
|             $full_text .= " Charged"; | ||||
|         } else { | ||||
|             $full_text .= " ($hours:$mins"; | ||||
|             if ($status eq 'Discharging') { | ||||
|                 $full_text .= ")"; | ||||
|             } else { | ||||
|                 $full_text .= " until full)"; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     case "4" { system("light -U -l 1") } | ||||
|     case "5" { system("light -A -l 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 "#FFCB00\n"; | ||||
| 	}  | ||||
| } | ||||
|  | ||||
| exit(0); | ||||
| @@ -1,5 +0,0 @@ | ||||
| case $BLOCK_BUTTON in | ||||
|     1) printf " "$(date '+%d/%m/%y') ; exit ;; | ||||
|     2|3) i3-sensible-terminal -r i3blocks-clock-term --geometry 68x35 -e "$SHELL -c \"cal -y $(date +'%Y');$SHELL\"" &>/dev/null & ;; | ||||
|     *) printf " "$(date '+%H:%M') | ||||
| esac | ||||
| @@ -1,68 +0,0 @@ | ||||
| # i3blocks config file | ||||
| # | ||||
| # Please see man i3blocks for a complete reference! | ||||
| # The man page is also hosted at http://vivien.github.io/i3blocks | ||||
| # | ||||
| # List of valid properties: | ||||
| # | ||||
| # align | ||||
| # color | ||||
| # command | ||||
| # full_text | ||||
| # instance | ||||
| # interval | ||||
| # label | ||||
| # min_width | ||||
| # name | ||||
| # separator | ||||
| # separator_block_width | ||||
| # short_text | ||||
| # signal | ||||
| # urgent | ||||
|  | ||||
| # Global properties | ||||
| # | ||||
| # The top properties below are applied to every block, but can be overridden. | ||||
| # Each block command defaults to the script name to avoid boilerplate. | ||||
| command=~/.config/i3/blocks/$BLOCK_NAME | ||||
| markup=none | ||||
|  | ||||
| #full_text= | ||||
| align=center | ||||
| color=#F3F4F5 | ||||
| separator=false | ||||
| separator_block_width=14 | ||||
|  | ||||
| [volume] | ||||
| interval=persist | ||||
| signal=10 | ||||
|  | ||||
| [iface] | ||||
| label= | ||||
| interval=60 | ||||
| signal=15 | ||||
|  | ||||
| [updates] | ||||
| label= | ||||
| interval=600 | ||||
| signal=5 | ||||
|  | ||||
| [cpu_usage] | ||||
| label= | ||||
| interval=persist | ||||
|  | ||||
| [memory] | ||||
| label= | ||||
| interval=10 | ||||
|  | ||||
| [temperature] | ||||
| label= | ||||
| interval=5 | ||||
|  | ||||
| [keyboard] | ||||
| label= | ||||
| interval=30 | ||||
|  | ||||
| [clock] | ||||
| interval=5 | ||||
| min_width=" 00:00" | ||||
| @@ -1,31 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # by Paul Colby (http://colby.id.au), no rights reserved ;) | ||||
| # https://github.com/Leo-G/DevopsWiki/wiki/How-Linux-CPU-Usage-Time-and-Percentage-is-calculated | ||||
|  | ||||
| PREV_TOTAL=0 | ||||
| PREV_IDLE=0 | ||||
|  | ||||
| while true; do | ||||
|     # Get the total CPU statistics, discarding the 'cpu ' prefix. | ||||
|     CPU=(`sed -n 's/^cpu\s//p' /proc/stat`) | ||||
|     IDLE=${CPU[3]} # Just the idle CPU time. | ||||
|  | ||||
|     # Calculate the total CPU time. | ||||
|     TOTAL=0 | ||||
|     for VALUE in "${CPU[@]}"; do | ||||
|         let "TOTAL=$TOTAL+$VALUE" | ||||
|     done | ||||
|  | ||||
|     # Calculate the CPU usage since we last checked. | ||||
|     let "DIFF_IDLE=$IDLE-$PREV_IDLE" | ||||
|     let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL" | ||||
|     let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10" | ||||
|     echo -e "$DIFF_USAGE%\n$DIFF_USAGE%" | ||||
|  | ||||
|     # Remember the total and idle CPU times for the next check. | ||||
|     PREV_TOTAL="$TOTAL" | ||||
|     PREV_IDLE="$IDLE" | ||||
|  | ||||
|     # Wait before checking again. | ||||
|     sleep 1 | ||||
| done | ||||
| @@ -1,41 +0,0 @@ | ||||
| #!/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/>. | ||||
|  | ||||
| DIR="${BLOCK_INSTANCE:-$HOME}" | ||||
| ALERT_LOW="${1:-10}" # color will turn red under this value (default: 10%) | ||||
|  | ||||
| df -h -P -l "$DIR" | awk -v alert_low=$ALERT_LOW ' | ||||
| /\/.*/ { | ||||
| 	# full text | ||||
| 	print $4 | ||||
|  | ||||
| 	# short text | ||||
| 	print $4 | ||||
|  | ||||
| 	use=$5 | ||||
|  | ||||
| 	# no need to continue parsing | ||||
| 	exit 0 | ||||
| } | ||||
|  | ||||
| END { | ||||
| 	gsub(/%$/,"",use) | ||||
| 	if (100 - use < alert_low) { | ||||
| 		# color | ||||
| 		print "#FF0000" | ||||
| 	} | ||||
| } | ||||
| ' | ||||
| @@ -1,62 +0,0 @@ | ||||
| #!/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/>. | ||||
|  | ||||
| #------------------------------------------------------------------------ | ||||
|  | ||||
| # Use the provided interface, otherwise the device used for the default route. | ||||
| if [[ -n $BLOCK_INSTANCE ]]; then | ||||
|     IF=$BLOCK_INSTANCE | ||||
| else | ||||
|     IF=$(ip route | awk '/^default/ { print $5 ; exit }') | ||||
| fi | ||||
|  | ||||
| #------------------------------------------------------------------------ | ||||
|  | ||||
| # 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/${IF} ]] && exit | ||||
|  | ||||
| #------------------------------------------------------------------------ | ||||
|  | ||||
| if [[ -z $IF ]] || [[ "$(cat /sys/class/net/$IF/operstate)" = 'down' ]]; then | ||||
|     echo down # full text | ||||
|     echo down # short text | ||||
|     echo \#FF0000 # color | ||||
|     exit | ||||
| fi | ||||
|  | ||||
| case $1 in | ||||
|     -4) AF=inet ;; | ||||
|     -6) AF=inet6 ;; | ||||
|     *) AF=inet6? ;; | ||||
| esac | ||||
|  | ||||
| # if no interface is found, use the first device with a global scope | ||||
| LOCIP=$(ip addr show $IF | perl -n -e "/$AF ([^\/]+).* scope global/ && print \$1 and exit") | ||||
|  | ||||
| #------------------------------------------------------------------------ | ||||
|  | ||||
| case $BLOCK_BUTTON in | ||||
|     1)  curl -s https://api.ipify.org; | ||||
|         break;; | ||||
|     2)  curl -s https://api.ipify.org | tee >(xclip -i); | ||||
|         break;; | ||||
|     0|3)  echo "$LOCIP" | tee >(xclip -i); | ||||
|         break;; | ||||
|     *)  echo "$LOCIP" | ||||
|         break;; | ||||
| esac | ||||
| @@ -1,10 +0,0 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| [[ $BLOCK_BUTTON -eq 1 ]] && `$DOTFILES/scripts/togglekeyboard` | ||||
|  | ||||
| layout=$(setxkbmap -query | grep 'layout:' | awk '{print $2}') | ||||
| variant=$(setxkbmap -query | grep 'variant:' | awk '{print $2}') | ||||
|  | ||||
| short=`([ "$variant" ] && echo $variant || echo $layout) | cut -c1-2` | ||||
|  | ||||
| echo -e "$short\n$short" | awk '{print toupper($0)}' | ||||
| @@ -1,70 +0,0 @@ | ||||
| #!/usr/bin/perl | ||||
| # | ||||
| # Copyright 2014 Marcelo Cerri <mhcerri at gmail dot 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/>. | ||||
|  | ||||
| use strict; | ||||
| use warnings; | ||||
| use utf8; | ||||
| use Getopt::Long; | ||||
| use File::Basename; | ||||
|  | ||||
| # Default values | ||||
| my $indicator = $ENV{BLOCK_INSTANCE} || "CAPS"; | ||||
| my $color_on  = "#00FF00"; | ||||
| my $color_off = "#222222"; | ||||
|  | ||||
| sub help { | ||||
|     my $program = basename($0); | ||||
|     printf "Usage: %s [-c <color on>] [-C <color off>]\n", $program; | ||||
|     printf "  -c <color on>: hex color to use when indicator is on\n"; | ||||
|     printf "  -C <color off>: hex color to use when indicator is off\n"; | ||||
|     printf "\n"; | ||||
|     printf "Note: environment variable \$BLOCK_INSTANCE should be one of:\n"; | ||||
|     printf "  CAPS, NUM (default is CAPS).\n"; | ||||
|     exit 0; | ||||
| } | ||||
|  | ||||
| Getopt::Long::config qw(no_ignore_case); | ||||
| GetOptions("help|h" => \&help, | ||||
|            "c=s"    => \$color_on, | ||||
|            "C=s"    => \$color_off) or exit 1; | ||||
|  | ||||
| # Key mapping | ||||
| my %indicators = ( | ||||
|     CAPS => 0x00000001, | ||||
|     NUM  => 0x00000002, | ||||
| ); | ||||
|  | ||||
| # Retrieve key flags | ||||
| my $mask = 0; | ||||
| open(XSET, "xset -q |") or die; | ||||
| while (<XSET>) { | ||||
|     if (/LED mask:\s*([0-9]+)/) { | ||||
|         $mask = $1; | ||||
|         last; | ||||
|     } | ||||
| } | ||||
| close(XSET); | ||||
|  | ||||
| # Output | ||||
| printf "%s\n", $indicator; | ||||
| printf "%s\n", $indicator; | ||||
| if (($indicators{$indicator} || 0) & $mask) { | ||||
|     printf "%s\n", $color_on; | ||||
| } else { | ||||
|     printf "%s\n", $color_off; | ||||
| } | ||||
| exit 0 | ||||
| @@ -1,34 +0,0 @@ | ||||
| #!/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; | ||||
|         } | ||||
|     } | ||||
| ' | ||||
| @@ -1,76 +0,0 @@ | ||||
| #!/usr/bin/perl | ||||
| # Copyright (C) 2014 Tony Crisci <tony@dubstepdish.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/>. | ||||
|  | ||||
| # Requires playerctl binary to be in your path (except cmus) | ||||
| # See: https://github.com/acrisci/playerctl | ||||
|  | ||||
| # Set instance=NAME in the i3blocks configuration to specify a music player | ||||
| # (playerctl will attempt to connect to org.mpris.MediaPlayer2.[NAME] on your | ||||
| # DBus session). | ||||
|  | ||||
| use Env qw(BLOCK_INSTANCE); | ||||
|  | ||||
| my @metadata = (); | ||||
| my $player_arg = ""; | ||||
|  | ||||
| if ($BLOCK_INSTANCE) { | ||||
|     $player_arg = "--player='$BLOCK_INSTANCE'"; | ||||
| } | ||||
|  | ||||
| if ($ENV{'BLOCK_BUTTON'} == 1) { | ||||
|     system("playerctl $player_arg previous"); | ||||
| } elsif ($ENV{'BLOCK_BUTTON'} == 2) { | ||||
|     system("playerctl $player_arg play-pause"); | ||||
| } elsif ($ENV{'BLOCK_BUTTON'} == 3) { | ||||
|     system("playerctl $player_arg next"); | ||||
| } | ||||
|  | ||||
| if ($player_arg eq '' or $player_arg =~ /cmus$/) { | ||||
|     # try cmus first | ||||
|     my @cmus = split /^/, qx(cmus-remote -Q); | ||||
|     if ($? == 0) { | ||||
|         foreach my $line (@cmus) { | ||||
|             my @data = split /\s/, $line; | ||||
|             if (shift @data eq 'tag') { | ||||
|                 my $key = shift @data; | ||||
|                 my $value = join ' ', @data; | ||||
|  | ||||
|                 @metadata[0] = $value if $key eq 'artist'; | ||||
|                 @metadata[1] = $value if $key eq 'title'; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if (@metadata) { | ||||
|             # metadata found so we are done | ||||
|             print(join ' - ', @metadata); | ||||
|             exit 0; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     # if cmus was given, we are done | ||||
|     exit 0 unless $player_arg eq ''; | ||||
| } | ||||
|  | ||||
| my $artist = qx(playerctl $player_arg metadata artist); | ||||
| # exit status will be nonzero when playerctl cannot find your player | ||||
| exit(0) if $?; | ||||
| push(@metadata, $artist) if $artist; | ||||
|  | ||||
| my $title = qx(playerctl $player_arg metadata title); | ||||
| exit(0) if $?; | ||||
| push(@metadata, $title) if $title; | ||||
|  | ||||
| print(join(" - ", @metadata)) if @metadata; | ||||
| @@ -1,65 +0,0 @@ | ||||
| #!/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}" | ||||
|  | ||||
| if [ ${BLOCK_BUTTON--1} -gt 0 ]; then | ||||
|     i3-sensible-terminal -r floating-term --geometry 100x54 -e 'top -d 0.1' | ||||
| fi | ||||
|  | ||||
| awk -v type=$TYPE ' | ||||
| BEGIN { | ||||
|     swap_total=1 | ||||
|     mem_total=1 | ||||
| } | ||||
| /^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 { | ||||
| 	if (type == "swap") { | ||||
|         swap_perc = (swap_total - swap_free) / swap_total * 100 | ||||
| 		printf("%.0f%\n", swap_perc) | ||||
| 		printf("%.0f%\n", swap_perc)	 | ||||
| 		perc = swap_perc | ||||
| 	} | ||||
| 	else{ | ||||
|         mem_perc  = (mem_total - mem_free) / mem_total * 100 | ||||
| 		printf("%.0f%\n", mem_perc) | ||||
| 		printf("%.0f%\n", mem_perc) | ||||
| 	    perc = mem_perc | ||||
| 	} | ||||
|  | ||||
|     if (perc > 80) | ||||
|         print "#FFCB00" | ||||
|     else if (perc > 60) | ||||
|         print "#FFCB00" | ||||
| } | ||||
| ' /proc/meminfo | ||||
| @@ -1,149 +0,0 @@ | ||||
| #!/usr/bin/perl | ||||
| # Made by Pierre Mavro/Deimosfr <deimos@deimos.fr> | ||||
| # 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(<PID>) { | ||||
|             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(<CMD_LINE>) { | ||||
|                 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(<CONFIG>) { | ||||
|                         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; | ||||
| @@ -1,69 +0,0 @@ | ||||
| #!/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 = "coretemp-isa-0000"; | ||||
| 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 int($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; | ||||
| @@ -1,27 +0,0 @@ | ||||
| #!/bin/bash | ||||
|   | ||||
| CARDS=$(pacmd list-cards | grep -e index: -e alsa.card_name  | xargs -n5 | awk '{print $2}') | ||||
|  | ||||
| if [[ ${#CARDS} != 3 ]];  # there is a space  | ||||
| then | ||||
|     echo "This script works only with 2 outputs, and you have ..." | ||||
|     pacmd list-cards | grep -e index: -e alsa.card_name  | xargs -n5  | ||||
|     exit | ||||
| fi | ||||
|   | ||||
| i=1 | ||||
| for card_index in $CARDS ;  | ||||
| do  | ||||
|     eval CARD$i=$card_index  | ||||
|     let i+=1 | ||||
|          | ||||
| done | ||||
|   | ||||
| LAST_SINK_LINE=$(pacmd list-sink-inputs | grep -e index: -e sink: | xargs -n5 | tail -n1) | ||||
| last_sink_app_index=$( echo $LAST_SINK_LINE | awk '{print $2}' ) | ||||
| last_sink_out_index=$( echo $LAST_SINK_LINE | awk '{print $4}' ) | ||||
| [[ ${last_sink_out_index} == ${CARD1} ]] && new_sink_out=$CARD2 || new_sink_out=$CARD1 | ||||
|   | ||||
| #echo "$last_sink_app_index > $last_sink_out_index > ${new_sink_out}" | ||||
|   | ||||
| pacmd move-sink-input ${last_sink_app_index} ${new_sink_out} | ||||
| @@ -1,31 +0,0 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
|  | ||||
| for p in trizen pacaur yaourt pacman; do | ||||
|     if $p --version &>/dev/null; then | ||||
|         PAC="$p" | ||||
|         break; | ||||
|     fi | ||||
| done | ||||
|  | ||||
| if [ -z "$PAC" ]; then | ||||
|     >&2 echo "Error: No Arch package manager found?" | ||||
| fi | ||||
|  | ||||
| if [ "$BLOCK_BUTTON" == 1 ]; then | ||||
|     nohup i3-sensible-terminal -r i3blocks-update-term -e "sh -c '$PAC -Syu || exec zsh; pkill -RTMIN+5 i3blocks'" &>/dev/null & | ||||
|     disown | ||||
| fi | ||||
|  | ||||
| if [ $p = "pacman" ]; then | ||||
|     exec 3< <(checkupdates) | ||||
| else | ||||
|     exec 3< <({ checkupdates & cower -u & }) | ||||
| fi | ||||
|  | ||||
| count="$(wc -l <&3)" | ||||
|  | ||||
| if [ -n "$count" -a "$count" -gt 0 ]; then | ||||
|     echo $count | ||||
|     echo $count | ||||
| fi | ||||
| @@ -1,182 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # Displays the default device, volume, and mute status for i3blocks | ||||
|  | ||||
| AUDIO_HIGH_SYMBOL=' ' | ||||
|  | ||||
| AUDIO_MED_THRESH=59 | ||||
| AUDIO_MED_SYMBOL=' ' | ||||
|  | ||||
| AUDIO_LOW_THRESH=0 | ||||
| AUDIO_LOW_SYMBOL=' ' | ||||
|  | ||||
| AUDIO_MUTED_SYMBOL='' | ||||
|  | ||||
| AUDIO_INTERVAL=5 | ||||
|  | ||||
| DEFAULT_COLOR="#ffffff" | ||||
| MUTED_COLOR="#a0a0a0" | ||||
|  | ||||
| LONG_FORMAT=0 | ||||
| SHORT_FORMAT=3 | ||||
| USE_PERCENT=0 | ||||
| USE_ALSA_NAME=0 | ||||
| USE_DESCRIPTION=0 | ||||
|  | ||||
| SUBSCRIBE=1 | ||||
|  | ||||
| while getopts F:Sf:padH:M:L:X:T:t:C:c:i:m:s:h opt; do | ||||
|     case "$opt" in | ||||
|         S) SUBSCRIBE=1 ;; | ||||
|         F) LONG_FORMAT="$OPTARG" ;; | ||||
|         f) SHORT_FORMAT="$OPTARG" ;; | ||||
|         p) USE_PERCENT=0 ;; | ||||
|         a) USE_ALSA_NAME=1 ;; | ||||
|         d) USE_DESCRIPTION=1 ;; | ||||
|         H) AUDIO_HIGH_SYMBOL="$OPTARG" ;; | ||||
|         M) AUDIO_MED_SYMBOL="$OPTARG" ;; | ||||
|         L) AUDIO_LOW_SYMBOL="$OPTARG" ;; | ||||
|         X) AUDIO_MUTED_SYMBOL="$OPTARG" ;; | ||||
|         T) AUDIO_MED_THRESH="$OPTARG" ;; | ||||
|         t) AUDIO_LOW_THRESH="$OPTARG" ;; | ||||
|         C) DEFAULT_COLOR="$OPTARG" ;; | ||||
|         c) MUTED_COLOR="$OPTARG" ;; | ||||
|         i) AUDIO_INTERVAL="$OPTARG" ;; | ||||
|         m) MIXER="$OPTARG" ;; | ||||
|         s) SCONTROL="$OPTARG" ;; | ||||
|         h) printf \ | ||||
| "Usage: volume-pulseaudio [-S] [-F format] [-f format] [-p] [-a|-d] [-H symb] [-M symb] | ||||
|         [-L symb] [-X symb] [-T thresh] [-t thresh] [-C color] [-c color] [-i inter]  | ||||
|         [-m mixer] [-s scontrol] [-h] | ||||
| Options: | ||||
| -F, -f\tOutput format (-F long format, -f short format) to use, amongst: | ||||
| \t0\t symb vol [index:name]\t (default long) | ||||
| \t1\t symb vol [name] | ||||
| \t2\t symb vol [index]\t (default short) | ||||
| \t3\t symb vol | ||||
| -S\tSubscribe to volume events (requires persistent block, always uses long format) | ||||
| -p\tOmit the percent sign (%%) in volume | ||||
| -a\tUse ALSA name if possible | ||||
| -d\tUse device description instead of name if possible | ||||
| -H\tSymbol to use when audio level is high. Default: '$AUDIO_HIGH_SYMBOL' | ||||
| -M\tSymbol to use when audio level is medium. Default: '$AUDIO_MED_SYMBOL' | ||||
| -L\tSymbol to use when audio level is low. Default: '$AUDIO_LOW_SYMBOL' | ||||
| -X\tSymbol to use when audio is muted. Default: '$AUDIO_MUTED_SYMBOL' | ||||
| -T\tThreshold for medium audio level. Default: $AUDIO_MED_THRESH | ||||
| -t\tThreshold for low audio level. Default: $AUDIO_LOW_THRESH | ||||
| -C\tColor for non-muted audio. Default: $DEFAULT_COLOR | ||||
| -c\tColor for muted audio. Default: $MUTED_COLOR | ||||
| -i\tInterval size of volume increase/decrease. Default: $AUDIO_INTERVAL | ||||
| -m\tUse the given mixer. | ||||
| -s\tUse the given scontrol. | ||||
| -h\tShow this help text | ||||
| " && exit 0;; | ||||
|     esac | ||||
| done | ||||
|  | ||||
| if [[ -z "$MIXER" ]] ; then | ||||
|     MIXER="default" | ||||
|     if amixer -D pulse info >/dev/null 2>&1 ; then | ||||
|         MIXER="pulse" | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| if [[ -z "$SCONTROL" ]] ; then | ||||
|     SCONTROL=$(amixer -D "$MIXER" scontrols | sed -n "s/Simple mixer control '\([^']*\)',0/\1/p" | head -n1) | ||||
| fi | ||||
|  | ||||
| CAPABILITY=$(amixer -D $MIXER get $SCONTROL | sed -n "s/  Capabilities:.*cvolume.*/Capture/p") | ||||
|  | ||||
|  | ||||
| function move_sinks_to_new_default { | ||||
|     DEFAULT_SINK=$1 | ||||
|     pacmd list-sink-inputs | grep index: | grep -o '[0-9]\+' | while read SINK | ||||
|     do | ||||
|         pacmd move-sink-input $SINK $DEFAULT_SINK | ||||
|     done | ||||
| } | ||||
|  | ||||
| function set_default_playback_device_next { | ||||
|     inc=${1:-1} | ||||
|     num_devices=$(pacmd list-sinks | grep -c index:) | ||||
|     sink_arr=($(pacmd list-sinks | grep index: | grep -o '[0-9]\+')) | ||||
|     default_sink_index=$(( $(pacmd list-sinks | grep index: | grep -no '*' | grep -o '^[0-9]\+') - 1 )) | ||||
|     default_sink_index=$(( ($default_sink_index + $num_devices + $inc) % $num_devices )) | ||||
|     default_sink=${sink_arr[$default_sink_index]} | ||||
|     pacmd set-default-sink $default_sink | ||||
|     move_sinks_to_new_default $default_sink | ||||
| } | ||||
|  | ||||
| case "$BLOCK_BUTTON" in | ||||
|     1) set_default_playback_device_next ;; | ||||
|     2) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY toggle ;; | ||||
|     3) set_default_playback_device_next -1 ;; | ||||
|     4) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY $AUDIO_INTERVAL%+ ;; | ||||
|     5) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY $AUDIO_INTERVAL%- ;; | ||||
| esac | ||||
|  | ||||
| function print_format { | ||||
|     PERCENT="%" | ||||
|     [[ $USE_PERCENT == 0 ]] && PERCENT="" | ||||
|     case "$1" in | ||||
|         1) echo "$SYMBOL$VOL$PERCENT [$NAME]" ;; | ||||
|         2) echo "$SYMBOL$VOL$PERCENT [$INDEX]";; | ||||
|         3) echo "$SYMBOL$VOL$PERCENT" ;; | ||||
|         *) echo "$SYMBOL$VOL$PERCENT [$INDEX:$NAME]" ;; | ||||
|     esac | ||||
| } | ||||
|  | ||||
| function print_block { | ||||
|     for name in INDEX NAME VOL MUTED; do | ||||
|         read $name | ||||
|     done < <(pacmd list-sinks | grep "index:\|name:\|volume: front\|muted:" | grep -A3 '*') | ||||
|     INDEX=$(echo "$INDEX" | grep -o '[0-9]\+') | ||||
|     VOL=$(echo "$VOL" | grep -o "[0-9]*%" | head -1 ) | ||||
|     VOL="${VOL%?}" | ||||
|  | ||||
|     NAME=$(echo "$NAME" | sed \ | ||||
| 's/.*<.*\.\(.*\)>.*/\1/; t;'\ | ||||
| 's/.*<\(.*\)>.*/\1/; t;'\ | ||||
| 's/.*/unknown/') | ||||
|  | ||||
|     if [[ $USE_ALSA_NAME == 1 ]] ; then | ||||
|         ALSA_NAME=$(pacmd list-sinks |\ | ||||
| awk '/^\s*\*/{f=1}/^\s*index:/{f=0}f' |\ | ||||
| grep "alsa.name\|alsa.mixer_name" |\ | ||||
| head -n1 |\ | ||||
| sed 's/.*= "\(.*\)".*/\1/') | ||||
|         NAME=${ALSA_NAME:-$NAME} | ||||
|     elif [[ $USE_DESCRIPTION == 1 ]] ; then | ||||
|         DESCRIPTION=$(pacmd list-sinks |\ | ||||
| awk '/^\s*\*/{f=1}/^\s*index:/{f=0}f' |\ | ||||
| grep "device.description" |\ | ||||
| head -n1 |\ | ||||
| sed 's/.*= "\(.*\)".*/\1/') | ||||
|         NAME=${DESCRIPTION:-$NAME} | ||||
|     fi | ||||
|  | ||||
|     if [[ $MUTED =~ "no" ]] ; then | ||||
|         SYMBOL=$AUDIO_HIGH_SYMBOL | ||||
|         [[ $VOL -le $AUDIO_MED_THRESH ]] && SYMBOL=$AUDIO_MED_SYMBOL | ||||
|         [[ $VOL -le $AUDIO_LOW_THRESH ]] && SYMBOL=$AUDIO_LOW_SYMBOL | ||||
|         COLOR=$DEFAULT_COLOR | ||||
|     else | ||||
|         SYMBOL=$AUDIO_MUTED_SYMBOL | ||||
|         COLOR=$MUTED_COLOR | ||||
|         VOL="" | ||||
|     fi | ||||
|  | ||||
| #    if [[ $SUBSCRIBE == 1 ]] ; then | ||||
| #        print_format "$LONG_FORMAT" | ||||
| #    else | ||||
| #        print_format "$LONG_FORMAT" | ||||
|         print_format "$SHORT_FORMAT" | ||||
| #        echo "$COLOR" | ||||
| #    fi | ||||
| } | ||||
|  | ||||
| print_block | ||||
| if [[ $SUBSCRIBE == 1 ]] ; then | ||||
|     while read -r EVENT; do | ||||
|         print_block | ||||
|     done < <(pactl subscribe | stdbuf -oL grep change) | ||||
| fi | ||||
| @@ -1,46 +0,0 @@ | ||||
| #!/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 | ||||
| @@ -107,29 +107,7 @@ client.unfocused        $inactive-bg-color  $inactive-bg-color $inactive-text-co | ||||
| client.focused_inactive $inactive-bg-color  $inactive-bg-color $inactive-text-color $bg-color | ||||
| client.urgent           $urgent-bg-color    $urgent-bg-color   $text-color          $bg-color | ||||
|  | ||||
| bar { | ||||
|     status_command i3blocks -c ~/.config/i3/blocks/config | ||||
|  | ||||
|     workspace_buttons yes | ||||
|     strip_workspace_numbers yes | ||||
|     tray_output primary | ||||
|     tray_padding 4 | ||||
|     height 24 | ||||
|  | ||||
|     output $bl | ||||
|     output $br | ||||
|     output primary | ||||
|     position bottom | ||||
|  | ||||
|     colors { | ||||
|         separator #757575 | ||||
|         background #2f343f | ||||
|         #                  border             background         text | ||||
|         focused_workspace  $bg-color          $bg-color          $text-color | ||||
|         inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color | ||||
|         urgent_workspace   $urgent-bg-color   $urgent-bg-color   $text-color | ||||
|     } | ||||
| } | ||||
| exec_always --no-startup-id killall -q polybar; while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done; exec polybar -r i3bar | ||||
|  | ||||
| # Window rules | ||||
| for_window [class="Pinentry"] floating enable | ||||
| @@ -185,7 +163,6 @@ bindsym XF86MonBrightnessDown   exec xbacklight -dec 5 && pkill -RTMIN+12 i3bloc | ||||
|  | ||||
| # app launch shortcuts | ||||
| exec --no-startup-id ~/.config/i3/disable-standby-fs.py | ||||
| exec --no-startup-id "ip monitor | while read; do pkill -RTMIN+15 i3blocks; done" | ||||
| exec --no-startup-id feh --no-fehbg --no-xinerama --bg-fill ~/pictures/lakesidesunrise.jpg | ||||
| exec --no-startup-id xautolock -time 5 -locker 'dm-tool lock' -nocloseout -nocloseerr | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user