[ plus_minus @ 04.03.2017. 10:59 ] @
Juče mi bilo poprilično dosadno. Baš nisam imao šta d radim i rekoh sebi: "E, sad ću!" 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 [Ovu poruku je menjao plus_minus dana 04.03.2017. u 12:54 GMT+1] |