Skip to content

Commit dd19fcf

Browse files
Merge pull request #4 from saloniamatteo/master
Thanks for this contribution. Note that i dont test on Ubuntu / Debian (yet), so probably a lot of stuff wont work on those platforms.
2 parents 1ceb5c9 + db35000 commit dd19fcf

File tree

2 files changed

+86
-6
lines changed

2 files changed

+86
-6
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,13 @@ At the moment the performance difference is measurable, but too small to be huma
1414

1515
## Supported logos
1616

17-
Currently, `fastfetch` supports the `Arch` and the `Artix` logos only. Unknown/unsupported logos will be replaced with a question mark when running fastfetch. To add a new logo, edit [`src/logos.c`](src/logo.c).
17+
Currently, `fastfetch` supports the following logos:
18+
- `Arch`
19+
- `Artix`
20+
- `Ubuntu`
21+
- `Debian`
22+
23+
Unknown/unsupported logos will be replaced with a question mark when running fastfetch. To add a new logo, edit [`src/logo.c`](src/logo.c).
1824

1925
## Dependencies
2026

src/logo.c

Lines changed: 79 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,69 @@ static void loadArtixLogo(FFlogo* logo, bool doColor)
9696
sprintf(logo->chars[19], FASTFETCH_TEXT_MODIFIER_BOLT"%s'` `'"FASTFETCH_TEXT_MODIFIER_RESET, color);
9797
}
9898

99+
static void loadUbuntuLogo(FFlogo *logo, bool doColor)
100+
{
101+
logo->width = 40;
102+
logo->height = 20;
103+
strcpy(logo->name, "ubuntu");
104+
105+
/* color = red; color2 = white */
106+
const char* color = doColor ? "\033[91m" : "";
107+
const char* color2 = doColor ? "\033[97m" : "";
108+
strcpy(logo->color, "\033[91m");
109+
110+
sprintf(logo->chars[0], FASTFETCH_TEXT_MODIFIER_BOLT"%s .-/+oossssoo+/-. "FASTFETCH_TEXT_MODIFIER_RESET, color);
111+
sprintf(logo->chars[1], FASTFETCH_TEXT_MODIFIER_BOLT"%s `:+ssssssssssssssssss+:` "FASTFETCH_TEXT_MODIFIER_RESET, color);
112+
sprintf(logo->chars[2], FASTFETCH_TEXT_MODIFIER_BOLT"%s -+ssssssssssssssssssyyssss+- "FASTFETCH_TEXT_MODIFIER_RESET, color);
113+
sprintf(logo->chars[3], FASTFETCH_TEXT_MODIFIER_BOLT"%s .ossssssssssssssssssd%sMMMNy%ssssso. "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
114+
sprintf(logo->chars[4], FASTFETCH_TEXT_MODIFIER_BOLT"%s /sssssssssss%shdmmNNmmyNMMMMh%sssssss/ "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
115+
sprintf(logo->chars[5], FASTFETCH_TEXT_MODIFIER_BOLT"%s +sssssssss%shmydMMMMMMMNddddy%sssssssss+ "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
116+
sprintf(logo->chars[6], FASTFETCH_TEXT_MODIFIER_BOLT"%s /ssssssss%shNMMMyhhyyyyhmNMMMNh%sssssssss/ "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
117+
sprintf(logo->chars[7], FASTFETCH_TEXT_MODIFIER_BOLT"%s.ssssssss%sdMMMNh%sssssssssss%shNMMMd%sssssssss."FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color, color2, color);
118+
sprintf(logo->chars[8], FASTFETCH_TEXT_MODIFIER_BOLT"%s+ssss%shhhyNMMNy%sssssssssssss%syNMMMy%ssssssss+"FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color, color2, color);
119+
sprintf(logo->chars[9], FASTFETCH_TEXT_MODIFIER_BOLT"%soss%syNMMMNyMMh%sssssssssssssss%shmmmh%sssssssso"FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color, color2, color);
120+
sprintf(logo->chars[10], FASTFETCH_TEXT_MODIFIER_BOLT"%soss%syNMMMNyMMh%sssssssssssssss%shmmmh%sssssssso"FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color, color2, color);
121+
sprintf(logo->chars[11], FASTFETCH_TEXT_MODIFIER_BOLT"%s+ssss%shhhyNMMNy%sssssssssssss%syNMMMy%ssssssss+"FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color, color2, color);
122+
sprintf(logo->chars[12], FASTFETCH_TEXT_MODIFIER_BOLT"%s.ssssssss%sdMMMNh%sssssssssss%shNMMMd%sssssssss."FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color, color2, color);
123+
sprintf(logo->chars[13], FASTFETCH_TEXT_MODIFIER_BOLT"%s /ssssssss%shNMMMyhhyyyyhdNMMMNh%sssssssss/ "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
124+
sprintf(logo->chars[14], FASTFETCH_TEXT_MODIFIER_BOLT"%s +sssssssss%sdmydMMMMMMMMddddy%sssssssss+ "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
125+
sprintf(logo->chars[15], FASTFETCH_TEXT_MODIFIER_BOLT"%s /sssssssssss%shdmNNNNmyNMMMMh%sssssss/ "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
126+
sprintf(logo->chars[16], FASTFETCH_TEXT_MODIFIER_BOLT"%s .ossssssssssssssssss%sdMMMNy%ssssso. "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
127+
sprintf(logo->chars[17], FASTFETCH_TEXT_MODIFIER_BOLT"%s -+sssssssssssssssss%syyy%sssss+- "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
128+
sprintf(logo->chars[18], FASTFETCH_TEXT_MODIFIER_BOLT"%s `:+ssssssssssssssssss+:` "FASTFETCH_TEXT_MODIFIER_RESET, color);
129+
sprintf(logo->chars[19], FASTFETCH_TEXT_MODIFIER_BOLT"%s .-/+oossssoo+/-. "FASTFETCH_TEXT_MODIFIER_RESET, color);
130+
}
131+
132+
static void loadDebianLogo(FFlogo *logo, bool doColor)
133+
{
134+
logo->width = 27;
135+
logo->height = 17;
136+
strcpy(logo->name, "debian");
137+
138+
/* color = red; color2 = white */
139+
const char* color = doColor ? "\033[91m" : "";
140+
const char* color2 = doColor ? "\033[97m" : "";
141+
strcpy(logo->color, "\033[91m");
142+
143+
sprintf(logo->chars[0], FASTFETCH_TEXT_MODIFIER_BOLT"%s _,met$$$$$gg. "FASTFETCH_TEXT_MODIFIER_RESET, color);
144+
sprintf(logo->chars[1], FASTFETCH_TEXT_MODIFIER_BOLT"%s ,g$$$$$$$$$$$$$$$P. "FASTFETCH_TEXT_MODIFIER_RESET, color);
145+
sprintf(logo->chars[2], FASTFETCH_TEXT_MODIFIER_BOLT"%s ,g$$P\" \"\"\"Y$$.\". "FASTFETCH_TEXT_MODIFIER_RESET, color);
146+
sprintf(logo->chars[3], FASTFETCH_TEXT_MODIFIER_BOLT"%s ,$$P' `$$$. "FASTFETCH_TEXT_MODIFIER_RESET, color);
147+
sprintf(logo->chars[4], FASTFETCH_TEXT_MODIFIER_BOLT"%s',$$P ,ggs. `$$b:"FASTFETCH_TEXT_MODIFIER_RESET, color);
148+
sprintf(logo->chars[5], FASTFETCH_TEXT_MODIFIER_BOLT"%s`d$$' ,$P\"' %s.%s $$$ "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
149+
sprintf(logo->chars[6], FASTFETCH_TEXT_MODIFIER_BOLT"%s $$P d$' %s,%s $$P "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
150+
sprintf(logo->chars[7], FASTFETCH_TEXT_MODIFIER_BOLT"%s $$: $$. %s-%s ,d$$' "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
151+
sprintf(logo->chars[8], FASTFETCH_TEXT_MODIFIER_BOLT"%s $$; Y$b._ _,d$P' "FASTFETCH_TEXT_MODIFIER_RESET, color);
152+
sprintf(logo->chars[9], FASTFETCH_TEXT_MODIFIER_BOLT"%s Y$$. %s`.%s`\"Y$$$$P\"' "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
153+
sprintf(logo->chars[10], FASTFETCH_TEXT_MODIFIER_BOLT"%s `$$b %s\"-.__%s "FASTFETCH_TEXT_MODIFIER_RESET, color, color2, color);
154+
sprintf(logo->chars[11], FASTFETCH_TEXT_MODIFIER_BOLT"%s `Y$$ "FASTFETCH_TEXT_MODIFIER_RESET, color);
155+
sprintf(logo->chars[12], FASTFETCH_TEXT_MODIFIER_BOLT"%s `Y$$. "FASTFETCH_TEXT_MODIFIER_RESET, color);
156+
sprintf(logo->chars[13], FASTFETCH_TEXT_MODIFIER_BOLT"%s `$$b. "FASTFETCH_TEXT_MODIFIER_RESET, color);
157+
sprintf(logo->chars[14], FASTFETCH_TEXT_MODIFIER_BOLT"%s `Y$$b. "FASTFETCH_TEXT_MODIFIER_RESET, color);
158+
sprintf(logo->chars[15], FASTFETCH_TEXT_MODIFIER_BOLT"%s `\"Y$b._ "FASTFETCH_TEXT_MODIFIER_RESET, color);
159+
sprintf(logo->chars[16], FASTFETCH_TEXT_MODIFIER_BOLT"%s `\"\"\" "FASTFETCH_TEXT_MODIFIER_RESET, color);
160+
}
161+
99162
void ffLoadLogoSet(FFconfig* config, const char* logo)
100163
{
101164
if(strcasecmp(logo, "none") == 0)
@@ -111,6 +174,14 @@ void ffLoadLogoSet(FFconfig* config, const char* logo)
111174
{
112175
loadArtixLogo(&config->logo, config->colorLogo);
113176
}
177+
else if(strcasecmp(logo, "ubuntu") == 0)
178+
{
179+
loadUbuntuLogo(&config->logo, config->colorLogo);
180+
}
181+
else if(strcasecmp(logo, "debian") == 0)
182+
{
183+
loadDebianLogo(&config->logo, config->colorLogo);
184+
}
114185
else
115186
{
116187
if(config->showErrors)
@@ -145,14 +216,14 @@ void ffPrintLogoLine(FFinstance* instance)
145216

146217
if(instance->state.current_row < instance->config.logo.height)
147218
{
148-
printf(instance->config.logo.chars[instance->state.current_row] + cut);
219+
printf("%s", instance->config.logo.chars[instance->state.current_row] + cut);
149220
}
150221
else
151222
{
152223
for(uint8_t i = 0; i < instance->config.logo.width - cut; i++)
153-
putchar(' ');
224+
putchar(' ');
154225
}
155-
226+
156227
for(uint16_t i = 0; i < instance->config.logo_spacer; i++)
157228
putchar(' ');
158229

@@ -163,17 +234,19 @@ void ffPrintLogoLine(FFinstance* instance)
163234

164235
static FFlogo* getLogos(uint8_t* size, bool color)
165236
{
166-
#define FASTFETCH_LOGO_AMOUNT 4
237+
#define FASTFETCH_LOGO_AMOUNT 6
167238

168239
*size = FASTFETCH_LOGO_AMOUNT;
169240
static FFlogo logos[FASTFETCH_LOGO_AMOUNT];
170-
241+
171242
#undef FASTFETCH_LOGO_AMOUNT
172243

173244
loadNoneLogo(&logos[0]);
174245
loadUnknownLogo(&logos[1]);
175246
loadArchLogo(&logos[2], color);
176247
loadArtixLogo(&logos[3], color);
248+
loadUbuntuLogo(&logos[4], color);
249+
loadDebianLogo(&logos[5], color);
177250

178251
return logos;
179252
}
@@ -202,3 +275,4 @@ void ffPrintLogos(bool doColor)
202275
}
203276

204277
#endif
278+

0 commit comments

Comments
 (0)