Да конечно. У меня плохая память и постоянно приходится все записывать. В файл писать мне не нравится, а все программы с липкими записками меня не устраивают, так как сидят в памяти или странные. Вот у меня появилась идея реализовать это средствами bash.
Имеется 2 скрипта: add_note.sh и del_note.sh. Понятно что они делают - добавляют и удаляют заметки с рабочего стола. Они еще не особо работоспособны, по ходу пользования допишу нужные мне функции.
И так мы создаем в домашней папке рабочий каталог ".bash_notes", а в нем еще три каталога - "resource", "notes" и "temp". Думаю понятно из названия для чего они нужны. Так же нам потребуется создать файл "config.cfg" в папке ".bash_notes" такого содержания:
font=/usr/share/fonts/truetype/ttf-droid/festus.ttf
pointsize=14
Шрифт указываем свой, размер текста тоже по усмотрению.
В папку "resource" сохраняем картинку нашей заметки:

Все, теперь переходим к скриптам. Их сохраняем под соответствующими именами и кидаем например в "/usr/bin".
#!/bin/bash
# Jun 1 20:39:01 MSD 2010
cd $HOME/.bash_notes/ #del
#if [ ! -e ./config.cfg ]; then
# echo > config.cfg
#fi
s=50 #Интервал между строками
i=0
words_array[$i]=""
source config.cfg #подхватываем переменные из файла
#делаем копию обоины
if [ ! -e ./resource/background ]
then
cp `gconftool-2 --get /desktop/gnome/background/picture_filename` ./resource/background
fi
#Ввод данных - тема, текст, координаты по Х, координаты по У
echo "Введите тему записки:"
read item_note
echo "Введите текст записки:"
read text_note
echo $text_note > "./notes/$item_note"
echo "Введите положение по оси X:"
read x_note
echo $x_note >> "./notes/$item_note"
echo "Введите положение по оси Y:"
read y_note
echo $y_note >> "./notes/$item_note"
#Дробим текст и пишем его в массив
for c in $text_note
do
if [ $(echo "${words_array[$i]}$c" | wc -c) -gt 40 ]
then
((i++))
words_array[$i]=""
fi
words_array[$i]+="$c "
done
echo "well done!"
#Накладываем текст на заметку и обоину
cp ./resource/note.png ./temp/note.png
if [ ! -e ./temp/background ]; then
cp ./resource/background ./temp/background
fi
for (( j=0 ; j<=i ; j++ ))
do
let s=s+20
convert ./temp/note.png -font $font -pointsize $pointsize -gravity NorthWest -draw "text 35,$s '${words_array[$j]}' " ./temp/note.png
done
#Хитрый способ получения пути к новому файлу с заметкой
cd ./temp/
w="`pwd ./background`/background"
cd ..
#Наносим заметки на новую обоину
convert ./temp/background ./temp/note.png -compose Over -gravity NorthWest -geometry +"$x_note"+"$y_note" -composite ./temp/background
gconftool-2 --type string --set /desktop/gnome/background/picture_filename $w
#Удаляем временную заметку
rm ./temp/note.png
exit
#!/bin/bash
#Jun 4 22:35:01 MSD 2010
cd $HOME/.bash_notes/ #del
s=50 #Интервал между строками
i=0
words_array[$i]=""
source config.cfg #подхватываем переменные из файла
#Проверяем, есть ли заметки для удаления
if [ `ls ./notes/ | wc -l` = "0" ]
then
echo "Заметок для удаления нет"
exit
fi
echo 'Для удаления заметки введите ее заголовок'
echo 'Для удаления всех заметок введите "all"'
echo ''
ls ./notes/
echo ''
read del_note_title
#Проверяем, не хочу ли я удалить все заметки
if [ "$del_note_title" = "all" ]
then
rm ./notes/*
echo 'Все заметки удалены'
rm ./temp/background
cd ./resource/
m="`pwd ./background`/background"
cd ..
gconftool-2 --type string --set /desktop/gnome/background/picture_filename "$m"
exit
fi
#Проверяем, какую заметку именно из списка удалить я хочу
for c in `ls ./notes`
do
if [ "$c" = "$del_note_title" ]
then
rm ./notes/$del_note_title
echo 'Заметка удалена'
rm ./temp/background
cd ./resource/
m="`pwd ./background`/background"
cd ..
cp ./resource/background ./temp/background
gconftool-2 --type string --set /desktop/gnome/background/picture_filename "$m"
# else
# echo 'Нет заметки с таким именем'
# exit
fi
done
#Печатаем все заметки, которые остались
for c in `ls ./notes`
do
text_note=` sed -n '1p' ./notes/$c`
x_note=` sed -n '2p' ./notes/$c`
y_note=` sed -n '3p' ./notes/$c`
#Дробим текст и пишем его в массив
for c in $text_note
do
if [ $(echo "${words_array[$i]}$c" | wc -c) -gt 40 ]
then
((i++))
words_array[$i]=""
fi
words_array[$i]+="$c "
done
cp ./resource/note.png ./temp/note.png
for (( j=0 ; j<=i ; j++ ))
do
let s=s+20
convert ./temp/note.png -font $font -pointsize $pointsize -gravity NorthWest -draw "text 35,$s '${words_array[$j]}' " ./temp/note.png
done
cd ./temp/
w="`pwd ./background`/background"
cd ..
convert ./temp/background ./temp/note.png -compose Over -gravity NorthWest -geometry +"$x_note"+"$y_note" -composite ./temp/background
gconftool-2 --type string --set /desktop/gnome/background/picture_filename $w
rm ./temp/note.png
done
exit
В основном я все прокоментил, думаю трудностей возникнуть не должно. Если есть конструктивные предложения или видите явные ошибки, пишите, подправим.