Pular para o conteúdo

Script para trocar o papel de parede do fluxbox em GTK

Script para trocar o papel de parede do fluxbox em GTK.

É aconselhável que você tenha instalado um wallpapersettler como esetroot e para compilar é preciso ter o pacote libgtk2.0-dev instalado (para ubuntu use: sudo apt-get install libgtk2.0-dev).
eu cdvdt
Hits: 6.469 Categoria: C/C++ Subcategoria: Avançado
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Script para trocar o papel de parede do fluxbox em GTK.

É aconselhável que você tenha instalado um wallpapersettler como esetroot e para compilar é preciso ter o pacote libgtk2.0-dev instalado (para ubuntu use: sudo apt-get install libgtk2.0-dev).
Download fluxpaper.c Enviar nova versão

Esconder código-fonte

#include <gtk/gtk.h>
#include <stdlib.h>

GtkWidget *entry;
GtkWidget *combo;

void conc (char *meu_buf, char *string)
{
   int i,j;
   for (i=0;meu_buf[i]!=0;i++);
   for (j=0;string[j]!=0;j++) meu_buf[i+j]=string[j];
   meu_buf[i+j]=0;
}

char opc (char *meu_buf)
{
   char c;
   if (meu_buf[0]=='F') c='f';
   if (meu_buf[0]=='C') c='c';
   if (meu_buf[0]=='A') c='t';
   if (meu_buf[0]=='M') c='a';
   return c;
}


static void callback( GtkWidget *widget,
                      gpointer   data )
{
   g_print ("Hello again - %s was pressed\n", (gchar *) data);
}

static void callback2( GtkWidget *widget,
                      gpointer   data )
{
   char meu_buf[80]="fbsetbg -", op[3]={'\0',' ','\0'};
   op[0]=opc(gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (combo)->entry)));
   conc(meu_buf,op);
   conc(meu_buf,gtk_entry_get_text (GTK_ENTRY (entry)));
   system (meu_buf);
}

static gboolean delete_event( GtkWidget *widget,
                              GdkEvent  *event,
                              gpointer   data )
{
   gtk_main_quit ();
   return FALSE;
}

static void file_ok_sel( GtkWidget        *w,
                         GtkFileSelection *fs )
{
   gtk_entry_set_text (GTK_ENTRY (entry), gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)));
}

static void file( GtkWidget *widget,
                      gpointer   data )
{
   GtkWidget *filew;
    
   filew = gtk_file_selection_new ("File selection");
    
   g_signal_connect_swapped (G_OBJECT (filew),
                         "destroy", G_CALLBACK (gtk_widget_destroy),
               G_OBJECT (filew));

   g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (filew)->ok_button),
            "clicked", G_CALLBACK (file_ok_sel), (gpointer) filew);
   g_signal_connect_swapped (G_OBJECT (GTK_FILE_SELECTION (filew)->ok_button),
                         "clicked", G_CALLBACK (gtk_widget_destroy),
               G_OBJECT (filew));
    

   g_signal_connect_swapped (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button),
                         "clicked", G_CALLBACK (gtk_widget_destroy),
               G_OBJECT (filew));
    
   gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew), 
                 "penguin.png");
    
   gtk_widget_show (filew);
}


int main( int   argc,
          char *argv[] )
{
   GtkWidget *window;
   GtkWidget *label;
   GtkWidget *image;
   GtkWidget *rmenu;
   GtkWidget *button;
   GtkWidget *vbox1, *hbox1;
   GList *glist = NULL;

   gtk_init (&argc, &argv);

   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

   gtk_window_set_title (GTK_WINDOW (window), "FluxPaper 0.1");

   g_signal_connect (G_OBJECT (window), "delete_event",
         G_CALLBACK (delete_event), NULL);

    gtk_container_set_border_width (GTK_CONTAINER (window), 10);

   vbox1 = gtk_vbox_new (FALSE, 0);

   gtk_container_add (GTK_CONTAINER (window), vbox1);

   gtk_widget_show (vbox1);

   hbox1 = gtk_hbox_new (FALSE, 0);

   gtk_container_add (GTK_CONTAINER (vbox1), hbox1);

   label = gtk_label_new ("Arquivo: ");
    
   gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);

   gtk_box_pack_start (GTK_BOX(hbox1), label, FALSE, TRUE, 0);

   gtk_widget_show (label);

   entry = gtk_entry_new();

   gtk_box_pack_start (GTK_BOX(hbox1), entry, TRUE, TRUE, 0);

   gtk_widget_show (entry);

   button = gtk_button_new_from_stock (GTK_STOCK_OPEN);

   g_signal_connect (G_OBJECT (button), "clicked",
            G_CALLBACK (file), (gpointer) "button 2");

   gtk_box_pack_start(GTK_BOX (hbox1), button, TRUE, TRUE, 0);

   gtk_widget_show (button);

   gtk_widget_show (hbox1);

   hbox1 = gtk_hbox_new (FALSE, 0);

   gtk_container_add (GTK_CONTAINER (vbox1), hbox1);

   label = gtk_label_new ("Estilo: ");
    
   gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);

   gtk_box_pack_start (GTK_BOX(hbox1), label, FALSE, TRUE, 0);

   gtk_widget_show (label);

   combo = gtk_combo_new();

   glist = g_list_append (glist, "Fullscreen");
   glist = g_list_append (glist, "Centralizado");
    glist = g_list_append (glist, "Ajustado"); 
   glist = g_list_append (glist, "Maximizado");

   gtk_combo_set_popdown_strings (GTK_COMBO (combo), glist);

   gtk_combo_set_use_arrows (GTK_COMBO (combo),
                                      TRUE);

   gtk_box_pack_start (GTK_BOX(hbox1), combo, FALSE, TRUE, 0);

   gtk_widget_show (combo);

   gtk_widget_show (hbox1);

   hbox1 = gtk_hbox_new (FALSE, 0);

   gtk_container_add (GTK_CONTAINER (vbox1), hbox1);

   button = gtk_button_new_from_stock (GTK_STOCK_OK);

   g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(callback2), (gpointer) "button 3");

   g_signal_connect_swapped (G_OBJECT (button), "clicked",
               G_CALLBACK (delete_event),
                              G_OBJECT (window));

   gtk_box_pack_end (GTK_BOX(hbox1), button, FALSE, FALSE, 2);

   gtk_widget_show (button);

   button = gtk_button_new_from_stock (GTK_STOCK_APPLY);

   g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(callback2), (gpointer) "button 3");

   gtk_box_pack_end (GTK_BOX(hbox1), button, FALSE, FALSE, 2);

   gtk_widget_show (button);

   button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);

   g_signal_connect_swapped (G_OBJECT (button), "clicked",
               G_CALLBACK (delete_event),
                              G_OBJECT (window));

   gtk_box_pack_end (GTK_BOX(hbox1), button, FALSE, FALSE, 2);

   gtk_widget_show (button);

   gtk_widget_show (hbox1);

   gtk_widget_show (window);

   gtk_main ();

    return 0;
}

Gerenciamento de Área de Alocação Dinâmica (Listas Encadeadas)

Exemplo de uso da libiptc

Arvores Red Black

Busca em texto - Lista encadeada

Jogo defutebol simples (com gráficos)

#1 Comentário enviado por edirlf em 25/04/2008 - 20:14h
pucha cara.. legal seu script, mas.. como faço pra compilar ele.
tentei com:

gcc -o teste teste.c -Wall -g `gtk-config --cflags --libs`

mas não funcionou aqui.

se puder me ajudar, meu muito obrigado.
falows.
#2 Comentário enviado por SMarcell em 28/04/2008 - 12:38h
Pô! Parece legal esse seu programa. Vou testá-lo!

Uma outra alternativa para setar wallpaper no Fluxbox, é atráves dum shell script que criei e que seta os papeis de parede de forma aleatória e em tempo real.

Link para o script:
http://www.slackbr.org/forum/viewtopic.php?f=45&t=16269

Falou!!!
#3 Comentário enviado por cdvdt em 28/04/2008 - 18:53h
SMarcell eu ja fiz um desses também
tenta assim: gcc teste.c -o teste `pkg-config --cflags gtk+-2.0 pkg-config --libs gtk+-2.0`
eu to trabalhando numa versão completa (lembra o seletor do kde) que eu pretendo disponibilizar em GPL
#4 Comentário enviado por removido em 07/07/2012 - 23:44h
Está compilando com um monte de warnings, mas está rodando.

file:35:41: warning: character constant too long for its type
file: In function ‘callback2’:
file:35: warning: overflow in implicit constant conversion
file:35:55: warning: character constant too long for its type
file:35: warning: overflow in implicit constant conversion
file:36: warning: passing argument 1 of ‘opc’ discards qualifiers from pointer target type
file:15: note: expected ‘char *’ but argument is of type ‘const gchar *’
file:38: warning: passing argument 2 of ‘conc’ discards qualifiers from pointer target type
file:7: note: expected ‘char *’ but argument is of type ‘const gchar *’


Estou sem Fluxbox no momento para testar se a troca é feita.
#5 Comentário enviado por cdvdt em 07/07/2012 - 23:53h
Listeiro 037, se me lembro bem é assim mesmo, eu trabalhei mais o código e disponibilizei em GPL no sourceforge, está com o nome fluxpaper. Esse projeto me levou ao desenvolvimento de outro software, o anypaper, com mais opções de customização. Tenho planos para outras otimizações.
#6 Comentário enviado por removido em 06/03/2016 - 01:51h
Pode ser necessária uma re-escrita por causa da transição GTK+2 para GTK+3. Basta saber se houve mudança.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden

Contribuir com comentário

Entre na sua conta para comentar.