mirror of
https://github.com/Llewellynvdm/Tomb.git
synced 2024-11-25 14:17:41 +00:00
more code to integrate gui elements and script
This commit is contained in:
parent
0bd8f4b4b6
commit
bd370c1ef5
47
src/monmort.xpm
Normal file
47
src/monmort.xpm
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/* XPM */
|
||||||
|
|
||||||
|
/* The Tomb icon is an artwork by Jordi aka MonMort
|
||||||
|
a nomadic graffiti artist from Barcelona */
|
||||||
|
|
||||||
|
const char *monmort[] = {
|
||||||
|
/* columns rows colors chars-per-pixel */
|
||||||
|
"32 32 5 1",
|
||||||
|
" c #000000",
|
||||||
|
". c #010101",
|
||||||
|
"X c #020202",
|
||||||
|
"o c #C1C1C1",
|
||||||
|
"O c None",
|
||||||
|
/* pixels */
|
||||||
|
"OO OO",
|
||||||
|
"O oooooooooooooooooooooooooooo O",
|
||||||
|
" oooooooooooooooooooooooooooooo ",
|
||||||
|
" oooooooooooooooooooooooooooooo ",
|
||||||
|
" oooooooo X oooooo ooo ",
|
||||||
|
" oooooooo oooooo ooo ",
|
||||||
|
" oooooooo oooooo ooo ",
|
||||||
|
" oooooooo oooooo oooX",
|
||||||
|
" oooooooo X oooooo ooo ",
|
||||||
|
" oooooooo oooooo ooo ",
|
||||||
|
" oooooooo Xoooooo ooo ",
|
||||||
|
" oooooooo oooooo X ooo ",
|
||||||
|
" oooooooo X oooooo ooo ",
|
||||||
|
" oooooooooooooooooooooooooooooo ",
|
||||||
|
" oooooooooooooooooooooo oooooooX",
|
||||||
|
" ooooooooooooooooooooooo oooooo ",
|
||||||
|
" oooooooooooooooo X ooooo ",
|
||||||
|
"O ooooooooooooooooooooooooooooo ",
|
||||||
|
"OO oooooooooooooooooo O",
|
||||||
|
"OOOOOOOOOOOO oooo ooo ooo ooo OO",
|
||||||
|
"OOOOOOOOOOOOO ooo ooo oooXooo OO",
|
||||||
|
"OOOOOOOOOOOOO oooXooo ooo ooo OO",
|
||||||
|
"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
|
||||||
|
"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
|
||||||
|
"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
|
||||||
|
"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
|
||||||
|
"OOOOOOOOOOOOO ooo ooo ooo oooXOO",
|
||||||
|
"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
|
||||||
|
"OOOOOOOOOOOOOXooo ooo ooo ooo OO",
|
||||||
|
"OOOOOOOOOOOOO ooooooooooooooo OO",
|
||||||
|
"OOOOOOOOOOOOOO ooooooooooooo OOO",
|
||||||
|
"OOOOOOOOOOOOOOO OOOO"
|
||||||
|
};
|
67
src/tomb
67
src/tomb
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/zsh
|
||||||
#
|
#
|
||||||
# Tomb
|
# Tomb
|
||||||
#
|
#
|
||||||
@ -30,7 +30,7 @@
|
|||||||
VERSION=0.9
|
VERSION=0.9
|
||||||
DATE=Jan/2011
|
DATE=Jan/2011
|
||||||
|
|
||||||
PATH=/usr/bin:/usr/sbin:/bin:/sbin
|
# PATH=/usr/bin:/usr/sbin:/bin:/sbin
|
||||||
|
|
||||||
# standard output message routines
|
# standard output message routines
|
||||||
# it's always useful to wrap them, in case we change behaviour later
|
# it's always useful to wrap them, in case we change behaviour later
|
||||||
@ -126,6 +126,11 @@ ask_password() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# drop privileges
|
||||||
|
exec_as_user() {
|
||||||
|
func "executing as user '$SUDO_USER': ${(f)@}"
|
||||||
|
sudo -u $SUDO_USER ${@} &
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
############################
|
############################
|
||||||
@ -134,16 +139,15 @@ ask_password() {
|
|||||||
|
|
||||||
notice "Tomb - simple commandline tool for encrypted storage"
|
notice "Tomb - simple commandline tool for encrypted storage"
|
||||||
act "version $VERSION ($DATE) by Jaromil @ dyne.org"
|
act "version $VERSION ($DATE) by Jaromil @ dyne.org"
|
||||||
act ""
|
func "invoked with args \"${(f)@}\" "
|
||||||
func "invoked with args \"$*\" "
|
|
||||||
func "running on `date`"
|
func "running on `date`"
|
||||||
|
|
||||||
|
|
||||||
OPTS=`getopt -o hvs:k: -n 'tomb' -- "$@"`
|
OPTS=`getopt -o hvs:k:S -n 'tomb' -- "$@"`
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-h)
|
-h)
|
||||||
|
act ""
|
||||||
notice "Syntax: tomb [options] command [file] [mountpoint | size]"
|
notice "Syntax: tomb [options] command [file] [mountpoint | size]"
|
||||||
act ""
|
act ""
|
||||||
notice "Options:"
|
notice "Options:"
|
||||||
@ -151,6 +155,7 @@ while true; do
|
|||||||
act "-v print out the version information for this tool"
|
act "-v print out the version information for this tool"
|
||||||
act "-s size of the storage file when creating one (in MBytes)"
|
act "-s size of the storage file when creating one (in MBytes)"
|
||||||
act "-k path to the key to use for decryption"
|
act "-k path to the key to use for decryption"
|
||||||
|
act "-S acquire super user rights if possible"
|
||||||
act ""
|
act ""
|
||||||
notice "Commands:"
|
notice "Commands:"
|
||||||
act "create create a new encrypted storage FILE and keys"
|
act "create create a new encrypted storage FILE and keys"
|
||||||
@ -159,6 +164,7 @@ while true; do
|
|||||||
echo; exit 2 ;;
|
echo; exit 2 ;;
|
||||||
-v)
|
-v)
|
||||||
# print out the GPL license in this file
|
# print out the GPL license in this file
|
||||||
|
act ""
|
||||||
cat $0 | awk '
|
cat $0 | awk '
|
||||||
BEGIN { license=0 }
|
BEGIN { license=0 }
|
||||||
/^# This source/ { license=1 }
|
/^# This source/ { license=1 }
|
||||||
@ -167,6 +173,37 @@ BEGIN { license=0 }
|
|||||||
'
|
'
|
||||||
act ""
|
act ""
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
|
-S) GETPRIV=true; shift 1 ;;
|
||||||
|
*) break ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
id | grep root > /dev/null
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
error "This program must be run as root to produce results"
|
||||||
|
if [ "$GETPRIV" = "true" ]; then
|
||||||
|
which gksu > /dev/null
|
||||||
|
if [ $? = 0 ]; then
|
||||||
|
act "Using gksu for root execution of 'tomb ${(f)@}'"
|
||||||
|
gksu "tomb ${(f)@}"
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
which sudo > /dev/null
|
||||||
|
if [ $? = 0 ]; then
|
||||||
|
act "Using sudo for root execution of 'tomb ${(f)@}'"
|
||||||
|
sudo "tomb ${(f)@}"
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# now process the real options
|
||||||
|
OPTS=`getopt -o hvs:k:S -n 'tomb' -- "$@"`
|
||||||
|
while true; do
|
||||||
|
case "$1" in
|
||||||
-s) SIZE=$2; shift 2 ;;
|
-s) SIZE=$2; shift 2 ;;
|
||||||
-k) KEY=$2; shift 2 ;;
|
-k) KEY=$2; shift 2 ;;
|
||||||
--) shift; break ;;
|
--) shift; break ;;
|
||||||
@ -180,11 +217,7 @@ if [ -z $CMD ]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
id | grep root > /dev/null
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
error "This program must be run as root to produce results"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
func "command: $CMD for file $FILE"
|
func "command: $CMD for file $FILE"
|
||||||
|
|
||||||
@ -193,7 +226,7 @@ tombtab=${tombdir}/fstab
|
|||||||
if ! [ -r ${tombtab} ]; then
|
if ! [ -r ${tombtab} ]; then
|
||||||
act "creating tomb filesystem tab in your home"
|
act "creating tomb filesystem tab in your home"
|
||||||
mkdir -p ${HOME}/.tomb
|
mkdir -p ${HOME}/.tomb
|
||||||
echo "# entombed filesystem information, see man tomb" > ${tombtab}
|
echo "# entombed filesystem information, see man tomb (TODO)" > ${tombtab}
|
||||||
echo "# format here is similar to the system wide fstab" >> ${tombtab}
|
echo "# format here is similar to the system wide fstab" >> ${tombtab}
|
||||||
echo "# <file system> <mount point> <type> <options> <key>" >> ${tombtab}
|
echo "# <file system> <mount point> <type> <options> <key>" >> ${tombtab}
|
||||||
fi
|
fi
|
||||||
@ -379,7 +412,9 @@ mount_tomb() {
|
|||||||
mount -t ext4 -o rw,noatime,nodev /dev/mapper/${mapper} ${MOUNT}
|
mount -t ext4 -o rw,noatime,nodev /dev/mapper/${mapper} ${MOUNT}
|
||||||
|
|
||||||
notice "encrypted storage $FILE succesfully mounted on $MOUNT"
|
notice "encrypted storage $FILE succesfully mounted on $MOUNT"
|
||||||
|
if [ $DISPLAY ]; then
|
||||||
|
exec_as_user tomb-gtk ${FILE} ${MOUNT}
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
umount_tomb() {
|
umount_tomb() {
|
||||||
@ -388,7 +423,7 @@ umount_tomb() {
|
|||||||
|
|
||||||
how_many_tombs="`ls /dev/mapper/tomb* 2>/dev/null | wc -w`"
|
how_many_tombs="`ls /dev/mapper/tomb* 2>/dev/null | wc -w`"
|
||||||
if [ $how_many_tombs = 0 ]; then
|
if [ $how_many_tombs = 0 ]; then
|
||||||
error "there is no tomb found to be mounted"
|
error "there is no open tomb to be closed"
|
||||||
return
|
return
|
||||||
elif [ $how_many_tombs = 1 ]; then
|
elif [ $how_many_tombs = 1 ]; then
|
||||||
mapper=`ls /dev/mapper/tomb* 2>/dev/null`
|
mapper=`ls /dev/mapper/tomb* 2>/dev/null`
|
||||||
@ -450,6 +485,8 @@ umount_tomb() {
|
|||||||
# fi
|
# fi
|
||||||
|
|
||||||
notice "crypt storage ${mapper} unmounted"
|
notice "crypt storage ${mapper} unmounted"
|
||||||
|
exec_as_user tomb-notify "Tomb closed:" "${FILE}
|
||||||
|
Rest In Peace."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -457,8 +494,10 @@ case "$CMD" in
|
|||||||
create) create_tomb ;;
|
create) create_tomb ;;
|
||||||
format) format_tomb ;;
|
format) format_tomb ;;
|
||||||
mount) mount_tomb ;;
|
mount) mount_tomb ;;
|
||||||
|
open) mount_tomb ;;
|
||||||
umount) umount_tomb ;;
|
umount) umount_tomb ;;
|
||||||
unmount) umount_tomb ;;
|
unmount) umount_tomb ;;
|
||||||
|
close) umount_tomb ;;
|
||||||
*) error "command \"$CMD\" not recognized"
|
*) error "command \"$CMD\" not recognized"
|
||||||
act "try -h for help"
|
act "try -h for help"
|
||||||
;;
|
;;
|
||||||
|
114
src/tomb-gtk.cpp
114
src/tomb-gtk.cpp
@ -1,106 +1,90 @@
|
|||||||
|
/* Tomb - encrypted storage undertaker
|
||||||
|
*
|
||||||
|
* (c) Copyright 2007-2011 Denis Roio <jaromil@dyne.org>
|
||||||
|
*
|
||||||
|
* This source code is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Public License as published
|
||||||
|
* by the Free Software Foundation; either version 3 of the License,
|
||||||
|
* or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This source code is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
* Please refer to the GNU Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Public License along with
|
||||||
|
* this source code; if not, write to:
|
||||||
|
* Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
#include <libnotify/notify.h>
|
||||||
|
|
||||||
/* The Tomb icon is an artwork by Jordi aka MonMort
|
/* The Tomb icon is an artwork by Jordi aka MonMort
|
||||||
a nomadic graffiti artist from Barcelona */
|
a nomadic graffiti artist from Barcelona */
|
||||||
const char *monmort[] = {
|
#include <monmort.xpm>
|
||||||
/* columns rows colors chars-per-pixel */
|
|
||||||
"32 32 5 1",
|
|
||||||
" c #000000",
|
|
||||||
". c #010101",
|
|
||||||
"X c #020202",
|
|
||||||
"o c #C1C1C1",
|
|
||||||
"O c None",
|
|
||||||
/* pixels */
|
|
||||||
"OO OO",
|
|
||||||
"O oooooooooooooooooooooooooooo O",
|
|
||||||
" oooooooooooooooooooooooooooooo ",
|
|
||||||
" oooooooooooooooooooooooooooooo ",
|
|
||||||
" oooooooo X oooooo ooo ",
|
|
||||||
" oooooooo oooooo ooo ",
|
|
||||||
" oooooooo oooooo ooo ",
|
|
||||||
" oooooooo oooooo oooX",
|
|
||||||
" oooooooo X oooooo ooo ",
|
|
||||||
" oooooooo oooooo ooo ",
|
|
||||||
" oooooooo Xoooooo ooo ",
|
|
||||||
" oooooooo oooooo X ooo ",
|
|
||||||
" oooooooo X oooooo ooo ",
|
|
||||||
" oooooooooooooooooooooooooooooo ",
|
|
||||||
" oooooooooooooooooooooo oooooooX",
|
|
||||||
" ooooooooooooooooooooooo oooooo ",
|
|
||||||
" oooooooooooooooo X ooooo ",
|
|
||||||
"O ooooooooooooooooooooooooooooo ",
|
|
||||||
"OO oooooooooooooooooo O",
|
|
||||||
"OOOOOOOOOOOO oooo ooo ooo ooo OO",
|
|
||||||
"OOOOOOOOOOOOO ooo ooo oooXooo OO",
|
|
||||||
"OOOOOOOOOOOOO oooXooo ooo ooo OO",
|
|
||||||
"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
|
|
||||||
"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
|
|
||||||
"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
|
|
||||||
"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
|
|
||||||
"OOOOOOOOOOOOO ooo ooo ooo oooXOO",
|
|
||||||
"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
|
|
||||||
"OOOOOOOOOOOOOXooo ooo ooo ooo OO",
|
|
||||||
"OOOOOOOOOOOOO ooooooooooooooo OO",
|
|
||||||
"OOOOOOOOOOOOOO ooooooooooooo OOO",
|
|
||||||
"OOOOOOOOOOOOOOO OOOO"
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
GtkStatusIcon *status_tomb;
|
GtkStatusIcon *status_tomb;
|
||||||
GtkMenu *menu_tomb;
|
GtkMenu *menu_tomb;
|
||||||
|
|
||||||
|
NotifyNotification *notice;
|
||||||
|
GError *error;
|
||||||
|
|
||||||
// forward declaration of callbacks
|
// forward declaration of callbacks
|
||||||
gboolean left_click(GtkWidget *w, GdkEvent *e);
|
gboolean left_click(GtkWidget *w, GdkEvent *e);
|
||||||
gboolean cb_open(GtkWidget *w, GdkEvent *e);
|
gboolean cb_close(GtkWidget *w, GdkEvent *e);
|
||||||
gboolean cb_quit(GtkWidget *w, GdkEvent *e);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
|
||||||
GObject *tray;
|
GObject *tray;
|
||||||
GdkPixbuf *pb_monmort;
|
GdkPixbuf *pb_monmort;
|
||||||
GtkWidget *menu_open, *menu_close, *menu_quit;
|
GtkWidget *menu_close;
|
||||||
gint menu_x, menu_y;
|
gint menu_x, menu_y;
|
||||||
gboolean push_in = true;
|
gboolean push_in = true;
|
||||||
|
|
||||||
|
char tomb_file[512];
|
||||||
|
|
||||||
gtk_set_locale();
|
gtk_set_locale();
|
||||||
gtk_init(&argc, &argv);
|
gtk_init(&argc, &argv);
|
||||||
|
|
||||||
|
// libnotify
|
||||||
|
notify_init(PACKAGE);
|
||||||
|
|
||||||
// set and show the status icon
|
// set and show the status icon
|
||||||
pb_monmort = gdk_pixbuf_new_from_xpm_data(monmort);
|
pb_monmort = gdk_pixbuf_new_from_xpm_data(monmort);
|
||||||
status_tomb = gtk_status_icon_new_from_pixbuf(pb_monmort);
|
status_tomb = gtk_status_icon_new_from_pixbuf(pb_monmort);
|
||||||
// gtk_status_icon_set_name(status_tomb, "tomb");
|
// gtk_status_icon_set_name(status_tomb, "tomb");
|
||||||
gtk_status_icon_set_title(status_tomb, "Tomb");
|
gtk_status_icon_set_title(status_tomb, "Tomb");
|
||||||
gtk_status_icon_set_tooltip_text (status_tomb, "Tomb - encrypted storage undertaker");
|
gtk_status_icon_set_tooltip_text (status_tomb, "Tomb - crypto undertaker");
|
||||||
|
|
||||||
// gtk_status_icon_set_blinking(status_tomb, true);
|
// gtk_status_icon_set_blinking(status_tomb, true);
|
||||||
menu_tomb = (GtkMenu*) gtk_menu_new();
|
menu_tomb = (GtkMenu*) gtk_menu_new();
|
||||||
|
|
||||||
menu_open = gtk_menu_item_new_with_label("Open");
|
|
||||||
gtk_menu_attach(menu_tomb, menu_open, 0, 1, 0, 1);
|
|
||||||
g_signal_connect_swapped(menu_open, "activate", G_CALLBACK(cb_open), NULL);
|
|
||||||
gtk_widget_show(menu_open);
|
|
||||||
|
|
||||||
menu_close = gtk_menu_item_new_with_label("Close");
|
menu_close = gtk_menu_item_new_with_label("Close");
|
||||||
gtk_menu_attach(menu_tomb, menu_close, 0, 1, 1, 2);
|
gtk_menu_attach(menu_tomb, menu_close, 0, 1, 0, 1);
|
||||||
|
g_signal_connect_swapped(menu_close, "activate", G_CALLBACK(cb_close), NULL);
|
||||||
gtk_widget_show(menu_close);
|
gtk_widget_show(menu_close);
|
||||||
|
|
||||||
menu_quit = gtk_menu_item_new_with_label("Quit");
|
|
||||||
gtk_menu_attach(menu_tomb, menu_quit, 0, 1, 2, 3);
|
|
||||||
g_signal_connect_swapped(menu_quit, "activate", G_CALLBACK(cb_quit), NULL);
|
|
||||||
gtk_widget_show(menu_quit);
|
|
||||||
|
|
||||||
g_signal_connect_swapped(status_tomb, "activate", G_CALLBACK(left_click), menu_tomb);
|
g_signal_connect_swapped(status_tomb, "activate", G_CALLBACK(left_click), menu_tomb);
|
||||||
|
|
||||||
|
notice = notify_notification_new_with_status_icon
|
||||||
|
("Tomb encrypted undertaker",
|
||||||
|
"We started digging out bones",
|
||||||
|
NULL, status_tomb);
|
||||||
|
notify_notification_set_icon_from_pixbuf(notice, pb_monmort);
|
||||||
|
|
||||||
|
notify_notification_show(notice, &error);
|
||||||
|
|
||||||
gtk_main();
|
gtk_main();
|
||||||
|
|
||||||
|
notify_uninit();
|
||||||
|
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// callbacks
|
// callbacks
|
||||||
@ -109,7 +93,7 @@ gboolean left_click(GtkWidget *w, GdkEvent *e) {
|
|||||||
gtk_status_icon_position_menu, status_tomb,
|
gtk_status_icon_position_menu, status_tomb,
|
||||||
1, gtk_get_current_event_time());
|
1, gtk_get_current_event_time());
|
||||||
}
|
}
|
||||||
gboolean cb_open(GtkWidget *w, GdkEvent *e) {
|
gboolean cb_close(GtkWidget *w, GdkEvent *e) {
|
||||||
execlp("tomb","tomb","mount","sarcofago","/mnt/etrom",NULL);
|
execlp("tomb","tomb","-S","umount",NULL);
|
||||||
|
gtk_main_quit();
|
||||||
}
|
}
|
||||||
gboolean cb_quit(GtkWidget *w, GdkEvent *e) { gtk_main_quit(); }
|
|
||||||
|
70
src/tomb-notify.cpp
Normal file
70
src/tomb-notify.cpp
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
/* Tomb - encrypted storage undertaker
|
||||||
|
*
|
||||||
|
* (c) Copyright 2007-2011 Denis Roio <jaromil@dyne.org>
|
||||||
|
*
|
||||||
|
* This source code is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Public License as published
|
||||||
|
* by the Free Software Foundation; either version 3 of the License,
|
||||||
|
* or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This source code is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
* Please refer to the GNU Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Public License along with
|
||||||
|
* this source code; if not, write to:
|
||||||
|
* Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// this file is a notification tool to send messages on the screen
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <libnotify/notify.h>
|
||||||
|
|
||||||
|
/* The Tomb icon is an artwork by Jordi aka MonMort
|
||||||
|
a nomadic graffiti artist from Barcelona */
|
||||||
|
#include <monmort.xpm>
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
NotifyNotification *notice;
|
||||||
|
GError *error;
|
||||||
|
GdkPixbuf *pb_monmort;
|
||||||
|
|
||||||
|
char title[256];
|
||||||
|
char body[512];
|
||||||
|
|
||||||
|
gtk_set_locale();
|
||||||
|
gtk_init(&argc, &argv);
|
||||||
|
|
||||||
|
// libnotify
|
||||||
|
notify_init(PACKAGE);
|
||||||
|
|
||||||
|
if(argc<3)
|
||||||
|
snprintf(body,511, "I'm the crypto undertaker.\nLet's start digging out bones.");
|
||||||
|
else
|
||||||
|
snprintf(body,511, "%s", argv[2]);
|
||||||
|
|
||||||
|
if(argc<2)
|
||||||
|
snprintf(title,255,"%s version %s",PACKAGE,VERSION);
|
||||||
|
else
|
||||||
|
snprintf(title,255, "%s", argv[1]);
|
||||||
|
|
||||||
|
// set the icon
|
||||||
|
pb_monmort = gdk_pixbuf_new_from_xpm_data(monmort);
|
||||||
|
|
||||||
|
notice = notify_notification_new(title, body, NULL, NULL);
|
||||||
|
notify_notification_set_icon_from_pixbuf(notice, pb_monmort);
|
||||||
|
|
||||||
|
notify_notification_show(notice, &error);
|
||||||
|
|
||||||
|
notify_uninit();
|
||||||
|
|
||||||
|
usleep(.5);
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user