-
Notifications
You must be signed in to change notification settings - Fork 1
/
clip-note
86 lines (73 loc) · 2.89 KB
/
clip-note
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/bin/bash
TITLE="Clip Note"
# Файл для хранения настроек
CFG_FILE=~/.clipnoterc
TMP_NOTE="/tmp/clipnote.$$"
DIR_DATE=$(date +%d-%m-%Y)
NOTE_DIR=
# Загружаем настройки, если файл существует
[ -f "${CFG_FILE}" ] && source "${CFG_FILE}"
# Функция удаляет временный файл с содержимым заметки
function rm_temp_note(){
[ -f "${TMP_NOTE}" ] && rm -f "${TMP_NOTE}"
}
function exit_note(){
rm_temp_note
exit $1
}
# Если путь к папке введен, то функция сохраняет его в файл настроек
function save_config(){
echo "$1" > ${CFG_FILE}
}
# Функция сохраняет заметку в папку назначения.
# Если заметка с таким названием существует,
# то будет создан бэкап (note.txt.1, note.txt.2 и т. д.)
function save_note(){
mv --backup=numbered --suffix=_ "$1" "$2"
}
# Функция помещает содержимое буфера обмена в текстовое поле и выводит пользователю
function set_note_text(){
xclip -o | zenity --width=700 --height=400 --title "${TITLE} - Текст заметки" --text-info --editable > "${TMP_NOTE}"
}
# Функция устанавливает путь к папке сохранения.
# В основном каталоге создаются подкаталоги с именем дд-мм-ГГГГ
function set_note_dir(){
# папка, в которую будут сохранятся заметки
if [ "${CLIP_NOTE_DIR}" ]; then
NOTE_DIR="${CLIP_NOTE_DIR}"
else
NOTE_DIR=$(zenity --title "${TITLE} - Выберите папку для сохранения заметок" --file-selection --directory)
if [ "${NOTE_DIR}" ]; then
save_config 'CLIP_NOTE_DIR='"${NOTE_DIR}"''
else
notify-send -t 4000 -i icon_ALERT "${TITLE}" "Заметка отменена!"
exit_note 1
fi
fi
NOTE_DIR="${NOTE_DIR}/${DIR_DATE}"
[ -d "${NOTE_DIR}" ] || mkdir -p "${NOTE_DIR}"
}
# Функция устанавливает название заметки
function set_note_name(){
name=$(zenity --width=300 --title "${TITLE} - Название заметки" --entry --text "Введите название заметки")
if [ $? -eq 0 ]; then
if [ "`echo ${name}`" == "" ]; then
name="Заметка $$"
fi
save_note "${TMP_NOTE}" "${NOTE_DIR}/$name.txt"
notify-send -t 4000 -i icon_OK "${TITLE} - Заметка сохранена" "Сохранено в $name.txt"
else
notify-send -t 4000 -i icon_ALERT "${TITLE}" "Заметка отменена!"
exit_note 1
fi
}
rm_temp_note
set_note_text
if [ $(cat ${TMP_NOTE} | wc -c) != '0' ]; then
set_note_dir
set_note_name
else
notify-send -t 4000 -i icon_ALERT "${TITLE}" "Заметка отменена!"
exit_note 1
fi
exit_note 0