#!/bin/bash # # conkyctl CONKYDIR="$HOME/.config/conky" BASECONKY="$CONKYDIR/sysinfo_mbcolor.conkyrc" SESSIONFILE="$CONKYDIR/conky-sessionfile" update_session () { :> "${SESSIONFILE}" while read -r pid b c confpath do echo "$b $c ${confpath} & sleep .5" >> ${SESSIONFILE} done < <(pgrep -af "conky .*mbcolor") } transparent_all () { sd "own_window_transparent.*$" "own_window_transparent = ${1}," ${CONKYDIR}/*mbcolor.conkyrc } transparent () { sd "own_window_transparent.*$" "own_window_transparent = ${1}," ${2} } win_bgcolor_all () { sd "own_window_colour .*=.*$" "own_window_colour = '${1}'," ${CONKYDIR}/*mbcolor.conkyrc sd "own_window_transparent.*$" "own_window_transparent = false," ${CONKYDIR}/*mbcolor.conkyrc sd "own_window_transparent.*$" "own_window_transparent = true," ${CONKYDIR}/logo_mbcolor.conkyrc } win_bgcolor () { sd "own_window_colour .*=.*$" "own_window_colour = '${1}'," ${2} sd "own_window_transparent.*$" "own_window_transparent = false," ${2} } draw_borders_all () { sd "draw_borders.*$" "draw_borders = ${1}," ${CONKYDIR}/*mbcolor.conkyrc } draw_borders () { sd "draw_borders.*$" "draw_borders = ${1}," ${2} } stippled_borders_all () { sd "stippled_borders.*$" "stippled_borders = ${1}," ${CONKYDIR}/*mbcolor.conkyrc sd "draw_borders.*$" "draw_borders = true," ${CONKYDIR}/*mbcolor.conkyrc } stippled_borders () { sd "stippled_borders.*$" "stippled_borders = ${1}," ${2} sd "draw_borders.*$" "draw_borders = true," ${2} } default_color_all () { sd "default_color .*=.*$" "default_color = '${1}'," ${CONKYDIR}/*mbcolor.conkyrc } color0_all () { sd "color0 .*=.*$" "color0 = '${1}'," ${CONKYDIR}/*mbcolor.conkyrc } color1_all () { sd "color1 .*=.*$" "color1 = '${1}'," ${CONKYDIR}/*mbcolor.conkyrc } color2_all () { sd "color2 .*=.*$" "color2 = '${1}'," ${CONKYDIR}/*mbcolor.conkyrc } default_color () { sd "default_color .*=.*$" "default_color = '${1}'," ${2} } color0 () { sd "color0 .*=.*$" "color0 = '${1}'," ${2} } color1 () { sd "color1 .*=.*$" "color1 = '${1}'," ${2} } color2 () { sd "color2 .*=.*$" "color2 = '${1}'," ${2} } basefont_inc_all () { read FONTDEF <<< "$(grep "font .*=.*,$" ${BASECONKY} | cut -d'=' -f2,3 |cut -d"'" -f2)" FONT=${FONTDEF%:*} FONTSIZE=${FONTDEF#*=} ((FONTSIZE++)) sd "font .*=.*,$" "font = '${FONT}:size=${FONTSIZE}'," ${CONKYDIR}/*mbcolor.conkyrc } basefont_dec_all () { read FONTDEF <<< "$(grep "font .*=.*,$" ${BASECONKY} | cut -d'=' -f2,3 |cut -d"'" -f2)" FONT=${FONTDEF%:*} FONTSIZE=${FONTDEF#*=} ((FONTSIZE--)) sd "font .*=.*,$" "font = '${FONT}:size=${FONTSIZE}'," ${CONKYDIR}/*mbcolor.conkyrc } basefont_inc () { read FONTDEF <<< "$(grep "font .*=.*,$" ${1} | cut -d'=' -f2,3 |cut -d"'" -f2)" FONT=${FONTDEF%:*} FONTSIZE=${FONTDEF#*=} ((FONTSIZE++)) sd "font .*=.*,$" "font = '${FONT}:size=${FONTSIZE}'," ${1} } basefont_dec () { read FONTDEF <<< "$(grep "font .*=.*,$" ${1} | cut -d'=' -f2,3 |cut -d"'" -f2)" FONT=${FONTDEF%:*} FONTSIZE=${FONTDEF#*=} ((FONTSIZE--)) sd "font .*=.*,$" "font = '${FONT}:size=${FONTSIZE}'," ${1} } shades_all () { case "$1" in shadow) sd "draw_shades .*=.*,$" "draw_shades = true," ${CONKYDIR}/*mbcolor.conkyrc sd "draw_outline .*=.*,$" "draw_outline = false," ${CONKYDIR}/*mbcolor.conkyrc ;; outline) sd "draw_shades .*=.*,$" "draw_shades = false," ${CONKYDIR}/*mbcolor.conkyrc sd "draw_outline .*=.*,$" "draw_outline = true," ${CONKYDIR}/*mbcolor.conkyrc ;; *) sd "draw_shades .*=.*,$" "draw_shades = false," ${CONKYDIR}/*mbcolor.conkyrc sd "draw_outline .*=.*,$" "draw_outline = false," ${CONKYDIR}/*mbcolor.conkyrc ;; esac } shades () { case "$1" in shadow) sd "draw_shades .*=.*,$" "draw_shades = true," ${2} sd "draw_outline .*=.*,$" "draw_outline = false," ${2} ;; outline) sd "draw_shades .*=.*,$" "draw_shades = false," ${2} sd "draw_outline .*=.*,$" "draw_outline = true," ${2} ;; *) sd "draw_shades .*=.*,$" "draw_shades = false," ${2} sd "draw_outline .*=.*,$" "draw_outline = false," ${2} ;; esac } logosize () { sd "minimum_height.*$" "minimum_height = ${1}," ${CONKYDIR}/logo_mbcolor.conkyrc sd "minimum_width.*$" "minimum_width = ${1}," ${CONKYDIR}/logo_mbcolor.conkyrc sd "\{image ~.*$" "{image ~/.config/conky/images/mabox_3d.png -s ${1}x${1}}" ${CONKYDIR}/logo_mbcolor.conkyrc } pos () { def_x=${conky_gap_x:-30} def_y=${conky_gap_y:-60} sd "alignment .*=.*,$" "alignment = '${1}'," ${2} ### jak po środku to wyzerować gaps case "$1" in top_left|top_right|bottom_left|bottom_right) sd "gap_x .*=.*,$" "gap_x = ${def_x}," ${2} sd "gap_y .*=.*,$" "gap_y = ${def_y}," ${2} ;; top_middle|bottom_middle) sd "gap_x .*=.*,$" "gap_x = 0," ${2} sd "gap_y .*=.*,$" "gap_y = ${def_y}," ${2} ;; middle_left|middle_right) sd "gap_x .*=.*,$" "gap_x = ${def_x}," ${2} sd "gap_y .*=.*,$" "gap_y = 0," ${2} ;; middle_middle) sd "gap_x .*=.*,$" "gap_x = 0," ${2} sd "gap_y .*=.*,$" "gap_y = 0," ${2} ;; esac } gap_x () { sd "gap_x .*=.*,$" "gap_x = ${1}," ${2} } gap_y () { sd "gap_y .*=.*,$" "gap_y = ${1}," ${2} } setpos () { filename=${1##*/} name=${filename%%_mb*} title=${name//_/ } case "$LANG" in pl*) SUMM="Nowa pozycja dla Conky: ${title^}" BODY="\nNarysuj mały prostokąt na ekranie aby wyznaczyć nową pozycję...\n (ESC lub prawy klik anuluje" ABORTED_SUMM="Anulowano!" ABORTED_BODY="\n...operacja anulowana" ;; *) SUMM="Mark new position for ${title^} Conky" BODY="\nDraw small rectangle to mark new position...\n (ESC or right click to abort)" ABORTED_SUMM="Aborted!" ABORTED_BODY="\n... operation aborted!" ;; esac wmctrl -k on notify-send.sh -i mbcc --replace-file=/tmp/conkyctlfile "${SUMM}" "${BODY}" read -r X Y < <(slop -t 0 -l -b 3 --color=0.3,0.4,0.6,0.4 -f "%x %y") if [ -z "$X" ] then notify-send.sh -i mbcc --replace-file=/tmp/conkyctlfile "${ABORTED_SUMM}" "${ABORTED_BODY}" else pos top_left ${1} # improve gap_calculation here ((X=X+16)) ((Y=Y+16)) gap_x ${X} ${1} gap_y ${Y} ${1} case "$LANG" in pl*) THNX_SUMM="Dziękuję!" THNX_BODY="Zapisano nową pozycję ${title^} \n\tX: $X\n\tY: $Y" ;; *) THNX_SUMM="Thank you!" THNX_BODY="New position of ${title^} saved! \n\tX: $X\n\tY: $Y" ;; esac notify-send.sh -i mbcc --replace-file=/tmp/conkyctlfile "${THNX_SUMM}" "${THNX_BODY}" #wmctrl -k off fi } startone () { conky -c "${1}" update_session } startall () { for i in "$CONKYDIR"/*_mbcolor*; do if pgrep -af "conky .*${i}" >/dev/null; then : else conky -c "${i}" fi done update_session } kill () { pkill -f "conky .*${1}" update_session } single () { case "$LANG" in pl*) POSITION="Pozycja" MARKNEWPOS="Nowa pozycja (zaznacz na ekranie)..." ALIGNMENT="Wyrównanie" HORIZONTAL_GAP="Odstęp poziomy" VERTICAL_GAP="Odstęp pionowy" COLORS="Kolory" DEFCOLOR="Domyślny kolor (tekst i ramka)" COLOR_0="Kolor 0 (tekst2)" COLOR_1="Kolor 1 (większy tekst)" COLOR_2="Kolor 2 (pasek/graf)" BACKGROUND="Kolor tła" TRANSPARENT="Przezroczyste?" YES="Tak" NO="Nie" FONTS="Czcionka" SELECTFONT="Wybierz czcionkę..." INCREASE="Powiększ" DECREASE="Pomniejsz" OLINE="Obrys" SHADOW="Cień" DRAW="Rysuj" BORDERS="Obramowanie" EDIT="Edytuj plik" KILL="Zabij" LOGOSIZE="Rozmiar logo" SMALL="Małe" NORMAL="Normalne" BIG="Duże" STIPPLED_BORDERS="Nakrapiane" SOLID_LINE="linia ciągła" ;; *) POSITION="Position" MARKNEWPOS="New position (mark on the screen)..." ALIGNMENT="Alignment" HORIZONTAL_GAP="Horizontal Gap" VERTICAL_GAP="Vertical Gap" COLORS="Colors" DEFCOLOR="Default color (text and border)" COLOR_0="Color 0 (text2)" COLOR_1="Color 1 (bigger text)" COLOR_2="Color 2 (bars/graphs)" BACKGROUND="Background color" TRANSPARENT="Transparent?" YES="Yes" NO="No" FONTS="Font" SELECTFONT="Select Font..." INCREASE="Increase" DECREASE="Decrease" OLINE="Outline" SHADOW="Shadow" DRAW="Deaw" BORDERS="Borders" EDIT="Edit file" KILL="Kill" LOGOSIZE="Logo size" SMALL="Small" NORMAL="Normal" BIG="Big" STIPPLED_BORDERS="Stippled borders" SOLID_LINE="solid line" ;; esac filename=${1##*/} name=${filename%%_mb*} title=${name//_/ } me="colorizer-conky -s" read POS <<< "$(grep alignment ${1} | cut -d'=' -f2 | cut -d"'" -f2)" read GAPX <<< "$(grep gap_x ${1} | cut -d'=' -f2 | cut -d"," -f1)" read GAPY <<< "$(grep gap_y ${1} | cut -d'=' -f2 | cut -d"," -f1)" read WINTRANS <<< "$(grep own_window_transparent ${1} | cut -d'=' -f2 | cut -d"," -f1)" read FONTDEF <<< "$(grep "font .*=.*,$" ${1} | cut -d'=' -f2,3 |cut -d"'" -f2)" FONT=${FONTDEF%:*} FONTSIZE=${FONTDEF#*=} read WINCLR <<< "$(grep own_window_colour ${1} | cut -d'=' -f2 | cut -d"'" -f2)" [[ $WINCLR =~ ^#.* ]] && : || WINCLR="#${1}" read CLR <<< "$(grep default_color ${1} | cut -d'=' -f2 | cut -d"'" -f2)" [[ $CLR =~ ^#.* ]] && : || CLR="#${CLR}" read CLR0 <<< "$(grep color0 ${1} | cut -d'=' -f2 | cut -d"'" -f2)" [[ $CLR0 =~ ^#.* ]] && : || CLR0="#${CLR0}" read CLR1 <<< "$(grep color1 ${1} | cut -d'=' -f2 | cut -d"'" -f2)" [[ $CLR1 =~ ^#.* ]] && : || CLR1="#${CLR1}" read CLR2 <<< "$(grep color2 ${1} | cut -d'=' -f2 | cut -d"'" -f2)" [[ $CLR2 =~ ^#.* ]] && : || CLR2="#${CLR2}" read OUTLINE <<< "$(grep draw_outline ${1} | cut -d'=' -f2 | cut -d"," -f1)" read SHADES <<< "$(grep draw_shades ${1} | cut -d'=' -f2 | cut -d"," -f1)" SHADOWS="no" [[ "$OUTLINE" == "true" ]] && SHADOWS="outline" [[ "$SHADES" == "true" ]] && SHADOWS="shadow" read BORD <<< "$(grep draw_borders ${1} | cut -d'=' -f2 | cut -d"," -f1)" read STIP <<< "$(grep stippled_borders ${1} | cut -d'=' -f2 | cut -d"," -f1)" [[ "$WINTRANS" == false ]] && BG="bgcolor='$WINCLR'" || BG="" out+=("^sep(Conky: [ ${title^} ])") out+=("^sep($POSITION)") out+=(" $MARKNEWPOS,conkyctl setpos ${1};$me") out+=("^sep()") out+=("$ALIGNMENT [ $POS ],^checkout(pos)") out2+=("^tag(pos)") out2+=("^sep($POSITION)") out2+=("TopLeft,conkyctl pos top_left ${1};$me") out2+=("Top,conkyctl pos top_middle ${1};$me") out2+=("TopRight,conkyctl pos top_right ${1};$me") out2+=("Left,conkyctl pos middle_left ${1};$me") out2+=("Center,conkyctl pos middle_middle ${1};$me") out2+=("Right,conkyctl pos middle_right ${1};$me") out2+=("BottomLeft,conkyctl pos bottom_left ${1};$me") out2+=("Bottom,conkyctl pos bottom_middle ${1};$me") out2+=("BottomRight,conkyctl pos bottom_right ${1};$me") out+=("$HORIZONTAL_GAP [ $GAPX ],^checkout(gapx)") out2+=("^tag(gapx)") out2+=("^sep($HORIZONTAL_GAP)") for i in 0 10 20 30 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360; do out2+=("${i},conkyctl gap_x ${i} ${1};$me") done out+=("$VERTICAL_GAP [ $GAPY ],^checkout(gapy)") out2+=("^tag(gapy)") out2+=("^sep($VERTICAL_GAP)") for i in 0 10 20 30 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360; do out2+=("${i},conkyctl gap_y ${i} ${1};$me") done if [[ "$1" =~ "logo_mbcolor" ]]; then read LSIZE <<< "$(grep minimum_height ${1} | cut -d'=' -f2 | cut -d"," -f1)" out+=("^sep($LOGOSIZE)") out+=("$LOGOSIZE [ $LSIZE ],^checkout(logosize)") out2+=("^tag(logosize)") out2+=("^sep($LOGOSIZE)") out2+=("$SMALL 64px,conkyctl logosize 64;$me") out2+=("$NORMAL 128px,conkyctl logosize 128;$me") out2+=("$BIG 256px,conkyctl logosize 256;$me") fi out+=("^sep($COLORS)") if [[ "$1" != *"logo_mbcolor"* ]]; then [[ "$CLR" != "#" ]] && out+=(" AbCd $DEFCOLOR,^pipe(mbclr '$CLR' conkyctl default_color '${DEFCOLOR}' '$me' ${1})") [[ "$CLR0" != "#" ]] && out+=(" AbCd $COLOR_0,^pipe(mbclr '$CLR0' conkyctl color0 '$COLOR_0' '$me' ${1})") [[ "$CLR1" != "#" ]] && out+=(" AbCd $COLOR_1,^pipe(mbclr '$CLR1' conkyctl color1 '$COLOR_1' '$me' ${1})") [[ "$CLR2" != "#" ]] && out+=(" AbCd $COLOR_2,^pipe(mbclr '$CLR2' conkyctl color2 '$COLOR_2' '$me' ${1})") out+=("^sep()") fi if [ "$WINTRANS" == false ];then out+=(" AbCd $BACKGROUND,^checkout(transsingle)") else out+=("transparent $BACKGROUND,^checkout(transsingle)") fi out+=("^sep()") out2+=("^tag(transsingle)") out2+=("^sep($TRANSPARENT)") out2+=("$YES,conkyctl transparent true ${1};$me") out2+=("$NO,conkyctl transparent false ${1};$me") out2+=("^sep()") out2+=(" $BACKGROUND,^pipe(mbclr '$WINCLR' conkyctl win_bgcolor '${BACKGROUND}' '$me' ${1})") if [[ "$1" != *"logo_mbcolor"* ]]; then if [[ "$1" != *"quoter_mbcolor"* ]]; then out+=("$FONTS [ $FONT $FONTSIZE ],^checkout(fontsingle)") out2+=("^tag(fontsingle)") out2+=("^sep($FONTS)") out2+=("$SELECTFONT,mb-setfont conky_single ${1};$me") out2+=("^sep()") out2+=("++ $INCREASE,conkyctl basefont_inc ${1};$me") out2+=("-- $DECREASE,conkyctl basefont_dec ${1};$me") fi out+=("$OLINE/$SHADOW [ $SHADOWS ],^checkout(outline2)") out2+=("^tag(outline2)") out2+=("^sep($DRAW $OLINE/$SHADOW?)") out2+=("$NO,conkyctl shades no ${1};$me") out2+=("^sep()") out2+=("$DRAW $SHADOW,conkyctl shades shadow ${1};$me") out2+=("$DRAW $OLINE,conkyctl shades outline ${1};$me") out+=("^sep()") fi out+=("$BORDERS [ $BORD $STIP ],^checkout(bordersingle)") out2+=("^tag(bordersingle)") out2+=("^sep($DRAW $BORDERS?)") out2+=("$YES,conkyctl draw_borders true ${1};$me") out2+=("$NO,conkyctl draw_borders false ${1};$me") out2+=("^sep($STIPPLED_BORDERS ?)") out2+=("0 ($SOLID_LINE),conkyctl stippled_borders 0 ${1};$me") out2+=("^sep()") out2+=("1,conkyctl stippled_borders 1 ${1};$me") out2+=("2,conkyctl stippled_borders 2 ${1};$me") out2+=("3,conkyctl stippled_borders 3 ${1};$me") out2+=("4,conkyctl stippled_borders 4 ${1};$me") out+=("^sep()") out+=(" $EDIT ${title^},xdg-open ${1}") out+=("^sep()") out+=(" $KILL ${title^},conkyctl kill ${1##*/};${me}") printf '%s\n' "${out[@]}" printf '%s\n' "${out2[@]}" exit 0 } case "$1" in transparent_all) transparent_all "$2";; transparent) transparent "$2" "$3";; win_bgcolor_all) win_bgcolor_all "$2";; win_bgcolor) win_bgcolor "$2" "$3";; draw_borders_all) draw_borders_all "$2" ;; draw_borders) draw_borders "$2" "$3";; stippled_borders_all) stippled_borders_all "$2" ;; stippled_borders) stippled_borders "$2" "$3";; default_color_all) default_color_all "$2";; color0_all) color0_all "$2";; color1_all) color1_all "$2";; color2_all) color2_all "$2";; default_color) default_color "$2" "$3";; color0) color0 "$2" "$3";; color1) color1 "$2" "$3";; color2) color2 "$2" "$3";; basefont_inc_all) basefont_inc_all;; basefont_dec_all) basefont_dec_all;; basefont_inc) basefont_inc "$2";; basefont_dec) basefont_dec "$2";; setfont_all) setfont_all;; serfont) setfont;; shades_all) shades_all "$2";; shades) shades "$2" "$3";; logosize) logosize "$2";; single) single "$2";; pos) pos "$2" "$3";; gap_x) gap_x "$2" "$3";; gap_y) gap_y "$2" "$3";; setpos) setpos "$2";; startone) startone "$2";; startall) startall;; kill) kill "$2";; reset) reset ;; *) : ;; esac