user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 23-10-2013 23:18:17

IceF0x
#! Gourou Linux

kl-exit menu d'extinction de la version openbox de Kali Linux

Voici une version en C du menu d'extinction de ma version OpenBox de Kali Linux, comme je n'utilise pas de compte utilisateur, je n'ai pas pris la peine de le rendre compatible en compte utilisateur simple.
Cela change du menu classique que je récupérais en python sous crunchbang et ça me permet de m'entrainer au C + gtk.

J'ai récupérer l'icone ici:

Power-Shutdown.png

1382898552.png

Voici la comande de compilation

gcc -o kl-exit kl-exit.c `pkg-config --libs --cflags gtk+-2.0`
#include <gtk/gtk.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

GdkPixbuf *create_pixbuf(const gchar * filename)
{
   GdkPixbuf *pixbuf;
   GError *error = NULL;
   pixbuf = gdk_pixbuf_new_from_file(filename, &error);
   if(!pixbuf) {
      fprintf(stderr, "%s\n", error->message);
      g_error_free(error);
   }

   return pixbuf;
}

static void
log_out (GtkWidget *widget,
     gpointer   data)
{
  system("openbox --logout");
}

static void
shut_down (GtkWidget *widget,
     gpointer   data)
{
  system("init 0");
}

static void
re_boot (GtkWidget *widget,
     gpointer   data)
{
  system("init 6");
}

int main( int argc, char *argv[])
{
  GtkWidget *window;
  GtkWidget *fixed;

  GtkWidget *button1;
  GtkWidget *button2;
  GtkWidget *button3;
  GtkWidget *button4;

  char dest[] = "Logout ";
  char var, * p;
  p = getenv("USER");

  gtk_init(&argc, &argv);
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(window), strncat(dest, p, strlen(p))); 
  gtk_window_set_default_size(GTK_WINDOW(window), 370, 55);
  gtk_window_set_icon(GTK_WINDOW(window), create_pixbuf("Power-Shutdown.png"));
  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

  fixed = gtk_fixed_new();
  gtk_container_add(GTK_CONTAINER(window), fixed);

  button1 = gtk_button_new_with_label("Cancel");
  g_signal_connect (button1, "clicked", G_CALLBACK (gtk_main_quit), NULL);
  gtk_fixed_put(GTK_FIXED(fixed), button1, 10, 10);
  gtk_widget_set_size_request(button1, 80, 35);

  button2 = gtk_button_new_with_label("Logout");
  g_signal_connect (button2, "clicked", G_CALLBACK (log_out), NULL);
  gtk_fixed_put(GTK_FIXED(fixed), button2, 100, 10);
  gtk_widget_set_size_request(button2, 80, 35);

  button3 = gtk_button_new_with_label("Reboot");
  g_signal_connect (button3, "clicked", G_CALLBACK (re_boot), NULL);
  gtk_fixed_put(GTK_FIXED(fixed), button3, 190, 10);
  gtk_widget_set_size_request(button3, 80, 35);

  button4 = gtk_button_new_with_label("Quit");
  g_signal_connect (button4, "clicked", G_CALLBACK (shut_down), NULL);
  gtk_fixed_put(GTK_FIXED(fixed), button4, 280, 10);
  gtk_widget_set_size_request(button4, 80, 35);

  g_signal_connect_swapped(G_OBJECT(window), "destroy", 
      G_CALLBACK(gtk_main_quit), NULL);

  gtk_widget_show_all(window);

  gtk_main();

  return 0;
}

Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#2 24-10-2013 06:24:33

mélodie
Villageoise

Re : kl-exit menu d'extinction de la version openbox de Kali Linux

Salut,

Est-ce que les blocs de texte suivants:

static void
shut_down (GtkWidget *widget,
     gpointer   data)
{
  system("init 0");
}

static void
re_boot (GtkWidget *widget,
     gpointer   data)
{
  system("init 6");
}

Impliqueraient que ça fonctionne avec system V uniquement ? Si c'est oui, penses-tu pouvoir aussi faire fonctionner ce programme avec upstart et avec systemd ?

Dernière modification par mélodie (24-10-2013 06:24:50)

Hors ligne

#3 24-10-2013 18:24:51

IceF0x
#! Gourou Linux

Re : kl-exit menu d'extinction de la version openbox de Kali Linux

J'imagine que c'est pour Archlinux, je vais voir pour modifier le code pour ce système et je te tien au courant mais c'est selon mon emploi du temps.


Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#4 25-10-2013 00:31:01

mélodie
Villageoise

Re : kl-exit menu d'extinction de la version openbox de Kali Linux

IceF0x a écrit :

J'imagine que c'est pour Archlinux, je vais voir pour modifier le code pour ce système et je te tien au courant mais c'est selon mon emploi du temps.

Pour ma part j'utilise obsession, créé par mimas après que tu m'aies fait la remarque sur le mode de gestion de l'extinction quand tu avais testé Bento (Ubuntu Openbox Remix). Je ne faisais qu'une suggestion au cas où tu voudrais que ton code soit utilisable sur plus de distributions, alors en ce qui me concerne il n'y a rien d'urgent. smile

(Archlinux utilise Systemd, Debian peut l'employer mais ce n'est pas par défaut dans la stable si j'ai tout compris, Gentoo utilise son système d'init bien à lui mais l'utilisateur peut passer à systemd... et Upstart est utilisé dans les Ubuntu et dérivées).

Dernière modification par mélodie (25-10-2013 00:32:12)

Hors ligne

#5 02-11-2013 13:24:54

IceF0x
#! Gourou Linux

Re : kl-exit menu d'extinction de la version openbox de Kali Linux

en fait il suffit simplement de modifier la disposition des bouton et de la fenêtre de obsession dont je viens de regarder les sources et qui est bien plus abouti pour fontionner sur plus de système que le mien, (systemv et upower)


Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#6 02-11-2013 17:24:12

mélodie
Villageoise

Re : kl-exit menu d'extinction de la version openbox de Kali Linux

IceF0x a écrit :

en fait il suffit simplement de modifier la disposition des bouton et de la fenêtre de obsession dont je viens de regarder les sources et qui est bien plus abouti pour fontionner sur plus de système que le mien, (systemv et upower)

Le code vient de lxsession-logout du projet Lxde, et la fenêtre peut aussi être personnalisée:
http://forum.linuxvillage.org/index.php … 03#msg3403

Fenêtre d'extinction obsession personnalisée

Hors ligne

#7 12-11-2013 12:27:39

mimas
Membre

Re : kl-exit menu d'extinction de la version openbox de Kali Linux

Huhuhu, L'« excellent » Megaforce : https://www.youtube.com/watch?v=N9wlm9tbA8s

Tu peux aussi faire une interface graphique en GTKdialog (ou truc dans le genre) qui fait appel au programme en mode console obsession-exit pour l'extinction ou le redémarrage. Cela t'évitera de modifier le code. Ou alors tu fais ton interface et des appels avec dbus-send pour arrêter et redémarrer la machine.

Bref, le choix ne manque pas.

Hors ligne

Pied de page des forums