diff --git a/colorschemes/gruvbox.bar.conf b/colorschemes/gruvbox.bar.conf index 034b68f..94c562b 100644 --- a/colorschemes/gruvbox.bar.conf +++ b/colorschemes/gruvbox.bar.conf @@ -7,9 +7,9 @@ bar { active_workspace #d79921 #d79921 #202020 inactive_workspace #282828 #282828 #d79921 } - font pango:Source Code Pro 10 + font pango:Source Code Pro 11 status_command i3blocks position top - padding 5px + padding 6px tray_padding 5px } diff --git a/colorschemes/gruvbox.conf b/colorschemes/gruvbox.conf index 4c966e6..0e22db8 100644 --- a/colorschemes/gruvbox.conf +++ b/colorschemes/gruvbox.conf @@ -1,6 +1,6 @@ # Gruvbox # class border bg txt ind child_border -client.focused #689d6a #689d6a #689d6a #689d6a #689d6a -client.focused_inactive #d79921 #d79921 #a89984 #d79921 #d79921 -client.unfocused #3c3836 #928374 #3c3836 #3c3836 #3c3836 +client.focused #689d6a #689d6a #282828 #689d6a #689d6a +client.focused_inactive #d79921 #d79921 #282828 #d79921 #d79921 +client.unfocused #3c3836 #928374 #282828 #3c3836 #3c3836 client.background #282828 diff --git a/colorschemes/nord.conf b/colorschemes/nord.conf index c489bb6..c67f084 100644 --- a/colorschemes/nord.conf +++ b/colorschemes/nord.conf @@ -1,6 +1,6 @@ # Nord # class border bg txt ind child_border -client.focused #88C0D0 #2E3440 #2E3440 #2E3440 #88C0D0 -client.focused_inactive #88C0D0 #2E3440 #2E3440 #2E3440 #88C0D0 +client.focused #88C0D0 #88C0D0 #88C0D0 #88C0D0 #88C0D0 +client.focused_inactive #88C0D0 #88C0D0 #88C0D0 #88C0D0 #88C0D0 client.unfocused #3B4252 #2E3440 #2E3440 #2E3440 #3B4252 client.background #2E3440 diff --git a/config b/config index 88f024f..44e5e27 100644 --- a/config +++ b/config @@ -43,8 +43,8 @@ exec --no-startup-id nm-applet ### # change volume or toggle mute -bindsym XF86AudioRaiseVolume exec amixer -q -D pulse sset Master 5%+ && pkill -RTMIN+10 i3blocks -bindsym XF86AudioLowerVolume exec amixer -q -D pulse sset Master 5%- && pkill -RTMIN+10 i3blocks +bindsym XF86AudioRaiseVolume exec amixer -q -D pulse sset Master 5%+ && pkill -RTMIN+10 i3blocks && dunstify "Volume" "up 5%" +bindsym XF86AudioLowerVolume exec amixer -q -D pulse sset Master 5%- && pkill -RTMIN+10 i3blocks && dunstify "Volume" "down 5%" bindsym XF86AudioMute exec amixer -q -D pulse sset Master toggle && pkill -RTMIN+10 i3blocks # Media player controls @@ -188,10 +188,10 @@ mode "resize" { bindsym semicolon resize grow width 10 px or 10 ppt # same bindings, but for the arrow keys - bindsym Left resize shrink width 5 px or 5 ppt - bindsym Down resize grow height 5 px or 5 ppt - bindsym Up resize shrink height 5 px or 5 ppt - bindsym Right resize grow width 5 px or 5 ppt + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt # back to normal: Enter or Escape or $mod+r bindsym Return mode "default" @@ -208,8 +208,8 @@ bindsym $mod+z mode "resize" # Start i3bar to display a workspace bar (plus the system information i3status # finds out, if available) -#include ~/.config/i3/colorschemes/gruvbox.bar.conf -include ~/.config/i3/colorschemes/nord.bar.conf +include ~/.config/i3/colorschemes/gruvbox.bar.conf +#include ~/.config/i3/colorschemes/nord.bar.conf # Start compositor exec_always compfy & @@ -219,13 +219,13 @@ exec_always compfy & ################ # Gruvbox -#include ~/.config/i3/colorschemes/gruvbox.conf +include ~/.config/i3/colorschemes/gruvbox.conf # Dracula #include ~/.config/i3/colorschemes/dracula.conf # Nord -include ~/.config/i3/colorschemes/nord.conf +#include ~/.config/i3/colorschemes/nord.conf # Wallpaper exec_always nitrogen --restore & @@ -254,6 +254,11 @@ exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 # xinput rules exec_always --no-startup-id ~/.config/i3/xinput-rules +exec_always fortune -n 25 > /tmp/fortune + +# conky +exec_always ~/.config/conky/start_conky.sh + ### WINDOW RULES ### # Remove title bars diff --git a/i3blocks/config b/i3blocks/config deleted file mode 100644 index 4b90ade..0000000 --- a/i3blocks/config +++ /dev/null @@ -1,96 +0,0 @@ -# i3blocks configuration file -# -# The i3blocks man page describes the usage of the binary, -# and its website describes the configuration: -# -# https://vivien.github.io/i3blocks - -SCRIPT_DIR=/home/arco/.config/i3blocks/scripts - -# Global properties -separator=true -separator_block_width=30 - -[mediaplayer] -command=$SCRIPT_DIR/mediaplayer -interval=1 - -#[documentation] -#full_text=Documentation -#website=https://vivien.github.io/i3blocks -#command=xdg-open "$website" -#color=#f12711 - -#[greetings] -#color=#f5af19 -#command=echo "Hello, $USER!" -#interval=once - -[volume] -command=$SCRIPT_DIR/volume -LABEL=♪ -#LABEL=VOL -interval=once -signal=10 -STEP=5% -MIXER=pulse -#SCONTROL=[determined automatically] -#NATURAL_MAPPING=0 - -[dunst] -command=$SCRIPT_DIR/dunst -interval=once -format=json -markup=pango -#min_width=50 -align=center - -[disk] -command=$SCRIPT_DIR/disk -DIR=/ -LABEL=🖴 -interval=30 - -[batterybar] -command=$SCRIPT_DIR/batterybar -label=⏻ -interval=5 -markup=pango -min_width=bat: ■■■■■ -# Discharging colors low to high -C1=#FF0027 -C2=#FF3B05 -C3=#FFB923 -C4=#FFD000 -C5=#E4FF00 -C6=#ADFF00 -C7=#6DFF00 -C8=#10BA00 -CHARGING_COLOR=#00AFE3 -FULL_COLOR=#FFFFFF -AC_COLOR=#535353 - -[time] -command=date '+%m/%d/%Y %H:%M' -interval=15 - -[shutdown_menu] -full_text= ⏻ Power Menu -# If you are using FontAwesome, we recommend the power-off icon: -# http://fontawesome.io/icon/power-off/ -command=$SCRIPT_DIR/shutdown_menu -#FG_COLOR=#bbbbbb -#BG_COLOR=#111111 -#HLFG_COLOR=#111111 -#HLBG_COLOR=#bbbbbb -#BORDER_COLOR=#222222 -ROFI_TEXT=⏻ -ROFI_OPTIONS=-width 11 -location 0 -hide-scrollbar -bw 2 -#ZENITY_TITLE=Menu -#ZENITY_TEXT=Action: -#ZENITY_OPTIONS=--column= --hide-header -#ENABLE_CONFIRMATIONS=true (must be true or false) -#LAUNCHER=rofi #(must be rofi or zenity) -LOCKSCRIPT=betterlockscreen -u "/home/arco/Wallpapers/platform.jpg" -l -background=#d79921 -color=#282828 diff --git a/i3blocks/scripts/arch-update b/i3blocks/scripts/arch-update deleted file mode 100755 index 89f244c..0000000 --- a/i3blocks/scripts/arch-update +++ /dev/null @@ -1,155 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2017 Marcel Patzwahl -# Licensed under the terms of the GNU GPL v3 only. -# -# i3blocks blocklet script to see the available updates of pacman and the AUR -import subprocess -from subprocess import check_output -import argparse -import os -import re - - -def create_argparse(): - def _default(name, default='', arg_type=str): - val = default - if name in os.environ: - val = os.environ[name] - return arg_type(val) - - strbool = lambda s: s.lower() in ['t', 'true', '1'] - strlist = lambda s: s.split() - - parser = argparse.ArgumentParser(description='Check for pacman updates') - parser.add_argument( - '-b', - '--base_color', - default = _default('BASE_COLOR', 'green'), - help='base color of the output(default=green)' - ) - parser.add_argument( - '-u', - '--updates_available_color', - default = _default('UPDATE_COLOR', 'yellow'), - help='color of the output, when updates are available(default=yellow)' - ) - parser.add_argument( - '-a', - '--aur', - action = 'store_const', - const = True, - default = _default('AUR', 'False', strbool), - help='Include AUR packages. Attn: Yaourt must be installed' - ) - parser.add_argument( - '-y', - '--aur_yay', - action = 'store_const', - const = True, - default = _default('AUR_YAY', 'False', strbool), - help='Include AUR packages. Attn: Yay must be installed' - ) - parser.add_argument( - '-q', - '--quiet', - action = 'store_const', - const = True, - default = _default('QUIET', 'False', strbool), - help = 'Do not produce output when system is up to date' - ) - parser.add_argument( - '-w', - '--watch', - nargs='*', - default = _default('WATCH', arg_type=strlist), - help='Explicitly watch for specified packages. ' - 'Listed elements are treated as regular expressions for matching.' - ) - return parser.parse_args() - - -def get_updates(): - output = '' - try: - output = check_output(['checkupdates']).decode('utf-8') - except subprocess.CalledProcessError as exc: - # checkupdates exits with 2 and no output if no updates are available. - # we ignore this case and go on - if not (exc.returncode == 2 and not exc.output): - raise exc - if not output: - return [] - - updates = [line.split(' ')[0] - for line in output.split('\n') - if line] - - return updates - - -def get_aur_yaourt_updates(): - output = '' - try: - output = check_output(['yaourt', '-Qua']).decode('utf-8') - except subprocess.CalledProcessError as exc: - # yaourt exits with 1 and no output if no updates are available. - # we ignore this case and go on - if not (exc.returncode == 1 and not exc.output): - raise exc - if not output: - return [] - - aur_updates = [line.split(' ')[0] - for line in output.split('\n') - if line.startswith('aur/')] - - return aur_updates - -def get_aur_yay_updates(): - output = check_output(['yay', '-Qua']).decode('utf-8') - if not output: - return [] - - aur_updates = [line.split(' ')[0] for line in output.split('\n') if line] - - return aur_updates - - -def matching_updates(updates, watch_list): - matches = set() - for u in updates: - for w in watch_list: - if re.match(w, u): - matches.add(u) - - return matches - - -label = os.environ.get("LABEL","") -message = "{0}{2}" -args = create_argparse() - -updates = get_updates() -if args.aur: - updates += get_aur_yaourt_updates() -elif args.aur_yay: - updates += get_aur_yay_updates() - -update_count = len(updates) -if update_count > 0: - if update_count == 1: - info = str(update_count) + ' update available' - short_info = str(update_count) + ' update' - else: - info = str(update_count) + ' updates available' - short_info = str(update_count) + ' updates' - - matches = matching_updates(updates, args.watch) - if matches: - info += ' [{0}]'.format(', '.join(matches)) - short_info += '*' - print(message.format(label, args.updates_available_color, info)) - print(message.format(label, args.updates_available_color, short_info)) -elif not args.quiet: - print(message.format(label, args.base_color, 'system up to date')) diff --git a/i3blocks/scripts/batterybar b/i3blocks/scripts/batterybar deleted file mode 100755 index 0308aba..0000000 --- a/i3blocks/scripts/batterybar +++ /dev/null @@ -1,137 +0,0 @@ -#!/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 - -squares="■" - -#There are 8 colors that reflect the current battery percentage when -#discharging -dis_colors=("${C1:-#FF0027}" "${C2:-#FF3B05}" "${C3:-#FFB923}" - "${C4:-#FFD000}" "${C5:-#E4FF00}" "${C6:-#ADFF00}" - "${C7:-#6DFF00}" "${C8:-#10BA00}") -charging_color="${CHARGING_COLOR:-#00AFE3}" -full_color="${FULL_COLOR:-#FFFFFF}" -ac_color="${AC_COLOR:-#535353}" - - -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 - - if [[ "${statuses[$i]}" = "Unknown" ]]; then - squares="?$squares" - fi - - case "${statuses[$i]}" in - "Charging") - color="$charging_color" - ;; - "Full") - color="$full_color" - ;; - "AC") - color="$ac_color" - ;; - "Discharging"|"Unknown") - if (( percentages[$i] >= 0 && percentages[$i] < 10 )); then - color="${dis_colors[0]}" - 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 - - # 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/scripts/disk b/i3blocks/scripts/disk deleted file mode 100755 index 9d64cc1..0000000 --- a/i3blocks/scripts/disk +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env sh -# Copyright (C) 2014 Julien Bonjean - -# 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 . - -DIR="${DIR:-$BLOCK_INSTANCE}" -DIR="${DIR:-$HOME}" -ALERT_LOW="${ALERT_LOW:-$1}" -ALERT_LOW="${ALERT_LOW:-10}" # color will turn red under this value (default: 10%) - -LOCAL_FLAG="-l" -if [ "$1" = "-n" ] || [ "$2" = "-n" ]; then - LOCAL_FLAG="" -fi - -df -h -P $LOCAL_FLAG "$DIR" | awk -v label="$LABEL" -v alert_low=$ALERT_LOW ' -/\/.*/ { - # full text - print label $4 - - # short text - print label $4 - - use=$5 - - # no need to continue parsing - exit 0 -} - -END { - gsub(/%$/,"",use) - if (100 - use < alert_low) { - # color - print "#FF0000" - } -} -' diff --git a/i3blocks/scripts/dunst b/i3blocks/scripts/dunst deleted file mode 100755 index 915acb3..0000000 --- a/i3blocks/scripts/dunst +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python3 -""" -A do-not-disturb button for muting Dunst notifications in i3 using i3blocks - -Mute is handled using the `dunstctl` command. -""" - -__author__ = "Jessey White-Cinis " -__copyright__ = "Copyright (c) 2019 Jessey White-Cinis" -__license__ = "MIT" -__version__ = "1.1.0" - -import os -import subprocess as sp -import json - -def mute_toggle(): - '''Toggle dunst notifications''' - sp.run(["dunstctl", "set-paused", "toggle"], check=True) - -def clicked(): - '''Returns True if the button was clicked''' - button = os.environ.get("BLOCK_BUTTON", None) - return bool(button) - -def muted(): - '''Returns True if Dunst is muted''' - output = sp.check_output(('dunstctl', 'is-paused')) - return u'true' == output.strip().decode("UTF-8") - -if clicked(): - # toggle button click to turn mute on and off - mute_toggle() - -if muted(): - RTN = {"full_text":"\uf1f6"} -else: - RTN = {"full_text":"\uf0f3"} - -print(json.dumps(RTN)) diff --git a/i3blocks/scripts/mediaplayer b/i3blocks/scripts/mediaplayer deleted file mode 100755 index 7259080..0000000 --- a/i3blocks/scripts/mediaplayer +++ /dev/null @@ -1,159 +0,0 @@ -#!/usr/bin/env perl -# Copyright (C) 2014 Tony Crisci -# Copyright (C) 2015 Thiago Perrotta - -# 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 . - -# For all media players except mpd/cmus/rhythmbox, MPRIS support should be -# enabled and the playerctl binary should be in your path. -# 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). If instance is empty, playerctl will connect to the first -# supported media player it finds. - -use Time::HiRes qw(usleep); -use Env qw(BLOCK_INSTANCE); - -use constant DELAY => 50; # Delay in ms to let network-based players (spotify) reflect new data. -use constant SPOTIFY_STR => 'spotify'; - -my @metadata = (); -my $player_arg = ""; - -if ($BLOCK_INSTANCE) { - $player_arg = "--player='$BLOCK_INSTANCE'"; -} - -sub buttons { - my $method = shift; - - if($method eq 'mpd') { - if ($ENV{'BLOCK_BUTTON'} == 1) { - system("mpc prev &>/dev/null"); - } elsif ($ENV{'BLOCK_BUTTON'} == 2) { - system("mpc toggle &>/dev/null"); - } elsif ($ENV{'BLOCK_BUTTON'} == 3) { - system("mpc next &>/dev/null"); - } elsif ($ENV{'BLOCK_BUTTON'} == 4) { - system("mpc volume +10 &>/dev/null"); - } elsif ($ENV{'BLOCK_BUTTON'} == 5) { - system("mpc volume -10 &>/dev/null"); - } - } elsif ($method eq 'cmus') { - if ($ENV{'BLOCK_BUTTON'} == 1) { - system("cmus-remote --prev"); - } elsif ($ENV{'BLOCK_BUTTON'} == 2) { - system("cmus-remote --pause"); - } elsif ($ENV{'BLOCK_BUTTON'} == 3) { - system("cmus-remote --next"); - } - } elsif ($method eq 'playerctl') { - if ($ENV{'BLOCK_BUTTON'} == 1) { - system("playerctl $player_arg previous"); - usleep(DELAY * 1000) if $BLOCK_INSTANCE eq SPOTIFY_STR; - } elsif ($ENV{'BLOCK_BUTTON'} == 2) { - system("playerctl $player_arg play-pause"); - } elsif ($ENV{'BLOCK_BUTTON'} == 3) { - system("playerctl $player_arg next"); - usleep(DELAY * 1000) if $BLOCK_INSTANCE eq SPOTIFY_STR; - } elsif ($ENV{'BLOCK_BUTTON'} == 4) { - system("playerctl $player_arg volume 0.01+"); - } elsif ($ENV{'BLOCK_BUTTON'} == 5) { - system("playerctl $player_arg volume 0.01-"); - } - } elsif ($method eq 'rhythmbox') { - if ($ENV{'BLOCK_BUTTON'} == 1) { - system("rhythmbox-client --previous"); - } elsif ($ENV{'BLOCK_BUTTON'} == 2) { - system("rhythmbox-client --play-pause"); - } elsif ($ENV{'BLOCK_BUTTON'} == 3) { - system("rhythmbox-client --next"); - } - } -} - -sub cmus { - 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) { - buttons('cmus'); - - # metadata found so we are done - print(join ' - ', @metadata); - print("\n"); - exit 0; - } - } -} - -sub mpd { - my $data = qx(mpc current); - if (not $data eq '') { - buttons("mpd"); - print($data); - exit 0; - } -} - -sub playerctl { - buttons('playerctl'); - - my $artist = qx(playerctl $player_arg metadata artist 2>/dev/null); - chomp $artist; - # exit status will be nonzero when playerctl cannot find your player - exit(0) if $? || $artist eq '(null)'; - - push(@metadata, $artist) if $artist; - - my $title = qx(playerctl $player_arg metadata title); - exit(0) if $? || $title eq '(null)'; - - push(@metadata, $title) if $title; - - print(join(" - ", @metadata)) if @metadata; -} - -sub rhythmbox { - buttons('rhythmbox'); - - my $data = qx(rhythmbox-client --print-playing --no-start); - print($data); -} - -if ($player_arg =~ /mpd/) { - mpd; -} -elsif ($player_arg =~ /cmus/) { - cmus; -} -elsif ($player_arg =~ /rhythmbox/) { - rhythmbox; -} -else { - playerctl; -} -print("\n"); diff --git a/i3blocks/scripts/playerctl b/i3blocks/scripts/playerctl deleted file mode 100755 index ce22dde..0000000 --- a/i3blocks/scripts/playerctl +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# Based on https://aur.archlinux.org/packages/playerctl/ - -INSTANCE="${BLOCK_INSTANCE}" - -if [[ "${INSTANCE}" != "" ]]; then - ARGUMENTS="--player ${INSTANCE}" - ps -e | grep "${INSTANCE}" &> /dev/null -fi -if [ $? == 1 ]; then - exit 0 -fi - -ICON_PLAY="➤" -ICON_PAUSE="Ⅱ" -ICON_STOP="≠" -CUR_ICON="" - -if [[ "${BLOCK_BUTTON}" -eq 1 ]]; then - $(playerctl ${ARGUMENTS} previous) -elif [[ "${BLOCK_BUTTON}" -eq 2 ]]; then - $(playerctl ${ARGUMENTS} play-pause) -elif [[ "${BLOCK_BUTTON}" -eq 3 ]]; then - $(playerctl ${ARGUMENTS} next) -fi - -PLAYER_STATUS=$(playerctl ${ARGUMENTS} status) -INFO_TITLE=$(playerctl ${ARGUMENTS} metadata title) -INFO_ALBUM=$(playerctl ${ARGUMENTS} metadata album) -INFO_ARTIST=$(playerctl ${ARGUMENTS} metadata artist) - -if [[ "${PLAYER_STATUS}" = "Paused" ]]; then - CUR_ICON="${ICON_PAUSE}" -elif [[ "${PLAYER_STATUS}" = "Playing" ]]; then - CUR_ICON="${ICON_PLAY}" -else - CUR_ICON="${ICON_STOP}" -fi - -if [[ "${INFO_TITLE}" != "" ]] && [[ "${INFO_ARTIST}" != "" ]]; then - echo "${INFO_ARTIST} - ${INFO_TITLE} ${CUR_ICON}" - echo "${INFO_ARTIST} - ${INFO_TITLE} ${CUR_ICON}" -fi diff --git a/i3blocks/scripts/shutdown_menu b/i3blocks/scripts/shutdown_menu deleted file mode 100755 index 7ae826f..0000000 --- a/i3blocks/scripts/shutdown_menu +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/env bash -# -# Use rofi/zenity to change system runstate thanks to systemd. -# -# Note: this currently relies on associative array support in the shell. -# -# Inspired from i3pystatus wiki: -# https://github.com/enkore/i3pystatus/wiki/Shutdown-Menu -# -# Copyright 2015 Benjamin Chrétien -# -# 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 . - -####################################################################### -# BEGIN CONFIG # -####################################################################### - -# Use a custom lock script -#LOCKSCRIPT="i3lock-extra -m pixelize" - -# Colors: FG (foreground), BG (background), HL (highlighted) -FG_COLOR="${FG_COLOR:-#bbbbbb}" -BG_COLOR="${BG_COLOR:-#111111}" -HLFG_COLOR="${HLFG_COLOR:-#111111}" -HLBG_COLOR="${HLBG_COLOR:-#bbbbbb}" -BORDER_COLOR="${BORDER_COLOR:-#222222}" - -# Options not related to colors -ROFI_TEXT="${ROFI_TEXT:-Menu:}" -ROFI_OPTIONS=(${ROFI_OPTIONS:--theme-str 'window {width: 11%; border: 2;} listview {scrollbar: false;}' -location 3}) - -# Zenity options -ZENITY_TITLE="${ZENITY_TITLE:-Menu}" -ZENITY_TEXT="${ZENITY_TEXT:-Action:}" -ZENITY_OPTIONS=(${ZENITY_OPTIONS:---column= --hide-header}) - -####################################################################### -# END CONFIG # -####################################################################### - -# Whether to ask for user's confirmation -enable_confirmation=${ENABLE_CONFIRMATIONS:-false} - -# Preferred launcher if both are available -preferred_launcher="${LAUNCHER:-rofi}" - -usage="$(basename "$0") [-h] [-c] [-p name] -- display a menu for shutdown, reboot, lock etc. - -where: - -h show this help text - -c ask for user confirmation - -p preferred launcher (rofi or zenity) - -This script depends on: - - systemd, - - i3, - - rofi or zenity." - -# Check whether the user-defined launcher is valid -launcher_list=(rofi zenity) -function check_launcher() { - if [[ ! "${launcher_list[@]}" =~ (^|[[:space:]])"$1"($|[[:space:]]) ]]; then - echo "Supported launchers: ${launcher_list[*]}" - exit 1 - else - # Get array with unique elements and preferred launcher first - # Note: uniq expects a sorted list, so we cannot use it - i=1 - launcher_list=($(for l in "$1" "${launcher_list[@]}"; do printf "%i %s\n" "$i" "$l"; let i+=1; done \ - | sort -uk2 | sort -nk1 | cut -d' ' -f2- | tr '\n' ' ')) - fi -} - -# Parse CLI arguments -while getopts "hcp:" option; do - case "${option}" in - h) echo "${usage}" - exit 0 - ;; - c) enable_confirmation=true - ;; - p) preferred_launcher="${OPTARG}" - check_launcher "${preferred_launcher}" - ;; - *) exit 1 - ;; - esac -done -check_launcher "${preferred_launcher}" - -# Check whether a command exists -function command_exists() { - command -v "$1" &> /dev/null 2>&1 -} - -# systemctl required -if ! command_exists systemctl ; then - exit 1 -fi - -# menu defined as an associative array -typeset -A menu - -# Menu with keys/commands -menu=( - [Shutdown]="systemctl poweroff" - [Reboot]="systemctl reboot" - [Hibernate]="systemctl hibernate" - [Suspend]="systemctl suspend" - [Halt]="systemctl halt" - [Lock]="${LOCKSCRIPT:-i3lock --color=${BG_COLOR#"#"}}" - [Logout]="i3-msg exit" - [Cancel]="" -) -menu_nrows=${#menu[@]} - -# Menu entries that may trigger a confirmation message -menu_confirm="Shutdown Reboot Hibernate Suspend Halt Logout" - -launcher_exe="" -launcher_options="" -rofi_colors="" - -function prepare_launcher() { - if [[ "$1" == "rofi" ]]; then - rofi_colors=(-bc "${BORDER_COLOR}" -bg "${BG_COLOR}" -fg "${FG_COLOR}" \ - -hlfg "${HLFG_COLOR}" -hlbg "${HLBG_COLOR}") - launcher_exe="rofi" - launcher_options=(-dmenu -i -lines "${menu_nrows}" -p "${ROFI_TEXT}" \ - "${rofi_colors[@]}" "${ROFI_OPTIONS[@]}") - elif [[ "$1" == "zenity" ]]; then - launcher_exe="zenity" - launcher_options=(--list --title="${ZENITY_TITLE}" --text="${ZENITY_TEXT}" \ - "${ZENITY_OPTIONS[@]}") - fi -} - -for l in "${launcher_list[@]}"; do - if command_exists "${l}" ; then - prepare_launcher "${l}" - break - fi -done - -# No launcher available -if [[ -z "${launcher_exe}" ]]; then - exit 1 -fi - -launcher=(${launcher_exe} "${launcher_options[@]}") -selection="$(printf '%s\n' "${!menu[@]}" | sort | "${launcher[@]}")" - -function ask_confirmation() { - if [ "${launcher_exe}" == "rofi" ]; then - confirmed=$(echo -e "Yes\nNo" | rofi -dmenu -i -lines 2 -p "${selection}?" \ - "${rofi_colors[@]}" "${ROFI_OPTIONS[@]}") - [ "${confirmed}" == "Yes" ] && confirmed=0 - elif [ "${launcher_exe}" == "zenity" ]; then - zenity --question --text "Are you sure you want to ${selection,,}?" - confirmed=$? - fi - - if [ "${confirmed}" == 0 ]; then - i3-msg -q "exec ${menu[${selection}]}" - fi -} - -if [[ $? -eq 0 && ! -z ${selection} ]]; then - if [[ "${enable_confirmation}" = true && \ - ${menu_confirm} =~ (^|[[:space:]])"${selection}"($|[[:space:]]) ]]; then - ask_confirmation - else - i3-msg -q "exec ${menu[${selection}]}" - fi -fi diff --git a/i3blocks/scripts/volume b/i3blocks/scripts/volume deleted file mode 100755 index e8e1372..0000000 --- a/i3blocks/scripts/volume +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env bash -# Copyright (C) 2014 Julien Bonjean -# Copyright (C) 2014 Alexander Keller - -# 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 . - -#------------------------------------------------------------------------ - -# 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 - -# AMIXER(1): -# "Use the mapped volume for evaluating the percentage representation like alsamixer, to be -# more natural for human ear." -NATURAL_MAPPING=${NATURAL_MAPPING:-0} -if [[ "$NATURAL_MAPPING" != "0" ]] ; then - AMIXER_PARAMS="-M" -fi - -#------------------------------------------------------------------------ - -capability() { # Return "Capture" if the device is a capture device - amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL | - sed -n "s/ Capabilities:.*cvolume.*/Capture/p" -} - -volume() { - amixer $AMIXER_PARAMS -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}' - output=$(perl -ne "$perl_filter") - echo "$LABEL$output" -} - -#------------------------------------------------------------------------ - -case $BLOCK_BUTTON in - 3) amixer $AMIXER_PARAMS -q -D $MIXER sset $SCONTROL $(capability) toggle ;; # right click, mute/unmute - 4) amixer $AMIXER_PARAMS -q -D $MIXER sset $SCONTROL $(capability) ${STEP}+ unmute ;; # scroll up, increase - 5) amixer $AMIXER_PARAMS -q -D $MIXER sset $SCONTROL $(capability) ${STEP}- unmute ;; # scroll down, decrease -esac - -volume | format diff --git a/i3blocks/scripts/volume-pipewire b/i3blocks/scripts/volume-pipewire deleted file mode 100755 index bc7da69..0000000 --- a/i3blocks/scripts/volume-pipewire +++ /dev/null @@ -1,172 +0,0 @@ -#!/bin/bash -# Displays the default device, volume, and mute status for i3blocks - -set -a - -AUDIO_HIGH_SYMBOL=${AUDIO_HIGH_SYMBOL:-' '} - -AUDIO_MED_THRESH=${AUDIO_MED_THRESH:-50} -AUDIO_MED_SYMBOL=${AUDIO_MED_SYMBOL:-' '} - -AUDIO_LOW_THRESH=${AUDIO_LOW_THRESH:-0} -AUDIO_LOW_SYMBOL=${AUDIO_LOW_SYMBOL:-' '} - -AUDIO_MUTED_SYMBOL=${AUDIO_MUTED_SYMBOL:-' '} - -AUDIO_DELTA=${AUDIO_DELTA:-5} - -DEFAULT_COLOR=${DEFAULT_COLOR:-"#ffffff"} -MUTED_COLOR=${MUTED_COLOR:-"#a0a0a0"} - -LONG_FORMAT=${LONG_FORMAT:-'${SYMB} ${VOL}% [${INDEX}:${NAME}]'} -SHORT_FORMAT=${SHORT_FORMAT:-'${SYMB} ${VOL}% [${INDEX}]'} -USE_ALSA_NAME=${USE_ALSA_NAME:-0} -USE_DESCRIPTION=${USE_DESCRIPTION:-0} - -SUBSCRIBE=${SUBSCRIBE:-0} - -MIXER=${MIXER:-""} -SCONTROL=${SCONTROL:-""} - -while getopts F:Sf:adH: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" ;; - 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, with exposed variables: -\${SYMB}, \${VOL}, \${INDEX}, \${NAME} --S\tSubscribe to volume events (requires persistent block, always uses long format) --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_DELTA --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 - pactl list sink-inputs | grep 'Sink Input #' | grep -o '[0-9]\+' | while read SINK - do - pactl move-sink-input $SINK $DEFAULT_SINK - done -} - -function set_default_playback_device_next { - inc=${1:-1} - num_devices=$(pactl list sinks | grep -c Name:) - sink_arr=($(pactl list sinks | grep Name: | sed -r 's/\s+Name: (.+)/\1/')) - default_sink=$(pactl get-default-sink) - default_sink_index=$(for i in "${!sink_arr[@]}"; do if [[ "$default_sink" = "${sink_arr[$i]}" ]]; then echo "$i"; fi done) - default_sink_index=$(( ($default_sink_index + $num_devices + $inc) % $num_devices )) - default_sink=${sink_arr[$default_sink_index]} - pactl 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_DELTA%+ ;; - 5) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY $AUDIO_DELTA%- ;; -esac - -function print_format { - echo "$1" | envsubst '${SYMB}${VOL}${INDEX}${NAME}' -} - -function print_block { - ACTIVE=$(pactl list sinks | grep "State\: RUNNING" -B4 -A55 | grep "Name:\|Volume: \(front-left\|mono\)\|Mute:\|api.alsa.pcm.card = \|node.nick = ") - for Name in NAME MUTED VOL INDEX NICK; do - read $Name - done < <(echo "$ACTIVE") - INDEX=$(echo "$INDEX" | grep -o '".*"' | sed 's/"//g') - VOL=$(echo "$VOL" | grep -o "[0-9]*%" | head -1 ) - VOL="${VOL%?}" - NAME=$(echo "$NICK" | grep -o '".*"' | sed 's/"//g') - - if [[ $USE_ALSA_NAME == 1 ]] ; then - ALSA_NAME=$(pactl 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=$(pactl list sinks | grep "State\: RUNNING" -B4 -A55 | grep 'Description: ' | sed 's/^.*: //') - NAME=${DESCRIPTION:-$NAME} - fi - - if [[ $MUTED =~ "no" ]] ; then - SYMB=$AUDIO_HIGH_SYMBOL - [[ $VOL -le $AUDIO_MED_THRESH ]] && SYMB=$AUDIO_MED_SYMBOL - [[ $VOL -le $AUDIO_LOW_THRESH ]] && SYMB=$AUDIO_LOW_SYMBOL - COLOR=$DEFAULT_COLOR - else - SYMB=$AUDIO_MUTED_SYMBOL - COLOR=$MUTED_COLOR - fi - - if [[ $ACTIVE = "" ]] ; then - echo "Sound inactive" - COLOR='#222225' - 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 diff --git a/xinput-rules b/xinput-rules index 10a3952..e85d8a0 100755 --- a/xinput-rules +++ b/xinput-rules @@ -1,3 +1,3 @@ #!/bin/sh -xinput set-prop 12 'libinput Disable While Typing Enabled' 0 +xinput set-prop 12 'libinput Disable While Typing Enabled' 1