I otvorim duha i krenem d čukam...
Ima dakle mnogo varijanti sticky notes-a za linux. Svako okruženje ima svoje + mali milion nezavisnih. Nekako mi xfce4-notes naj-kul, al' malo, malo, pa neće da sluša i po startovanju sistema automatski se pojavi na ekranu (iako je podešeno da se samo smesti u tray) .. i to mi je bio okidač da napravim nešto slično.
Doduše, ovo nema veze sa system tray-om, niti bilo kakvim demončićima, već se radi o jednoj prostoj i malenoj bash skripti preko koje se vrši interakcija sa zenity dialog-box frejmworkom.
Skriptu sam krstio znotes i ima samo jedan argument koji može da bude `new` ili `list`
1) znotes new - otvara mali --forms dijalog gde se upisuje naziv fajla koji će kasnije da se pojavi u listi. Čisto da se znade, razmaci u nazivu fajlova će biti zamenjeni sa _.
2) znotes list - izbacuje listu (--list) prethodno kreiranih znotes fajlova. Znotes fajlovi su inače, obični tekst/fajlovi bez ekstenzije.
Onda kada se selektuje fajl iz liste pa se klikne na LOAD SELECTED, otvara se --text-info dijalog gde se piše/edituje podsetnik. Oba dugmeta BACK/MEMORIZE će vas baciti nazad na listu s' tom razlikom što će MEMORIZE snimiti promene a BACK - neće ( koja logika, a? D: ) Izlaz iz znotes-a se dakle vrši iz list dijaloga klikom na dugme EXIT. No, ako se ništa ne selektuje sa liste i LOAD SELECTED će učiniti isto - exit. I to mu dođe ne moj propust, već nemogućnost da određeno dugme bude zaključano dok se ne izabere stavka sa liste (zenity izgleda nema to implementirano ili ja nisam dovoljno obratio pažnju).
Što se tiče same konfiguracije, u pitanju su linije 19, 20, 21 u samoj skripti.
19 - Direktorijum gde se smeštaju fajlovi. Podrazumevani je ~/.local/share/znotes. Kome ne odgovara, neka menja.
20 i 21 su podrazumevana širina i visina dijaloga.
Dakle, prekopirati sve iz code taga dole u novi fajl pod imenom znotes (a može i bio koje drugo ime ako vam ovo nije kako treba) u $HOME/bin (ili bilo koji `vaš` primarni bin),
ondak chmod a+x ~/bin/znotes i to mu dođe to.
Nakon toga, komande znotes new i znotes list treba da dadnu rezultat na ekranu.
Evo i koda pa probajte :
Code (bash):
#!/bin/bash
## Memos and notes based on Zenity; aka - `znotes`
#
# Licence: This file is restricted as much as openbox is. Go figure that.
# Author: Srđan Vukić <[email protected]>
# Date: 03.03.2017
#
# Program name
declare -r bsn=$(basename $0)
# Allow only one instance of znotes
bsnrun=$(ps h -C $bsn | grep -v $$ | wc -l);
[[ $bsnrun > 1 ]] && exit;
## Basic config
# Directory where znote files reside
# $bsn is this very script name
declare -r zn_work_loc=$HOME/.local/share/$bsn
declare -r zn_lw=400; # Default width
declare -r zn_lh=600; # Default height
## End of basic config
[[ -d $zn_work_loc ]] || mkdir -p $zn_work_loc
declare -a all_notes="$(ls -i ${zn_work_loc})"
# Display list of memo/notes
function zn_list
{
local note;
if [[ -z $all_notes ]]
then zenity --info \
--text="There are no memo/notes to view/edit.\
\nYou may want to try with <b>$bsn new</b> command." 2> /dev/null
else
local zty=$(zenity --list \
--radiolist --width=$zn_lw --height=$zn_lh \
--title="Choose the note/memo to view/edit" \
--column="Select" --column="Existing memo/note" $all_notes \
--cancel-label="EXIT" --ok-label="LOAD SELECTED" 2> /dev/null)
if [[ -z $zty ]]
then
if pgrep -x "$bsn" > /dev/null
then pkill -f "$bsn"; fi
else
zn_view_edit $zty 2> /dev/null
fi
fi
}
# Make new znote
function _new
{
local fnpath
zty=$(zenity --forms \
--show-header --width=400 \
--title="Create new note" \
--text="Provide a name for your note" \
--add-entry="Name:" 2> /dev/null)
case $? in
0)
if [[ -z $zty ]]
then
notify-send \
--icon=face-worried \
--expire-time=500 'Name for new memo/note cannot be empty'
else
zty=${zty// /_}; fnpath="$zn_work_loc/$zty"
if [[ -f $fnpath ]]
then
notify-send \
--icon=face-monkey \
--expire-time=500 'This memo/note already exists. Nothing happened.'
else
touch $fnpath
notify-send --icon=face-cool 'New memo/note successfully added!'
fi
fi
;;
1)
notify-send \
--icon=face-sad \
--expire-time=500 "No memo/note has been added." ;;
-1)
notify-send \
--icon=face-devilish \
--expire-time=500 "Kung-fu error has occurred!" ;;
esac
}
# View/edit selected note
function zn_view_edit
{
local file=$zn_work_loc/$1
local t_file="$file.$(date +%s%N).tmp"
local act="--text-info \
--title=$1 --filename=$file \
--width=$zn_lw --height=$zn_lh \
--editable --ok-label=MEMORIZE \
--cancel-label=BACK"
[[ ! -f $t_file ]] || rm -f $t_file
zenity $act > $t_file
if [[ $? -eq 0 ]]
then
cat $t_file > $file
notify-send \
--icon=face-smile-big \
--expire-time=1000 "Memo/note '$1' saved"
rm -f $t_file && sleep 0.1s
zn_list
elif [[ $? -eq 1 ]]
then
rm -f $t_file && sleep 0.1s
zn_list
else
sleep 0.1s && rm -f $t_file
fi
}
# Do `this` or `that`
case $1 in
new)_new; ;;
list) zn_list; ;;
*)
zenity --info \
--text="Unknown parameter <b>'$1'</b>.\
\n\nYou may want to try with\
\n<b>$bsn new</b> or <b>$bsn list</b>\ncommands." 2> /dev/null
;;
esac
#!/bin/bash
## Memos and notes based on Zenity; aka - `znotes`
#
# Licence: This file is restricted as much as openbox is. Go figure that.
# Author: Srđan Vukić <[email protected]>
# Date: 03.03.2017
#
# Program name
declare -r bsn=$(basename $0)
# Allow only one instance of znotes
bsnrun=$(ps h -C $bsn | grep -v $$ | wc -l);
[[ $bsnrun > 1 ]] && exit;
## Basic config
# Directory where znote files reside
# $bsn is this very script name
declare -r zn_work_loc=$HOME/.local/share/$bsn
declare -r zn_lw=400; # Default width
declare -r zn_lh=600; # Default height
## End of basic config
[[ -d $zn_work_loc ]] || mkdir -p $zn_work_loc
declare -a all_notes="$(ls -i ${zn_work_loc})"
# Display list of memo/notes
function zn_list
{
local note;
if [[ -z $all_notes ]]
then zenity --info \
--text="There are no memo/notes to view/edit.\
\nYou may want to try with <b>$bsn new</b> command." 2> /dev/null
else
local zty=$(zenity --list \
--radiolist --width=$zn_lw --height=$zn_lh \
--title="Choose the note/memo to view/edit" \
--column="Select" --column="Existing memo/note" $all_notes \
--cancel-label="EXIT" --ok-label="LOAD SELECTED" 2> /dev/null)
if [[ -z $zty ]]
then
if pgrep -x "$bsn" > /dev/null
then pkill -f "$bsn"; fi
else
zn_view_edit $zty 2> /dev/null
fi
fi
}
# Make new znote
function _new
{
local fnpath
zty=$(zenity --forms \
--show-header --width=400 \
--title="Create new note" \
--text="Provide a name for your note" \
--add-entry="Name:" 2> /dev/null)
case $? in
0)
if [[ -z $zty ]]
then
notify-send \
--icon=face-worried \
--expire-time=500 'Name for new memo/note cannot be empty'
else
zty=${zty// /_}; fnpath="$zn_work_loc/$zty"
if [[ -f $fnpath ]]
then
notify-send \
--icon=face-monkey \
--expire-time=500 'This memo/note already exists. Nothing happened.'
else
touch $fnpath
notify-send --icon=face-cool 'New memo/note successfully added!'
fi
fi
;;
1)
notify-send \
--icon=face-sad \
--expire-time=500 "No memo/note has been added." ;;
-1)
notify-send \
--icon=face-devilish \
--expire-time=500 "Kung-fu error has occurred!" ;;
esac
}
# View/edit selected note
function zn_view_edit
{
local file=$zn_work_loc/$1
local t_file="$file.$(date +%s%N).tmp"
local act="--text-info \
--title=$1 --filename=$file \
--width=$zn_lw --height=$zn_lh \
--editable --ok-label=MEMORIZE \
--cancel-label=BACK"
[[ ! -f $t_file ]] || rm -f $t_file
zenity $act > $t_file
if [[ $? -eq 0 ]]
then
cat $t_file > $file
notify-send \
--icon=face-smile-big \
--expire-time=1000 "Memo/note '$1' saved"
rm -f $t_file && sleep 0.1s
zn_list
elif [[ $? -eq 1 ]]
then
rm -f $t_file && sleep 0.1s
zn_list
else
sleep 0.1s && rm -f $t_file
fi
}
# Do `this` or `that`
case $1 in
new)_new; ;;
list) zn_list; ;;
*)
zenity --info \
--text="Unknown parameter <b>'$1'</b>.\
\n\nYou may want to try with\
\n<b>$bsn new</b> or <b>$bsn list</b>\ncommands." 2> /dev/null
;;
esac
[Ovu poruku je menjao plus_minus dana 04.03.2017. u 12:54 GMT+1]
about:networking