#26 Le 23/05/2006, à 18:59
- misaine
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Palette Utilisation
0 Couleur d"arrière-plan
0 Couleur d"arrière-plan texte
1 Couleur de la barre de chargement
2 Couleur du texte "OK”
4 Couleur de fond de la barre de chargement
8 Couleur du texte
13 Couleur d"erreur, "Failed”
tu regardes la palette de 16 couleurs et tu remplaces 2 par le chiffre de la couleur qui te convient et pareil pour le 13
bien sûr il faut dans ton cas qu'il y ait du vert et du rouge dans l'image.
sinon essayes de modifier la couleur 15 en vert et la 16 en rouge
Dernière modification par misaine (Le 23/05/2006, à 19:01)
la roue tourne...c'est sûr! c'est même pour ça qu'on l'a inventée.
Hors ligne
#27 Le 25/05/2006, à 22:48
- Flew
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Sinon, ce que je pensais faire, c'est transformer l'image en 14 couleurs, puis de rajouter les deux autres. Sauf qu'à ce moment là, je ne peux pas les déplacer, et les couleurs ajoutées sont forcément la 14 et la 15 (14 étant la 15ème couleur et 15 la 16ème, le compte démarrant de 0).
Est-il alors possible de définir usplash pour qu'il prenne en compte la couleur 14 pour les "OK" et la couleur 15 pour les "FAILED"?
Merci
(\__/)
(='.'=)
(")_(")
Hors ligne
#28 Le 29/05/2006, à 02:59
- misaine
Re : HOW TO : Changer les couleurs par défaut de l'usplash
de retour de WE
je pense que c'est une très bonne astuce ça je vais essayer
la roue tourne...c'est sûr! c'est même pour ça qu'on l'a inventée.
Hors ligne
#29 Le 29/05/2006, à 15:56
- Flew
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Cool
(\__/)
(='.'=)
(")_(")
Hors ligne
#30 Le 30/05/2006, à 08:16
- Soipacon
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Tout d'abord un grand merci à Gorrk pour le script qui perme de gagner beaucoup de temps quand on veut faire des essais.
Je poste à mon tour ma petite création (qui est issue d'un wallpaper modifié) :
Et le fichier usplash.c qui va bien avec :
/* USplash - a trivial framebuffer splashscreen application */
/* Copyright Matthew Garrett, 2005. Released under the terms of the GNU
General Public License version 2.1 or later */
#include <string.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/select.h>
#include <errno.h>
#include <linux/vt.h>
#include <sys/ioctl.h>
#include <dlfcn.h>
#include "bogl.h"
#include "usplash.h"
#ifdef DEBUG
FILE* logfile;
#endif
int left_edge, top_edge;
#define BACKGROUND_COLOUR 0
#define PROGRESSBAR_COLOUR 14
#define PROGRESSBAR_BACKGROUND 3
#define TEXT_BACKGROUND 0
#define TEXT_FOREGROUND 3
#define TEXT_NORMAL 3
#define RED 10
#define TEXT_X1 (left_edge + 136)
#define TEXT_X2 (left_edge + 514)
#define TEXT_Y1 (top_edge + 364)
#define TEXT_Y2 (top_edge + 460)
#define LINE_HEIGHT 12
#define PROGRESS_BAR (top_edge + 330)
#define TEXT_WIDTH TEXT_X2-TEXT_X1
#define TEXT_HEIGHT TEXT_Y2-TEXT_Y1
int pipe_fd;
char command[4096];
extern struct bogl_font font_helvB10;
struct bogl_pixmap* pixmap_usplash_artwork;
void draw_progress(int percentage);
void draw_text(char *string, int length);
void draw_image(struct bogl_pixmap *pixmap);
void event_loop();
void text_clear();
void switch_console(int screen);
void init_progressbar();
int saved_vt=0;
int new_vt=0;
int timeout=15;
void cleanup() {
if (saved_vt!=0) {
struct vt_stat state;
int fd;
fd = open("/dev/console", O_RDWR);
ioctl(fd,VT_GETSTATE,&state);
close(fd);
if (state.v_active == new_vt) {
// We're still on the console to which we switched,
// so switch back
switch_console(saved_vt);
}
}
}
int main (int argc, char** argv) {
int err;
void *handle;
#ifdef DEBUG
logfile = fopen ("/dev/.initramfs/usplash_log","w+");
#endif
if (argc>1) {
if (strcmp(argv[1],"-c")==0)
switch_console(8);
}
chdir("/dev/.initramfs");
if (mkfifo(USPLASH_FIFO, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP))
{
if (errno!=EEXIST) {
perror("mkfifo");
cleanup();
exit(1);
}
}
pipe_fd = open(USPLASH_FIFO,O_RDONLY|O_NONBLOCK);
if (pipe_fd==-1) {
perror("pipe open");
cleanup();
exit(2);
}
err=bogl_init();
if (!err) {
fprintf(stderr,"%d",err);
cleanup();
exit (2);
}
handle = dlopen("/usr/lib/usplash/usplash-artwork.so", RTLD_LAZY);
if (!handle) {
exit(1);
}
pixmap_usplash_artwork = (struct bogl_pixmap *)dlsym(handle, "pixmap_usplash_artwork");
bogl_set_palette (0, 16, pixmap_usplash_artwork->palette);
left_edge = (bogl_xres - 640) / 2;
top_edge = (bogl_yres - 400) / 2;
draw_image(pixmap_usplash_artwork);
init_progressbar();
text_clear();
event_loop();
bogl_done();
cleanup();
return 0;
}
void switch_console(int screen) {
char vtname[10];
int fd;
struct vt_stat state;
fd = open("/dev/console", O_RDWR);
ioctl(fd,VT_GETSTATE,&state);
saved_vt = state.v_active;
close(fd);
sprintf(vtname, "/dev/tty%d",screen);
fd = open(vtname, O_RDWR);
ioctl(fd,VT_ACTIVATE,screen);
new_vt = screen;
ioctl(fd,VT_WAITACTIVE,screen);
close(fd);
return;
}
void text_clear() {
bogl_clear(TEXT_X1, TEXT_Y1, TEXT_X2, TEXT_Y2, TEXT_BACKGROUND);
}
void init_progressbar() {
bogl_clear(left_edge+100,PROGRESS_BAR,left_edge+540,PROGRESS_BAR+4,PROGRESSBAR_BACKGROUND);
}
void draw_progress(int percentage) {
int fore = PROGRESSBAR_COLOUR, back = PROGRESSBAR_BACKGROUND;
if (percentage < -100 || percentage > 100)
return;
// Paint bar in reverse-video if percentage passed is negative.
if (percentage < 0) {
fore = PROGRESSBAR_BACKGROUND;
back = PROGRESSBAR_COLOUR;
percentage = -percentage;
}
// Overwrite the whole area to blank out any previous contents
bogl_clear(left_edge+100,PROGRESS_BAR,left_edge+540,PROGRESS_BAR+4, back);
bogl_clear(left_edge+100,PROGRESS_BAR,(left_edge+100+4.4*percentage),PROGRESS_BAR+4, fore);
return;
}
void draw_status(char *string, int colour) {
bogl_clear (TEXT_X2-30, TEXT_Y2-LINE_HEIGHT,
TEXT_X2, TEXT_Y2, TEXT_BACKGROUND);
bogl_text (TEXT_X2-30, TEXT_Y2-LINE_HEIGHT, string, strlen(string),
colour, TEXT_BACKGROUND, 0, &font_helvB10);
return;
}
void draw_text(char *string, int length) {
/* Move the existing text up */
bogl_move(TEXT_X1, TEXT_Y1+LINE_HEIGHT, TEXT_X1, TEXT_Y1, TEXT_X2-TEXT_X1,
TEXT_HEIGHT-LINE_HEIGHT);
/* Blank out the previous bottom contents */
bogl_clear(TEXT_X1, TEXT_Y2-LINE_HEIGHT, TEXT_X2, TEXT_Y2,
TEXT_BACKGROUND);
bogl_text (TEXT_X1, TEXT_Y2-LINE_HEIGHT, string, length,
TEXT_NORMAL, TEXT_BACKGROUND, 0, &font_helvB10);
return;
}
void draw_image(struct bogl_pixmap *pixmap) {
int colour_map[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
bogl_clear(0, 0, bogl_xres, bogl_yres, BACKGROUND_COLOUR);
bogl_put (left_edge, top_edge, pixmap, colour_map);
}
int parse_command(char *string, int length) {
char *command;
char *origstring = string;
int parsed=0;
#ifdef DEBUG
fprintf (logfile, "%s\n", string);
fflush (logfile);
#endif
parsed = strlen(string)+1;
if (strcmp(string,"QUIT")==0) {
return 1;
}
command = strtok(string," ");
if (strcmp(command,"TEXT")==0) {
char *line = strtok(NULL,"\0");
int length = strlen(line);
while (length>50) {
draw_text(line,50);
line+=50;
length-=50;
}
draw_text(line,length);
} else if (strcmp(command,"STATUS")==0) {
draw_status(strtok(NULL,"\0"),0);
} else if (strcmp(command,"SUCCESS")==0) {
draw_status(strtok(NULL,"\0"),TEXT_FOREGROUND);
} else if (strcmp(command,"FAILURE")==0) {
draw_status(strtok(NULL,"\0"),RED);
} else if (strcmp(command,"PROGRESS")==0) {
draw_progress(atoi(strtok(NULL,"\0")));
} else if (strcmp(command,"CLEAR")==0) {
text_clear();
} else if (strcmp(command,"TIMEOUT")==0) {
timeout=(atoi(strtok(NULL,"\0")));
} else if (strcmp(command,"QUIT")==0) {
return 1;
}
return 0;
}
void event_loop() {
int err;
ssize_t length = 0;
fd_set descriptors;
struct timeval tv;
char *end;
tv.tv_sec = timeout;
tv.tv_usec = 0;
FD_ZERO(&descriptors);
FD_SET(pipe_fd,&descriptors);
end = command;
while (1) {
if (timeout != 0) {
err = select(pipe_fd+1, &descriptors, NULL, NULL, &tv);
} else {
err = select(pipe_fd+1, &descriptors, NULL, NULL, NULL);
}
if (err == -1) {
return;
}
if (err == 0) {
/* Timeout */
return;
}
length += read(pipe_fd, end, sizeof(command) - (end - command));
if (length == 0) {
/* Reopen to see if there's anything more for us */
close(pipe_fd);
pipe_fd = open(USPLASH_FIFO,O_RDONLY|O_NONBLOCK);
goto out;
}
while (memchr(command, 0, length) != NULL &&
(char*)memchr(command, 0, length) < command + length - 1) {
/* More than one command in here, do the first */
char *ncommand = strdup(command);
if (parse_command(ncommand, strlen(ncommand))) {
free(ncommand);
return;
}
free(ncommand);
length = length - strlen(command) - 1;
memmove(command, command + strlen(command) + 1, length+1);
}
if (command[length-1] == '\0') {
/* Easy, just one command*/
if (parse_command(command, strlen(command))) {
return;
}
length = 0;
} else {
/* Incomplete command. Handle this in the
* next round */
}
out:
end = &command[length];
tv.tv_sec = timeout;
tv.tv_usec = 0;
FD_ZERO(&descriptors);
FD_SET(pipe_fd,&descriptors);
}
return;
}
Et le résultat :
Je sais que c'est pas parfait mais pour une première je suis assez content.
Dernière modification par Soipacon (Le 30/05/2006, à 13:36)
Hors ligne
#31 Le 31/05/2006, à 23:30
- misteraph
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Perso j'ai un écran tout noir.
Comment faire ?
Hors ligne
#32 Le 02/06/2006, à 22:35
- misteraph
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Templar, comment as-tu fais ?
Hors ligne
#33 Le 03/06/2006, à 07:19
- phoenix818
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Hello!
@Soicapon: comment fais-tu un screenshot de ton boot??!! ça fait un moment que j'ai envie d'en faire un, ainsi que de mon gdm (encore que, en fouillant sur un autre site, je devrais pouvoir retrouver..), de manière à ajouter ces 2 captures sur mon site.... et si possible grub aussi [je sais, j'en demande bcp]
Si quelqu'un sait comment faire tout ça, ou où trouver la doc..... chuis preneur!
@@++
Serveur: http://voltaic.is-a-geek.org
Site: http://www.phoenix818.ch
Hors ligne
#34 Le 03/06/2006, à 09:38
- Soipacon
Re : HOW TO : Changer les couleurs par défaut de l'usplash
@phoenix818 :
Si tu regardes bien tu verras que je me suis pas trop creusé... j'ai juste pris une photo de mon écran pendant le démarrage.
Mais il y a sans doutes des méthodes plus élégantes.
@misteraph :
Essai de mettre une option vga dans ton fichier /boot/grub/menu.lst comme ça par exemple :
title Ubuntu, kernel 2.6.15-23-k7
root (hd0,1)
kernel /boot/vmlinuz-2.6.15-23-k7 root=/dev/hda2 ro vga=771 quiet splash
initrd /boot/initrd.img-2.6.15-23-k7
savedefault
boot
Chez moi la résolution par défaut ne passe pas et j'ai juste un écran noir aussi.
Hors ligne
#35 Le 20/06/2006, à 16:27
- benoit74
Re : HOW TO : Changer les couleurs par défaut de l'usplash
bonjour,
voila j'arrive pas a trouver le fichier usplash.c. Il se trouve ou exactement ?
merci pour vos réponses
#36 Le 20/06/2006, à 17:32
- Shyne
Re : HOW TO : Changer les couleurs par défaut de l'usplash
@ phoenix818
Le top pour faire des capture d'ecran au demarrage de Grub/Gdm-Kdm c'est quand meme une machine virtuel sous Vmware ou Qemu.
Il y a surement d'autres solutions pour Gdm-Kdm mais pour Grub je pense pas que ce soit possible...
Dernière modification par Shyne (Le 20/06/2006, à 17:32)
Hors ligne
#37 Le 20/06/2006, à 18:26
- misaine
Re : HOW TO : Changer les couleurs par défaut de l'usplash
@benoit74 si tu parles du fichier usplash-artwork.c , il est créé par la ligne
pngtobogl usplash-artwork.png > usplash-artwork.c
mais utilise plutôt le script ; voir post #16
Dernière modification par misaine (Le 20/06/2006, à 18:33)
la roue tourne...c'est sûr! c'est même pour ça qu'on l'a inventée.
Hors ligne
#38 Le 20/06/2006, à 19:03
- benoit74
Re : HOW TO : Changer les couleurs par défaut de l'usplash
je ne comprends pas. j'ai suivi exactement le tuto et pourtant maintenant j'ai un ecran noir au démarrage. Alors j'ai essayé avec le script et c'est le même résultat. Je ne comprends pas ce qui cloche. J'ai pourtant suivi les instructions à la lettre (16 couleurs, 640x480).
Une idée ?
#39 Le 20/06/2006, à 19:49
- Soipacon
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Essais toi aussi de mettre une option vga=771 (ou autre) dans ton fichier /boot/grub/menu.lst
Hors ligne
#40 Le 21/06/2006, à 11:38
- benoit74
Re : HOW TO : Changer les couleurs par défaut de l'usplash
génial le probleme est résolu en mettant vga=771. merci beaucoup.
Il reste cependant quelques erreurs mais ca progresse bien dans l'ensemble. Voila j'ai réussià modifier la place des instructions au démarrage par contre pas moyen de faire bouger la barre de progression. Je peux juste la faire bouger verticalement mais horizontalement ca ne fonctionne pas. Est-ce normal ?
Sinon j'ai un autre probleme : lorsque que j'éteinds (ou redemarre) mon pc, l'image est de mediocre qualité, alors qu'au demarrage elle est parfaite. je ne comprends pas d'où ca peut venir.
je posterais les images pour que vous compreniez mieux le problème.
#41 Le 24/09/2006, à 13:52
- ke20
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Personnellement je n'ai plus d'image au boot.
J'ai pourtant bien suivi la manip mais j'ai ceci lors de la regénération du initramfs : Searching for splash image... none found, skipping...
Je vois pas pourquoi :\
J'ai eu la mm chose apres
sudo dpkg-reconfigure linux-image-$(uname -r)
Et mnt j'ai un ecran tt noir au chargement (mm pas l'affichage en noir et blanc).
Si tu pouvais me dire la manip que tu a faite pour que ca marche stp, ou si qqun sait ce qu'il faut faire
Hors ligne
#42 Le 25/09/2006, à 10:25
- ke20
Re : HOW TO : Changer les couleurs par défaut de l'usplash
J'ai fait la modif décrite plus haut à savoir ajouter vga=771 mais ça ne fonctionne pas.
Peut-être que la nb n'est pas le bon(?). A quoi correspond 771?
Moi ma carte est une nvidia GeForce Go 6200.
SI qqun peut éclairer ma lanterne svp.
Hors ligne
#43 Le 25/09/2006, à 12:34
- misaine
Re : HOW TO : Changer les couleurs par défaut de l'usplash
voilà les différentes valeurs por le framebuffer personnellement j'utilise vga=791
http://forum.ubuntu-fr.org/viewtopic.php?pid=21970
la roue tourne...c'est sûr! c'est même pour ça qu'on l'a inventée.
Hors ligne
#44 Le 25/09/2006, à 15:20
- ke20
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Merci mais en fait j'ai trouver tt a l'heure en cherchant bien
Hors ligne
#45 Le 25/09/2006, à 19:48
- Flew
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Ben moi, j'ai tout essayé et rien n'a remis mon Usplash en état (enfin, faut dire j'avais tout modifié, l'image de fond, la position et la couleur du texte....)
Finalement, j'ai tout réinstallé (pour diverses raisons) et j'ai de nouveau un Usplash standard.
Mais existe-t-il un tuto spécialement fait pour Dapper (car ceux trouvés sur le Wiki sont pour Breezy)??
(\__/)
(='.'=)
(")_(")
Hors ligne
#46 Le 19/04/2007, à 18:21
- alexises
Re : HOW TO : Changer les couleurs par défaut de l'usplash
bon j'ai besoind 'aide j'ai mon image en png indexer et à la bonne résolution.
je fait quoi maintenent ?
/!\ aveugle ne pas matraquer /!\
¨¨¨ ¨¨¨
il est ou le bouton poster ?
Hors ligne
#47 Le 19/04/2007, à 18:53
- misaine
Re : HOW TO : Changer les couleurs par défaut de l'usplash
hmm... je suis pas sùr que ce howto fonctionne avec les nouvelles versions d'ubuntu
la roue tourne...c'est sûr! c'est même pour ça qu'on l'a inventée.
Hors ligne
#48 Le 19/04/2007, à 19:14
- alexises
Re : HOW TO : Changer les couleurs par défaut de l'usplash
enfin il y as eu un nouveau tuto mais qui est incomplet
/!\ aveugle ne pas matraquer /!\
¨¨¨ ¨¨¨
il est ou le bouton poster ?
Hors ligne
#49 Le 23/08/2007, à 16:18
- TjrsDactu?
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Bonjour,
est-ce que le script donné fontionne sous feisty également ?? car je vois qu'il date de mars 2006 alors je préfére demander au cas ou ^^
merci
#50 Le 19/10/2007, à 18:07
- Gorrk
Re : HOW TO : Changer les couleurs par défaut de l'usplash
Lu, euh, je sais pas, mais en tous cas il ne marche plus sous Gutsy. Je sais pas pourquoi, je regarderai ça plus tard si j'ai du temps et du courage.
Hors ligne