Commit 8c667997 authored by Roman Alifanov's avatar Roman Alifanov

Rewrite neofetch in ContenT, rename to ctfetch

- Full rewrite from monolithic bash to ContenT OOP (.ct files in src/) - 272 ASCII logos as individual class files (src/logos/) - Dynamic logo loading via reflect.create() - Add Ximper Linux support (distro detection, ASCII logo) - Add cargo package manager, Cassette player, Hyprland WM - Apply patches from fiersik@ (origin/ximper) - Rename project to ctfetch - Update README, Makefile, manpage, license
parent ccd5d9f5
# How to Contribute
<!-- vim-markdown-toc GFM -->
* [Coding Conventions](#coding-conventions)
* [ShellCheck](#shellcheck)
* [No no's](#no-nos)
* [If Statements](#if-statements)
* [Case Statements](#case-statements)
* [Making changes to Neofetch](#making-changes-to-neofetch)
* [Adding support for a new Operating System / Distribution.](#adding-support-for-a-new-operating-system--distribution)
<!-- vim-markdown-toc -->
## Coding Conventions
- Use `bash` built-ins wherever possible.
- Try not to pipe (`|`) at all.
- Limit usage of external commands `$(cmd)`.
- Indent 4 spaces.
- Use [snake_case](https://en.wikipedia.org/wiki/Snake_case) for function
and variable names.
- Keep lines below `100` characters long.
- Use `[[ ]]` for tests.
- Quote **EVERYTHING**.
### ShellCheck
For your contribution to be accepted, your changes need to pass
ShellCheck.
```sh
shellcheck neofetch
```
**Note**: If you have trouble installing ShellCheck. You can open a pull
request on the repo and our Travis.ci hook will run ShellCheck for you.
### No no's
- Don’t use GNU conventions in commands.
- Use POSIX arguments and flags.
- Don’t use `cut`.
- Use `bash`'s built-in [parameter expansion](http://wiki.bash-hackers.org/syntax/pe).
- Don’t use `echo`.
- Use `printf "%s\n"`
- Don’t use `bc`.
- Don’t use `sed`.
- Use `bash`'s built-in [parameter expansion](http://wiki.bash-hackers.org/syntax/pe).
- Don’t use `cat`.
- Use `bash`'s built-in syntax (`file="$(< /path/to/file.txt)")`).
- Don’t use `grep "pattern" | awk '{ printf }'`.
- Use `awk '/pattern/ { printf }'`
- Don’t use `wc`.
- Use `${#var}` or `${#arr[@]}`.
### If Statements
If the test only has one command inside of it; use the compact test
syntax. Otherwise the normal `if`/`fi` is just fine.
```sh
# Bad
if [[ "$var" ]]; then
printf "%s\n" "$var"
fi
# Good
[[ "$var" ]] && printf "%s\n" "$var"
# Also good (Use this for longer lines).
[[ "$var" ]] && \
printf "%s\n" "$var"
```
### Case Statements
Case statements need to be formatted in a specific way.
```sh
# Good example (Notice the indentation).
case "$var" in
1) printf "%s\n" 1 ;;
2)
printf "%s\n" "1"
printf "%s\n" "2"
;;
*)
printf "%s\n" "1"
printf "%s\n" "2"
printf "%s\n" "3"
;;
esac
```
## Making changes to Neofetch
### Adding support for a new Operating System / Distribution.
Adding support for a new OS/Distro requires adding the Name, Logo and
Colors of the OS/Distro to the `get_distro_ascii()` function.
The function is located right at the bottom of the script, one function
above `main()`. Inside this function you’ll find an alphabetical list of
each OS/Distro.
Find the spot in the list your new OS/Distro fits into and start
implementing your changes.
If your OS/Distro requires changes to the actual information gathering
functions then you can make these changes in the `get_*` functions.
**Syntax**:
- You have to escape back-slashes (`\`). (eg `\\`)
- You can use `${c1}` to `${c6}`to color the ascii.
- These are evaluated *after* we read the file.
**Example**:
```sh
"CRUX"*)
set_colors 4 5 7 6
read -rd '' ascii_data <<'EOF'
${c1} odddd
oddxkkkxxdoo
ddcoddxxxdoool
xdclodod olol
xoc xdd olol
xdc ${c2}k00${c1}Okdlol
xxd${c2}kOKKKOkd${c1}ldd
xdco${c2}xOkdlo${c1}dldd
ddc:cl${c2}lll${c1}oooodo
odxxdd${c3}xkO000kx${c1}ooxdo
oxdd${c3}x0NMMMMMMWW0od${c1}kkxo
oooxd${c3}0WMMMMMMMMMW0o${c1}dxkx
docldkXW${c3}MMMMMMMWWN${c1}Odolco
xx${c2}dx${c1}kxxOKN${c3}WMMWN${c1}0xdoxo::c
${c2}xOkkO${c1}0oo${c3}odOW${c2}WW${c1}XkdodOxc:l
${c2}dkkkxkkk${c3}OKX${c2}NNNX0Oxx${c1}xc:cd
${c2} odxxdx${c3}xllod${c2}ddooxx${c1}dc:ldo
${c2} lodd${c1}dolccc${c2}ccox${c1}xoloo
EOF
;;
```
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2015-2021 Dylan Araps Copyright (c) 2015-2021 Dylan Araps
Copyright (c) 2026 Roman Alifanov
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
......
PREFIX = /usr PREFIX = /usr
MANDIR = $(PREFIX)/share/man MANDIR = $(PREFIX)/share/man
OUT = ctfetch.sh
all: all: build
@echo Run \'make install\' to install Neofetch.
install: build:
content build src/ -o $(OUT)
install: build
@mkdir -p $(DESTDIR)$(PREFIX)/bin @mkdir -p $(DESTDIR)$(PREFIX)/bin
@mkdir -p $(DESTDIR)$(MANDIR)/man1 @mkdir -p $(DESTDIR)$(MANDIR)/man1
@cp -p neofetch $(DESTDIR)$(PREFIX)/bin/neofetch @cp -p $(OUT) $(DESTDIR)$(PREFIX)/bin/ctfetch
@cp -p neofetch.1 $(DESTDIR)$(MANDIR)/man1 @cp -p ctfetch.1 $(DESTDIR)$(MANDIR)/man1
@chmod 755 $(DESTDIR)$(PREFIX)/bin/neofetch @chmod 755 $(DESTDIR)$(PREFIX)/bin/ctfetch
uninstall: uninstall:
@rm -rf $(DESTDIR)$(PREFIX)/bin/neofetch @rm -rf $(DESTDIR)$(PREFIX)/bin/ctfetch
@rm -rf $(DESTDIR)$(MANDIR)/man1/neofetch.1* @rm -rf $(DESTDIR)$(MANDIR)/man1/ctfetch.1*
clean:
@rm -f $(OUT)
<h3 align="center"><img src="https://i.imgur.com/ZQI2EYz.png" alt="logo" height="100px"></h3> <h3 align="center"><img src="https://i.imgur.com/ZQI2EYz.png" alt="logo" height="100px"></h3>
<p align="center">A command-line system information tool written in bash 3.2+</p> <p align="center">A command-line system information tool rewritten in <a href="https://gitlab.eterfund.ru/ximperlinux/ContenT">ContenT</a></p>
<p align="center"> <p align="center">
<a href="./LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue.svg"></a> <a href="./LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue.svg"></a>
<a href="https://github.com/dylanaraps/neofetch/releases"><img src="https://img.shields.io/github/release/dylanaraps/neofetch.svg"></a>
<a href="https://repology.org/metapackage/neofetch"><img src="https://repology.org/badge/tiny-repos/neofetch.svg" alt="Packaging status"></a>
</p> </p>
This is a fork of [neofetch](https://github.com/dylanaraps/neofetch) rewritten in [ContenT](https://gitlab.eterfund.ru/ximperlinux/ContenT) with an OOP architecture. The source code in `src/` compiles into a single bash script.
**What's different from the original:**
- Codebase split into classes and modules instead of a monolithic 11,000+ line bash script
- 272 ASCII logos moved into individual class files (`src/logos/`)
- Dynamic logo loading via `reflect.create()` — no giant switch/case blocks
- Added Ximper Linux support (distro detection, ASCII logo)
- Added cargo package manager, Cassette player, Hyprland WM
**Building and running:**
```bash
make # build ctfetch.sh from src/
make install # install to /usr/bin/ctfetch
```
<img src="https://i.imgur.com/GFmC5Ad.png" alt="neofetch" align="right" height="240px"> <img src="https://i.imgur.com/GFmC5Ad.png" alt="neofetch" align="right" height="240px">
Neofetch is a command-line system information tool written in `bash 3.2+`. Neofetch displays information about your operating system, software and hardware in an aesthetic and visually pleasing way. Neofetch is a command-line system information tool written in `bash 3.2+`. Neofetch displays information about your operating system, software and hardware in an aesthetic and visually pleasing way.
......
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.3. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.3.
.TH NEOFETCH "1" "April 2021" "Neofetch 7.1.0" "User Commands" .TH CTFETCH "1" "February 2026" "ctfetch 7.1.0-ct" "User Commands"
.SH NAME .SH NAME
Neofetch \- A fast, highly customizable system info script ctfetch \- A fast, highly customizable system info script (neofetch rewritten in ContenT)
.SH SYNOPSIS .SH SYNOPSIS
.B neofetch .B ctfetch
\fI\,func_name --option "value" --option "value"\/\fR \fI\,func_name --option "value" --option "value"\/\fR
.SH DESCRIPTION .SH DESCRIPTION
Neofetch is a CLI system information tool written in BASH. Neofetch Neofetch is a CLI system information tool written in BASH. Neofetch
...@@ -18,17 +18,17 @@ func_name ...@@ -18,17 +18,17 @@ func_name
Specify a function name (second part of info() from config) to Specify a function name (second part of info() from config) to
quickly display only that function's information. quickly display only that function's information.
.IP .IP
Example: neofetch uptime \fB\-\-uptime_shorthand\fR tiny Example: ctfetch uptime \fB\-\-uptime_shorthand\fR tiny
.IP .IP
Example: neofetch uptime disk wm memory Example: ctfetch uptime disk wm memory
.IP .IP
This can be used in bars and scripts like so: This can be used in bars and scripts like so:
.IP .IP
memory="$(neofetch memory)"; memory="${memory##*: }" memory="$(ctfetch memory)"; memory="${memory##*: }"
.IP .IP
For multiple outputs at once (each line of info in an array): For multiple outputs at once (each line of info in an array):
.IP .IP
IFS=$'\en' read \fB\-d\fR "" \fB\-ra\fR info < <(neofetch memory uptime wm) IFS=$'\en' read \fB\-d\fR "" \fB\-ra\fR info < <(ctfetch memory uptime wm)
.IP .IP
info=("${info[@]##*: }") info=("${info[@]##*: }")
.TP .TP
...@@ -38,7 +38,7 @@ in the output. 'infoname' is the function name from the ...@@ -38,7 +38,7 @@ in the output. 'infoname' is the function name from the
\&'print_info()' function inside the config file. \&'print_info()' function inside the config file.
For example: 'info "Memory" memory' would be '\-\-disable memory' For example: 'info "Memory" memory' would be '\-\-disable memory'
.IP .IP
NOTE: You can supply multiple args. eg. 'neofetch \fB\-\-disable\fR cpu gpu' NOTE: You can supply multiple args. eg. 'ctfetch \fB\-\-disable\fR cpu gpu'
.TP .TP
\fB\-\-title_fqdn\fR on/off \fB\-\-title_fqdn\fR on/off
Hide/Show Fully Qualified Domain Name in title. Hide/Show Fully Qualified Domain Name in title.
...@@ -244,7 +244,7 @@ Possible values: 'auto', 'ascii', 'wallpaper', '/path/to/img', ...@@ -244,7 +244,7 @@ Possible values: 'auto', 'ascii', 'wallpaper', '/path/to/img',
\fB\-\-ascii\fR source \fB\-\-ascii\fR source
Shortcut to use 'ascii' backend. Shortcut to use 'ascii' backend.
.IP .IP
NEW: neofetch \fB\-\-ascii\fR "$(fortune | cowsay \fB\-W\fR 30)" NEW: ctfetch \fB\-\-ascii\fR "$(fortune | cowsay \fB\-W\fR 30)"
.TP .TP
\fB\-\-caca\fR source \fB\-\-caca\fR source
Shortcut to use 'caca' backend. Shortcut to use 'caca' backend.
...@@ -416,7 +416,7 @@ Turn off all colors and disables any ASCII/image backend. ...@@ -416,7 +416,7 @@ Turn off all colors and disables any ASCII/image backend.
Print this text and exit Print this text and exit
.TP .TP
\fB\-\-version\fR \fB\-\-version\fR
Show neofetch version Show ctfetch version
.TP .TP
\fB\-v\fR \fB\-v\fR
Display error messages. Display error messages.
...@@ -426,6 +426,6 @@ Display a verbose log for error reporting. ...@@ -426,6 +426,6 @@ Display a verbose log for error reporting.
.SS "DEVELOPER:" .SS "DEVELOPER:"
.TP .TP
\fB\-\-gen\-man\fR \fB\-\-gen\-man\fR
Generate a manpage for Neofetch in your PWD. (Requires GNU help2man) Generate a manpage for ctfetch in your PWD. (Requires GNU help2man)
.SH "REPORTING BUGS" .SH "REPORTING BUGS"
Report bugs to https://github.com/dylanaraps/neofetch/issues Report bugs to https://github.com/dylanaraps/neofetch/issues
This source diff could not be displayed because it is too large. You can view the blob instead.
# neofetch-ct: ascii.ct
# AsciiArt class — loads and displays ASCII art logos
class AsciiArt {
ascii_data = ""
colors_str = ""
distro_name = ""
func load (distro, cfg: Config, display: Display) {
this.distro_name = distro
ascii_distro = distro
if cfg.ascii_distro != "auto" {
ascii_distro = cfg.ascii_distro
}
distro_lower = ascii_distro.lower ()
distro_lower = trim (distro_lower)
logo = this.match_distro (distro_lower)
this.load_art (logo, display, cfg)
}
func match_distro (d) {
# Data-driven distro→logo mapping. Order matters: specific before general.
# Format: "pattern>logo" per entry, "|" separator.
# If no ">", pattern = logo name.
map = "aix|aperio gnu/linux>aperio_gnu_linux|hash|almalinux"
map = map .. "|alpine_small|alpine|alter|amazon|anarchy"
map = map .. "|android_small|android|instantos|antergos|antix"
map = map .. "|aosc os/retro>aosc_os_retro|aosc os>aosc_os|apricity"
map = map .. "|archcraft|arcolinux_small|arcolinux"
map = map .. "|arch_small|arch_old|archbox|archlabs|archstrike"
map = map .. "|xferience|archmerge|arch"
map = map .. "|artix_small|artix|arya|asteroidos"
map = map .. "|bedrock|bitrig|blackarch|blag|blankon|bluelight"
map = map .. "|bodhi|bonsai|bsd|bunsenlabs|calculate|carbs"
map = map .. "|cbl-mariner>cbl_mariner|celos|centos_small|centos"
map = map .. "|chakra|chaletos|chapeau|chrom"
map = map .. "|cleanjaro_small|cleanjaro|clearos"
map = map .. "|clear linux os>clear_linux_os|clear_linux>clear_linux_os"
map = map .. "|clover|condres"
map = map .. "|container linux by coreos>container_linux_by_coreos"
map = map .. "|container_linux>container_linux_by_coreos"
map = map .. "|crux_small|crux|crystal linux>crystal_linux"
map = map .. "|cucumber|cyberos|dahlia"
map = map .. "|debian_small|debian|deepin|desaos|devuan|dracos|darkos|itc"
map = map .. "|dragonfly_old|dragonfly_small|dragonfly|drauger"
map = map .. "|elementary_small|elementary|endeavouros|endless"
map = map .. "|eurolinux|exherbo"
map = map .. "|fedora_small|fedora_old|rfremix>fedora_old|fedora|feren"
map = map .. "|freebsd_small|freebsd|hardenedbsd>freebsd"
map = map .. "|freemint|frugalware|funtoo|galliumos|garuda"
map = map .. "|gentoo_small|gentoo|pentoo|glaucus|gnewsense"
map = map .. "|gnome|gnu|gobolinux|grombyang"
map = map .. "|guix_small|guix|haiku_small|haiku"
map = map .. "|huayra|hydroos|hyperbola_small|hyperbola"
map = map .. "|iglunix|iglu>iglunix"
map = map .. "|januslinux|janus>januslinux"
map = map .. "|ataraxia linux>januslinux|ataraxia>januslinux"
map = map .. "|kaisen|kali|kaos|kde|kibojoe|kogaion|korora|kslinux"
map = map .. "|kubuntu|lede|laxeros|libreelec|ximper|linux"
map = map .. "|linuxlite_small|linux lite>linux_lite|linux_lite>linux_lite"
map = map .. "|lmde|lubuntu|lunar"
map = map .. "|mac|_small>mac|mac>mac_2|darwin>mac_2"
map = map .. "|mageia_small|mageia|magpieos"
map = map .. "|mandriva|mandrake>mandriva|manjaro_small|manjaro"
map = map .. "|tearch|maui|mer|minix"
map = map .. "|linuxmint_small"
map = map .. "|linux mint old>linux_mint_old|linuxmintold>linux_mint_old"
map = map .. "|mint_old>linux_mint_old"
map = map .. "|linux mint>linux_mint|linuxmint>linux_mint|mint>linux_mint"
map = map .. "|live raizo>live_raizo|live_raizo"
map = map .. "|mx_small|mx|namib|neptune"
map = map .. "|netbsd_small|netbsd|netrunner|nitrux"
map = map .. "|nixos_small|nixos_old|nixos|nurunner|nutyx|obrevenge"
map = map .. "|openbsd_small|openbsd|openeuler|openindiana"
map = map .. "|openmamba|openmandriva|openstage|openwrt"
map = map .. "|open source media center>open_source_media_center"
map = map .. "|osmc>open_source_media_center"
map = map .. "|oracle|os elbrus>os_elbrus|pacbsd"
map = map .. "|parabola_small|parabola|pardus|parrot|parsix"
map = map .. "|pcbsd|trueos>pcbsd|pclinuxos|pengwin|peppermint|pisi"
map = map .. "|pnm linux>pnm_linux|whpnm linux>pnm_linux"
map = map .. "|popos_small|pop_os_small>popos_small"
map = map .. "|pop!_os>pop_os|popos>pop_os|pop_os"
map = map .. "|porteus|postmarketos_small|postmarketos"
map = map .. "|puffos|proxmox"
map = map .. "|puppy|quirky werewolf>puppy|precise puppy>puppy"
map = map .. "|pureos_small|pureos|qubes|qubyt|quibian|radix"
map = map .. "|raspbian_small|raspbian"
map = map .. "|reborn os>reborn_os|reborn>reborn_os"
map = map .. "|red star>red_star|redstar>red_star|redcore"
map = map .. "|redhat_old|rhel_old>redhat_old"
map = map .. "|redhat|red hat>redhat|rhel>redhat"
map = map .. "|refracted devuan>refracted_devuan|refracted_devuan"
map = map .. "|regata|regolith|rocky_small|rocky|rosa"
map = map .. "|sabotage|sabayon|sailfish|salentos|scientific"
map = map .. "|septor|serene|sharklinux|siduction"
map = map .. "|slackware_small|slackware|slitaz|smartos|skiffos|solus"
map = map .. "|source mage>source_mage|source_mage|sparky|star|steamos"
map = map .. "|sunos_small|solaris_small>sunos_small|sunos|solaris>sunos"
map = map .. "|opensuse leap>opensuse_leap|opensuse_leap|t2"
map = map .. "|opensuse tumbleweed>opensuse_tumbleweed|opensuse_tumbleweed"
map = map .. "|opensuse_small|suse_small>opensuse_small"
map = map .. "|opensuse|open suse>opensuse|suse>opensuse"
map = map .. "|swagarch|tails|trisquel"
map = map .. "|ubuntu cinnamon>ubuntu_cinnamon|ubuntu-cinnamon>ubuntu_cinnamon"
map = map .. "|ubuntu budgie>ubuntu_budgie|ubuntu-budgie>ubuntu_budgie"
map = map .. "|ubuntu-gnome>ubuntu_gnome"
map = map .. "|ubuntu mate>ubuntu_mate|ubuntu-mate>ubuntu_mate"
map = map .. "|ubuntu_old"
map = map .. "|ubuntu studio>ubuntu_studio|ubuntu-studio>ubuntu_studio"
map = map .. "|ubuntu_small|ubuntu|i3buntu>ubuntu"
map = map .. "|univention|venom|void_small|void|vnux"
map = map .. "|langitketujuh|semc|obarun"
map = map .. "|windows 11>windows_11|windows11>windows_11"
map = map .. "|windows 10>windows_10|windows10>windows_10|windows8>windows_10"
map = map .. "|windows|xubuntu|irix|zorin"
entries = map.split ("|")
i = 0
while i < entries.len () {
entry = entries.get (i)
parts = entry.split (">")
pattern = parts.get (0)
if parts.len () >= 2 {
logo = parts.get (1)
} else {
logo = pattern
}
if d.contains (pattern) {
return logo
}
i = i + 1
}
return "linux"
}
func load_art (logo, display: Display, cfg: Config) {
# Dynamic logo loading via reflect
class_name = "Logo_" .. logo
logo_obj = reflect.create (class_name)
logo_colors = reflect.get (logo_obj, "colors")
# Fallback to linux if class not found (empty colors means reflect failed)
if logo_colors == "" {
logo_obj = reflect.create ("Logo_linux")
logo_colors = reflect.get (logo_obj, "colors")
}
# 1. Set colors from logo class
this.colors_str = logo_colors
# 2. Apply colors
this.apply_colors (display, cfg)
c1 = display.c1
c2 = display.c2
c3 = display.c3
c4 = display.c4
c5 = display.c5
c6 = display.c6
# 3. Get art template and replace color placeholders
# \{c1\} produces literal {c1} in the compiled shell
art = reflect.get (logo_obj, "art")
art = art.replace ("\{c1\}", c1)
art = art.replace ("\{c2\}", c2)
art = art.replace ("\{c3\}", c3)
art = art.replace ("\{c4\}", c4)
art = art.replace ("\{c5\}", c5)
art = art.replace ("\{c6\}", c6)
this.ascii_data = art
}
func apply_colors (display: Display, cfg: Config) {
# Parse colors_str "c1 c2 c3 c4 c5 c6"
parts = this.colors_str.split (" ")
c1_code = "7"
c2_code = "7"
c3_code = "7"
c4_code = "7"
c5_code = "7"
c6_code = "7"
if parts.len () >= 1 { c1_code = parts.get (0) }
if parts.len () >= 2 { c2_code = parts.get (1) }
if parts.len () >= 3 { c3_code = parts.get (2) }
if parts.len () >= 4 { c4_code = parts.get (3) }
if parts.len () >= 5 { c5_code = parts.get (4) }
if parts.len () >= 6 { c6_code = parts.get (5) }
display.set_colors (c1_code, c2_code, c3_code, c4_code, c5_code, c6_code)
display.set_text_colors (cfg, c1_code, c2_code)
}
func print_ascii (display: Display) {
# Print each line of ASCII art alongside info lines
# This is done in main.ct by interleaving ascii and info lines
art = this.ascii_data
print (art)
}
func get_ascii_width () {
# Calculate the max width of the ASCII art (for text padding)
width = printf ("%s", this.ascii_data) | sed ("s/\\\\e\\[[0-9;]*m//g") | awk ("\{ if (length > max) max = length \} END \{ print max \}")
return trim (width)
}
}
# neofetch-ct: config.ct
# Configuration class with all default settings
class Config {
# Version
version = "7.1.0-ct"
# Title
title_fqdn = "off"
# Kernel
kernel_shorthand = "on"
# Distro
distro_shorthand = "off"
os_arch = "on"
# Uptime
uptime_shorthand = "on"
# Memory
memory_percent = "off"
memory_unit = "mib"
# Packages
package_managers = "on"
# Shell
shell_path = "off"
shell_version = "on"
# CPU
speed_type = "bios_limit"
speed_shorthand = "off"
cpu_brand = "on"
cpu_speed = "on"
cpu_cores = "logical"
cpu_temp = "off"
# GPU
gpu_brand = "on"
gpu_type = "all"
# Resolution
refresh_rate = "off"
# GTK Theme / Icons / Font
gtk_shorthand = "off"
gtk2 = "on"
gtk3 = "on"
# IP
public_ip_host = "http://ident.me"
public_ip_timeout = "2"
# Desktop Environment
de_version = "on"
# Disk
disk_subtitle = "mount"
disk_percent = "on"
# Song
music_player = "auto"
song_format = "%artist% - %album% - %title%"
song_shorthand = "off"
# Text Colors
color_text = "on"
# Text Options
bold = "on"
underline_enabled = "on"
underline_char = "-"
separator = ":"
# Color Blocks
block_range_start = "0"
block_range_end = "15"
color_blocks = "on"
block_width = "3"
block_height = "1"
col_offset = "auto"
# Progress Bars
bar_char_elapsed = "-"
bar_char_total = "="
bar_border = "on"
bar_length = "15"
bar_color_elapsed = "distro"
bar_color_total = "distro"
# Info display
memory_display = "off"
battery_display = "off"
disk_display = "off"
# Backend Settings
image_backend = "ascii"
image_source = "auto"
# Ascii Options
ascii_distro = "auto"
ascii_bold = "on"
# Image Options
image_loop = "off"
crop_mode = "normal"
crop_offset = "center"
image_size = "auto"
catimg_size = "2"
gap = "3"
yoffset = "0"
xoffset = "0"
background_color = ""
# Misc
stdout = "off"
verbose = "off"
# Internal state
ascii_data = ""
info_height = "0"
text_padding = ""
construct () {
}
}
# neofetch-ct: detector.ct
# System information detection classes
class OsDetector {
kernel_name = ""
kernel_version = ""
kernel_machine = ""
os = ""
func cache_uname () {
this.kernel_name = uname ("-s")
this.kernel_version = uname ("-r")
this.kernel_machine = uname ("-m")
}
func detect () {
kn = this.kernel_name
when kn {
"Darwin" {
this.os = "macOS"
}
"SunOS" {
this.os = "Solaris"
}
"Haiku" {
this.os = "Haiku"
}
"MINIX" {
this.os = "MINIX"
}
"AIX" {
this.os = "AIX"
}
"FreeMiNT" {
this.os = "FreeMiNT"
}
else {
# Note: chained .contains() || is broken (compiler bug #6)
# Each .contains() overwrites __CT_RET, so use separate checks
is_bsd = kn.contains ("BSD")
if is_bsd != "true" {
is_bsd = kn.contains ("DragonFly")
}
if is_bsd != "true" {
is_bsd = kn.contains ("Bitrig")
}
is_win = kn.contains ("CYGWIN")
if is_win != "true" {
is_win = kn.contains ("MSYS")
}
if is_win != "true" {
is_win = kn.contains ("MINGW")
}
is_linux = kn.contains ("Linux")
if is_linux != "true" {
is_linux = kn.contains ("GNU")
}
is_irix = kn.contains ("IRIX")
if is_bsd == "true" {
this.os = "BSD"
} else if is_win == "true" {
this.os = "Windows"
} else if is_linux == "true" {
this.os = "Linux"
} else if is_irix == "true" {
this.os = "IRIX"
} else {
this.os = "Unknown"
}
}
}
return this.os
}
func detect_distro (cfg: Config) {
os = this.os
distro = ""
if os == "Linux" || os == "BSD" || os == "MINIX" {
# Try os-release
if fs.exists ("/etc/os-release") {
distro = sh ("-c","source /etc/os-release 2>/dev/null && echo \"$PRETTY_NAME\"")
} else if fs.exists ("/usr/lib/os-release") {
distro = sh ("-c","source /usr/lib/os-release 2>/dev/null && echo \"$PRETTY_NAME\"")
} else if fs.exists ("/etc/lsb-release") {
distro = sh ("-c","source /etc/lsb-release 2>/dev/null && echo \"$DISTRIB_DESCRIPTION\"")
}
if distro == "" {
if has_cmd ("lsb_release") != "" {
distro = lsb_release ("-sd")
}
}
if distro == "" {
distro = this.kernel_name .. " " .. this.kernel_version
}
distro = trim_quotes (distro)
# Ximper (ALT Linux based)
if fs.exists ("/etc/altlinux-release") {
if cfg.distro_shorthand == "on" || cfg.distro_shorthand == "tiny" {
distro = "Ximper"
} else {
distro = trim (fs.read ("/etc/altlinux-release"))
}
}
# Detect WSL
if fs.exists ("/proc/version") {
proc_version = fs.read ("/proc/version")
if proc_version.contains ("Microsoft") {
distro = distro .. " on Windows (WSL)"
}
}
# Get Ubuntu flavor
if distro.contains ("Ubuntu") {
xdg = env.XDG_CONFIG_DIRS
if xdg.contains ("studio") {
distro = distro.replace ("Ubuntu", "Ubuntu Studio")
} else if xdg.contains ("plasma") {
distro = distro.replace ("Ubuntu", "Kubuntu")
} else if xdg.contains ("mate") {
distro = distro.replace ("Ubuntu", "Ubuntu MATE")
} else if xdg.contains ("xubuntu") {
distro = distro.replace ("Ubuntu", "Xubuntu")
} else if xdg.contains ("Lubuntu") {
distro = distro.replace ("Ubuntu", "Lubuntu")
} else if xdg.contains ("budgie") {
distro = distro.replace ("Ubuntu", "Ubuntu Budgie")
} else if xdg.contains ("cinnamon") {
distro = distro.replace ("Ubuntu", "Ubuntu Cinnamon")
}
}
} else if os == "Windows" {
distro = sh ("-c","wmic os get Caption 2>/dev/null | tail -1 | sed 's/Microsoft //'")
} else if os == "Solaris" {
distro = awk ("NR==1 \{print \$1,\$2,\$3\}", "/etc/release")
} else if os == "Haiku" {
distro = "Haiku"
} else if os == "AIX" {
distro = "AIX " .. oslevel ()
} else if os == "IRIX" {
distro = "IRIX " .. this.kernel_version
} else if os == "FreeMiNT" {
distro = "FreeMiNT"
}
if distro == "" {
distro = os .. " (Unknown)"
}
# Architecture
if cfg.os_arch == "on" {
machine_arch = this.kernel_machine
distro = distro .. " " .. machine_arch
}
return trim (distro)
}
}
class HardwareDetector {
func detect_model (os_name, kernel_name) {
model = ""
if os_name == "Linux" {
if fs.exists ("/sys/devices/virtual/dmi/id/product_name") {
model = trim (read_file ("/sys/devices/virtual/dmi/id/product_name"))
ver = trim (read_file ("/sys/devices/virtual/dmi/id/product_version"))
if ver != "" && ver != "Not Specified" && ver != "Undefined" {
model = model .. " " .. ver
}
} else if fs.exists ("/sys/devices/virtual/dmi/id/board_vendor") {
vendor = trim (read_file ("/sys/devices/virtual/dmi/id/board_vendor"))
bname = trim (read_file ("/sys/devices/virtual/dmi/id/board_name"))
model = vendor .. " " .. bname
} else if fs.exists ("/sys/firmware/devicetree/base/model") {
model = trim (read_file ("/sys/firmware/devicetree/base/model"))
}
} else if os_name == "BSD" || os_name == "MINIX" {
model = sysctl ("-n", "hw.vendor", "hw.product")
} else if os_name == "Solaris" {
model = sh ("-c","prtconf -b 2>/dev/null | awk -F: '/banner-name/ \{printf \$2\}'")
} else if os_name == "AIX" {
model = sh ("-c","/usr/bin/uname -M 2>/dev/null")
} else if os_name == "FreeMiNT" {
model = sysctl ("-n", "hw.model")
}
model = trim (model)
# Remove dummy OEM info
model = model.replace ("To be filled by O.E.M.", "")
model = model.replace ("To Be Filled By O.E.M.", "")
model = model.replace ("System Product Name", "")
model = model.replace ("System Version", "")
model = model.replace ("Undefined", "")
model = model.replace ("Default string", "")
model = model.replace ("Not Specified", "")
model = model.replace ("Not Applicable", "")
model = model.replace ("Type1ProductConfigId", "")
model = model.replace ("INVALID", "")
model = model.replace ("All Series", "")
model = model.replace ("OEM", "")
return trim (model)
}
func detect_cpu (os_name, kernel_machine, cfg: Config) {
cpu = ""
speed = ""
cores = ""
deg = ""
if os_name == "Linux" || os_name == "MINIX" || os_name == "Windows" {
# CPU name
cpu = awk ("-F", "\\\\s*: | @", "/model name|Hardware|Processor|^cpu model|chip type|^cpu type/ \{cpu=\$2; if (\$1 == \"Hardware\") exit \} END \{ print cpu \}", "/proc/cpuinfo")
# CPU speed
speed_dir = "/sys/devices/system/cpu/cpu0/cpufreq"
if fs.exists (speed_dir .. "/" .. cfg.speed_type) {
speed = trim (read_file (speed_dir .. "/" .. cfg.speed_type))
} else if fs.exists (speed_dir .. "/bios_limit") {
speed = trim (read_file (speed_dir .. "/bios_limit"))
} else if fs.exists (speed_dir .. "/scaling_max_freq") {
speed = trim (read_file (speed_dir .. "/scaling_max_freq"))
} else if fs.exists (speed_dir .. "/cpuinfo_max_freq") {
speed = trim (read_file (speed_dir .. "/cpuinfo_max_freq"))
} else {
speed = awk ("-F", ": |\\\\.", "/cpu MHz|^clock/ \{printf \$2; exit\}", "/proc/cpuinfo")
speed = speed.replace ("MHz", "")
}
# CPU temp
temp_val = sh ("-c","for d in /sys/class/hwmon/*; do name=$(cat \"$d/name\" 2>/dev/null); case \"$name\" in cpu_thermal|coretemp|fam15h_power|k10temp) cat \"$d/temp1_input\" 2>/dev/null; break;; esac; done")
temp_val = trim (temp_val)
if temp_val != "" {
deg = temp_val
}
# CPU cores
if cfg.cpu_cores == "logical" || cfg.cpu_cores == "on" {
cores = grep ("-c", "^processor", "/proc/cpuinfo")
} else if cfg.cpu_cores == "physical" {
cores = awk ("/^core id/&&!a[\$0]++\{++i\} END \{print i\}", "/proc/cpuinfo")
}
} else if os_name == "BSD" {
cpu = sysctl ("-n", "hw.model")
speed = sysctl ("-n", "hw.cpuspeed")
cores = sysctl ("-n", "hw.ncpu")
} else if os_name == "Solaris" {
cpu = sh ("-c","psrinfo -pv 2>/dev/null | tail -1")
speed = sh ("-c","psrinfo -v 2>/dev/null | awk '/operates at/ \{print \$6; exit\}'")
cores = sh ("-c","kstat -m cpu_info 2>/dev/null | grep -c -F chip_id")
} else if os_name == "Haiku" {
cpu = sh ("-c","sysinfo -cpu 2>/dev/null | awk -F '\"' '/CPU #0/ \{print \$2\}'")
speed = sh ("-c","sysinfo -cpu 2>/dev/null | awk '/running at/ \{print \$NF; exit\}'")
speed = speed.replace ("MHz", "")
cores = sh ("-c","sysinfo -cpu 2>/dev/null | grep -c -F 'CPU #'")
} else if os_name == "AIX" {
cpu = sh ("-c","lsattr -El proc0 -a type 2>/dev/null | awk '\{printf \$2\}'")
speed = sh ("-c","prtconf -s 2>/dev/null | awk -F: '\{printf \$2\}'")
speed = speed.replace ("MHz", "")
} else if os_name == "IRIX" {
cpu = sh ("-c","hinv -c processor 2>/dev/null | awk -F: '/CPU:/ \{printf \$2\}'")
speed = sh ("-c","hinv -c processor 2>/dev/null | awk '/MHZ/ \{printf \$2\}'")
cores = sh ("-c","sysconf NPROC_ONLN 2>/dev/null")
} else if os_name == "FreeMiNT" {
cpu = awk ("-F", ":", "/CPU:/ \{printf \$2\}", "/kern/cpuinfo")
speed = awk ("-F", "[:.M]", "/Clocking:/ \{printf \$2\}", "/kern/cpuinfo")
}
cpu = trim (cpu)
speed = trim (speed)
cores = trim (cores)
# Clean CPU name
cpu = cpu.replace ("(TM)", "")
cpu = cpu.replace ("(tm)", "")
cpu = cpu.replace ("(R)", "")
cpu = cpu.replace ("(r)", "")
cpu = cpu.replace ("CPU", "")
cpu = cpu.replace ("Processor", "")
cpu = cpu.replace ("Dual-Core", "")
cpu = cpu.replace ("Quad-Core", "")
cpu = cpu.replace ("Six-Core", "")
cpu = cpu.replace ("Eight-Core", "")
cpu = cpu.replace ("Core2", "Core 2")
cpu = cpu.replace ("Technologies, Inc", "")
cpu = cpu.replace (", altivec supported", "")
cpu = cpu.replace ("with Radeon Graphics", "")
cpu = trim (cpu)
# Remove brand if disabled
if cfg.cpu_brand == "off" {
cpu = cpu.replace ("AMD ", "")
cpu = cpu.replace ("Intel ", "")
cpu = cpu.replace ("Qualcomm ", "")
}
# Add cores
if cfg.cpu_cores != "off" && cores != "" && cores != "0" {
cpu = cpu .. " (" .. cores .. ")"
}
# Add speed
if cfg.cpu_speed != "off" && speed != "" {
# Convert kHz to MHz if from sysfs
if fs.exists ("/sys/devices/system/cpu/cpu0/cpufreq") {
speed = speed / 1000
}
if speed < 1000 {
cpu = cpu .. " @ " .. speed .. "MHz"
} else {
_spd_int = speed / 1000
_spd_dec = speed % 1000 / 100
cpu = cpu .. " @ " .. _spd_int .. "." .. _spd_dec .. "GHz"
}
}
# Add temperature
if cfg.cpu_temp != "off" && deg != "" {
_deg_c = deg / 1000
_deg_unit = "C"
if cfg.cpu_temp == "F" {
_deg_c = _deg_c * 9 / 5 + 32
_deg_unit = "F"
}
cpu = cpu .. " [" .. _deg_c .. "°" .. _deg_unit .. "]"
}
return trim (cpu)
}
func detect_gpu (os_name, kernel_name, cfg: Config) {
gpu = ""
if os_name == "Linux" {
gpu_raw = sh ("-c","lspci -mm 2>/dev/null | awk -F '\"' '/Display|3D|VGA/ \{print \$6\}' | head -1")
gpu = trim (gpu_raw)
# Try to get more specific name
if gpu != "" {
gpu_full = sh ("-c","lspci 2>/dev/null | awk -F': ' '/VGA|Display|3D/ \{print \$2; exit\}'")
gpu_full = trim (gpu_full)
if gpu_full != "" {
gpu = gpu_full
}
}
# Clean up
gpu = gpu.replace ("(R)", "")
gpu = gpu.replace ("Corporation ", "")
gpu = gpu.replace ("Integrated Graphics Controller", "Integrated Graphics")
gpu = gpu.replace ("[", "")
gpu = gpu.replace ("]", "")
} else if os_name == "BSD" {
kn_fb = kernel_name.contains ("FreeBSD")
if kn_fb != "true" {
kn_fb = kernel_name.contains ("DragonFly")
}
if kn_fb == "true" {
gpu = sh ("-c","pciconf -lv 2>/dev/null | grep -B 4 -F VGA | grep -F device | head -1 | sed 's/.*device.*= //'")
} else {
gpu = sh ("-c","glxinfo -B 2>/dev/null | grep -F 'OpenGL renderer string' | sed 's/OpenGL renderer string: //'")
}
} else if os_name == "Haiku" {
gpu = sh ("-c","listdev 2>/dev/null | grep -A2 -F 'device Display controller' | awk -F: '/device beef/ \{print \$2\}'")
} else if os_name == "Windows" {
gpu = sh ("-c","wmic path Win32_VideoController get caption 2>/dev/null | tail -1")
}
gpu = trim (gpu)
if cfg.gpu_brand == "off" {
gpu = gpu.replace ("AMD ", "")
gpu = gpu.replace ("NVIDIA ", "")
gpu = gpu.replace ("Intel ", "")
}
return gpu
}
func detect_memory (os_name, kernel_name, cfg: Config) {
mem_used = ""
mem_total = ""
if os_name == "Linux" || os_name == "Windows" {
mem_info = awk ("/MemTotal:/\{t=\$2\} /MemAvailable:/\{a=\$2\} END\{printf \"%d %d\", (t-a)/1024, t/1024\}", "/proc/meminfo")
parts = mem_info.split (" ")
if parts.len () >= 2 {
mem_used = parts.get (0)
mem_total = parts.get (1)
}
} else if os_name == "BSD" || os_name == "MINIX" {
mem_total = sh ("-c","echo $(($(sysctl -n hw.physmem 2>/dev/null) / 1024 / 1024))")
if kernel_name.contains ("OpenBSD") {
mem_used = sh ("-c","vmstat 2>/dev/null | awk 'END \{printf \$3\}'")
mem_used = mem_used.replace ("M", "")
} else {
kn_fb2 = kernel_name.contains ("FreeBSD")
if kn_fb2 != "true" {
kn_fb2 = kernel_name.contains ("DragonFly")
}
if kn_fb2 == "true" {
mem_used = sh ("-c","hw=$(sysctl -n hw.pagesize); inactive=$(sysctl -n vm.stats.vm.v_inactive_count); unused=$(sysctl -n vm.stats.vm.v_free_count); cache=$(sysctl -n vm.stats.vm.v_cache_count); free=$(( (inactive + unused + cache) * hw / 1024 / 1024 )); echo $(({mem_total} - free))")
} else {
mem_free = sh ("-c","vmstat 2>/dev/null | awk 'END \{printf \$5\}'")
mem_used = mem_total - mem_free / 1024
}
}
} else if os_name == "Solaris" || os_name == "AIX" {
mem_total = sh ("-c","echo $(($(kstat -p unix:0:system_pages:pagestotal 2>/dev/null | awk '\{print \$2\}') * $(pagesize) / 1024 / 1024))")
mem_free = sh ("-c","echo $(($(kstat -p unix:0:system_pages:pagesfree 2>/dev/null | awk '\{print \$2\}') * $(pagesize) / 1024 / 1024))")
mem_used = mem_total - mem_free
} else if os_name == "Haiku" {
mem_total = sh ("-c","echo $(($(sysinfo -mem | awk -F '/ |)' '\{print \$2; exit\}') / 1024 / 1024))")
mem_used = sh ("-c","sysinfo -mem | awk -F '/|)' '\{gsub(/max/,\"\",\$2); print int(\$2/1024/1024); exit\}'")
} else if os_name == "FreeMiNT" {
mem_total = awk ("-F", ":|kB", "/MemTotal:/ \{printf int(\$2/1024)\}", "/kern/meminfo")
mem_free = awk ("-F", ":|kB", "/MemFree:/ \{printf int(\$2/1024)\}", "/kern/meminfo")
mem_used = mem_total - mem_free
}
mem_used = trim (mem_used)
mem_total = trim (mem_total)
if mem_used == "" || mem_total == "" {
return ""
}
mem_label = "MiB"
if cfg.memory_unit == "gib" {
mem_used = sh ("-c","awk 'BEGIN\{printf \"%.2f\", {mem_used}/1024\}'")
mem_total = sh ("-c","awk 'BEGIN\{printf \"%.2f\", {mem_total}/1024\}'")
mem_label = "GiB"
} else if cfg.memory_unit == "kib" {
mem_used = mem_used * 1024
mem_total = mem_total * 1024
mem_label = "KiB"
}
memory = mem_used .. mem_label .. " / " .. mem_total .. mem_label
if cfg.memory_percent == "on" {
_mem_perc = mem_used * 100 / mem_total
memory = memory .. " (" .. _mem_perc .. "%)"
}
return memory
}
func detect_disk (os_name, cfg: Config) {
disk_info = sh ("-c","df -h / 2>/dev/null | awk 'NR==2 \{printf \"%s / %s (%s)\", \$3, \$2, \$5\}'")
return trim (disk_info)
}
func detect_battery (os_name) {
battery = ""
if os_name == "Linux" {
if fs.exists ("/sys/class/power_supply/BAT0/capacity") {
capacity = trim (read_file ("/sys/class/power_supply/BAT0/capacity"))
status = trim (read_file ("/sys/class/power_supply/BAT0/status"))
battery = capacity .. "% [" .. status .. "]"
}
} else if os_name == "BSD" {
battery = sh ("-c","apm -l 2>/dev/null")
battery = trim (battery)
if battery != "" && battery != "255" {
battery = battery .. "%"
} else {
battery = ""
}
}
return trim (battery)
}
}
class DesktopDetector {
func detect_de (os_name) {
de = ""
if os_name == "Windows" {
de = "Aero"
} else {
de = env.XDG_CURRENT_DESKTOP
de = de.replace ("X-", "")
de = de.replace ("Budgie:GNOME", "Budgie")
if de == "" {
de = env.DESKTOP_SESSION
}
if de == "" {
gnome_id = env.GNOME_DESKTOP_SESSION_ID
mate_id = env.MATE_DESKTOP_SESSION_ID
if gnome_id != "" {
de = "GNOME"
} else if mate_id != "" {
de = "MATE"
}
}
}
return trim (de)
}
func detect_de_version (de_name) {
de_ver = ""
if de_name.contains ("Plasma") {
de_ver = sh ("-c","plasmashell --version 2>/dev/null | awk '\{print \$NF\}'")
} else if de_name.contains ("MATE") {
de_ver = sh ("-c","mate-session --version 2>/dev/null | awk '\{print \$NF\}'")
} else if de_name.contains ("Xfce") {
de_ver = sh ("-c","xfce4-session --version 2>/dev/null | awk 'NR==1\{print \$2\}'")
} else if de_name.contains ("GNOME") {
de_ver = sh ("-c","gnome-shell --version 2>/dev/null | awk '\{print \$NF\}'")
} else if de_name.contains ("Cinnamon") {
de_ver = sh ("-c","cinnamon --version 2>/dev/null | awk '\{print \$NF\}'")
} else if de_name.contains ("Budgie") {
de_ver = sh ("-c","budgie-desktop --version 2>/dev/null | awk '\{print \$NF\}'")
} else if de_name.contains ("LXQt") {
de_ver = sh ("-c","lxqt-session --version 2>/dev/null | awk '\{print \$NF\}'")
}
return trim (de_ver)
}
func detect_wm (os_name, kernel_name) {
wm = ""
# Wayland check
wayland_display = env.WAYLAND_DISPLAY
if wayland_display != "" {
wm = sh ("-c","ps -e 2>/dev/null | grep -m 1 -o -F -e sway -e kwin -e mutter -e gnome-shell -e weston -e river -e wayfire -e hikari -e hyprland -e Hyprland")
wm = trim (wm)
}
if wm == "" {
display = env.DISPLAY
if display != "" {
# Try xprop
if has_cmd ("xprop") != "" {
wm_id = sh ("-c","xprop -root -notype _NET_SUPPORTING_WM_CHECK 2>/dev/null | awk '\{print \$NF\}'")
wm_id = trim (wm_id)
if wm_id != "" && wm_id != "found." {
wm = sh ("-c","xprop -id {wm_id} -notype -len 100 -f _NET_WM_NAME 8t 2>/dev/null | awk -F '\"' '/WM_NAME/ \{print \$2\}'")
}
}
# Fallback to ps
if wm == "" || wm == "found." {
wm = sh ("-c","ps -e 2>/dev/null | grep -m 1 -o -e '[s]owm' -e '[f]vwm' -e '[d]wm' -e '[2]bwm' -e '[t]inywm' -e '[x]monad' -e i3 -e bspwm -e herbstluftwm -e openbox -e awesome")
}
}
}
if wm == "" && os_name == "Windows" {
wm = "DWM.exe"
}
wm = trim (wm)
# Rename
wm_is_gnome = wm.contains ("GNOME")
if wm_is_gnome != "true" {
wm_is_gnome = wm.contains ("gnome-shell")
}
if wm_is_gnome == "true" {
wm = "Mutter"
}
return wm
}
func detect_wm_theme (wm_name, de_name) {
wm_theme = ""
xdg_config = env.XDG_CONFIG_HOME
home = env.HOME
if xdg_config == "" {
xdg_config = home .. "/.config"
}
if wm_name == "Openbox" {
ob_file = "rc"
if de_name.contains ("LXDE") {
ob_file = "lxde-rc"
} else if de_name.contains ("LXQt") {
ob_file = "lxqt-rc"
}
wm_theme = sh ("-c","awk '/<theme>/ \{while (getline n) \{if (match(n, /<name>/)) \{l=n; exit\}\}\} END \{split(l, a, \"[<>]\"); print a[3]\}' \"{xdg_config}/openbox/{ob_file}.xml\" 2>/dev/null")
} else if wm_name.contains ("KWin") {
wm_theme = sh ("-c","awk -F= '/theme=/ \{gsub(/theme=.*qml_|theme=.*svg__/,\"\",\$0); print \$0; exit\}' \"{xdg_config}/kwinrc\" 2>/dev/null")
} else if wm_name == "Mutter" || wm_name == "Compiz" || wm_name == "Gala" {
if has_cmd ("gsettings") != "" {
wm_theme = gsettings ("get", "org.gnome.shell.extensions.user-theme", "name")
wm_theme = trim_quotes (trim (wm_theme))
if wm_theme == "" {
wm_theme = gsettings ("get", "org.gnome.desktop.wm.preferences", "theme")
wm_theme = trim_quotes (trim (wm_theme))
}
}
} else if wm_name == "Xfwm4" {
if has_cmd ("xfconf-query") != "" {
wm_theme = xfconf-query ("-c", "xfwm4", "-p", "/general/theme")
}
} else if wm_name == "Fluxbox" {
wm_theme = sh ("-c","awk -F/ '/styleFile/ \{print \$NF\}' \"{home}/.fluxbox/init\" 2>/dev/null")
} else if wm_name.contains ("IceWM") {
wm_theme = sh ("-c","awk -F '[\"\\,/]' '!/#/ \{print \$2\}' \"{home}/.icewm/theme\" 2>/dev/null")
}
return trim_quotes (trim (wm_theme))
}
func detect_theme (os_name, de_name, cfg: Config) {
theme = ""
de_is_kde = de_name.contains ("KDE")
if de_is_kde != "true" {
de_is_kde = de_name.contains ("Plasma")
}
de_is_gnome = de_name.contains ("GNOME")
if de_is_gnome != "true" {
de_is_gnome = de_name.contains ("Unity")
}
if de_is_gnome != "true" {
de_is_gnome = de_name.contains ("Budgie")
}
if de_is_kde == "true" {
xdg_config = env.XDG_CONFIG_HOME
home = env.HOME
if xdg_config == "" {
xdg_config = home .. "/.config"
}
theme = sh ("-c","awk -F= '/^Name=/ \{print \$2; exit\}' \"{xdg_config}/kdeglobals\" 2>/dev/null")
} else if de_is_gnome == "true" {
if has_cmd ("gsettings") != "" {
theme = gsettings ("get", "org.gnome.desktop.interface", "gtk-theme")
}
} else if de_name.contains ("MATE") {
if has_cmd ("gsettings") != "" {
theme = gsettings ("get", "org.mate.interface", "gtk-theme")
}
} else if de_name.contains ("Xfce") {
if has_cmd ("xfconf-query") != "" {
theme = xfconf-query ("-c", "xsettings", "-p", "/Net/ThemeName")
}
} else if de_name.contains ("Cinnamon") {
if has_cmd ("gsettings") != "" {
theme = gsettings ("get", "org.cinnamon.desktop.interface", "gtk-theme")
}
}
return trim_quotes (trim (theme))
}
func detect_icons (os_name, de_name, cfg: Config) {
icons = ""
ic_kde = de_name.contains ("KDE")
if ic_kde != "true" {
ic_kde = de_name.contains ("Plasma")
}
ic_gnome = de_name.contains ("GNOME")
if ic_gnome != "true" {
ic_gnome = de_name.contains ("Unity")
}
if ic_gnome != "true" {
ic_gnome = de_name.contains ("Budgie")
}
if ic_kde == "true" {
xdg_config = env.XDG_CONFIG_HOME
home = env.HOME
if xdg_config == "" {
xdg_config = home .. "/.config"
}
icons = sh ("-c","awk -F= '/^Theme=/ \{print \$2; exit\}' \"{xdg_config}/kdeglobals\" 2>/dev/null")
} else if ic_gnome == "true" {
if has_cmd ("gsettings") != "" {
icons = gsettings ("get", "org.gnome.desktop.interface", "icon-theme")
}
} else if de_name.contains ("MATE") {
if has_cmd ("gsettings") != "" {
icons = gsettings ("get", "org.mate.interface", "icon-theme")
}
} else if de_name.contains ("Xfce") {
if has_cmd ("xfconf-query") != "" {
icons = xfconf-query ("-c", "xsettings", "-p", "/Net/IconThemeName")
}
} else if de_name.contains ("Cinnamon") {
if has_cmd ("gsettings") != "" {
icons = gsettings ("get", "org.cinnamon.desktop.interface", "icon-theme")
}
}
return trim_quotes (trim (icons))
}
func detect_term () {
term = env.TERM_PROGRAM
if term != "" {
return trim (term)
}
# Walk process tree
term = sh ("-c","pid=\$\$; while [ \"\$pid\" ]; do ppid=\$(ps -p \"\$pid\" -o ppid= 2>/dev/null); ppid=\$\{ppid// \}; [ -z \"\$ppid\" ] || [ \"\$ppid\" = 0 ] && break; name=\$(ps -p \"\$ppid\" -o comm= 2>/dev/null); name=\$\{name##*/\}; case \"\$name\" in bash|zsh|sh|fish|dash|nu|screen|tmux|su*|login*|init|sshd*) pid=\"\$ppid\"; continue;; gnome-terminal-) echo gnome-terminal; exit;; urxvtd) echo urxvt; exit;; *) echo \"\$name\"; exit;; esac; done")
term = trim (term)
if term == "" {
term = env.TERM
}
# Rename terminals
if term == "iTerm.app" {
term = "iTerm2"
} else if term == "Terminal.app" {
term = "Apple Terminal"
}
return trim (term)
}
func detect_term_font (term_name) {
term_font = ""
xdg_config = env.XDG_CONFIG_HOME
home = env.HOME
if xdg_config == "" {
xdg_config = home .. "/.config"
}
if term_name.contains ("alacritty") {
term_font = sh ("-c","awk -F '\"' '/family/ \{print \$2; exit\}' \"{xdg_config}/alacritty/alacritty.yml\" \"{xdg_config}/alacritty/alacritty.toml\" 2>/dev/null")
} else if term_name.contains ("kitty") {
term_font = sh ("-c","awk '/^font_family/ \{\$1=\"\"; print; exit\}' \"{xdg_config}/kitty/kitty.conf\" 2>/dev/null")
} else if term_name == "konsole" || term_name == "yakuake" {
xdg_data = env.XDG_DATA_HOME
if xdg_data == "" {
xdg_data = home .. "/.local/share"
}
profile = sh ("-c","awk -F= '/DefaultProfile/ \{print \$2\}' \"{xdg_config}/konsolerc\" 2>/dev/null")
profile = trim (profile)
if profile != "" {
term_font = sh ("-c","awk -F '=|,' '/Font=/ \{print \$2\" \"\$3; exit\}' \"{xdg_data}/konsole/{profile}\" 2>/dev/null")
}
} else if term_name == "xfce4-terminal" {
term_font = sh ("-c","awk -F= '/^FontName/ \{print \$2; exit\}' \"{xdg_config}/xfce4/terminal/terminalrc\" 2>/dev/null")
} else if term_name.contains ("gnome-terminal") {
if has_cmd ("gsettings") != "" && has_cmd ("dconf") != "" {
profile = gsettings ("get", "org.gnome.Terminal.ProfilesList", "default")
profile = trim_quotes (trim (profile))
if profile != "" {
term_font = dconf ("read", "/org/gnome/terminal/legacy/profiles:/:{profile}/font")
}
}
} else if term_name.contains ("lxterminal") {
term_font = sh ("-c","awk -F= '/fontname/ \{print \$2; exit\}' \"{xdg_config}/lxterminal/lxterminal.conf\" 2>/dev/null")
}
return trim_quotes (trim (term_font))
}
func detect_resolution (os_name) {
resolution = ""
if os_name == "Linux" || os_name == "BSD" {
if has_cmd ("xrandr") != "" {
resolution = sh ("-c","xrandr --nograb --current 2>/dev/null | awk '/\\*/ \{printf \$1\", \"\}' | sed 's/, \$//'")
} else if has_cmd ("xdpyinfo") != "" {
resolution = sh ("-c","xdpyinfo 2>/dev/null | awk '/dimensions/ \{printf \$2\}'")
}
# Wayland fallback
if resolution == "" {
if has_cmd ("wlr-randr") != "" {
resolution = sh ("-c","wlr-randr 2>/dev/null | awk '/current/ \{printf \$1\", \"\}' | sed 's/, \$//'")
}
}
} else if os_name == "Haiku" {
resolution = sh ("-c","screenmode 2>/dev/null | awk '\{printf \"%sx%s\", \$2, \$3\}'")
}
return trim (resolution)
}
func detect_font (os_name, de_name) {
font = ""
xdg_config = env.XDG_CONFIG_HOME
home = env.HOME
if xdg_config == "" {
xdg_config = home .. "/.config"
}
fn_kde = de_name.contains ("KDE")
if fn_kde != "true" {
fn_kde = de_name.contains ("Plasma")
}
fn_gnome = de_name.contains ("GNOME")
if fn_gnome != "true" {
fn_gnome = de_name.contains ("Unity")
}
if fn_gnome != "true" {
fn_gnome = de_name.contains ("Budgie")
}
if fn_kde == "true" {
font = sh ("-c","awk -F '=|,' '/^font=/ \{print \$2\" \"\$3; exit\}' \"{xdg_config}/kdeglobals\" 2>/dev/null")
} else if fn_gnome == "true" {
if has_cmd ("gsettings") != "" {
font = gsettings ("get", "org.gnome.desktop.interface", "font-name")
}
} else if de_name.contains ("Xfce") {
if has_cmd ("xfconf-query") != "" {
font = xfconf-query ("-c", "xsettings", "-p", "/Gtk/FontName")
}
} else if de_name.contains ("MATE") {
if has_cmd ("gsettings") != "" {
font = gsettings ("get", "org.mate.interface", "font-name")
}
} else if de_name.contains ("Cinnamon") {
if has_cmd ("gsettings") != "" {
font = gsettings ("get", "org.cinnamon.desktop.interface", "font-name")
}
}
return trim_quotes (trim (font))
}
}
class NetworkDetector {
func detect_local_ip (os_name) {
local_ip = ""
if os_name == "Linux" || os_name == "BSD" {
local_ip = sh ("-c","ip route get 1 2>/dev/null | awk '\{print \$7; exit\}'")
if local_ip == "" {
local_ip = sh ("-c","ifconfig 2>/dev/null | awk '/inet / && !/127.0.0.1/ \{print \$2; exit\}'")
}
} else if os_name == "Haiku" {
local_ip = sh ("-c","ifconfig 2>/dev/null | awk '/inet/ && !/127.0.0.1/ \{print \$2; exit\}'")
}
return trim (local_ip)
}
func detect_public_ip (cfg: Config) {
public_ip = sh ("-c","curl --max-time {cfg.public_ip_timeout} -s {cfg.public_ip_host} 2>/dev/null")
return trim (public_ip)
}
}
class MiscDetector {
func detect_kernel (os_name, kernel_name, kernel_version, cfg: Config) {
if os_name == "AIX" || os_name == "IRIX" {
return ""
}
if os_name == "Haiku" {
return uname ("-v")
}
if os_name == "Windows" {
kernel = sh ("-c","wmic os get Version 2>/dev/null | tail -1")
return trim (kernel)
}
if cfg.kernel_shorthand == "on" {
return kernel_version
}
return kernel_name .. " " .. kernel_version
}
func detect_uptime (os_name, cfg: Config) {
s = ""
if os_name == "Linux" || os_name == "Windows" || os_name == "MINIX" {
if fs.exists ("/proc/uptime") {
s = awk ("-F", ".", "\{print \$1\}", "/proc/uptime")
} else {
s = sh ("-c","boot=\$(date -d\"\$(uptime -s)\" +%s 2>/dev/null); now=\$(date +%s); echo \$((now - boot))")
}
} else if os_name == "BSD" || os_name == "FreeMiNT" {
s = sh ("-c","boot=\$(sysctl -n kern.boottime 2>/dev/null | awk '\{print \$4\}' | tr -d ,); now=\$(date +%s); echo \$((now - boot))")
} else if os_name == "Solaris" {
s = sh ("-c","kstat -p unix:0:system_misc:snaptime 2>/dev/null | awk '\{printf \"%d\", \$2\}'")
} else if os_name == "Haiku" {
s = sh ("-c","echo \$(((\$(system_time)) / 1000000))")
}
s = trim (s)
if s == "" || s == "0" {
return "Unknown"
}
d = s / 60 / 60 / 24
h = s / 60 / 60 % 24
m = s / 60 % 60
result = ""
if d != "0" {
if d == "1" {
result = d .. " day, "
} else {
result = d .. " days, "
}
}
if h != "0" {
if h == "1" {
result = result .. h .. " hour, "
} else {
result = result .. h .. " hours, "
}
}
if m == "1" {
result = result .. m .. " minute"
} else {
result = result .. m .. " minutes"
}
# Shorthand
if cfg.uptime_shorthand == "on" {
result = result.replace (" minutes", " mins")
result = result.replace (" minute", " min")
} else if cfg.uptime_shorthand == "tiny" {
result = result.replace (" days", "d")
result = result.replace (" day", "d")
result = result.replace (" hours", "h")
result = result.replace (" hour", "h")
result = result.replace (" minutes", "m")
result = result.replace (" minute", "m")
result = result.replace (", ", " ")
}
# Remove trailing comma
if result.ends (", ") {
result = result.substr (0, result.len () - 2)
}
return result
}
func detect_packages (os_name, kernel_name, cfg: Config) {
packages = "0"
managers = ""
if os_name == "Linux" || os_name == "BSD" || os_name == "Solaris" {
# pacman
if has_cmd ("pacman-key") != "" {
count = trim (sh ("-c","pacman -Qq --color never 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (pacman), "
}
}
# dpkg
if has_cmd ("dpkg") != "" {
count = trim (sh ("-c","dpkg-query -f '.\\n' -W 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (dpkg), "
}
}
# rpm (only if no pacman)
if has_cmd ("rpm") != "" && has_cmd ("pacman-key") == "" {
count = trim (sh ("-c","rpm -qa 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (rpm), "
}
}
# xbps
if has_cmd ("xbps-query") != "" {
count = trim (sh ("-c","xbps-query -l 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (xbps), "
}
}
# apk
if has_cmd ("apk") != "" {
count = trim (sh ("-c","apk info 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (apk), "
}
}
# emerge
if has_cmd ("emerge") != "" {
count = trim (sh ("-c","ls -d /var/db/pkg/*/* 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (emerge), "
}
}
# eopkg
if has_cmd ("eopkg") != "" {
count = trim (sh ("-c","ls -d /var/lib/eopkg/package/* 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (eopkg), "
}
}
# pkgtool (Slackware)
if has_cmd ("pkgtool") != "" {
count = trim (sh ("-c","ls /var/log/packages/ 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (pkgtool), "
}
}
# flatpak
if has_cmd ("flatpak") != "" {
count = trim (sh ("-c","flatpak list 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (flatpak), "
}
}
# cargo
if has_cmd ("cargo") != "" {
count = trim (sh ("-c","ls ~/.cargo/bin/ 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (cargo), "
}
}
# snap
if has_cmd ("snap") != "" {
count = trim (sh ("-c","snap list 2>/dev/null | tail -n +2 | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (snap), "
}
}
# brew
if has_cmd ("brew") != "" {
count = trim (sh ("-c","ls \$(brew --cellar 2>/dev/null) 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (brew), "
}
}
# nix
if has_cmd ("nix-store") != "" {
count = trim (sh ("-c","nix-store -qR /run/current-system/sw 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (nix), "
}
}
# pacstall
if has_cmd ("pacstall") != "" {
count = trim (sh ("-c","pacstall -L 2>/dev/null | wc -l"))
if count != "" && count != "0" {
packages = packages + count
managers = managers .. count .. " (pacstall), "
}
}
} else if os_name == "Haiku" {
count = trim (sh ("-c","ls /boot/system/package-links/ 2>/dev/null | wc -l"))
packages = count
managers = count .. " (depot), "
} else if os_name == "FreeMiNT" || os_name == "AIX" {
if has_cmd ("rpm") != "" {
count = trim (sh ("-c","rpm -qa 2>/dev/null | wc -l"))
packages = count
managers = count .. " (rpm), "
}
}
packages = trim (packages)
if packages == "0" || packages == "" {
return ""
}
# Remove trailing ", "
if managers.ends (", ") {
managers = managers.substr (0, managers.len () - 2)
}
if cfg.package_managers == "on" {
return managers
} else if cfg.package_managers == "tiny" {
mgr_names = sh ("-c","echo \"{managers}\" | sed 's/[0-9]* (//g;s/)//g'")
return packages .. " (" .. trim (mgr_names) .. ")"
}
return packages
}
func detect_shell (cfg: Config) {
shell_path_val = env.SHELL
shell_name = basename (shell_path_val)
result = ""
if cfg.shell_path == "on" {
result = shell_path_val .. " "
} else {
result = shell_name .. " "
}
if cfg.shell_version == "on" {
shell_ver = ""
if shell_name == "bash" {
shell_ver = sh ("-c","echo \"\$BASH_VERSION\" | cut -d- -f1")
} else if shell_name == "zsh" {
shell_ver = sh ("-c","zsh --version 2>/dev/null | awk '\{print \$2\}'")
} else if shell_name == "fish" {
shell_ver = sh ("-c","fish --version 2>/dev/null | awk '\{print \$NF\}'")
} else if shell_name == "tcsh" {
shell_ver = sh ("-c","tcsh --version 2>/dev/null | awk '\{print \$2\}'")
} else {
shell_ver = sh ("-c","\"\$SHELL\" --version 2>&1 | awk '\{print \$NF; exit\}'")
}
shell_ver = trim (shell_ver)
if shell_ver != "" {
result = result .. shell_ver
}
}
return trim (result)
}
func detect_song (os_name, cfg: Config) {
song = ""
player = sh ("-c","ps aux 2>/dev/null | awk '!/ awk / && match(\$0,/(spotify|vlc|mpd|cmus|rhythmbox|audacious|deadbeef|clementine|cassette|elisa|lollypop|strawberry|playerctl)/) \{print substr(\$0,RSTART,RLENGTH); exit\}'")
player = trim (player)
if cfg.music_player != "auto" && cfg.music_player != "" {
player = cfg.music_player
}
if player == "" {
return ""
}
if player == "cmus" {
song = sh ("-c","cmus-remote -Q 2>/dev/null | awk '/tag artist/ \{\$1=\$2=\"\"; artist=\$0\} /tag title/ \{\$1=\$2=\"\"; title=\$0\} END \{printf \"%s - %s\", artist, title\}'")
} else if player == "mpd" || player == "mopidy" {
song = mpc ("current", "-f", "%artist% - %album% - %title%")
} else if player == "cassette" {
song = playerctl ("metadata", "--format", "\{\{artist\}\} - \{\{album\}\} - \{\{title\}\}")
} else if player == "playerctl" {
song = playerctl ("metadata", "--format", "\{\{artist\}\} - \{\{album\}\} - \{\{title\}\}")
} else {
# Try dbus
song = sh ("-c","dbus-send --print-reply --dest=org.mpris.MediaPlayer2.{player} /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:org.mpris.MediaPlayer2.Player string:Metadata 2>/dev/null | awk -F '\"' '/title/\{getline; print \$2\} /artist/\{getline; getline; print \$2\}' | paste -sd ' - '")
}
return trim (song)
}
func detect_users () {
users = sh ("-c","who 2>/dev/null | awk '!seen[\$1]++ \{printf \$1\", \"\}' | sed 's/, \$//'")
return trim (users)
}
func detect_locale () {
return env.LANG
}
func detect_gpu_driver (os_name) {
driver = ""
if os_name == "Linux" {
driver = sh ("-c","glxinfo -B 2>/dev/null | awk -F': ' '/OpenGL version/ \{print \$2\}'")
}
return trim (driver)
}
}
# neofetch-ct: display.ct
# Display class — formatted output of info lines, colors, bars, color blocks
class Display {
info_height = 0
text_padding = ""
last_length = 0
info_buffer = ""
buffer_mode = "off"
# ANSI escape
reset = "\\e[0m"
zws = "\\u200D"
# Color state
title_color = ""
at_color = ""
underline_color = ""
subtitle_color = ""
colon_color = ""
info_color = ""
# ASCII colors
c1 = ""
c2 = ""
c3 = ""
c4 = ""
c5 = ""
c6 = ""
# Bold
bold_str = ""
ascii_bold_str = ""
construct () {
}
func color (code) {
result = ""
when code {
"0" { result = "\\e[30m" }
"1" { result = "\\e[31m" }
"2" { result = "\\e[32m" }
"3" { result = "\\e[33m" }
"4" { result = "\\e[34m" }
"5" { result = "\\e[35m" }
"6" { result = "\\e[36m" }
"7" { result = "{this.reset}\\e[37m" }
"fg" { result = "{this.reset}\\e[37m" }
else {
result = "\\e[38;5;{code}m"
}
}
return result
}
func set_bold (cfg: Config) {
if cfg.bold == "on" {
this.bold_str = "\\e[1m"
} else {
this.bold_str = ""
}
if cfg.ascii_bold == "on" {
this.ascii_bold_str = "\\e[1m"
} else {
this.ascii_bold_str = ""
}
}
func set_colors (c1_code, c2_code, c3_code, c4_code, c5_code, c6_code) {
this.c1 = this.color (c1_code) .. this.ascii_bold_str
this.c2 = this.color (c2_code) .. this.ascii_bold_str
this.c3 = this.color (c3_code) .. this.ascii_bold_str
this.c4 = this.color (c4_code) .. this.ascii_bold_str
this.c5 = this.color (c5_code) .. this.ascii_bold_str
this.c6 = this.color (c6_code) .. this.ascii_bold_str
}
func set_text_colors (cfg: Config, c1_code, c2_code) {
if cfg.color_text != "off" {
this.title_color = this.color (c1_code)
this.at_color = this.reset
this.underline_color = this.reset
this.subtitle_color = this.color (c2_code)
this.colon_color = this.reset
this.info_color = this.reset
if c1_code == "8" {
this.title_color = this.reset
}
if c2_code == "8" {
this.subtitle_color = this.reset
}
if c2_code == "7" {
this.subtitle_color = this.color (c1_code)
}
if c1_code == "7" {
this.title_color = this.reset
}
}
}
func _output (line_str) {
if this.buffer_mode == "on" {
if this.info_buffer == "" {
this.info_buffer = line_str
} else {
this.info_buffer = this.info_buffer .. "\\n" .. line_str
}
} else {
print (line_str)
}
}
func prin (subtitle, value, cfg: Config) {
line = ""
if subtitle != "" && value != "" {
line = "{this.subtitle_color}{this.bold_str}{subtitle}{this.reset}{this.colon_color}{cfg.separator}{this.info_color} {value}"
} else if value != "" {
line = "{this.info_color}{value}"
} else if subtitle != "" {
line = "{this.info_color}{subtitle}"
} else {
return
}
if this.text_padding != "" {
this._output ("\\e[{this.text_padding}C{this.zws}{line}{this.reset} ")
} else {
this._output ("{this.zws}{line}{this.reset} ")
}
this.info_height = this.info_height + 1
}
func print_title (user, hostname, cfg: Config) {
title_line = "{this.title_color}{this.bold_str}{user}{this.at_color}@{this.title_color}{this.bold_str}{hostname}"
if this.text_padding != "" {
this._output ("\\e[{this.text_padding}C{this.zws}{title_line}{this.reset} ")
} else {
this._output ("{this.zws}{title_line}{this.reset} ")
}
this.info_height = this.info_height + 1
}
func print_underline (cfg: Config) {
if cfg.underline_enabled == "on" {
# Build underline string natively
underline_str = ""
for _ui in range (0, this.last_length) {
underline_str = underline_str .. cfg.underline_char
}
if this.text_padding != "" {
this._output ("\\e[{this.text_padding}C{this.zws}{this.underline_color}{underline_str}{this.reset} ")
} else {
this._output ("{this.zws}{this.underline_color}{underline_str}{this.reset} ")
}
}
this.info_height = this.info_height + 1
}
func print_line_break () {
this._output ("")
this.info_height = this.info_height + 1
}
func print_cols (cfg: Config) {
if cfg.color_blocks != "on" {
return
}
# Build block width string natively
block_width_str = ""
for _bw in range (0, cfg.block_width) {
block_width_str = block_width_str .. " "
}
start = cfg.block_range_start
end_val = cfg.block_range_end
blocks = ""
blocks2 = ""
end_plus = end_val + 1
for i in range (start, end_plus) {
if i <= 7 {
blocks = blocks .. "\\e[3{i}m\\e[4{i}m{block_width_str}"
} else {
blocks2 = blocks2 .. "\\e[38;5;{i}m\\e[48;5;{i}m{block_width_str}"
}
}
# Print block rows
block_h = cfg.block_height
for h in range (0, block_h) {
if blocks != "" {
if this.text_padding != "" {
this._output ("\\e[{this.text_padding}C{this.zws}{blocks}{this.reset}")
} else {
this._output ("{this.zws}{blocks}{this.reset}")
}
}
if blocks2 != "" {
if this.text_padding != "" {
this._output ("\\e[{this.text_padding}C{this.zws}{blocks2}{this.reset}")
} else {
this._output ("{this.zws}{blocks2}{this.reset}")
}
}
}
# Update info height
if end_val > 7 {
this.info_height = this.info_height + block_h + 2
} else {
this.info_height = this.info_height + block_h + 1
}
}
func bar (value, total, cfg: Config) {
elapsed = value * cfg.bar_length / total
remaining = cfg.bar_length - elapsed
elapsed_str = ""
for _be in range (0, elapsed) {
elapsed_str = elapsed_str .. cfg.bar_char_elapsed
}
remaining_str = ""
for _br in range (0, remaining) {
remaining_str = remaining_str .. cfg.bar_char_total
}
result = ""
if cfg.bar_border == "on" {
result = "[{elapsed_str}{remaining_str}]"
} else {
result = "{elapsed_str}{remaining_str}"
}
return result
}
func stdout_mode () {
this.reset = ""
this.bold_str = ""
this.ascii_bold_str = ""
this.title_color = ""
this.at_color = ""
this.underline_color = ""
this.subtitle_color = ""
this.colon_color = ""
this.info_color = ""
this.c1 = ""
this.c2 = ""
this.c3 = ""
this.c4 = ""
this.c5 = ""
this.c6 = ""
this.text_padding = ""
this.zws = ""
}
}
# neofetch-ct: image.ct
# ImageBackend class — handles image display (w3m, kitty, sixel, etc.)
class ImageBackend {
image = ""
image_size_val = ""
width = "0"
height = "0"
term_width = "0"
term_height = "0"
font_width = "0"
font_height = "0"
w3m_img_path = ""
thumbnail_dir = ""
func init (cfg: Config) {
backend = cfg.image_backend
if backend == "ascii" || backend == "off" {
return
}
# Resolve image source
this.image = cfg.image_source
if this.image == "auto" || this.image == "" {
this.image = ""
return
}
# Setup thumbnail dir
xdg_cache = env.XDG_CACHE_HOME
home = env.HOME
if xdg_cache == "" {
xdg_cache = home .. "/.cache"
}
this.thumbnail_dir = xdg_cache .. "/thumbnails/neofetch"
fs.mkdir (this.thumbnail_dir)
# Get w3m img path if needed
if backend == "w3m" {
this.find_w3m ()
}
# Get window size and calculate image dimensions
this.get_window_size (cfg)
this.get_image_size (cfg)
}
func find_w3m () {
_w3m_path = sh ("-c", "for p in /usr/lib/w3m/w3mimgdisplay /usr/libexec/w3m/w3mimgdisplay /usr/lib64/w3m/w3mimgdisplay /usr/local/lib/w3m/w3mimgdisplay; do [ -x \"$p\" ] && echo \"$p\" && break; done")
this.w3m_img_path = trim (_w3m_path)
}
func get_window_size (cfg: Config) {
# Try escape sequence approach via stty
_ws_size = sh ("-c", "stty size 2>/dev/null || true")
_ws_size = trim (_ws_size)
if _ws_size != "" {
_ws_parts = _ws_size.split (" ")
if _ws_parts.len () >= 2 {
lines = _ws_parts.get (0)
columns = _ws_parts.get (1)
}
}
# Try xdotool for pixel dimensions
_ws_display = env.DISPLAY
if _ws_display != "" {
if has_cmd ("xdotool") != "" {
_ws_geom = sh ("-c", "xdotool getactivewindow getwindowgeometry --shell 2>/dev/null | grep -E 'WIDTH|HEIGHT' || true")
_ws_tw = echo (_ws_geom) | grep ("WIDTH") | cut ("-d=", "-f2")
_ws_th = echo (_ws_geom) | grep ("HEIGHT") | cut ("-d=", "-f2")
this.term_width = trim (_ws_tw)
this.term_height = trim (_ws_th)
}
}
}
func get_image_size (cfg: Config) {
# Get terminal size in cells
_is_size = sh ("-c", "stty size 2>/dev/null || true")
_is_parts = _is_size.split (" ")
_is_lines = "24"
_is_columns = "80"
if _is_parts.len () >= 2 {
_is_lines = _is_parts.get (0)
_is_columns = _is_parts.get (1)
}
_is_tw = this.term_width
_is_th = this.term_height
if _is_tw == "" || _is_tw == "0" {
_is_tw = "800"
}
if _is_th == "" || _is_th == "0" {
_is_th = "600"
}
# Font size — native arithmetic
this.font_width = _is_tw / _is_columns
this.font_height = _is_th / _is_lines
if this.font_width == "0" { this.font_width = "8" }
if this.font_height == "0" { this.font_height = "16" }
when cfg.image_size {
"auto" {
this.width = _is_columns * this.font_width / 2
this.height = this.width
}
"none" {
this.width = _is_tw
this.height = _is_th
}
else {
_is_clean = cfg.image_size.replace ("px", "")
this.width = _is_clean
this.height = _is_clean
}
}
}
func make_thumbnail (cfg: Config) {
if this.image == "" {
return
}
fs.mkdir (this.thumbnail_dir)
_mk_name_raw = cfg.crop_mode .. "-" .. cfg.crop_offset .. "-" .. this.width .. "-" .. this.height .. "-" .. this.image
img_name = _mk_name_raw.replace ("/", "_")
img_name = trim (img_name)
thumb_path = this.thumbnail_dir .. "/" .. img_name .. ".jpg"
if !fs.exists (thumb_path) {
_mk_img = this.image
_mk_size = this.width .. "x" .. this.height
_mk_crop_size = this.width .. "x" .. this.height .. "+0+0"
_mk_fill_size = this.width .. "x" .. this.height .. "^"
when cfg.crop_mode {
"fit" {
sh ("-c", "convert -background none \"{_mk_img}\" -trim +repage -scale \"{_mk_size}\" \"{thumb_path}\" 2>/dev/null || true")
}
"fill" {
sh ("-c", "convert -background none \"{_mk_img}\" -trim +repage -scale \"{_mk_fill_size}\" -extent \"{_mk_size}\" \"{thumb_path}\" 2>/dev/null || true")
}
"none" {
cp (_mk_img, thumb_path)
}
else {
_mk_grav = cfg.crop_offset
sh ("-c", "convert -background none \"{_mk_img}\" -strip -gravity \"{_mk_grav}\" -crop \"{_mk_crop_size}\" -scale \"{_mk_size}\" \"{thumb_path}\" 2>/dev/null || true")
}
}
}
this.image = thumb_path
}
func display (cfg: Config) {
if this.image == "" {
return
}
fw = this.font_width
fh = this.font_height
w = this.width
h = this.height
img = this.image
xoff = cfg.xoffset
yoff = cfg.yoffset
# Pre-compute cell dimensions — native arithmetic
_d_cw = w / fw
_d_ch = h / fh
when cfg.image_backend {
"kitty" {
_kit_place = _d_cw .. "x" .. _d_ch .. "@" .. xoff .. "x" .. yoff
kitty ("+kitten", "icat", "--align", "left", "--place", _kit_place, img)
}
"sixel" {
img2sixel ("-w", w, "-h", h, img)
}
"catimg" {
_d_catimg_w = w * cfg.catimg_size / fw
catimg ("-w", _d_catimg_w, "-r", cfg.catimg_size, img)
}
"chafa" {
_chafa_size = _d_cw .. "x" .. _d_ch
chafa ("--stretch", "--size=" .. _chafa_size, img)
}
"jp2a" {
jp2a ("--colors", "--width=" .. _d_cw, "--height=" .. _d_ch, img)
}
"pixterm" {
pixterm ("-tc", _d_cw, "-tr", _d_ch, img)
}
"viu" {
viu ("-t", "-w", _d_cw, "-h", _d_ch, img)
}
"w3m" {
_d_w3m_path = this.w3m_img_path
if _d_w3m_path != "" {
_w3m_coords = "0;1;" .. xoff .. ";" .. yoff .. ";" .. w .. ";" .. h .. ";;;;;" .. img
sh ("-c", "printf '%b\\n%s;\\n%s\\n' \"{_w3m_coords}\" 3 4 | \"{_d_w3m_path}\" -bg \"{cfg.background_color}\" 2>/dev/null || true")
}
}
"caca" {
img2txt ("-W", _d_cw, "-H", _d_ch, "--gamma=0.6", img)
}
"iterm2" {
sh ("-c", "printf '\\e]1337;File=width=%spx;height=%spx;inline=1:%s\\a\\n' \"{w}\" \"{h}\" \"$(base64 < \"{img}\")\" 2>/dev/null || true")
}
"tycat" {
_tycat_size = w .. "x" .. h
tycat ("-g", _tycat_size, img)
}
}
}
func get_text_padding (cfg: Config) {
if cfg.image_backend == "ascii" || cfg.image_backend == "off" {
return "0"
}
if this.image == "" || this.width == "0" {
return "0"
}
_gtp_pad = (this.width + cfg.xoffset) / this.font_width + cfg.gap
return _gtp_pad
}
}
# neofetch-ct: info.ct
# SystemInfo class collects all system information via detectors
class SystemInfo {
# OS info
os = ""
distro = ""
kernel = ""
model = ""
# Hardware
cpu = ""
gpu = ""
memory = ""
disk = ""
battery = ""
# Desktop
de = ""
de_version = ""
wm = ""
wm_theme = ""
theme = ""
icons = ""
font = ""
term = ""
term_font = ""
resolution = ""
# Network
local_ip = ""
public_ip = ""
# Misc
uptime = ""
packages = ""
shell = ""
song = ""
users = ""
locale = ""
gpu_driver = ""
# Title
title = ""
hostname = ""
user = ""
# Internal
kernel_name = ""
kernel_version = ""
kernel_machine = ""
func detect_title (cfg: Config) {
this.user = env.USER
if this.user == "" {
this.user = whoami ()
}
this.user = trim (this.user)
if cfg.title_fqdn == "on" {
this.hostname = hostname ("-f")
} else {
this.hostname = hostname ()
}
this.hostname = trim (this.hostname)
this.title = this.user .. "@" .. this.hostname
}
func detect_all (cfg: Config) {
# OS detection
os_det = new OsDetector ()
os_det.cache_uname ()
this.os = os_det.detect ()
this.kernel_name = os_det.kernel_name
this.kernel_version = os_det.kernel_version
this.kernel_machine = os_det.kernel_machine
this.distro = os_det.detect_distro (cfg)
# Title
this.detect_title (cfg)
# Hardware
hw_det = new HardwareDetector ()
this.model = hw_det.detect_model (this.os, this.kernel_name)
this.cpu = hw_det.detect_cpu (this.os, this.kernel_machine, cfg)
this.gpu = hw_det.detect_gpu (this.os, this.kernel_name, cfg)
this.memory = hw_det.detect_memory (this.os, this.kernel_name, cfg)
this.disk = hw_det.detect_disk (this.os, cfg)
this.battery = hw_det.detect_battery (this.os)
# Desktop
desk_det = new DesktopDetector ()
this.de = desk_det.detect_de (this.os)
this.de_version = desk_det.detect_de_version (this.de)
this.wm = desk_det.detect_wm (this.os, this.kernel_name)
this.wm_theme = desk_det.detect_wm_theme (this.wm, this.de)
this.theme = desk_det.detect_theme (this.os, this.de, cfg)
this.icons = desk_det.detect_icons (this.os, this.de, cfg)
this.term = desk_det.detect_term ()
this.term_font = desk_det.detect_term_font (this.term)
this.resolution = desk_det.detect_resolution (this.os)
this.font = desk_det.detect_font (this.os, this.de)
# Network
net_det = new NetworkDetector ()
this.local_ip = net_det.detect_local_ip (this.os)
this.public_ip = net_det.detect_public_ip (cfg)
# Misc
misc_det = new MiscDetector ()
this.kernel = misc_det.detect_kernel (this.os, this.kernel_name, this.kernel_version, cfg)
this.uptime = misc_det.detect_uptime (this.os, cfg)
this.packages = misc_det.detect_packages (this.os, this.kernel_name, cfg)
this.shell = misc_det.detect_shell (cfg)
this.song = misc_det.detect_song (this.os, cfg)
this.users = misc_det.detect_users ()
this.locale = misc_det.detect_locale ()
this.gpu_driver = misc_det.detect_gpu_driver (this.os)
}
func get_de_string (cfg: Config) {
result = this.de
if cfg.de_version == "on" && this.de_version != "" {
result = result .. " " .. this.de_version
}
return result
}
}
# Logo: AIX
class Logo_aix {
colors = "2 7 7 7 7 7"
art = "\{c1\} `:+ssssossossss+-`
.oys///oyhddddhyo///sy+.
/yo:+hNNNNNNNNNNNNNNNNh+:oy/
:h/:yNNNNNNNNNNNNNNNNNNNNNNy-+h:
`ys.yNNNNNNNNNNNNNNNNNNNNNNNNNNy.ys
`h+-mNNNNNNNNNNNNNNNNNNNNNNNNNNNNm-oh
h+-NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN.oy
/d`mNNNNNNN/::mNNNd::m+:/dNNNo::dNNNd`m:
h//NNNNNNN: . .NNNh mNo od. -dNNNNN:+y
N.sNNNNNN+ -N/ -NNh mNNd. sNNNNNNNo-m
N.sNNNNNs +oo /Nh mNNs` ` /mNNNNNNo-m
h//NNNNh ossss` +h md- .hm/ `sNNNNN:+y
:d`mNNN+/yNNNNNd//y//h//oNNNNy//sNNNd`m-
yo-NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNm.ss
`h+-mNNNNNNNNNNNNNNNNNNNNNNNNNNNNm-oy
sy.yNNNNNNNNNNNNNNNNNNNNNNNNNNs.yo
:h+-yNNNNNNNNNNNNNNNNNNNNNNs-oh-
:ys:/yNNNNNNNNNNNNNNNmy/:sy:
.+ys///osyhhhhys+///sy+.
-/osssossossso/-"
}
# Logo: AlmaLinux
class Logo_almalinux {
colors = "1 3 4 2 6 6"
art = "\{c1\} 'c:.
\{c1\} lkkkx, .. \{c2\}.. ,cc,
\{c1\} okkkk:ckkx' \{c2\}.lxkkx.okkkkd
\{c1\} .:llcokkx' \{c2\}:kkkxkko:xkkd,
\{c1\} .xkkkkdood: \{c2\};kx, .lkxlll;
\{c1\} xkkx. \{c2\}xk' xkkkkk:
\{c1\} 'xkx. \{c2\}xd .....,.
\{c3\} .. \{c1\}:xkl' \{c2\}:c ..''..
\{c3\} .dkx' \{c1\}.:ldl:'. \{c2\}' \{c4\}':lollldkkxo;
\{c3\} .''lkkko' \{c4\}ckkkx.
\{c3\}'xkkkd:kkd. .. \{c5\};' \{c4\}:kkxo.
\{c3\},xkkkd;kk' ,d; \{c5\}ld. \{c4\}':dkd::cc,
\{c3\} .,,.;xkko'.';lxo. \{c5\}dx, \{c4\}:kkk'xkkkkc
\{c3\} 'dkkkkkxo:. \{c5\};kx \{c4\}.kkk:;xkkd.
\{c3\} ..... \{c5\}.;dk:. \{c5\}lkk. \{c4\}:;,
\{c5\}:kkkkkkkdoxkkx
,c,,;;;:xkkd.
;kkkkl...
;kkkkl
,od;"
}
# Logo: Alpine
class Logo_alpine {
colors = "4 5 7 6 6 6"
art = "\{c1\} .hddddddddddddddddddddddh.
:dddddddddddddddddddddddddd:
/dddddddddddddddddddddddddddd/
+dddddddddddddddddddddddddddddd+
`sdddddddddddddddddddddddddddddddds`
`ydddddddddddd++hdddddddddddddddddddy`
.hddddddddddd+` `+ddddh:-sdddddddddddh.
hdddddddddd+` `+y: .sddddddddddh
ddddddddh+` `//` `.` -sddddddddd
ddddddh+` `/hddh/` `:s- -sddddddd
ddddh+` `/+/dddddh/` `+s- -sddddd
ddd+` `/o` :dddddddh/` `oy- .yddd
hdddyo+ohddyosdddddddddho+oydddy++ohdddh
.hddddddddddddddddddddddddddddddddddddh.
`yddddddddddddddddddddddddddddddddddy`
`sdddddddddddddddddddddddddddddddds`
+dddddddddddddddddddddddddddddd+
/dddddddddddddddddddddddddddd/
:dddddddddddddddddddddddddd:
.hddddddddddddddddddddddh."
}
# Logo: alpine_small
class Logo_alpine_small {
colors = "4 7 7 7 7 7"
art = "\{c1\} /\\\\ /\\\\
/\{c2\}/ \{c1\}\\\\ \\\\
/\{c2\}/ \{c1\}\\\\ \\\\
/\{c2\}// \{c1\}\\\\ \\\\
\{c2\}// \{c1\}\\\\ \\\\
\\\\"
}
# Logo: Alter
class Logo_alter {
colors = "6 6 6 6 6 6"
art = "\{c1\} %,
^WWWw
'wwwwww
!wwwwwwww
#`wwwwwwwww
@wwwwwwwwwwww
wwwwwwwwwwwwwww
wwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwww,
w~1i.wwwwwwwwwwwwwwwww,
3~:~1lli.wwwwwwwwwwwwwwww.
:~~:~?ttttzwwwwwwwwwwwwwwww
#<~:~~~~?llllltO-.wwwwwwwwwww
#~:~~:~:~~?ltlltlttO-.wwwwwwwww
@~:~~:~:~:~~(zttlltltlOda.wwwwwww
@~:~~: ~:~~:~:(zltlltlO a,wwwwww
8~~:~~:~~~~:~~~~_1ltltu ,www
5~~:~~:~~:~~:~~:~~~_1ltq N,,
g~:~~:~~~:~~:~~:~:~~~~1q N,"
}
# Logo: Amazon
class Logo_amazon {
colors = "3 7 7 7 7 7"
art = "\{c1\} `-/oydNNdyo:.`
`.:+shmMMMMMMMMMMMMMMmhs+:.`
-+hNNMMMMMMMMMMMMMMMMMMMMMMNNho-
.`` -/+shmNNMMMMMMNNmhs+/- ``.
dNmhs+:. `.:/oo/:.` .:+shmNd
dMMMMMMMNdhs+:.. ..:+shdNMMMMMMMd
dMMMMMMMMMMMMMMNds odNMMMMMMMMMMMMMMd
dMMMMMMMMMMMMMMMMh yMMMMMMMMMMMMMMMMd
dMMMMMMMMMMMMMMMMh yMMMMMMMMMMMMMMMMd
dMMMMMMMMMMMMMMMMh yMMMMMMMMMMMMMMMMd
dMMMMMMMMMMMMMMMMh yMMMMMMMMMMMMMMMMd
dMMMMMMMMMMMMMMMMh yMMMMMMMMMMMMMMMMd
dMMMMMMMMMMMMMMMMh yMMMMMMMMMMMMMMMMd
dMMMMMMMMMMMMMMMMh yMMMMMMMMMMMMMMMMd
dMMMMMMMMMMMMMMMMh yMMMMMMMMMMMMMMMMd
dMMMMMMMMMMMMMMMMh yMMMMMMMMMMMMMMMMd
.:+ydNMMMMMMMMMMMh yMMMMMMMMMMMNdy+:.
`.:+shNMMMMMh yMMMMMNhs+:``
`-+shy shs+:`"
}
# Logo: Anarchy
class Logo_anarchy {
colors = "7 4 4 4 4 4"
art = " \{c2\}..\{c1\}
\{c2\}..\{c1\}
\{c2\}:..\{c1\}
\{c2\}:+++.\{c1\}
.:::++\{c2\}++++\{c1\}+::.
.:+######\{c2\}++++\{c1\}######+:.
.+#########\{c2\}+++++\{c1\}##########:.
.+##########\{c2\}+++++++\{c1\}##\{c2\}+\{c1\}#########+.
+###########\{c2\}+++++++++\{c1\}############:
+##########\{c2\}++++++\{c1\}#\{c2\}++++\{c1\}#\{c2\}+\{c1\}###########+
+###########\{c2\}+++++\{c1\}###\{c2\}++++\{c1\}#\{c2\}+\{c1\}###########+
:##########\{c2\}+\{c1\}#\{c2\}++++\{c1\}####\{c2\}++++\{c1\}#\{c2\}+\{c1\}############:
###########\{c2\}+++++\{c1\}#####\{c2\}+++++\{c1\}#\{c2\}+\{c1\}###\{c2\}++\{c1\}######+
.##########\{c2\}++++++\{c1\}#####\{c2\}++++++++++++\{c1\}#######.
.##########\{c2\}+++++++++++++++++++\{c1\}###########.
#####\{c2\}++++++++++++++\{c1\}###\{c2\}++++++++\{c1\}#########+
:###\{c2\}++++++++++\{c1\}#########\{c2\}+++++++\{c1\}#########:
+######\{c2\}+++++\{c1\}##########\{c2\}++++++++\{c1\}#######+
+####\{c2\}+++++\{c1\}###########\{c2\}+++++++++\{c1\}#####+
:##\{c2\}++++++\{c1\}############\{c2\}++++++++++\{c1\}##:
.\{c2\}++++++\{c1\}#############\{c2\}++++++++++\{c1\}+.
:\{c2\}++++\{c1\}###############\{c2\}+++++++\{c1\}::
.\{c2\}++. .:+\{c1\}##############\{c2\}+++++++\{c1\}..
\{c2\}.:.\{c1\} ..::++++++::..:\{c2\}++++\{c1\}+.
\{c2\}.\{c1\} \{c2\}.:+++\{c1\}.
\{c2\}.:\{c1\}:
\{c2\}..\{c1\}
\{c2\}..\{c1\}"
}
# Logo: Android
class Logo_android {
colors = "2 7 7 7 7 7"
art = "\{c1\} -o o-
+hydNNNNdyh+
+mMMMMMMMMMMMMm+
`dMM\{c2\}m:\{c1\}NMMMMMMN\{c2\}:m\{c1\}MMd`
hMMMMMMMMMMMMMMMMMMh
.. yyyyyyyyyyyyyyyyyyyy ..
.mMMm`MMMMMMMMMMMMMMMMMMMM`mMMm.
:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM:
:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM:
:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM:
:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM:
-MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM-
+yy+ MMMMMMMMMMMMMMMMMMMM +yy+
mMMMMMMMMMMMMMMMMMMm
`/++MMMMh++hMMMM++/`
MMMMo oMMMM
MMMMo oMMMM
oNMm- -mMNs"
}
# Logo: android_small
class Logo_android_small {
colors = "2 7 7 7 7 7"
art = "\{c1\} ;, ,;
';,.-----.,;'
,' ',
/ O O \\\\
| |
'-----------------'"
}
# Logo: Antergos
class Logo_antergos {
colors = "4 6 6 6 6 6"
art = "\{c2\} `.-/::/-``
.-/osssssssso/.
:osyysssssssyyys+-
`.+yyyysssssssssyyyyy+.
`/syyyyyssssssssssyyyyys-`
`/yhyyyyysss\{c1\}++\{c2\}ssosyyyyhhy/`
.ohhhyyyys\{c1\}o++/+o\{c2\}so\{c1\}+\{c2\}syy\{c1\}+\{c2\}shhhho.
.shhhhys\{c1\}oo++//+\{c2\}sss\{c1\}+++\{c2\}yyy\{c1\}+s\{c2\}hhhhs.
-yhhhhs\{c1\}+++++++o\{c2\}ssso\{c1\}+++\{c2\}yyy\{c1\}s+o\{c2\}hhddy:
-yddhhy\{c1\}o+++++o\{c2\}syyss\{c1\}++++\{c2\}yyy\{c1\}yooy\{c2\}hdddy-
.yddddhs\{c1\}o++o\{c2\}syyyyys\{c1\}+++++\{c2\}yyhh\{c1\}sos\{c2\}hddddy`
`odddddhyosyhyyyyyy\{c1\}++++++\{c2\}yhhhyosddddddo
.dmdddddhhhhhhhyyyo\{c1\}+++++\{c2\}shhhhhohddddmmh.
ddmmdddddhhhhhhhso\{c1\}++++++\{c2\}yhhhhhhdddddmmdy
dmmmdddddddhhhyso\{c1\}++++++\{c2\}shhhhhddddddmmmmh
-dmmmdddddddhhys\{c1\}o++++o\{c2\}shhhhdddddddmmmmd-
.smmmmddddddddhhhhhhhhhdddddddddmmmms.
`+ydmmmdddddddddddddddddddmmmmdy/.
`.:+ooyyddddddddddddyyso+:.`"
}
# Logo: antiX
class Logo_antix {
colors = "1 7 3 3 3 3"
art = "\{c1\}
\\
, - ~ ^ ~ - \\ /
, ' \\ ' , /
, \\ '/
, \\ / ,
,___, \\/ ,
/ | _ _ _|_ o /\\ ,
|, | / |/ | | | / \\ ,
\\,_/\\_/ | |_/|_/|_/_/ \\,
, / ,\\
, / , ' \\
' - , _ _ _ , '"
}
# Logo: AOSC OS
class Logo_aosc_os {
colors = "4 7 1 1 1 1"
art = "\{c2\} .:+syhhhhys+:.
.ohNMMMMMMMMMMMMMMNho.
`+mMMMMMMMMMMmdmNMMMMMMMMm+`
+NMMMMMMMMMMMM/ `./smMMMMMN+
.mMMMMMMMMMMMMMMo -yMMMMMm.
:NMMMMMMMMMMMMMMMs .hMMMMN:
.NMMMMhmMMMMMMMMMMm+/- oMMMMN.
dMMMMs ./ymMMMMMMMMMMNy. sMMMMd
-MMMMN` oMMMMMMMMMMMN: `NMMMM-
/MMMMh NMMMMMMMMMMMMm hMMMM/
/MMMMh NMMMMMMMMMMMMm hMMMM/
-MMMMN` :MMMMMMMMMMMMy. `NMMMM-
dMMMMs .yNMMMMMMMMMMMNy/. sMMMMd
.NMMMMo -/+sMMMMMMMMMMMmMMMMN.
:NMMMMh. .MMMMMMMMMMMMMMMN:
.mMMMMMy- NMMMMMMMMMMMMMm.
+NMMMMMms/.` mMMMMMMMMMMMN+
`+mMMMMMMMMNmddMMMMMMMMMMm+`
.ohNMMMMMMMMMMMMMMNho.
.:+syhhhhys+:."
}
# Logo: AOSC OS/Retro
class Logo_aosc_os_retro {
colors = "4 7 1 3 3 3"
art = "\{c2\} .........
...................
.....................\{c1\}################\{c2\}
.............. ....\{c1\}################\{c2\}
.............. ...\{c1\}################\{c2\}
............. ..\{c1\}****************\{c2\}
............ . .\{c1\}****************\{c2\}
........... ... \{c1\}................\{c2\}
.......... ..... \{c1\}...............\{c2\}
......... ....... ...
.\{c3\}...... \{c2\}.
\{c3\}..... .....\{c2\}.... \{c4\}...........
\{c3\}.... ......\{c2\}. \{c4\}...........
\{c3\}... ....... \{c4\}...........
\{c3\}................ \{c4\}***********
\{c3\}................ \{c4\}###########
\{c3\}****************
\{c3\}################"
}
# Logo: Aperio GNU/Linux
class Logo_aperio_gnu_linux {
colors = "255 255 255 255 255 255"
art = "\{c2\}
_.._ _ ._.. _
(_][_)(/,[ |(_)
| GNU/Linux"
}
# Logo: Apricity
class Logo_apricity {
colors = "4 7 1 1 1 1"
art = "\{c2\} ./o-
``...`` `:. -/:
`-+ymNMMMMMNmho-` :sdNNm/
`+dMMMMMMMMMMMMMMMmo` sh:.:::-
/mMMMMMMMMMMMMMMMMMMMm/`sNd/
oMMMMMMMMMMMMMMMMMMMMMMMs -`
:MMMMMMMMMMMMMMMMMMMMMMMMM/
NMMMMMMMMMMMMMMMMMMMMMMMMMd
MMMMMMMmdmMMMMMMMMMMMMMMMMd
MMMMMMy` .mMMMMMMMMMMMmho:`
MMMMMMNo/sMMMMMMMNdy+-.`-/
MMMMMMMMMMMMNdy+:.`.:ohmm:
MMMMMMMmhs+-.`.:+ymNMMMy.
MMMMMM/`.-/ohmNMMMMMMy-
MMMMMMNmNNMMMMMMMMmo.
MMMMMMMMMMMMMMMms:`
MMMMMMMMMMNds/.
dhhyys+/-`"
}
# Logo: Arch
class Logo_arch {
colors = "6 6 7 1 1 1"
art = "\{c1\} -`
.o+`
`ooo/
`+oooo:
`+oooooo:
-+oooooo+:
`/:-:++oooo+:
`/++++/+++++++:
`/++++++++++++++:
`/+++o\{c2\}oooooooo\{c1\}oooo/`
\{c2\} \{c1\}./\{c2\}ooosssso++osssssso\{c1\}+`
\{c2\} .oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/"
}
# Logo: arch_old
class Logo_arch_old {
colors = "6 7 1 1 1 1"
art = "\{c1\} __
_=(SDGJT=_
_GTDJHGGFCVS)
,GTDJGGDTDFBGX0
\{c1\} JDJDIJHRORVFSBSVL\{c2\}-=+=,_
\{c1\} IJFDUFHJNXIXCDXDSV,\{c2\} \"DEBL
\{c1\} [LKDSDJTDU=OUSCSBFLD.\{c2\} '?ZWX,
\{c1\} ,LMDSDSWH' `DCBOSI\{c2\} DRDS],
\{c1\} SDDFDFH' !YEWD,\{c2\} )HDROD
\{c1\} !KMDOCG &GSU|\{c2\}\\_GFHRGO\\'
\{c1\} HKLSGP'\{c2\} __\{c1\}\\TKM0\{c2\}\\GHRBV)'
\{c1\}JSNRVW'\{c2\} __+MNAEC\{c1\}\\IOI,\{c2\}\\BN'
\{c1\}HELK['\{c2\} __,=OFFXCBGHC\{c1\}\\FD)
\{c1\}?KGHE \{c2\}\\_-#DASDFLSV='\{c1\} 'EF
'EHTI !H
`0F' '!"
}
# Logo: arch_small
class Logo_arch_small {
colors = "6 7 1 1 1 1"
art = "\{c1\} /\\\\
/ \\\\
/\\\\ \\\\
\{c2\} / \\\\
/ ,, \\\\
/ | | -\\\\
/_-'' ''-_\\\\"
}
# Logo: ArchBox
class Logo_archbox {
colors = "2 7 1 1 1 1"
art = "\{c1\} ...:+oh/:::..
..-/oshhhhhh` `::::-.
.:/ohhhhhhhhhhhh` `-::::.
.+shhhhhhhhhhhhhhhhh` `.::-.
/`-:+shhhhhhhhhhhhhh` .-/+shh
/ .:/ohhhhhhhhh` .:/ohhhhhhhh
/ `-:+shhh` ..:+shhhhhhhhhhhh
/ .:ohhhhhhhhhhhhhhhhhhh
/ `hhhhhhhhhhhhhhhhhhhh
/ `hhhhhhhhhhhhhhhhhhhh
/ `hhhhhhhhhhhhhhhhhhhh
/ `hhhhhhhhhhhhhhhhhhhh
/ .+o+ `hhhhhhhhhhhhhhhhhhhh
/ -hhhhh `hhhhhhhhhhhhhhhhhhhh
/ ohhhhho `hhhhhhhhhhhhhhhhhhhh
/:::+`hhhhoos` `hhhhhhhhhhhhhhhhhs+`
`--/:` /: `hhhhhhhhhhhho/-
-/:. `hhhhhhs+:-`
::::/ho/-`"
}
# Logo: Archcraft
class Logo_archcraft {
colors = "6 6 7 1 1 1"
art = "\{c1\} -m:
:NMM+ .+
+MMMMMo -NMy
sMMMMMMMy -MMMMh`
yMMMMMMMMMd` oMMMMd`
`dMMMMMMMMMMMm. /MMMMm-
.mMMMMMm-dMMMMMN- :NMMMN:
-NMMMMMd` yMMMMMN: .mMMMM/
:NMMMMMy sMMMMMM+ `dMMMMo
+MMMMMMs +MMMMMMs `hMMMMy
oMMMMMMMds- :NMMMMMy sMMMMh`
yMMMMMNoydMMmo` -NMMMMMd` +MMMMd.
`dMMMMMN- `:yNNs` .mMMMMMm. /MMMMm-
.mMMMMMm. :hN/ `dMMMMMN- -NMMMN:
-NMMMMMd` -hh` `yMMMMMN: .mMMMM/
:NMMMMMy `s` :h. oMMMMMM+ `-----
+MMMMMMo .dMm. `o. +MMMMMMo
sMMMMMM+ .mMMMN: :` :NMMMMMy"
}
# Logo: ARCHlabs
class Logo_archlabs {
colors = "6 6 7 1 1 1"
art = "\{c1\} 'c'
'kKk,
.dKKKx.
.oKXKXKd.
.l0XXXXKKo.
c0KXXXXKX0l.
:0XKKOxxOKX0l.
:OXKOc. .c0XX0l.
:OK0o. \{c4\}...\{c1\}'dKKX0l.
:OX0c \{c4\};xOx'\{c1\}'dKXX0l.
:0KKo.\{c4\}.o0XXKd'.\{c1\}lKXX0l.
c0XKd.\{c4\}.oKXXXXKd..\{c1\}oKKX0l.
.c0XKk;\{c4\}.l0K0OO0XKd..\{c1\}oKXXKo.
.l0XXXk:\{c4\},dKx,.'l0XKo.\{c1\}.kXXXKo.
.o0XXXX0d,\{c4\}:x; .oKKx'\{c1\}.dXKXXKd.
.oKXXXXKK0c.\{c4\};. :00c'\{c1\}cOXXXXXKd.
.dKXXXXXXXXk,\{c4\}. cKx'\{c1\}'xKXXXXXXKx'
'xKXXXXK0kdl:. \{c4\}.ok; \{c1\}.cdk0KKXXXKx'
'xKK0koc,.. \{c4\}'c, \{c1\} ..,cok0KKk,
,xko:'. \{c4\}.. \{c1\} .':okx;
.,'. .',."
}
# Logo: ArchMerge
class Logo_archmerge {
colors = "6 6 7 1 1 1"
art = "\{c1\} y:
sMN-
+MMMm`
/MMMMMd`
:NMMMMMMy
-NMMMMMMMMs
.NMMMMMMMMMM+
.mMMMMMMMMMMMM+
oNMMMMMMMMMMMMM+
`+:-+NMMMMMMMMMMMM+
.sNMNhNMMMMMMMMMMMM/
`hho/sNMMMMMMMMMMMMMMM/
`.`omMMmMMMMMMMMMMMMMMMM+
.mMNdshMMMMd+::oNMMMMMMMMMo
.mMMMMMMMMM+ `yMMMMMMMMMs
.NMMMMMMMMM/ yMMMMMMMMMy
-NMMMMMMMMMh `mNMMMMMMMMd`
/NMMMNds+:.` `-/oymMMMm.
+Mmy/. `:smN:
/+. -o."
}
# Logo: ArchStrike
class Logo_archstrike {
colors = "8 6 6 6 6 6"
art = "\{c1\}                   *   
                  **.
                 ****
                ******
                *******
              ** *******
             **** *******
            \{c1\}****\{c2\}_____\{c1\}***\{c2\}/\{c1\}*
           ***\{c2\}/\{c1\}*******\{c2\}//\{c1\}***
          **\{c2\}/\{c1\}********\{c2\}///\{c1\}*\{c2\}/\{c1\}**
         **\{c2\}/\{c1\}*******\{c2\}////\{c1\}***\{c2\}/\{c1\}**
        **\{c2\}/\{c1\}****\{c2\}//////.,\{c1\}****\{c2\}/\{c1\}**
       ***\{c2\}/\{c1\}*****\{c2\}/////////\{c1\}**\{c2\}/\{c1\}***
      ****\{c2\}/\{c1\}****    \{c2\}/////\{c1\}***\{c2\}/\{c1\}****
     ******\{c2\}/\{c1\}*** \{c2\}////   \{c1\}**\{c2\}/\{c1\}******
    ********\{c2\}/\{c1\}* \{c2\}///      \{c1\}*\{c2\}/\{c1\}********
  ,******     \{c2\}// ______ /    \{c1\}******,"
}
# Logo: ArcoLinux
class Logo_arcolinux {
colors = "7 4 4 4 4 4"
art = "\{c2\} /-
ooo:
yoooo/
yooooooo
yooooooooo
yooooooooooo
.yooooooooooooo
.oooooooooooooooo
.oooooooarcoooooooo
.ooooooooo-oooooooooo
.ooooooooo- oooooooooo
:ooooooooo. :ooooooooo
:ooooooooo. :ooooooooo
:oooarcooo .oooarcooo
:ooooooooy .ooooooooo
:ooooooooo \{c1\}/ooooooooooooooooooo\{c2\}
:ooooooooo \{c1\}.-ooooooooooooooooo.\{c2\}
ooooooooo- \{c1\}-ooooooooooooo.\{c2\}
ooooooooo- \{c1\}.-oooooooooo.\{c2\}
ooooooooo. \{c1\}-ooooooooo\{c2\}"
}
# Logo: arcolinux_small
class Logo_arcolinux_small {
colors = "7 4 4 4 4 4"
art = "\{c2\} A
ooo
ooooo
ooooooo
ooooooooo
ooooo ooooo
ooooo ooooo
ooooo ooooo
ooooo \{c1\}<oooooooo>\{c2\}
ooooo \{c1\}<oooooo>\{c2\}
ooooo \{c1\}<oooo>\{c2\}"
}
# Logo: Artix
class Logo_artix {
colors = "6 6 7 1 1 1"
art = "\{c1\} '
'o'
'ooo'
'ooxoo'
'ooxxxoo'
'oookkxxoo'
'oiioxkkxxoo'
':;:iiiioxxxoo'
`'.;::ioxxoo'
'-. `':;jiooo'
'oooio-.. `'i:io'
'ooooxxxxoio:,. `'-;'
'ooooxxxxxkkxoooIi:-. `'
'ooooxxxxxkkkkxoiiiiiji'
'ooooxxxxxkxxoiiii:'` .i'
'ooooxxxxxoi:::'` .;ioxo'
'ooooxooi::'` .:iiixkxxo'
'ooooi:'` `'';ioxxo'
'i:'` '':io'
'` `'"
}
# Logo: artix_small
class Logo_artix_small {
colors = "6 6 7 1 1 1"
art = "\{c1\} /\\\\
/ \\\\
/`'.,\\\\
/ ',
/ ,`\\\\
/ ,.'`. \\\\
/.,'` `'.\\\\"
}
# Logo: Arya
class Logo_arya {
colors = "2 1 1 1 1 1"
art = "\{c1\} `oyyy/\{c2\}-yyyyyy+
\{c1\} -syyyy/\{c2\}-yyyyyy+
\{c1\} .syyyyy/\{c2\}-yyyyyy+
\{c1\} :yyyyyy/\{c2\}-yyyyyy+
\{c1\} `/ :yyyyyy/\{c2\}-yyyyyy+
\{c1\} .+s :yyyyyy/\{c2\}-yyyyyy+
\{c1\} .oys :yyyyyy/\{c2\}-yyyyyy+
\{c1\} -oyys :yyyyyy/\{c2\}-yyyyyy+
\{c1\} :syyys :yyyyyy/\{c2\}-yyyyyy+
\{c1\} /syyyys :yyyyyy/\{c2\}-yyyyyy+
\{c1\} +yyyyyys :yyyyyy/\{c2\}-yyyyyy+
\{c1\} .oyyyyyyo. :yyyyyy/\{c2\}-yyyyyy+ ---------
\{c1\} .syyyyyy+` :yyyyyy/\{c2\}-yyyyy+-+syyyyyyyy
\{c1\} -syyyyyy/ :yyyyyy/\{c2\}-yyys:.syyyyyyyyyy
\{c1\}:syyyyyy/ :yyyyyy/\{c2\}-yyo.:syyyyyyyyyyy"
}
# Logo: AsteroidOS
class Logo_asteroidos {
colors = "160 208 202 214 214 214"
art = "\{c1\} ***
\{c1\} *****
\{c1\} **********
\{c1\} ***************
\{c1\} *///****////****////.
\{c2\} (/////// /////// ///////(
\{c2\} /(((((//* //, //((((((.
\{c2\} ((((((((((( ((( ((((((((
\{c2\} *((((((((((((((((((((((( ((((((((
\{c3\} (((((#(((((((#((((( ((#(((((
\{c3\} (#(#(#####(#(#, ####(#(#
\{c3\} ######### ########
\{c3\} /######## ########
\{c4\} #######%#######
\{c4\} (#%%%%%%%#
\{c4\} %%%%%
\{c4\} %%%"
}
# Logo: Bedrock
class Logo_bedrock {
colors = "8 7 7 7 7 7"
art = "\{c1\}--------------------------------------
--------------------------------------
--------------------------------------
---\{c2\}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\{c1\}-----------------------
----\{c2\}\\\\\\\\\\\\ \\\\\\\\\\\\\{c1\}----------------------
-----\{c2\}\\\\\\\\\\\\ \\\\\\\\\\\\\{c1\}---------------------
------\{c2\}\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\{c1\}------
-------\{c2\}\\\\\\\\\\\\ \\\\\\\\\\\\\{c1\}-----
--------\{c2\}\\\\\\\\\\\\ \\\\\\\\\\\\\{c1\}----
---------\{c2\}\\\\\\\\\\\\ ______ \\\\\\\\\\\\\{c1\}---
----------\{c2\}\\\\\\\\\\\\ ///\{c1\}---
-----------\{c2\}\\\\\\\\\\\\ ///\{c1\}----
------------\{c2\}\\\\\\\\\\\\ ///\{c1\}-----
-------------\{c2\}\\\\\\\\\\\\////////////////\{c1\}------
--------------------------------------
--------------------------------------
--------------------------------------"
}
# Logo: Bitrig
class Logo_bitrig {
colors = "2 7 7 7 7 7"
art = "\{c1\} `hMMMMN+
-MMo-dMd`
oMN- oMN`
yMd /NM:
.mMmyyhMMs
:NMMMhsmMh
+MNhNNoyMm-
hMd.-hMNMN:
mMmsssmMMMo
.MMdyyhNMMMd
oMN.`/dMddMN`
yMm/hNm+./MM/
.dMMMmo.``.NMo
:NMMMNmmmmmMMh
/MN/-------oNN:
hMd. .dMh
sm/ /ms"
}
# Logo: BlackArch
class Logo_blackarch {
colors = "1 1 0 1 1 1"
art = "\{c3\} 00
11
====\{c1\}
.\{c3\}//\{c1\}
`o\{c3\}//\{c1\}:
`+o\{c3\}//\{c1\}o:
`+oo\{c3\}//\{c1\}oo:
-+oo\{c3\}//\{c1\}oo+:
`/:-:+\{c3\}//\{c1\}ooo+:
`/+++++\{c3\}//\{c1\}+++++:
`/++++++\{c3\}//\{c1\}++++++:
`/+++o\{c2\}ooo\{c3\}//\{c2\}ooo\{c1\}oooo/`
\{c2\} \{c1\}./\{c2\}ooosssso\{c3\}//\{c2\}osssssso\{c1\}+`
\{c2\} .oossssso-`\{c3\}//\{c1\}`/ossssss+`
-osssssso. \{c3\}//\{c1\} :ssssssso.
:osssssss/ \{c3\}//\{c1\} osssso+++.
/ossssssss/ \{c3\}//\{c1\} +ssssooo/-
`/ossssso+/:- \{c3\}//\{c1\} -:/+osssso+-
`+sso+:-` \{c3\}//\{c1\} `.-/+oso:
`++:. \{c3\}//\{c1\} `-/+/
.` \{c3\}/\{c1\} `/"
}
# Logo: BLAG
class Logo_blag {
colors = "5 7 7 7 7 7"
art = "\{c1\} d
,MK:
xMMMX:
.NMMMMMX;
lMMMMMMMM0clodkO0KXWW:
KMMMMMMMMMMMMMMMMMMX'
.;d0NMMMMMMMMMMMMMMMMMMK.
.;dONMMMMMMMMMMMMMMMMMMMMMMx
'dKMMMMMMMMMMMMMMMMMMMMMMMMl
.:xKWMMMMMMMMMMMMMMMMMMM0.
.:xNMMMMMMMMMMMMMMMMMK.
lMMMMMMMMMMMMMMMMMMK.
,MMMMMMMMWkOXWMMMMMM0
.NMMMMMNd. `':ldko
OMMMK:
oWk,
;:"
}
# Logo: BlankOn
class Logo_blankon {
colors = "1 7 3 3 3 3"
art = "\{c2\} `./ohdNMMMMNmho+.` \{c1\} .+oo:`
\{c2\} -smMMMMMMMMMMMMMMMMmy-` \{c1\}`yyyyy+
\{c2\} `:dMMMMMMMMMMMMMMMMMMMMMMd/` \{c1\}`yyyyys
\{c2\} .hMMMMMMMNmhso/++symNMMMMMMMh- \{c1\}`yyyyys
\{c2\} -mMMMMMMms-` -omMMMMMMN-\{c1\}.yyyyys
\{c2\}.mMMMMMMy. .yMMMMMMm:\{c1\}yyyyys
\{c2\}sMMMMMMy `sMMMMMMh\{c1\}yyyyys
\{c2\}NMMMMMN: .NMMMMMN\{c1\}yyyyys
\{c2\}MMMMMMm. NMMMMMN\{c1\}yyyyys
\{c2\}hMMMMMM+ /MMMMMMN\{c1\}yyyyys
\{c2\}:NMMMMMN: :mMMMMMM+\{c1\}yyyyys
\{c2\} oMMMMMMNs- .sNMMMMMMs.\{c1\}yyyyys
\{c2\} +MMMMMMMNho:.` `.:ohNMMMMMMNo \{c1\}`yyyyys
\{c2\} -hMMMMMMMMNNNmmNNNMMMMMMMMh- \{c1\}`yyyyys
\{c2\} :yNMMMMMMMMMMMMMMMMMMNy:` \{c1\}`yyyyys
\{c2\} .:sdNMMMMMMMMMMNds/. \{c1\}`yyyyyo
\{c2\} `.:/++++/:.` \{c1\}:oys+."
}
# Logo: BlueLight
class Logo_bluelight {
colors = "7 4 4 4 4 4"
art = "\{c1\} oMMNMMMMMMMMMMMMMMMMMMMMMM
oMMMMMMMMMMMMMMMMMMMMMMMMM
oMMMMMMMMMMMMMMMMMMMMMMMMM
oMMMMMMMMMMMMMMMMMMMMMMMMM
-+++++++++++++++++++++++mM\{c2\}
```````````````````````..\{c1\}dM\{c2\}
```````````````````````....\{c1\}dM\{c2\}
```````````````````````......\{c1\}dM\{c2\}
```````````````````````........\{c1\}dM\{c2\}
```````````````````````..........\{c1\}dM\{c2\}
```````````````````````............\{c1\}dM\{c2\}
.::::::::::::::::::::::-..............\{c1\}dM\{c2\}
`-+yyyyyyyyyyyyyyyyyyyo............\{c1\}+mMM\{c2\}
-+yyyyyyyyyyyyyyyyo..........\{c1\}+mMMMM\{c2\}
./syyyyyyyyyyyyo........\{c1\}+mMMMMMM\{c2\}
./oyyyyyyyyyo......\{c1\}+mMMMMMMMM\{c2\}
omdyyyyyyo....\{c1\}+mMMMMMMMMMM\{c2\}
\{c1\}oMMM\{c2\}mdhyyo..\{c1\}+mMMMMMMMMMMMM
oNNNNNNm\{c2\}dso\{c1\}mMMMMMMMMMMMMMM"
}
# Logo: Bodhi
class Logo_bodhi {
colors = "7 11 2 2 2 2"
art = "\{c1\}| \{c2\},,mmKKKKKKKKWm,,
\{c1\}' \{c2\},aKKP\{c1\}LL**********|L*\{c2\}TKp,
\{c1\}t \{c2\}aKP\{c1\}L**``` ```**L\{c2\}*Kp
IX\{c1\}EL\{c3\}L,wwww, \{c1\}``*||\{c2\}Kp
,#P\{c1\}L|\{c3\}KKKpPP@IPPTKmw, \{c1\}`*||\{c2\}K
,K\{c1\}LL*\{c3\}\{KKKKKKPPb\$KPhpKKPKp \{c1\}`||\{c2\}K
#\{c1\}PL \{c3\}!KKKKKKPhKPPP\$KKEhKKKKp \{c1\}`||\{c2\}K
!H\{c1\}L* \{c3\}1KKKKKKKphKbPKKKKKK\$KKp \{c1\}`|I\{c2\}W
\$\{c1\}bL \{c3\}KKKKKKKKBQKhKbKKKKKKKK \{c1\}|I\{c2\}N
\$\{c1\}bL \{c3\}!KKKKKKKKKKNKKKKKKKPP` \{c1\}|I\{c2\}b
TH\{c1\}L* \{c3\}TKKKKKK##KKKN@KKKK^ \{c1\}|I\{c2\}M
K@\{c1\}L \{c3\}*KKKKKKKKKKKEKE5 \{c1\}||\{c2\}K
`NL\{c1\}L \{c3\}`KKKKKKKKKK\"```|L \{c1\}||\{c2\}#P
`K@\{c1\}LL \{c3\}`\"**\"` \{c1\}'. :||\{c2\}#P
Yp\{c1\}LL \{c1\}' |L\{c2\}\$M`
`Tp\{c1\}pLL, ,|||\{c2\}p'L
\"Kpp\{c1\}LL++,., ,,|||\$\{c2\}#K* \{c1\}'.
\{c2\}`\"MKWpppppppp#KM\"` \{c1\}`h,"
}
# Logo: bonsai
class Logo_bonsai {
colors = "6 2 3 3 3 3"
art = "\{c2\} ,####,
\{c2\}#######, \{c2\},#####,
\{c2\}#####',# \{c2\}'######
\{c2\}''###'\{c3\}';,,,'\{c2\}###'
\{c3\} ,; ''''
\{c3\} ;;; \{c2\},#####,
\{c3\} ;;;' ,,;\{c2\};;###
\{c3\} ';;;;''\{c2\}'####'
\{c3\} ;;;
\{c3\} ,.;;';'',,,
\{c3\} ' '
\{c1\} #
# O
##, ,##,',##, ,## ,#, ,
# # # # #''# #,, # # #
'#' '##' # # ,,# '##;, #"
}
# Logo: BSD
class Logo_bsd {
colors = "1 7 4 3 6 6"
art = "\{c1\} , ,
/( )`
\\ \\___ / |
/- _ `-/ '
(\{c2\}/\\/ \\ \{c1\}\\ /\\
\{c2\}/ / | ` \{c1\}\\
\{c3\}O O \{c2\}) \{c1\}/ |
\{c2\}`-^--'\{c1\}`< '
(_.) _ ) /
`.___/` /
`-----' /
\{c4\}<----. __ / __ \\
\{c4\}<----|====\{c1\}O)))\{c4\}==\{c1\}) \\) /\{c4\}====|
<----' \{c1\}`--' `.__,' \\
| |
\\ / /\\
\{c5\}______\{c1\}( (_ / \\______/
\{c5\},' ,-----' |
`--\{__________)"
}
# Logo: BunsenLabs
class Logo_bunsenlabs {
colors = "7 7 7 7 7 7"
art = "\{c1\} `++
-yMMs
`yMMMMN`
-NMMMMMMm.
:MMMMMMMMMN-
.NMMMMMMMMMMM/
yMMMMMMMMMMMMM/
`MMMMMMNMMMMMMMN.
-MMMMN+ /mMMMMMMy
-MMMm` `dMMMMMM
`MMN. .NMMMMM.
hMy yMMMMM`
-Mo +MMMMN
/o +MMMMs
+MMMN`
hMMM:
`NMM/
+MN:
mh.
-/"
}
# Logo: Calculate
class Logo_calculate {
colors = "7 3 3 3 3 3"
art = "\{c1\} ......
,,+++++++,.
.,,,....,,,\{c2\}+**+,,.\{c1\}
............,\{c2\}++++,,,\{c1\}
...............
......,,,........
.....+*#####+,,,*+.
.....,*###############,..,,,,,,..
......,*#################*..,,,,,..,,,..
.,,....*####################+***+,,,,...,++,
.,,..,..*#####################*,
,+,.+*..*#######################.
,+,,+*+..,########################*
.,++++++. ..+##**###################+
..... ..+##***#################*.
.,.*#*****##############*.
..,,*********#####****+.
\{c2\}.,++*****+++\{c1\}*****************\{c2\}+++++,.\{c1\}
\{c2\},++++++**+++++\{c1\}***********\{c2\}+++++++++,\{c1\}
\{c2\}.,,,,++++,.. .,,,,,.....,+++,.,,\{c1\}"
}
# Logo: Carbs
class Logo_carbs {
colors = "4 5 4 4 4 4"
art = "\{c2\} ..........
..,;:ccccccc:;'..
..,clllc:;;;;;:cllc,.
.,cllc,... ..';;'.
.;lol;.. ..
.,lol;.
.coo:.
.'lol,.
.,lol,.
.,lol,.
'col;.
.:ooc'.
.'col:.
.'cllc'.. .''.
..:lolc,'.......',cll,.
..;cllllccccclllc;'.
...',;;;;;;,,...
....."
}
# Logo: CBL-Mariner
class Logo_cbl_mariner {
colors = "6 6 6 6 6 6"
art = "\{c1\} .
:- .
:==. .=:
:===: -==:
:-===: .====:
:-====- -=====:
-====== :=======:
-======. .=========:
-======: -==========.
-======- -===========.
:======- :===========.
:=======. .-==========.
:=======: -==========.
:=======- :==========.
:=======- .-========-
:--------. :========-
..:::--=========-
..::---================-=-"
}
# Logo: CelOS
class Logo_celos {
colors = "4 6 0 5 5 5"
art = "
\{c4\} .,cmmmmmmmmmmmc,.
.,cmMMMMMMMMMMMMMMMMMMMMmc.
.cMMMMMMMMMMMMMMMMMMMMMMMMMMMmc.
.cMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMc.
,:MMM \{c3\}####################################\{c4\}
cMMMMMMmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmc.
.MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM.
.MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMc
\"******************************MMMMMMMMMMMMMc:
\{c3\}#################################### \{c4\}MMMMMMMMMMMMMc
\"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM:
\"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM\"
'MMMMMMMMM*******************************:
\\\"MMMMMM \{c3\}#####################################
\{c4\}`:MMMMMMmmmmmmmmmmmmmmmmmmmmmmmmmmmmm;
`\"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM\"
`\":MMMMMMMMMMMMMMMMMMMMMMMMM;'
`\":MMMMMMMMMMMMMMMMMMM:\"
\"************\""
}
# Logo: CentOS
class Logo_centos {
colors = "3 2 4 5 7 7"
art = "\{c1\} ..
.PLTJ.
<><><><>
\{c2\}KKSSV' 4KKK \{c1\}LJ\{c4\} KKKL.'VSSKK
\{c2\}KKV' 4KKKKK \{c1\}LJ\{c4\} KKKKAL 'VKK
\{c2\}V' ' 'VKKKK \{c1\}LJ\{c4\} KKKKV' ' 'V
\{c2\}.4MA.' 'VKK \{c1\}LJ\{c4\} KKV' '.4Mb.
\{c4\} . \{c2\}KKKKKA.' 'V \{c1\}LJ\{c4\} V' '.4KKKKK \{c3\}.
\{c4\} .4D \{c2\}KKKKKKKA.'' \{c1\}LJ\{c4\} ''.4KKKKKKK \{c3\}FA.
\{c4\}<QDD ++++++++++++ \{c3\}++++++++++++ GFD>
\{c4\} 'VD \{c3\}KKKKKKKK'.. \{c2\}LJ \{c1\}..'KKKKKKKK \{c3\}FV
\{c4\} ' \{c3\}VKKKKK'. .4 \{c2\}LJ \{c1\}K. .'KKKKKV \{c3\}'
\{c3\} 'VK'. .4KK \{c2\}LJ \{c1\}KKA. .'KV'
\{c3\}A. . .4KKKK \{c2\}LJ \{c1\}KKKKA. . .4
\{c3\}KKA. 'KKKKK \{c2\}LJ \{c1\}KKKKK' .4KK
\{c3\}KKSSA. VKKK \{c2\}LJ \{c1\}KKKV .4SSKK
\{c2\} <><><><>
'MKKM'
''"
}
# Logo: centos_small
class Logo_centos_small {
colors = "3 2 4 5 7 7"
art = "\{c2\} ____\{c1\}^\{c4\}____
\{c2\} |\\\\ \{c1\}|\{c4\} /|
\{c2\} | \\\\ \{c1\}|\{c4\} / |
\{c4\}<---- \{c3\}---->
\{c3\} | / \{c2\}|\{c1\} \\\\ |
\{c3\} |/__\{c2\}|\{c1\}__\\\\|
\{c2\} v"
}
# Logo: Chakra
class Logo_chakra {
colors = "4 5 7 6 6 6"
art = "\{c1\} _ _ _ \"kkkkkkkk.
,kkkkkkkk., 'kkkkkkkkk,
,kkkkkkkkkkkk., 'kkkkkkkkk.
,kkkkkkkkkkkkkkkk,'kkkkkkkk,
,kkkkkkkkkkkkkkkkkkk'kkkkkkk.
\"''\"''',;::,,\"''kkk''kkkkk; __
,kkkkkkkkkk, \"k''kkkkk' ,kkkk
,kkkkkkk' ., ' .: 'kkkk',kkkkkk
,kkkkkkkk'.k' , ,kkkk;kkkkkkkkk
,kkkkkkkk';kk 'k \"'k',kkkkkkkkkkkk
.kkkkkkkkk.kkkk.'kkkkkkkkkkkkkkkkkk'
;kkkkkkkk''kkkkkk;'kkkkkkkkkkkkk''
'kkkkkkk; 'kkkkkkkk.,\"\"''\"''\"\"
''kkkk; 'kkkkkkkkkk.,
';' 'kkkkkkkkkkkk.,
';kkkkkkkkkk'
';kkkkkk'
\"''\""
}
# Logo: ChaletOS
class Logo_chaletos {
colors = "4 7 1 1 1 1"
art = "\{c1\} `.//+osso+/:``
`/sdNNmhyssssydmNNdo:`
:hNmy+-` .-+hNNs-
/mMh/` `+:` `+dMd:
.hMd- -sNNMNo. /yyy /mMs`
-NM+ `/dMd/--omNh::dMM `yMd`
.NN+ .sNNs:/dMNy:/hNmo/s yMd`
hMs `/hNd+-smMMMMMMd+:omNy- `dMo
:NM. .omMy:/hNMMMMMMMMMMNy:/hMd+` :Md`
/Md` `sm+.omMMMMMMMMMMMMMMMMd/-sm+ .MN:
/Md` MMMMMMMMMMMMMMMMMMMN .MN:
:NN. MMMMMMm....--NMMMMMN -Mm.
`dMo MMMMMMd mMMMMMN hMs
-MN: MMMMMMd mMMMMMN oMm`
:NM: MMMMMMd mMMMMMN +Mm-
-mMy. mmmmmmh dmmmmmh -hMh.
oNNs- :yMm/
.+mMdo:` `:smMd/`
-ohNNmhsoo++osshmNNh+.
`./+syyhhyys+:``"
}
# Logo: Chapeau
class Logo_chapeau {
colors = "2 7 7 7 7 7"
art = "\{c1\} .-/-.
////////.
////////\{c2\}y+\{c1\}//.
////////\{c2\}mMN\{c1\}/////.
////////\{c2\}mMN+\{c1\}////////.
////////////////////////.
/////////+\{c2\}shhddhyo\{c1\}+////////.
////////\{c2\}ymMNmdhhdmNNdo\{c1\}///////.
///////+\{c2\}mMms\{c1\}////////\{c2\}hNMh\{c1\}///////.
///////\{c2\}NMm+\{c1\}//////////\{c2\}sMMh\{c1\}///////
//////\{c2\}oMMNmmmmmmmmmmmmMMm\{c1\}///////
//////\{c2\}+MMmssssssssssssss+\{c1\}///////
`//////\{c2\}yMMy\{c1\}////////////////////
`//////\{c2\}smMNhso++oydNm\{c1\}////////
`///////\{c2\}ohmNMMMNNdy+\{c1\}///////
`//////////\{c2\}++\{c1\}//////////
`////////////////.
-////////-"
}
# Logo: Chrom
class Logo_chrom {
colors = "2 1 3 4 7 7"
art = "\{c2\} .,:loool:,.
.,coooooooooooooc,.
.,lllllllllllllllllllll,.
;ccccccccccccccccccccccccc;
\{c1\} '\{c2\}ccccccccccccccccccccccccccccc.
\{c1\} ,oo\{c2\}c::::::::okO\{c5\}000\{c3\}0OOkkkkkkkkkkk:
\{c1\}.ooool\{c2\};;;;:x\{c5\}K0\{c4\}kxxxxxk\{c5\}0X\{c3\}K0000000000.
\{c1\}:oooool\{c2\};,;O\{c5\}K\{c4\}ddddddddddd\{c5\}KX\{c3\}000000000d
\{c1\}lllllool\{c2\};l\{c5\}N\{c4\}dllllllllllld\{c5\}N\{c3\}K000000000
\{c1\}lllllllll\{c2\}o\{c5\}M\{c4\}dccccccccccco\{c5\}W\{c3\}K000000000
\{c1\};cllllllllX\{c5\}X\{c4\}c:::::::::c\{c5\}0X\{c3\}000000000d
\{c1\}.ccccllllllO\{c5\}Nk\{c4\}c;,,,;cx\{c5\}KK\{c3\}0000000000.
\{c1\} .cccccclllllxOO\{c5\}OOO\{c1\}Okx\{c3\}O0000000000;
\{c1\} .:ccccccccllllllllo\{c3\}O0000000OOO,
\{c1\} ,:ccccccccclllcd\{c3\}0000OOOOOOl.
\{c1\} '::ccccccccc\{c3\}dOOOOOOOkx:.
\{c1\} ..,::cccc\{c3\}xOOOkkko;.
\{c1\} ..,:\{c3\}dOkxl:."
}
# Logo: Cleanjaro
class Logo_cleanjaro {
colors = "7 7 7 7 7 7"
art = "\{c1\}███████▌ ████████████████
███████▌ ████████████████
███████▌ ████████████████
███████▌
███████▌
███████▌
███████▌
███████▌
█████████████████████████
█████████████████████████
█████████████████████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
}
# Logo: cleanjaro_small
class Logo_cleanjaro_small {
colors = "7 7 7 7 7 7"
art = "\{c1\}█████ ██████████
█████ ██████████
█████
█████
█████
████████████████
████████████████"
}
# Logo: Clear Linux OS
class Logo_clear_linux_os {
colors = "4 3 7 6 6 6"
art = "\{c1\} BBB
BBBBBBBBB
BBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBB BBB
BBBBBBBB\{c2\}YYYYY
\{c1\} BBBBBBBB\{c2\}YYYYYY
\{c1\} BBBBBBBB\{c2\}YYYYYYY
\{c1\} BBBBBBBBB\{c2\}YYYYY\{c3\}W
\{c4\} GG\{c1\}BBBBBBBY\{c2\}YYYY\{c3\}WWW
\{c4\} GGG\{c1\}BBBBBBB\{c2\}YY\{c3\}WWWWWWWW
\{c4\} GGGGGG\{c1\}BBBBBB\{c3\}WWWWWWWW
\{c4\} GGGGGGGG\{c1\}BBBB\{c3\}WWWWWWWW
\{c4\}GGGGGGGGGGG\{c1\}BBB\{c3\}WWWWWWW
\{c4\}GGGGGGGGGGGGG\{c1\}B\{c3\}WWWWWW
\{c4\}GGGGGGGG\{c3\}WWWWWWWWWWW
\{c4\}GG\{c3\}WWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWW
WWWWWWWWWW
WWW"
}
# Logo: ClearOS
class Logo_clearos {
colors = "2 2 2 2 2 2"
art = "\{c1\} `.--::::::--.`
.-:////////////////:-.
`-////////////////////////-`
-////////////////////////////-
`//////////////-..-//////////////`
./////////////: ://///////////.
`//////:..-////: :////-..-//////`
://////` -///:.``.:///-` ://///:
`///////:. -////////-` `:///////`
.//:--////:. -////-` `:////--://.
./: .////:. --` `:////- :/.
`//-` .////:. `:////- `-//`
:///-` .////:. `:////- `-///:
`/////-` -///: :///- `-/////`
`//////- `///: :///` .//////`
`:////: `///: :///` -////:`
.://: `///: :///` -//:.
.:: `///: :///` -:.
`///: :///`
`... ...`"
}
# Logo: Clover
class Logo_clover {
colors = "2 6 6 6 6 6"
art = "\{c1\} `omo``omo`
`oNMMMNNMMMNo`
`oNMMMMMMMMMMMMNo`
oNMMMMMMMMMMMMMMMMNo
`sNMMMMMMMMMMMMMMNs`
`omo` `sNMMMMMMMMMMNs` `omo`
`oNMMMNo` `sNMMMMMMNs` `oNMMMNo`
`oNMMMMMMMNo` `oNMMNs` `oNMMMMMMMNo`
oNMMMMMMMMMMMNo` `sy` `oNMMMMMMMMMMMNo
`sNMMMMMMMMMMMMNo.\{c2\}oNNs\{c1\}.oNMMMMMMMMMMMMNs`
`oNMMMMMMMMMMMMNs.\{c2\}oNNs\{c1\}.oNMMMMMMMMMMMMNo`
oNMMMMMMMMMMMNs` `sy` `oNMMMMMMMMMMMNo
`oNMMMMMMMNs` `oNMMNo` `oNMMMMMMMNs`
`oNMMMNs` `sNMMMMMMNs` `oNMMMNs`
`oNs` `sNMMMMMMMMMMNs` `oNs`
`sNMMMMMMMMMMMMMMNs`
+NMMMMMMMMMMMMMMMMNo
`oNMMMMMMMMMMMMNo`
`oNMMMNNMMMNs`
`omo``oNs`"
}
# Logo: Condres
class Logo_condres {
colors = "2 3 6 6 6 6"
art = "\{c1\}syyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+\{c3\}.+.
\{c1\}`oyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+\{c3\}:++.
\{c2\}/o\{c1\}+oyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/\{c3\}oo++.
\{c2\}/y+\{c1\}syyyyyyyyyyyyyyyyyyyyyyyyyyyyy\{c3\}+ooo++.
\{c2\}/hy+\{c1\}oyyyhhhhhhhhhhhhhhyyyyyyyyy\{c3\}+oo+++++.
\{c2\}/hhh+\{c1\}shhhhhdddddhhhhhhhyyyyyyy\{c3\}+oo++++++.
\{c2\}/hhdd+\{c1\}oddddddddddddhhhhhyyyys\{c3\}+oo+++++++.
\{c2\}/hhddd+\{c1\}odmmmdddddddhhhhyyyy\{c3\}+ooo++++++++.
\{c2\}/hhdddmo\{c1\}odmmmdddddhhhhhyyy\{c3\}+oooo++++++++.
\{c2\}/hdddmmms\{c1\}/dmdddddhhhhyyys\{c3\}+oooo+++++++++.
\{c2\}/hddddmmmy\{c1\}/hdddhhhhyyyyo\{c3\}+oooo++++++++++:
\{c2\}/hhdddmmmmy\{c1\}:yhhhhyyyyy+\{c3\}+oooo+++++++++++:
\{c2\}/hhddddddddy\{c1\}-syyyyyys+\{c3\}ooooo++++++++++++:
\{c2\}/hhhddddddddy\{c1\}-+yyyy+\{c3\}/ooooo+++++++++++++:
\{c2\}/hhhhhdddddhhy\{c1\}./yo:\{c3\}+oooooo+++++++++++++/
\{c2\}/hhhhhhhhhhhhhy\{c1\}:-.\{c3\}+sooooo+++++++++++///:
\{c2\}:sssssssssssso++\{c1\}\{c3\}`:/:--------.````````"
}
# Logo: Container Linux by CoreOS
class Logo_container_linux_by_coreos {
colors = "4 7 1 1 1 1"
art = "\{c1\} .....
.';:cccccccc:;'.
':ccccclc\{c3\}lllllllll\{c1\}cc:.
.;cccccccc\{c3\}lllllllllllllll\{c1\}c,
;clllccccc\{c3\}llllllllllllllllll\{c1\}c,
.cllclccccc\{c3\}lllll\{c2\}lll\{c3\}llllllllllll\{c1\}c:
ccclclcccc\{c3\}cllll\{c2\}kWMMNKk\{c3\}llllllllll\{c1\}c:
:ccclclcccc\{c3\}llll\{c2\}oWMMMMMMWO\{c3\}lllllllll\{c1\}c,
.ccllllllccc\{c3\}clll\{c2\}OMMMMMMMMM0\{c3\}lllllllll\{c1\}c
.lllllclcccc\{c3\}llll\{c2\}KMMMMMMMMMMo\{c3\}llllllll\{c1\}c.
.lllllllcccc\{c3\}clll\{c2\}KMMMMMMMMN0\{c3\}lllllllll\{c1\}c.
.cclllllcccc\{c3\}lllld\{c2\}xkkxxdo\{c3\}llllllllllc\{c1\}lc
:cccllllllcccc\{c3\}lllccllllcclccc\{c1\}cccccc;
.ccclllllllcccccccc\{c3\}lll\{c1\}ccccclccccccc
.cllllllllllclcccclccclccllllcllc
:cllllllllccclcllllllllllllcc;
.cccccccccccccclcccccccccc:.
.;cccclccccccllllllccc,.
.';ccccclllccc:;..
....."
}
# Logo: CRUX
class Logo_crux {
colors = "4 5 7 6 6 6"
art = "\{c1\} odddd
oddxkkkxxdoo
ddcoddxxxdoool
xdclodod olol
xoc xdd olol
xdc \{c2\}k00\{c1\}Okdlol
xxd\{c2\}kOKKKOkd\{c1\}ldd
xdco\{c2\}xOkdlo\{c1\}dldd
ddc:cl\{c2\}lll\{c1\}oooodo
odxxdd\{c3\}xkO000kx\{c1\}ooxdo
oxdd\{c3\}x0NMMMMMMWW0od\{c1\}kkxo
oooxd\{c3\}0WMMMMMMMMMW0o\{c1\}dxkx
docldkXW\{c3\}MMMMMMMWWN\{c1\}Odolco
xx\{c2\}dx\{c1\}kxxOKN\{c3\}WMMWN\{c1\}0xdoxo::c
\{c2\}xOkkO\{c1\}0oo\{c3\}odOW\{c2\}WW\{c1\}XkdodOxc:l
\{c2\}dkkkxkkk\{c3\}OKX\{c2\}NNNX0Oxx\{c1\}xc:cd
\{c2\} odxxdx\{c3\}xllod\{c2\}ddooxx\{c1\}dc:ldo
\{c2\} lodd\{c1\}dolccc\{c2\}ccox\{c1\}xoloo"
}
# Logo: crux_small
class Logo_crux_small {
colors = "4 5 7 6 6 6"
art = "\{c1\} ___
(\{c3\}.· \{c1\}|
(\{c2\}<> \{c1\}|
/ \{c3\}__ \{c1\}\\\\
( \{c3\}/ \\\\ \{c1\}/|
\{c2\}_\{c1\}/\\\\ \{c3\}__)\{c1\}/\{c2\}_\{c1\})
\{c2\}\\/\{c1\}-____\{c2\}\\/"
}
# Logo: Crystal Linux
class Logo_crystal_linux {
colors = "13 5 5 5 5 5"
art = "\{c1\} mysssym
\{c1\} mysssym
\{c1\} mysssym
\{c1\} mysssym
\{c1\} mysssyd
\{c1\} mysssyd N
\{c1\} mysssyd mysym
\{c1\} mysssyd dysssym
\{c1\} mysssyd dysssym
\{c1\} mysssyd dysssym
\{c1\} mysssyd dysssym
\{c1\} mysssyd dysssym
\{c1\} mysssyd dysssym
\{c1\} mysym dysssym
\{c1\} N dysssym
\{c1\} dysssym
\{c1\} dysssym
\{c1\} dysssym
\{c1\} dysssym
\{c1\} dysssym"
}
# Logo: Cucumber
class Logo_cucumber {
colors = "2 3 3 3 3 3"
art = "\{c1\} `.-://++++++//:-.`
`:/+//\{c2\}::--------\{c1\}:://+/:`
-++/:\{c2\}----..........----\{c1\}:/++-
.++:\{c2\}---...........-......---\{c1\}:++.
/+:\{c2\}---....-::/:/--//:::-....---\{c1\}:+/
`++:\{c2\}--.....:---::/--/::---:.....--\{c1\}:++`
/+:\{c2\}--.....--.--::::-/::--.--.....--\{c1\}:+/
-o:\{c2\}--.......-:::://--/:::::-.......--\{c1\}:o-
/+:\{c2\}--...-:-::---:::..:::---:--:-...--\{c1\}:+/
o/:\{c2\}-...-:.:.-/:::......::/:.--.:-...-\{c1\}:/o
o/\{c2\}--...::-:/::/:-......-::::::-/-...-\{c1\}:/o
/+:\{c2\}--..-/:/:::--:::..:::--::////-..--\{c1\}:+/
-o:\{c2\}--...----::/:::/--/:::::-----...--\{c1\}:o-
/+:\{c2\}--....://:::.:/--/:.::://:....--\{c1\}:+/
`++:\{c2\}--...-:::.--.:..:.--.:/:-...--\{c1\}:++`
/+:\{c2\}---....----:-..-:----....---\{c1\}:+/
.++:\{c2\}---..................---\{c1\}:++.
-/+/:\{c2\}----..........----\{c1\}:/+/-
`:/+//\{c2\}::--------:::\{c1\}/+/:`
`.-://++++++//:-.`"
}
# Logo: CyberOS
class Logo_cyberos {
colors = "50 32 57 57 57 57"
art = "\{c3\} !M\$EEEEEEEEEEEP
.MMMMM000000Nr.
\{c3\}&MMMMMM\{c2\}MMMMMMMMMMMMM9
\{c3\}~MMM\{c1\}MMMM\{c2\}MMMMMMMMMMMMC
\{c1\}\" \{c3\}M\{c1\}MMMMMMM\{c2\}MMMMMMMMMMs
\{c1\}iM\{c2\}MMM&&\{c1\}MMMMMMMM\{c2\}MMMMMMMM\\\\
\{c1\}BMMM\{c2\}MMMMM\{c1\}MMMMMMM\{c2\}MMMMMM\{c3\}\"
\{c1\}9MMMMM\{c2\}MMMMMMM\{c1\}MMMM\{c2\}MMMM\{c3\}MMMf-
\{c2\}sMMMMMMMM\{c1\}MM\{c2\}M\{c3\}MMMMMMMMM3_
\{c2\}+ffffffff\{c1\}P\{c3\}MMMMMMMMMMMM0
\{c2\}CMMMMMMMMMMM
\}MMMMMMMMM
~MMMMMMM
\"RMMMM
.PMB"
}
# Logo: dahlia
class Logo_dahlia {
colors = "1 7 3 3 3 3"
art = "\{c1\}
.#.
*%@@@%*
.,,,,,(&@@@@@@@&/,,,,,.
,#@@@@@@@@@@@@@@@@@@@@@#.
,#@@@@@@@&#///#&@@@@@@@#.
,/%&@@@@@%/, .,(%@@@@@&#/.
*#&@@@@@@#,. .*#@@@@@@&#,
.&@@@@@@@@@( .(@@@@@@@@@&&.
#@@@@@@@@@@( )@@@@@@@@@@@#
°@@@@@@@@@@( .(@@@@@@@@@@@°
*%@@@@@@@(. ,#@@@@@@@%*
,(&@@@@@@%*. ./%@@@@@@%(,
,#@@@@@@@&(***(&@@@@@@@#.
,#@@@@@@@@@@@@@@@@@@@@@#.
,*****#&@@@@@@@&(*****,
,/%@@@%/.
,#,"
}
# Logo: DarkOs
class Logo_darkos {
colors = "1 6 5 3 2 2"
art = "
\{c3\}⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c1\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣶⠋⡆⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c5\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡆⢀⣤⢛⠛⣠⣿⠀⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c6\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣶⣿⠟⣡⠊⣠⣾⣿⠃⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c2\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣯⣿⠀⠊⣤⣿⣿⣿⠃⣴⣧⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c1\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⡟⣠⣶⣿⣿⣿⢋⣤⠿⠛⠉⢁⣭⣽⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c4\} ⠀⠀⠀⠀⠀⠀ ⠀⣠⠖⡭⢉⣿⣯⣿⣯⣿⣿⣿⣟⣧⠛⢉⣤⣶⣾⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c5\}⠀⠀⠀⠀⠀⠀⠀⠀⣴⣫⠓⢱⣯⣿⢿⠋⠛⢛⠟⠯⠶⢟⣿⣯⣿⣿⣿⣿⣿⣿⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c2\}⠀⠀⠀⠀⠀⠀⢀⡮⢁⣴⣿⣿⣿⠖⣠⠐⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠛⠛⠛⢿⣶⣄⠀⠀⠀⠀⠀⠀⠀
\{c3\}⠀⠀⠀⠀⢀⣤⣷⣿⣿⠿⢛⣭⠒⠉⠀⠀⠀⣀⣀⣄⣤⣤⣴⣶⣶⣶⣿⣿⣿⣿⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀
\{c1\}⠀⢀⣶⠏⠟⠝⠉⢀⣤⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c6\}⢴⣯⣤⣶⣿⣿⣿⣿⣿⡿⣿⣯⠉⠉⠉⠉⠀⠀⠀⠈⣿⡀⣟⣿⣿⢿⣿⣿⣿⣿⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c5\}⠀⠀⠀⠉⠛⣿⣧⠀⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠃⣿⣿⣯⣿⣦⡀⠀⠉⠻⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c3\}⠀⠀⠀⠀⠀⠀⠉⢿⣮⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⠀⣯⠉⠉⠛⢿⣿⣷⣄⠀⠈⢻⣆⠀⠀⠀⠀⠀⠀⠀⠀
\{c2\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠢⠀⠀⠀⠀⠀⠀⠀⢀⢡⠃⣾⣿⣿⣦⠀⠀⠀⠙⢿⣿⣤⠀⠙⣄⠀⠀⠀⠀⠀⠀⠀
\{c6\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢋⡟⢠⣿⣿⣿⠋⢿⣄⠀⠀⠀⠈⡄⠙⣶⣈⡄⠀⠀⠀⠀⠀⠀
\{c1\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠚⢲⣿⠀⣾⣿⣿⠁⠀⠀⠉⢷⡀⠀⠀⣇⠀⠀⠈⠻⡀⠀⠀⠀⠀⠀
\{c4\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢢⣀⣿⡏⠀⣿⡿⠀⠀⠀⠀⠀⠀⠙⣦⠀⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c3\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠿⣧⣾⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣮⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\{c5\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀"
}
# Logo: Debian
class Logo_debian {
colors = "1 7 3 3 3 3"
art = "\{c2\} _,met\$\$\$\$\$gg.
,g\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$P.
,g\$\$P\" \"\"\"Y\$\$.\".
,\$\$P' `\$\$\$.
',\$\$P ,ggs. `\$\$b:
`d\$\$' ,\$P\"' \{c1\}.\{c2\} \$\$\$
\$\$P d\$' \{c1\},\{c2\} \$\$P
\$\$: \$\$. \{c1\}-\{c2\} ,d\$\$'
\$\$; Y\$b._ _,d\$P'
Y\$\$. \{c1\}`.\{c2\}`\"Y\$\$\$\$P\"'
\{c2\} `\$\$b \{c1\}\"-.__
\{c2\} `Y\$\$
`Y\$\$.
`\$\$b.
`Y\$\$b.
`\"Y\$b._
`\"\"\""
}
# Logo: debian_small
class Logo_debian_small {
colors = "1 7 3 3 3 3"
art = "\{c1\} _____
/ __ \\\\
| / |
| \\\\___-
-_
--_"
}
# Logo: Deepin
class Logo_deepin {
colors = "2 7 7 7 7 7"
art = "\{c1\} ............
.';;;;;. .,;,.
.,;;;;;;;. ';;;;;;;.
.;::::::::' .,::;;,''''',.
,'.:::::::: .;;'. ';
;' 'cccccc, ,' :: '.. .:
,, :ccccc. ;: .c, '' :. ,;
.l. cllll' ., .lc :; .l' l.
.c :lllc ;cl: .l' .ll. :'
.l 'looc. . ,o: 'oo' c,
.o. .:ool::coc' .ooo' o.
:: ..... .;dddo ;c
l:... .';lddddo. ,o
lxxxxxdoolllodxxxxxxxxxc :l
,dxxxxxxxxxxxxxxxxxxl. 'o,
,dkkkkkkkkkkkkko;. .;o;
.;okkkkkdl;. .,cl:.
.,:cccccccc:,."
}
# Logo: DesaOS
class Logo_desaos {
colors = "2 7 7 7 7 7"
art = "\{c1\}███████████████████████
███████████████████████
███████████████████████
███████████████████████
████████ ███████
████████ ███████
████████ ███████
████████ ███████
████████ ███████
████████ ███████
████████ ███████
██████████████████████████████
██████████████████████████████
████████████████████████
████████████████████████
████████████████████████"
}
# Logo: Devuan
class Logo_devuan {
colors = "5 7 7 7 7 7"
art = "\{c1\} ..,,;;;::;,..
`':ddd;:,.
`'dPPd:,.
`:b\$\$b`.
'P\$\$\$d`
.\$\$\$\$\$`
;\$\$\$\$\$P
.:P\$\$\$\$\$\$`
.,:b\$\$\$\$\$\$\$;'
.,:dP\$\$\$\$\$\$\$\$b:'
.,:;db\$\$\$\$\$\$\$\$\$\$Pd'`
,db\$\$\$\$\$\$\$\$\$\$\$\$\$\$b:'`
:\$\$\$\$\$\$\$\$\$\$\$\$b:'`
`\$\$\$\$\$bd:''`
`'''`"
}
# Logo: DracOS
class Logo_dracos {
colors = "1 7 3 3 3 3"
art = "\{c1\} `-:/-
-os:
-os/`
:sy+-`
`/yyyy+.
`+yyyyo-
`/yyyys:
`:osssoooo++- +yyyyyy/`
./yyyyyyo yo`:syyyy+.
-oyyy+ +- :yyyyyo-
`:sy: `. `/yyyyys:
./o/.` .oyyso+oo:`
:+oo+//::::///:-.` `.`"
}
# Logo: DragonFly
class Logo_dragonfly {
colors = "1 7 3 3 3 3"
art = "\{c2\},--, \{c1\}| \{c2\},--,
\{c2\}| `-, \{c1\},^, \{c2\},-' |
\{c2\} `, `-, \{c3\}(/ \\) \{c2\},-' ,'
\{c2\} `-, `-,\{c1\}/ \\\{c2\},-' ,-'
\{c2\} `------\{c1\}( )\{c2\}------'
\{c2\} ,----------\{c1\}( )\{c2\}----------,
\{c2\} | _,-\{c1\}( )\{c2\}-,_ |
\{c2\} `-,__,-' \{c1\}\\ /\{c2\} `-,__,-'
\{c1\} | |
| |
| |
| |
| |
| |
`|'"
}
# Logo: dragonfly_old
class Logo_dragonfly_old {
colors = "1 7 3 3 3 3"
art = " \{c1\} .-.
\{c3\} ()\{c1\}I\{c3\}()
\{c1\} \"==.__:-:__.==\"
\"==.__/~|~\\__.==\"
\"==._( Y )_.==\"
\{c2\}.-'~~\"\"~=--...,__\{c1\}\\/|\\/\{c2\}__,...--=~\"\"~~'-.
( ..=\{c1\}\\\\=\{c1\}/\{c2\}=.. )
`'-. ,.-\"`;\{c1\}/=\\\\\{c2\};\"-.,_ .-'`
`~\"-=-~` .-~` \{c1\}|=|\{c2\} `~-. `~-=-\"~`
.-~` /\{c1\}|=|\{c2\}\\ `~-.
.~` / \{c1\}|=|\{c2\} \\ `~.
.-~` .' \{c1\}|=|\{c2\} `. `~-.
(` _,.-=\"` \{c1\} |=|\{c2\} `\"=-.,_ `)
`~\"~\"` \{c1\} |=|\{c2\} `\"~\"~`
\{c1\} /=\\\\
\\\\=/
^"
}
# Logo: dragonfly_small
class Logo_dragonfly_small {
colors = "1 7 3 3 3 3"
art = "\{c2\} ,\{c1\}_\{c2\},
('-_\{c1\}|\{c2\}_-')
>--\{c1\}|\{c2\}--<
(_-'\{c1\}|\{c2\}'-_)
\{c1\}|
|
|"
}
# Logo: Drauger
class Logo_drauger {
colors = "1 7 7 7 7 7"
art = "\{c1\} -``-
`:+``+:`
`/++``++/.
.++/. ./++.
:++/` `/++:
`/++: :++/`
./+/- -/+/.
-++/. ./++-
:++:` `:++:
`/++- -++/`
./++. ./+/.
-++/` `/++-
:++:` `:++:
`/++- -++/`
.:-.`..............................`.-:.
`.-/++++++++++++++++++++++++++++++++/-.`"
}
# Logo: Elementary
class Logo_elementary {
colors = "4 7 1 1 1 1"
art = "\{c2\} eeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeeeee
eeeee eeeeeeeeeeee eeeee
eeee eeeee eee eeee
eeee eeee eee eeee
eee eee eee eee
eee eee eee eee
ee eee eeee eeee
ee eee eeeee eeeeee
ee eee eeeee eeeee ee
eee eeee eeeeee eeeee eee
eee eeeeeeeeee eeeeee eee
eeeeeeeeeeeeeeeeeeeeeeee eeeee
eeeeeeee eeeeeeeeeeee eeee
eeeee eeeee
eeeeeee eeeeeee
eeeeeeeeeeeeeeeee"
}
# Logo: elementary_small
class Logo_elementary_small {
colors = "4 7 1 1 1 1"
art = "\{c2\} _______
/ ____ \\\\
/ | / /\\\\
|__\\\\ / / |
\\\\ /__/ /
\\\\_______/"
}
# Logo: EndeavourOS
class Logo_endeavouros {
colors = "1 5 4 4 4 4"
art = "\{c1\} ./\{c2\}o\{c3\}.
\{c1\} ./\{c2\}sssso\{c3\}-
\{c1\} `:\{c2\}osssssss+\{c3\}-
\{c1\} `:+\{c2\}sssssssssso\{c3\}/.
\{c1\} `-/o\{c2\}ssssssssssssso\{c3\}/.
\{c1\} `-/+\{c2\}sssssssssssssssso\{c3\}+:`
\{c1\} `-:/+\{c2\}sssssssssssssssssso\{c3\}+/.
\{c1\} `.://o\{c2\}sssssssssssssssssssso\{c3\}++-
\{c1\} .://+\{c2\}ssssssssssssssssssssssso\{c3\}++:
\{c1\} .:///o\{c2\}ssssssssssssssssssssssssso\{c3\}++:
\{c1\} `:////\{c2\}ssssssssssssssssssssssssssso\{c3\}+++.
\{c1\}`-////+\{c2\}ssssssssssssssssssssssssssso\{c3\}++++-
\{c1\} `..-+\{c2\}oosssssssssssssssssssssssso\{c3\}+++++/`
./++++++++++++++++++++++++++++++/:.
`:::::::::::::::::::::::::------``"
}
# Logo: Endless
class Logo_endless {
colors = "1 7 7 7 7 7"
art = "\{c1\} `:+yhmNMMMMNmhy+:`
-odMMNhso//////oshNMMdo-
/dMMh+. .+hMMd/
/mMNo` `oNMm:
`yMMo` `oMMy`
`dMN- -NMd`
hMN. .NMh
/MM/ -os` /MM/
dMm `smNmmhs/- `:sNMd+ `` mMd
MMy oMd--:+yMMMMMNo.:ohmMMMNy` yMM
MMy -NNyyhmMNh+oNMMMMMy:. dMo yMM
dMm `/++/-``/yNNh+/sdNMNddMm- mMd
/MM/ `dNy: `-::- /MM/
hMN. .NMh
`dMN- -NMd`
`yMMo` `oMMy`
/mMNo` `oNMm/
/dMMh+. .+hMMd/
-odMMNhso//////oshNMMdo-
`:+yhmNMMMMNmhy+:`"
}
# Logo: EuroLinux
class Logo_eurolinux {
colors = "4 7 7 7 7 7"
art = "\{c1\} __
-wwwWWWWWWWWWwww-
-WWWWWWWWWWWWWWWWWWw-
\\WWWWWWWWWWWWWWWWWWW-
_Ww `WWWWWWWWWWWWWWWWWWWw
-W\{c2\}E\{c1\}Www -WWWWWWWWW-
_WW\{c2\}U\{c1\}WWWW- _WWWWWWWW
_WW\{c2\}R\{c1\}WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW-
wWW\{c2\}O\{c1\}WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWW\{c2\}L\{c1\}WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWw
WWW\{c2\}I\{c1\}WWWWWWWWWWWWWWWWWWWWWWWWWWWWww-
wWW\{c2\}N\{c1\}WWWWw
WW\{c2\}U\{c1\}WWWWWWw
wW\{c2\}X\{c1\}WWWWWWWWww
wWWWWWWWWWWWWWWWw
wWWWWWWWWWWWWWWWw
WWWWWWWWWWWWWw
wWWWWWWWw"
}
# Logo: Exherbo
class Logo_exherbo {
colors = "4 7 1 1 1 1"
art = "\{c2\} ,
OXo.
NXdX0: .cok0KXNNXXK0ko:.
KX '0XdKMMK;.xMMMk, .0MMMMMXx; ...
'NO..xWkMMx kMMM cMMMMMX,NMWOxOXd.
cNMk NK .oXM. OMMMMO. 0MMNo kW.
lMc o: ., .oKNk; ;NMMWlxW'
;Mc .. .,,' .0M\{c1\}g;\{c2\}WMN'dWMMMMMMO
XX ,WMMMMW. cM\{c1\}cfli\{c2\}WMKlo. .kMk
.Mo .WM\{c1\}GD\{c2\}MW. XM\{c1\}WO0\{c2\}MMk oMl
,M: ,XMMWx::,''oOK0x; NM.
'Ml ,kNKOxxxxxkkO0XXKOd:. oMk
NK .0Nxc\{c3\}:::::::::::::::\{c2\}fkKNk, .MW
,Mo .NXc\{c3\}::\{c2\}qXWXb\{c3\}::::::::::\{c2\}oo\{c3\}::\{c2\}lNK. .MW
;Wo oMd\{c3\}:::\{c2\}oNMNP\{c3\}::::::::\{c2\}oWMMMx\{c3\}:\{c2\}c0M; lMO
'NO;W0c\{c3\}:::::::::::::::\{c2\}dMMMMO\{c3\}::\{c2\}lMk .WM'
xWONXdc\{c3\}::::::::::::::\{c2\}oOOo\{c3\}::\{c2\}lXN. ,WMd
'KWWNXXK0Okxxo,\{c3\}:::::::\{c2\},lkKNo xMMO
:XMNxl,';:lodxkOO000Oxc. .oWMMo
'dXMMXkl;,. .,o0MMNo'
':d0XWMMMMWNNNNMMMNOl'
':okKXWNKkl'"
}
# Logo: Fedora
class Logo_fedora {
colors = "12 7 7 7 7 7"
art = "\{c1\} .',;::::;,'.
.';:cccccccccccc:;,.
.;cccccccccccccccccccccc;.
.:cccccccccccccccccccccccccc:.
.;ccccccccccccc;\{c2\}.:dddl:.\{c1\};ccccccc;.
.:ccccccccccccc;\{c2\}OWMKOOXMWd\{c1\};ccccccc:.
.:ccccccccccccc;\{c2\}KMMc\{c1\};cc;\{c2\}xMMc\{c1\};ccccccc:.
,cccccccccccccc;\{c2\}MMM.\{c1\};cc;\{c2\};WW:\{c1\};cccccccc,
:cccccccccccccc;\{c2\}MMM.\{c1\};cccccccccccccccc:
:ccccccc;\{c2\}oxOOOo\{c1\};\{c2\}MMM0OOk.\{c1\};cccccccccccc:
cccccc;\{c2\}0MMKxdd:\{c1\};\{c2\}MMMkddc.\{c1\};cccccccccccc;
ccccc;\{c2\}XM0'\{c1\};cccc;\{c2\}MMM.\{c1\};cccccccccccccccc'
ccccc;\{c2\}MMo\{c1\};ccccc;\{c2\}MMW.\{c1\};ccccccccccccccc;
ccccc;\{c2\}0MNc.\{c1\}ccc\{c2\}.xMMd\{c1\};ccccccccccccccc;
cccccc;\{c2\}dNMWXXXWM0:\{c1\};cccccccccccccc:,
cccccccc;\{c2\}.:odl:.\{c1\};cccccccccccccc:,.
:cccccccccccccccccccccccccccc:'.
.:cccccccccccccccccccccc:;,..
'::cccccccccccccc::;,."
}
# Logo: Fedora_old
class Logo_fedora_old {
colors = "4 7 1 1 1 1"
art = "\{c1\} /:-------------:\\\\
:-------------------::
:-----------\{c2\}/shhOHbmp\{c1\}---:\\\\
/-----------\{c2\}omMMMNNNMMD \{c1\}---:
:-----------\{c2\}sMMMMNMNMP\{c1\}. ---:
:-----------\{c2\}:MMMdP\{c1\}------- ---\\\\
,------------\{c2\}:MMMd\{c1\}-------- ---:
:------------\{c2\}:MMMd\{c1\}------- .---:
:---- \{c2\}oNMMMMMMMMMNho\{c1\} .----:
:-- .\{c2\}+shhhMMMmhhy++\{c1\} .------/
:- -------\{c2\}:MMMd\{c1\}--------------:
:- --------\{c2\}/MMMd\{c1\}-------------;
:- ------\{c2\}/hMMMy\{c1\}------------:
:--\{c2\} :dMNdhhdNMMNo\{c1\}------------;
:---\{c2\}:sdNMMMMNds:\{c1\}------------:
:------\{c2\}:://:\{c1\}-------------::
:---------------------://"
}
# Logo: fedora_small
class Logo_fedora_small {
colors = "12 12 12 12 12 12"
art = "\{c1\} ,'''''.
| ,. |
| | '_'
,....| |..
.' ,_;| ..'
| | | |
| ',_,' |
'. ,'
'''''"
}
# Logo: Feren
class Logo_feren {
colors = "4 7 1 1 1 1"
art = "\{c1\} `----------`
:+ooooooooo+.
-o+oooooooooo+-
..`/+++++++++++/...`````````````````
.++++++++++++++++++++++++++/////-
++++++++++++++++++++++++++++++++//:`
-++++++++++++++++++++++++++++++/-`
++++++++++++++++++++++++++++:.
-++++++++++++++++++++++++/.
+++++++++++++++++++++/-`
-++++++++++++++++++//-`
.:+++++++++++++//////-
.:++++++++//////////-
`-++++++---:::://///.
`.:///+++. `
`........."
}
# Logo: FreeBSD
class Logo_freebsd {
colors = "7 7 7 7 7 7"
art = " \{c2\}``` \{c1\}`
\{c2\}` `.....---...\{c1\}....--.``` -/
\{c2\}+o .--` \{c1\}/y:` +.
\{c2\} yo`:. \{c1\}:o `+-
\{c2\}y/ \{c1\}-/` -o/
\{c2\}.- \{c1\}::/sy+:.
\{c2\}/ \{c1\}`-- /
\{c2\}`: \{c1\}:`
\{c2\}`: \{c1\}:`
\{c2\}/ \{c1\}/
\{c2\}.- \{c1\}-.
\{c2\}-- \{c1\}-.
\{c2\}`:` \{c1\}`:`
.-- `--.
.---.....----."
}
# Logo: freebsd_small
class Logo_freebsd_small {
colors = "1 7 3 3 3 3"
art = "\{c1\}/\\\\,-'''''-,/\\\\
\\\\_) (_/
| |
| |
; ;
'-_____-'"
}
# Logo: FreeMiNT
class Logo_freemint {
colors = "7 7 7 7 7 7"
art = "\{c1\} ##
## #########
#### ##
#### #### ##
#### #### ## ##
#### #### ## ##
#### #### ## ## ##
#### ######
###### ## ## ####
#### ################
#### ## ####
## #### ######
## ## #### ####
## ## ## ## ## ####
#### ## ## ##"
}
# Logo: Frugalware
class Logo_frugalware {
colors = "4 7 1 1 1 1"
art = "\{c1\} `++/::-.`
/o+++++++++/::-.`
`o+++++++++++++++o++/::-.`
/+++++++++++++++++++++++oo++/:-.``
.o+ooooooooooooooooooosssssssso++oo++/:-`
++osoooooooooooosssssssssssssyyo+++++++o:
-o+ssoooooooooooosssssssssssssyyo+++++++s`
o++ssoooooo++++++++++++++sssyyyyo++++++o:
:o++ssoooooo\{c2\}/-------------\{c1\}+syyyyyo+++++oo
`o+++ssoooooo\{c2\}/-----\{c1\}+++++ooosyyyyyyo++++os:
/o+++ssoooooo\{c2\}/-----\{c1\}ooooooosyyyyyyyo+oooss
.o++++ssooooos\{c2\}/------------\{c1\}syyyyyyhsosssy-
++++++ssooooss\{c2\}/-----\{c1\}+++++ooyyhhhhhdssssso
-s+++++syssssss\{c2\}/-----\{c1\}yyhhhhhhhhhhhddssssy.
sooooooyhyyyyyh\{c2\}/-----\{c1\}hhhhhhhhhhhddddyssy+
:yooooooyhyyyhhhyyyyyyhhhhhhhhhhdddddyssy`
yoooooooyhyyhhhhhhhhhhhhhhhhhhhddddddysy/
-ysooooooydhhhhhhhhhhhddddddddddddddddssy
.-:/+osssyyyysyyyyyyyyyyyyyyyyyyyyyyssy:
``.-/+oosysssssssssssssssssssssss
``.:/+osyysssssssssssssh.
`-:/+osyyssssyo
.-:+++`"
}
# Logo: Funtoo
class Logo_funtoo {
colors = "5 7 7 7 7 7"
art = "\{c1\} .dKXXd .
:XXl;:. .OXo
.'OXO'' .''''''''''''''''''''':XNd..'oco.lco,
xXXXXXX, cXXXNNNXXXXNNXXXXXXXXNNNNKOOK; d0O .k
kXX xXo KNNN0 KNN. 'xXNo :c; 'cc.
kXX xNo KNNN0 KNN. :xxxx. 'NNo
kXX xNo loooc KNN. oNNNN. 'NNo
kXX xN0:. KNN' oNNNX' ,XNk
kXX xNNXNNNNNNNNXNNNNNNNNXNNOxXNX0Xl
... ......................... .;cc;."
}
# Logo: GalliumOS
class Logo_galliumos {
colors = "4 7 1 1 1 1"
art = "\{c1\}sooooooooooooooooooooooooooooooooooooo+:
yyooooooooooooooooooooooooooooooooo+/:::
yyysoooooooooooooooooooooooooooo+/::::::
yyyyyoooooooooooooooooooooooo+/:::::::::
yyyyyysoooooooooooooooooo++/::::::::::::
yyyyyyysoooooooooooooo++/:::::::::::::::
yyyyyyyyysoooooo\{c2\}sydddys\{c1\}+/:::::::::::::::
yyyyyyyyyysooo\{c2\}smMMMMMMMNd\{c1\}+::::::::::::::
yyyyyyyyyyyyo\{c2\}sMMMMMMMMMMMN\{c1\}/:::::::::::::
yyyyyyyyyyyyy\{c2\}dMMMMMMMMMMMM\{c1\}o//:::::::::::
yyyyyyyyyyyyy\{c2\}hMMMMMMMMMMMm\{c1\}--//::::::::::
yyyyyyyyyyyyyy\{c2\}hmMMMMMMMNy\{c1\}:..-://::::::::
yyyyyyyyyyyyyyy\{c2\}yyhhyys+:\{c1\}......://:::::::
yyyyyyyyyyyyyyys+:--...........-///:::::
yyyyyyyyyyyys+:--................://::::
yyyyyyyyyo+:-.....................-//:::
yyyyyyo+:-..........................://:
yyyo+:-..............................-//
o/:-...................................:"
}
# Logo: Garuda
class Logo_garuda {
colors = "7 7 3 7 2 4"
art = "
\{c3\}
.%;888:8898898:
x;XxXB%89b8:b8%b88:
.8Xxd 8X:.
.8Xx; 8x:.
.tt8x \{c6\}.d\{c3\} x88;
.@8x8; \{c6\}.db:\{c3\} xx@;
\{c4\},tSXX° .bbbbbbbbbbbbbbbbbbbB8x@;
.SXxx bBBBBBBBBBBBBBBBBBBBbSBX8;
,888S pd!
8X88/ q
GBB.
\{c5\}x%88 d888@8@X@X@X88X@@XX@@X@8@X.
dxXd dB8b8b8B8B08bB88b998888b88x.
dxx8o .@@;.
dx88 .t@x.
d:SS@8ba89aa67a853Sxxad.
.d988999889889899dd."
}
# Logo: Gentoo
class Logo_gentoo {
colors = "5 7 7 7 7 7"
art = "\{c1\} -/oyddmdhs+:.
-o\{c2\}dNMMMMMMMMNNmhy+\{c1\}-`
-y\{c2\}NMMMMMMMMMMMNNNmmdhy\{c1\}+-
`o\{c2\}mMMMMMMMMMMMMNmdmmmmddhhy\{c1\}/`
om\{c2\}MMMMMMMMMMMN\{c1\}hhyyyo\{c2\}hmdddhhhd\{c1\}o`
.y\{c2\}dMMMMMMMMMMd\{c1\}hs++so/s\{c2\}mdddhhhhdm\{c1\}+`
oy\{c2\}hdmNMMMMMMMN\{c1\}dyooy\{c2\}dmddddhhhhyhN\{c1\}d.
:o\{c2\}yhhdNNMMMMMMMNNNmmdddhhhhhyym\{c1\}Mh
.:\{c2\}+sydNMMMMMNNNmmmdddhhhhhhmM\{c1\}my
/m\{c2\}MMMMMMNNNmmmdddhhhhhmMNh\{c1\}s:
`o\{c2\}NMMMMMMMNNNmmmddddhhdmMNhs\{c1\}+`
`s\{c2\}NMMMMMMMMNNNmmmdddddmNMmhs\{c1\}/.
/N\{c2\}MMMMMMMMNNNNmmmdddmNMNdso\{c1\}:`
+M\{c2\}MMMMMMNNNNNmmmmdmNMNdso\{c1\}/-
yM\{c2\}MNNNNNNNmmmmmNNMmhs+/\{c1\}-`
/h\{c2\}MMNNNNNNNNMNdhs++/\{c1\}-`
`/\{c2\}ohdmmddhys+++/:\{c1\}.`
`-//////:--."
}
# Logo: gentoo_small
class Logo_gentoo_small {
colors = "5 7 7 7 7 7"
art = "\{c1\} _-----_
( \\\\
\\ 0 \\\\
\{c2\} \\ )
/ _/
( _-
\\____-"
}
# Logo: glaucus
class Logo_glaucus {
colors = "5 5 5 5 5 5"
art = "\{c1\} ,, ,d88P
,d8P ,ad8888*
,888P d88888* ,,ad8888P*
d d888P a88888P* ,ad8888888*
.d8 d8888: d888888* ,d888888P*
.888; 88888b d8888888b8888888P
d8888J888888a88888888888888P* ,d
88888888888888888888888888P ,,d8*
888888888888888888888888888888888*
*8888888888888888888888888888888*
Y888888888P* `*``*888888888888*
*^888^* *Y888P**"
}
# Logo: gNewSense
class Logo_gnewsense {
colors = "4 5 7 6 6 6"
art = "\{c1\} ..,,,,..
.oocchhhhhhhhhhccoo.
.ochhlllllllc hhhhhh ollllllhhco.
ochlllllllllll hhhllllllhhh lllllllllllhco
.cllllllllllllll hlllllo +hllh llllllllllllllc.
ollllllllllhco'' hlllllo +hllh ``ochllllllllllo
hllllllllc' hllllllllllllh `cllllllllh
ollllllh +llllllllllll+ hllllllo
`cllllh. ohllllllho .hllllc'
ochllc. ++++ .cllhco
`+occooo+. .+ooocco+'
`+oo++++ ++++oo+'"
}
# Logo: GNOME
class Logo_gnome {
colors = "4 4 4 4 4 4"
art = "\{c1\} ,@@@@@@@@,
@@@@@@ @@@@@@@@@@@@
,@@. @@@@@@@ *@@@@@@@@@@@@
@@@@@% @@@@@@( @@@@@@@@@@@&
@@@@@@ @@@@* @@@@@@@@@#
@@@@* @@@@, *@@@@@%
@@@@@.
@@@@# @@@@@@@@@@@@@@@@
,@@@@@@@@@@@@@@@@@@@@@@@,
,@@@@@@@@@@@@@@@@@@@@@@@@@@&
.@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@(
@@@@@@@@@@@@@@@@@@@@%
@@@@@@@@@@@@@@@@
@@@@@@@@@@@@* @@@@@@@@/
&@@@@@@@@@@ @@@@@@@@@*
@@@@@@@@@@@, @@@@@@@@@*
,@@@@@@@@@@@@@@@@@@@@&
&@@@@@@@@@@@@@@
..."
}
# Logo: GNU
class Logo_gnu {
colors = "7 7 7 7 7 7"
art = "\{c1\} _-`````-, ,- '- .
.' .- - | | - -. `.
/.' / `. \\
:/ : _... ..._ `` :
:: : /._ .`:'_.._\\. || :
:: `._ ./ ,` : \\ . _.'' .
`:. / | -. \\-. \\\\_ /
\\:._ _/ .' .@) \\@) ` `\\ ,.'
_/,--' .- .\\,-.`--`.
,'/'' (( \\ ` )
/'/' \\ `-' (
'/'' `._,-----'
''/' .,---'
''/' ;:
''/'' ''/
''/''/''
'/'/'
`;"
}
# Logo: GoboLinux
class Logo_gobolinux {
colors = "5 4 6 2 2 2"
art = "\{c1\} _____ _
/ ____| | |
| | __ ___ | |__ ___
| | |_ |/ _ \\| '_ \\ / _ \\
| |__| | (_) | |_) | (_) |
\\_____|\\___/|_.__/ \\___/"
}
# Logo: Grombyang
class Logo_grombyang {
colors = "4 2 1 1 1 1"
art = "\{c1\} eeeeeeeeeeee
eeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeeeee
eeeee \{c2\}.o+ \{c1\}eeee
eeee \{c2\}`ooo/ \{c1\}eeee
eeee \{c2\}`+oooo: \{c1\}eeee
eee \{c2\}`+oooooo: \{c1\}eee
eee \{c2\}-+oooooo+: \{c1\}eee
ee \{c2\}`/:oooooooo+: \{c1\}ee
ee \{c2\}`/+ +++ +: \{c1\}ee
ee \{c2\}+o+\\ \{c1\}ee
eee \{c2\}+o+\\ \{c1\}eee
eee \{c2\}// \\\\ooo/ \\\\\\ \{c1\}eee
eee \{c2\}//++++oooo++++\\\\\\ \{c1\}eee
eeee \{c2\}::::++oooo+::::: \{c1\}eeee
eeeee \{c3\}Grombyang OS \{c1\} eeee
eeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeee"
}
# Logo: Guix
class Logo_guix {
colors = "3 7 6 1 8 8"
art = "\{c1\} .. `.
`--..```..` `..```..--`
.-:///-:::. `-:::///:-.
````.:::` `:::.````
-//:` -::-
://: -::-
`///- .:::`
-+++-:::.
:+/:::-
`-....`"
}
# Logo: guix_small
class Logo_guix_small {
colors = "3 7 6 1 8 8"
art = "\{c1\}|.__ __.|
|__ \\\\ / __|
\\\\ \\\\ / /
\\\\ \\\\ / /
\\\\ \\\\ / /
\\\\ \\\\/ /
\\\\__/"
}
# Logo: Haiku
class Logo_haiku {
colors = "1 3 7 2 2 2"
art = "\{c3\}
MMMM MMMM
MMMM MMMM
MMMM MMMM
MMMM MMMM
MMMM\{c4\} .ciO| /YMMMMM*\"
\{c3\} MMMM\{c4\} .cOMMMMM|/MMMMM/`
, ,iMM|/MMMMMMMMMMMMMMM*
`*.__,-cMMMMMMMMMMMMMMMMM/`\{c3\}.MMM
MM\{c4\}MMMMMMM/`:MMM/ \{c3\}MMMM
MMMM MMMM
MMMM MMMM
\"\"\"\" \"\"\"\""
}
# Logo: haiku_small
class Logo_haiku_small {
colors = "2 8 8 8 8 8"
art = "\{c1\} ,^,
/ \\\\
*--_ ; ; _--*
\\\\ '\" \"' /
'. .'
.-'\" \"'-.
'-.__. .__.-'
|_|"
}
# Logo: Hash
class Logo_hash {
colors = "123 123 123 123 123 123"
art = "\{c1\}
+ ###### +
### ###### ###
##### ###### #####
###### ###### ######
####### '\"###### '\"########
####### ###### ########
####### ###### ########
###### '\"###### '\"######
##### ###### #####
### ###### ###
~ ###### ~"
}
# Logo: Huayra
class Logo_huayra {
colors = "4 7 7 7 7 7"
art = "\{c2\} `
. . `
`` - . .
`.` -` `. - `` .`
..`-`-` + - / .` ```
.--.+--`+:- :/.` .-``.`
-+/so::h:.d-`./:`.`
:hNhyMomy:os-...-. ````
.dhsshNmNhoo+:-``.```
\{c1\}`ohy:-\{c2\}NMds+::-.``
````\{c1\}.hNN+`\{c2\}mMNho/:-....````
````` `../dmNhoo+/:..``
```` .dh++o/:....`
.+s/` `/s-.-.:.`` ````
::` `::`..`
.` `..
``"
}
# Logo: HydroOS
class Logo_hydroos {
colors = "1 2 3 4 5 5"
art = "\{c1\}
_ _ _ ____ _____
| | | | | | / __ \\ / ____|
| |__| |_ _ __| |_ __ ___ | | | | (___
| __ | | | |/ _` | '__/ _ \\| | | |\\___ \\
| | | | |_| | (_| | | | (_) | |__| |____) |
|_| |_|\\__, |\\__,_|_| \\___/ \\____/|_____/
__/ |
|___/"
}
# Logo: Hyperbola
class Logo_hyperbola {
colors = "8 8 8 8 8 8"
art = "\{c1\} WW
KX W
WO0W NX0O
NOO0NW WNXK0OOKW
W0OOOOOOOOOOOOKN
N0OOOOOOO0KXW
WNXXXNW
NXK00000KN
WNK0OOOOOOOOOO0W
NK0OOOOOOOOOOOOOO0W
X0OOOOOOO00KK00OOOOOK
X0OOOO0KNWW WX0OO0W
X0OO0XNW KOOW
N00KNW KOW
NKXN W0W
WW W"
}
# Logo: hyperbola_small
class Logo_hyperbola_small {
colors = "8 8 8 8 8 8"
art = "\{c1\} |`__.`/
\\____/
.--.
/ \\\\
/ ___ \\\\
/ .` `.\\\\
/.` `.\\\\"
}
# Logo: iglunix
class Logo_iglunix {
colors = "8 8 8 8 8 8"
art = "\{c1\} |
| |
|
| ________
| /\\ | \\
/ \\ | \\ |
/ \\ \\ |
/ \\________\\
\\ / /
\\ / /
\\ / /
\\/________/"
}
# Logo: instantOS
class Logo_instantos {
colors = "4 6 6 6 6 6"
art = "
\{c1\}
'cx0XWWMMWNKOd:'.
.;kNMMMMMMMMMMMMMWNKd'
'kNMMMMMMWNNNWMMMMMMMMXo.
,0MMMMMW0o;'..,:dKWMMMMMWx.
OMMMMMXl. .xNMMMMMNo
WMMMMNl .kWWMMMMO'
MMMMMX; oNWMMMMK,
NMMMMWo .OWMMMMMK,
kWMMMMNd. ,kWMMMMMMK,
'kWMMMMWXxl:;;:okNMMMMMMMMK,
.oXMMMMMMMWWWMMMMMMMMMMMMK,
'oKWMMMMMMMMMMMMMMMMMMMK,
.;lxOKXXXXXXXXXXXXXXXO;......
................,d0000000kd:.
.kMMMMMMMMMW0;
.kMMMMMMMMMMMX
.xMMMMMMMMMMMW
cXMMMMMMMMMM0
:0WMMMMMMNx,
.o0NMWNOc."
}
# Logo: IRIX
class Logo_irix {
colors = "4 7 7 7 7 7"
art = "\{c1\} ./ohmNd/ +dNmho/-
`:+ydNMMMMMMMM.-MMMMMMMMMdyo:.
`hMMMMMMNhs/sMMM-:MMM+/shNMMMMMMh`
-NMMMMMmo-` /MMM-/MMM- `-omMMMMMN.
`.`-+hNMMMMMNhyMMM-/MMMshmMMMMMmy+...`
+mMNds:-:sdNMMMMMMMyyMMMMMMMNdo:.:sdMMm+
dMMMMMMmy+.-/ymNMMMMMMMMNmy/-.+hmMMMMMMd
oMMMMmMMMMNds:.+MMMmmMMN/.-odNMMMMmMMMM+
.MMMM-/ymMMMMMmNMMy..hMMNmMMMMMmy/-MMMM.
hMMM/ `/dMMMMMMMN////NMMMMMMMd/. /MMMh
/MMMdhmMMMmyyMMMMMMMMMMMMhymMMMmhdMMM:
`mMMMMNho//sdMMMMM//NMMMMms//ohNMMMMd
`/so/:+ymMMMNMMMM` mMMMMMMMmh+::+o/`
`yNMMNho-yMMMM` NMMMm.+hNMMNh`
-MMMMd: oMMMM. NMMMh :hMMMM-
-yNMMMmooMMMM- NMMMyomMMMNy-
.omMMMMMMMM-`NMMMMMMMmo.
`:hMMMMMM. NMMMMMh/`
.odNm+ /dNms."
}
# Logo: Itc
class Logo_itc {
colors = "1 1 1 1 1 1"
art = "\{c1\}....................-==============+...
\{c1\}....................-==============:...
\{c1\}...:===========-....-==============:...
\{c1\}...-===========:....-==============-...
\{c1\}....*==========+........-::********-...
\{c1\}....*===========+.:*====**==*+-.-......
\{c1\}....:============*+-..--:+**====*---...
\{c1\}......::--........................::...
\{c1\}..+-:+-.+::*:+::+:-++::++-.:-.*.:++:++.
\{c1\}..:-:-++++:-::--:+::-::.:++-++:++--:-:. ⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀"
}
# Logo: januslinux
class Logo_januslinux {
colors = "4 5 6 2 2 2"
art = "\{c1\} 'l:
loooooo
loooo coooool
looooooooooooooooooool
looooooooooooooooo
lool cooo
coooooooloooooooo
clooooo ;lood cloooo
:loooocooo cloo loooo
loooo :ooooool loooo
looo cooooo cooooo
looooooooooooo ;loooooo \{c2\}looooooc
\{c1\}looooooooo loo cloooooool \{c2\}looooc
\{c1\} cooo cooooooooooo \{c2\}looolooooool
\{c1\} cooo: \{c2\}coooooooooooooooooool
loooooooooooolc: loooc;
cooo: loooooooooooc
;oool looooooo:
coool olc,
looooc ,,
coooooc loc
:oooool, coool:, looool:,
looool: ooooooooooooooo:
cooolc .ooooooooooool"
}
# Logo: Kaisen
class Logo_kaisen {
colors = "1 7 3 3 3 3"
art = "\{c1\} `
`:+oyyho.
`+:`sdddddd/
`+` :ho oyo++ohds-`
.ho :dd. .: `sddddddhhyso+/-
ody.ddd-:yd- +hysssyhddddddddho`
yddddddhddd` ` `--` -+hddddddh.
hddy-+dddddy+ohh/..+sddddy/:::+ys
:ddd/sdddddddddd- oddddddd `
`yddddddddddddddd/ /ddddddd/
:. :ydddddddddddddddddo..sddddddy/`
odhdddddddo- `ddddh+-``....-+hdddddds.
-ddddddhd: /dddo -ydddddddhdddddddd-
/hdy:o - `:sddds .`./hdddddddddddddo
`/- `+hddyosy+ :dddddddy-.-od/
:sydds -hddddddd` /
.+shd- `:ohddddddddd`
`:+ooooooooooooo:"
}
# Logo: Kali
class Logo_kali {
colors = "4 8 8 8 8 8"
art = "\{c1\}..............
..,;:ccc,.
......''';lxO.
.....''''..........,:ld;
.';;;:::;,,.x,
..'''. 0Xxoc:,. ...
.... ,ONkc;,;cokOdc',.
. OMo ':\{c2\}dd\{c1\}o.
dMc :OO;
0M. .:o.
;Wd
;XO,
,d0Odlc;,..
..',;:cdOOd::,.
.:d;.':;.
'd, .'
;l ..
.o
c
.'
."
}
# Logo: KaOS
class Logo_kaos {
colors = "4 7 1 1 1 1"
art = "\{c1\} ..
..... ..OSSAAAAAAA..
.KKKKSS. .SSAAAAAAAAAAA.
.KKKKKSO. .SAAAAAAAAAA...
KKKKKKS. .OAAAAAAAA.
KKKKKKS. .OAAAAAA.
KKKKKKS. .SSAA..
.KKKKKS..OAAAAAAAAAAAA........
DKKKKO.=AA=========A===AASSSO..
AKKKS.==========AASSSSAAAAAASS.
.=KKO..========ASS.....SSSSASSSS.
.KK. .ASS..O.. =SSSSAOSS:
.OK. .ASSSSSSSO...=A.SSA.
.K ..SSSASSSS.. ..SSA.
.SSS.AAKAKSSKA.
.SSS....S.."
}
# Logo: KDE
class Logo_kde {
colors = "2 7 7 7 7 7"
art = "\{c1\} `..---+/---..`
`---.`` `` `.---.`
.--.` `` `-:-.
`:/: `.----//----.` :/-
.:. `---` `--.` .:`
.:` `--` .:- `:.
`/ `:. `.-::-.` -:` `/`
/. /. `:++++++++:` .: .:
`/ .: `+++++++++++/ /` `+`
/+` -- .++++++++++++` :. .+:
`/ .: `+++++++++++/ /` `+`
/` /. `:++++++++:` .: .:
./ `:. `.:::-.` -:` `/`
.:` `--` .:- `:.
.:. `---` `--.` .:`
`:/: `.----//----.` :/-
.-:.` `` `-:-.
`---.`` `` `.---.`
`..---+/---..`"
}
# Logo: Kibojoe
class Logo_kibojoe {
colors = "2 7 4 4 4 4"
art = " \{c3\} ./+oooooo+/.
-/+ooooo+/:.`
\{c1\}`\{c3\}yyyo\{c2\}+++/++\{c3\}osss\{c1\}.
\{c1\}+NMN\{c3\}yssssssssssss\{c1\}.
\{c1\}.dMMMMN\{c3\}sssssssssssy\{c1\}Ns`
+MMMMMMMm\{c3\}sssssssssssh\{c1\}MNo`
`hMMMMMNNNMd\{c3\}sssssssssssd\{c1\}MMN/
.\{c3\}syyyssssssy\{c1\}NNmmmmd\{c3\}sssss\{c1\}hMMMMd:
-NMmh\{c3\}yssssssssyhhhhyssyh\{c1\}mMMMMMMMy`
-NMMMMMNN\{c3\}mdhyyyyyyyhdm\{c1\}NMMMMMMMMMMMN+
`NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd.
ods+/:-----://+oyydmNMMMMMMMMMMMMMMMMMN-
` .-:+osyhhdmmNNNmdo"
}
# Logo: Kogaion
class Logo_kogaion {
colors = "4 7 1 1 1 1"
art = "\{c1\} ;; ,;
;;; ,;;
,;;;; ;;;;
,;;;;;;;; ;;;;
;;;;;;;;;;; ;;;;;
,;;;;;;;;;;;; ';;;;;,
;;;;;;;;;;;;;;, ';;;;;;;
;;;;;;;;;;;;;;;;;, ';;;;;
; ';;;;;;;;;;;;;;;;;;, ;;;
;;;, ';;;;;;;;;;;;;;;;;;;,;;
;;;;;, ';;;;;;;;;;;;;;;;;;,
;;;;;;;;, ';;;;;;;;;;;;;;;;,
;;;;;;;;;;;;, ';;;;;;;;;;;;;;
';;;;;;;;;;;;; ';;;;;;;;;;;;;
';;;;;;;;;;;;;, ';;;;;;;;;;;
';;;;;;;;;;;;; ;;;;;;;;;;
';;;;;;;;;;;; ;;;;;;;;
';;;;;;;; ;;;;;;
';;;;; ;;;;
';;; ;;"
}
# Logo: Korora
class Logo_korora {
colors = "4 7 1 1 1 1"
art = "\{c2\} ____________
_add55555555554\{c1\}:
_w?'\{c1\}``````````'\{c2\})k\{c1\}:
_Z'\{c1\}`\{c2\} ]k\{c1\}:
m(\{c1\}`\{c2\} )k\{c1\}:
_.ss\{c1\}`\{c2\}m[\{c1\}`\{c2\}, ]e\{c1\}:
.uY\"^`\{c1\}`\{c2\}Xc\{c1\}`\{c2\}?Ss. d(\{c1\}`
jF'\{c1\}`\{c2\} `@. \{c1\}`\{c2\}Sc .jr\{c1\}`
jr\{c1\}`\{c2\} `?n_ \{c1\}`\{c2\}\$; _a2\"\{c1\}`
.m\{c1\}:\{c2\} `~M\{c1\}`\{c2\}1k\{c1\}`\{c2\}5?!`\{c1\}`
:#\{c1\}:\{c2\} \{c1\}`\{c2\})e\{c1\}```
:m\{c1\}:\{c2\} ,#'\{c1\}`
:#\{c1\}:\{c2\} .s2'\{c1\}`
:m,________.aa7^\{c1\}`
:#baaaaaaas!J'\{c1\}`
```````````"
}
# Logo: KSLinux
class Logo_kslinux {
colors = "4 7 1 1 1 1"
art = "\{c1\} K K U U RRRR ooo
K K U U R R o o
KKK U U RRRR o o
K K U U R R o o
K K UUU R R ooo
\{c2\} SSS AAA W W AAA
S A A W W A A
SSS AAAAA W W W AAAAA
S A A WW WW A A
SSS A A W W A A"
}
# Logo: Kubuntu
class Logo_kubuntu {
colors = "4 7 1 1 1 1"
art = "\{c1\} `.:/ossyyyysso/:.
.:oyyyyyyyyyyyyyyyyyyo:`
-oyyyyyyyo\{c2\}dMMy\{c1\}yyyyyyysyyyyo-
-syyyyyyyyyy\{c2\}dMMy\{c1\}oyyyy\{c2\}dmMMy\{c1\}yyyys-
oyyys\{c2\}dMy\{c1\}syyyy\{c2\}dMMMMMMMMMMMMMy\{c1\}yyyyyyo
`oyyyy\{c2\}dMMMMy\{c1\}syysoooooo\{c2\}dMMMMy\{c1\}yyyyyyyyo`
oyyyyyy\{c2\}dMMMMy\{c1\}yyyyyyyyyyys\{c2\}dMMy\{c1\}sssssyyyo
-yyyyyyyy\{c2\}dMy\{c1\}syyyyyyyyyyyyyys\{c2\}dMMMMMy\{c1\}syyy-
oyyyysoo\{c2\}dMy\{c1\}yyyyyyyyyyyyyyyyyy\{c2\}dMMMMy\{c1\}syyyo
yyys\{c2\}dMMMMMy\{c1\}yyyyyyyyyyyyyyyyyysosyyyyyyyy
yyys\{c2\}dMMMMMy\{c1\}yyyyyyyyyyyyyyyyyyyyyyyyyyyyy
oyyyyysos\{c2\}dy\{c1\}yyyyyyyyyyyyyyyyyy\{c2\}dMMMMy\{c1\}syyyo
-yyyyyyyy\{c2\}dMy\{c1\}syyyyyyyyyyyyyys\{c2\}dMMMMMy\{c1\}syyy-
oyyyyyy\{c2\}dMMMy\{c1\}syyyyyyyyyyys\{c2\}dMMy\{c1\}oyyyoyyyo
`oyyyy\{c2\}dMMMy\{c1\}syyyoooooo\{c2\}dMMMMy\{c1\}oyyyyyyyyo
oyyysyyoyyyys\{c2\}dMMMMMMMMMMMy\{c1\}yyyyyyyo
-syyyyyyyyy\{c2\}dMMMy\{c1\}syyy\{c2\}dMMMy\{c1\}syyyys-
-oyyyyyyy\{c2\}dMMy\{c1\}yyyyyysosyyyyo-
./oyyyyyyyyyyyyyyyyyyo/.
`.:/oosyyyysso/:.`"
}
# Logo: LangitKetujuh
class Logo_langitketujuh {
colors = "7 4 4 4 4 4"
art = "\{c1\}
L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L
'L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L
L7L. 'L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L
L7L7L7L L7L7L7L
L7L7L7L L7L7L7L
L7L7L7L L7L7L7L7L7L7L7L7L7L7L7L
L7L7L7L 'L7L7L7L7L7L7L7L7L7L
L7L7L7L 'L7L7L7L7L7L7L7L
L7L7L7L L7L7L7L
L7L7L7L L7L7L7L
L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L. 'L7L
L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L.
L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L
\{c2\}"
}
# Logo: LaxerOS
class Logo_laxeros {
colors = "7 4 4 4 4 4"
art = "\{c2\}
/.
`://:-
`//////:
.////////:`
-//////////:`
-/////////////`
:///////////////.
`://////.```-//////-
`://///:` .//////-
`//////: `//////:
.//////- `://///:`
-//////- `://///:`
-//////. ://////`
://////` -//////.
`/////:` ./////:
.-::-` .:::-`
.:://////////////////////////////////::.
////////////////////////////////////////
.:////////////////////////////////////:."
}
# Logo: LEDE
class Logo_lede {
colors = "4 7 1 1 1 1"
art = " \{c1\} _________
/ /\\
/ LE / \\
/ DE / \\
/________/ LE \\
\\ \\ DE /
\\ LE \\ /
\\ DE \\ /
\\________\\/"
}
# Logo: LibreELEC
class Logo_libreelec {
colors = "2 3 7 14 13 13"
art = "\{c1\} :+ooo/. \{c2\}./ooo+:
\{c1\} :+ooooooo/. \{c2\}./ooooooo+:
\{c1\} :+ooooooooooo:\{c2\}:ooooooooooo+:
\{c1\} :+ooooooooooo+- \{c2\}-+ooooooooooo+:
\{c1\} :+ooooooooooo+- \{c3\}-- \{c2\}-+ooooooooooo+:
\{c1\}.+ooooooooooo+- \{c3\}:+oo+: \{c2\}-+ooooooooooo+-
\{c1\}-+ooooooooo+- \{c3\}:+oooooo+: \{c2\}-+oooooooooo-
\{c1\} :+ooooo+- \{c3\}:+oooooooooo+: \{c2\}-+oooooo:
\{c1\} :+o+- \{c3\}:+oooooooooooooo+: \{c2\}-+oo:
\{c4\} ./ \{c3\}:oooooooooooooooooo: \{c5\}/.
\{c4\} ./oo+: \{c3\}-+oooooooooooooo+- \{c5\}:+oo/.
\{c4\} ./oooooo+: \{c3\}-+oooooooooo+- \{c5\}:+oooooo/.
\{c4\}-oooooooooo+: \{c3\}-+oooooo+- \{c5\}:+oooooooooo-
\{c4\}.+ooooooooooo+: \{c3\}-+oo+- \{c5\}:+ooooooooooo+.
\{c4\} -+ooooooooooo+: \{c3\}.. \{c5\}:+ooooooooooo+-
\{c4\} -+ooooooooooo+: \{c5\}:+ooooooooooo+-
\{c4\} -+oooooooooo+:\{c5\}:+oooooooooo+-
\{c4\} -+oooooo+: \{c5\}:+oooooo+-
\{c4\} -+oo+: \{c5\}:+oo+-
\{c4\} .. \{c5\}.."
}
# Logo: Linux
class Logo_linux {
colors = "fg 8 3"
art = "\{c2\} #####
\{c2\} #######
\{c2\} ##\{c1\}O\{c2\}#\{c1\}O\{c2\}##
\{c2\} #\{c3\}#####\{c2\}#
\{c2\} ##\{c1\}##\{c3\}###\{c1\}##\{c2\}##
\{c2\} #\{c1\}##########\{c2\}##
\{c2\} #\{c1\}############\{c2\}##
\{c2\} #\{c1\}############\{c2\}###
\{c3\} ##\{c2\}#\{c1\}###########\{c2\}##\{c3\}#
\{c3\}######\{c2\}#\{c1\}#######\{c2\}#\{c3\}######
\{c3\}#######\{c2\}#\{c1\}#####\{c2\}#\{c3\}#######
\{c3\} #####\{c2\}#######\{c3\}#####"
}
# Logo: Linux Lite
class Logo_linux_lite {
colors = "3 7 7 7 7 7"
art = "\{c1\} ,xXc
.l0MMMMMO
.kNMMMMMWMMMN,
KMMMMMMKMMMMMMo
'MMMMMMNKMMMMMM:
kMMMMMMOMMMMMMO
.MMMMMMX0MMMMMW.
oMMMMMMxWMMMMM:
WMMMMMNkMMMMMO
:MMMMMMOXMMMMW
.0MMMMMxMMMMM;
:;cKMMWxMMMMO
'MMWMMXOMMMMl
kMMMMKOMMMMMX:
.WMMMMKOWMMM0c
lMMMMMWO0MNd:'
oollXMKXoxl;.
':. .: .'
..
."
}
# Logo: Linux Mint
class Logo_linux_mint {
colors = "2 7 7 7 7 7"
art = "\{c2\} ...-:::::-...
\{c2\} .-MMMMMMMMMMMMMMM-.
.-MMMM\{c1\}`..-:::::::-..`\{c2\}MMMM-.
.:MMMM\{c1\}.:MMMMMMMMMMMMMMM:.\{c2\}MMMM:.
-MMM\{c1\}-M---MMMMMMMMMMMMMMMMMMM.\{c2\}MMM-
`:MMM\{c1\}:MM` :MMMM:....::-...-MMMM:\{c2\}MMM:`
:MMM\{c1\}:MMM` :MM:` `` `` `:MMM:\{c2\}MMM:
.MMM\{c1\}.MMMM` :MM. -MM. .MM- `MMMM.\{c2\}MMM.
:MMM\{c1\}:MMMM` :MM. -MM- .MM: `MMMM-\{c2\}MMM:
:MMM\{c1\}:MMMM` :MM. -MM- .MM: `MMMM:\{c2\}MMM:
:MMM\{c1\}:MMMM` :MM. -MM- .MM: `MMMM-\{c2\}MMM:
.MMM\{c1\}.MMMM` :MM:--:MM:--:MM: `MMMM.\{c2\}MMM.
:MMM\{c1\}:MMM- `-MMMMMMMMMMMM-` -MMM-\{c2\}MMM:
:MMM\{c1\}:MMM:` `:MMM:\{c2\}MMM:
.MMM\{c1\}.MMMM:--------------:MMMM.\{c2\}MMM.
'-MMMM\{c1\}.-MMMMMMMMMMMMMMM-.\{c2\}MMMM-'
'.-MMMM\{c1\}``--:::::--``\{c2\}MMMM-.'
\{c2\} '-MMMMMMMMMMMMM-'
\{c2\} ``-:::::-``"
}
# Logo: Linux Mint Old
class Logo_linux_mint_old {
colors = "2 7 7 7 7 7"
art = "\{c1\}MMMMMMMMMMMMMMMMMMMMMMMMMmds+.
MMm----::-://////////////oymNMd+`
MMd \{c2\}/++ \{c1\}-sNMd:
MMNso/` \{c2\}dMM `.::-. .-::.` \{c1\}.hMN:
ddddMMh \{c2\}dMM :hNMNMNhNMNMNh: \{c1\}`NMm
NMm \{c2\}dMM .NMN/-+MMM+-/NMN` \{c1\}dMM
NMm \{c2\}dMM -MMm `MMM dMM. \{c1\}dMM
NMm \{c2\}dMM -MMm `MMM dMM. \{c1\}dMM
NMm \{c2\}dMM .mmd `mmm yMM. \{c1\}dMM
NMm \{c2\}dMM` ..` ... ydm. \{c1\}dMM
hMM- \{c2\}+MMd/-------...-:sdds \{c1\}dMM
-NMm- \{c2\}:hNMNNNmdddddddddy/` \{c1\}dMM
-dMNs-\{c2\}``-::::-------.`` \{c1\}dMM
`/dMNmy+/:-------------:/yMMM
./ydNMMMMMMMMMMMMMMMMMMMMM
.MMMMMMMMMMMMMMMMMMM"
}
# Logo: linuxlite_small
class Logo_linuxlite_small {
colors = "3 7 7 7 7 7"
art = "\{c1\} /\\\\
/ \\\\
/ \{c2\}/ \{c1\}/
> \{c2\}/ \{c1\}/
\\\\ \{c2\}\\\\ \{c1\}\\\\
\\\\_\{c2\}\\\\\{c1\}_\\\\
\{c2\} \\\\"
}
# Logo: linuxmint_small
class Logo_linuxmint_small {
colors = "2 7 7 7 7 7"
art = "\{c1\} ___________
|_ \\\\
| \{c2\}| _____ \{c1\}|
| \{c2\}| | | | \{c1\}|
| \{c2\}| | | | \{c1\}|
| \{c2\}\\\\__\{c2\}___/ \{c1\}|
\\\\_________/"
}
# Logo: Live Raizo
class Logo_live_raizo {
colors = "3 3 3 3 3 3"
art = "\{c1\} `......`
-+shmNMMMMMMNmhs/.
:smMMMMMmmhyyhmmMMMMMmo-
-hMMMMd+:. `----` .:odMMMMh-
`hMMMN+. .odNMMMMMMNdo. .yMMMMs`
hMMMd. -dMMMMmdhhdNMMMNh` .mMMMh
oMMMm` :MMMNs.:sddy:-sMMMN- `NMMM+
mMMMs dMMMo sMMMMMMd yMMMd sMMMm
----` .---` oNMMMMMh `---. .----
.sMMy:
/MM/
+dMMms.
hMMMMMMN
`dMMMMMMm:
.+ss+sMNysMMoomMd+ss+.
+MMMMMMN` +MM/ hMMMMMNs
sMMMMMMm-hNMMMd-hMMMMMMd
:yddh+`hMMMMMMN :yddy/`
.hMMMMd:
`..`"
}
# Logo: LMDE
class Logo_lmde {
colors = "2 7 7 7 7 7"
art = " \{c2\}`.-::---..
\{c1\} .:++++ooooosssoo:.
.+o++::. `.:oos+.
\{c1\} :oo:.` -+oo\{c2\}:
\{c1\} \{c2\}`\{c1\}+o/` .\{c2\}::::::\{c1\}-. .++-\{c2\}`
\{c1\}\{c2\}`\{c1\}/s/ .yyyyyyyyyyo: +o-\{c2\}`
\{c1\}\{c2\}`\{c1\}so .ss ohyo` :s-\{c2\}:
\{c1\}\{c2\}`\{c1\}s/ .ss h m myy/ /s`\{c2\}`
\{c1\}`s: `oo s m Myy+-o:`
`oo :+sdoohyoydyso/.
:o. .:////////++:
\{c1\} `/++ \{c2\}-:::::-
\{c1\} \{c2\}`\{c1\}++-
\{c1\} \{c2\}`\{c1\}/+-
\{c1\} \{c2\}.\{c1\}+/.
\{c1\} \{c2\}.\{c1\}:+-.
`--.``"
}
# Logo: Lubuntu
class Logo_lubuntu {
colors = "4 7 1 1 1 1"
art = "\{c1\} `.:/ossyyyysso/:.
`.:yyyyyyyyyyyyyyyyyy:.`
.:yyyyyyyyyyyyyyyyyyyyyyyy:.
.:yyyyyyyyyyyyyyyyyyyyyyyyyyyy:.
-yyyyyyyyyyyyyy\{c2\}+hNMMMNh+\{c1\}yyyyyyyyy-
:yy\{c2\}mNy+\{c1\}yyyyyyyy\{c2\}+Nmso++smMdhyysoo+\{c1\}yy:
-yy\{c2\}+MMMmmy\{c1\}yyyyyy\{c2\}hh\{c1\}yyyyyyyyyyyyyyyyyyy-
.yyyy\{c2\}NMN\{c1\}yy\{c2\}shhs\{c1\}yyy\{c2\}+o\{c1\}yyyyyyyyyyyyyyyyyyyy.
:yyyy\{c2\}oNM+\{c1\}yyyy\{c2\}+sso\{c1\}yyyyyyy\{c2\}ss\{c1\}yyyyyyyyyyyyy:
:yyyyy\{c2\}+dNs\{c1\}yyyyyyy\{c2\}++\{c1\}yyyyy\{c2\}oN+\{c1\}yyyyyyyyyyyy:
:yyyyy\{c2\}oMMmhysso\{c1\}yyyyyyyyyy\{c2\}mN+\{c1\}yyyyyyyyyyy:
:yyyyyy\{c2\}hMm\{c1\}yyyyy\{c2\}+++\{c1\}yyyyyyy\{c2\}+MN\{c1\}yyyyyyyyyyy:
.yyyyyyy\{c2\}ohmy+\{c1\}yyyyyyyyyyyyy\{c2\}NMh\{c1\}yyyyyyyyyy.
-yyyyyyyyyy\{c2\}++\{c1\}yyyyyyyyyyyy\{c2\}MMh\{c1\}yyyyyyyyy-
:yyyyyyyyyyyyyyyyyyyyy\{c2\}+mMN+\{c1\}yyyyyyyy:
-yyyyyyyyyyyyyyyyy\{c2\}+sdMMd+\{c1\}yyyyyyyy-
.:yyyyyyyyy\{c2\}hmdmmNMNdy+\{c1\}yyyyyyyy:.
.:yyyyyyy\{c2\}my\{c1\}yyyyyyyyyyyyyyy:.
`.:yyyy\{c2\}s\{c1\}yyyyyyyyyyyyy:.`
`.:/oosyyyysso/:.`"
}
# Logo: Lunar
class Logo_lunar {
colors = "4 7 3 3 3 3"
art = "\{c1\}`-. `-.
-ohys/-` `:+shy/`
-omNNdyo/` :+shmNNy/`
\{c3\} -
/mMmo
hMMMN`
.NMMs
\{c1\} -:+oooo+//: \{c3\}/MN\{c1\}. -///oooo+/-`
/:.` \{c3\}/\{c1\} `.:/`
\{c3\} __
| | _ _ ___ ___ ___
| |__| | | | .'| _|
|_____|___|_|_|__,|_|"
}
# Logo: mac
class Logo_mac {
colors = "2 3 1 5 4 4"
art = "\{c1\} .:'
_ :'_
\{c2\} .'`_`-'_``.
:________.-'
\{c3\}:_______:
:_______:
\{c4\} :_______`-;
\{c5\} `._.-._.'"
}
# Logo: mac
class Logo_mac_2 {
colors = "2 3 1 1 5 4"
art = "\{c1\} c.'
,xNMM.
.OMMMMo
lMM\"
.;loddo:. .olloddol;.
cKMMMMMMMMMMNWMMMMMMMMMM0:
\{c2\} .KMMMMMMMMMMMMMMMMMMMMMMMWd.
XMMMMMMMMMMMMMMMMMMMMMMMX.
\{c3\};MMMMMMMMMMMMMMMMMMMMMMMM:
:MMMMMMMMMMMMMMMMMMMMMMMM:
\{c4\}.MMMMMMMMMMMMMMMMMMMMMMMMX.
kMMMMMMMMMMMMMMMMMMMMMMMMWd.
\{c5\}'XMMMMMMMMMMMMMMMMMMMMMMMMMMk
'XMMMMMMMMMMMMMMMMMMMMMMMMK.
\{c6\}kMMMMMMMMMMMMMMMMMMMMMMd
;KMMMMMMMWXXWMMMMMMMk.
\"cooc*\" \"*coo'\""
}
# Logo: Mageia
class Logo_mageia {
colors = "6 7 7 7 7 7"
art = "\{c1\} .°°.
°° .°°.
.°°°. °°
. .
°°° .°°°.
.°°°. '___'
\{c2\} .\{c1\}'___' \{c2\} .
:dkxc;'. ..,cxkd;
.dkk. kkkkkkkkkk .kkd.
.dkk. ';cloolc;. .kkd
ckk. .kk;
xO: cOd
xO: lOd
lOO. .OO:
.k00. .00x
.k00; ;00O.
.lO0Kc;,,,,,,;c0KOc.
;d00KKKKKK00d;
.,KKKK,."
}
# Logo: mageia_small
class Logo_mageia_small {
colors = "6 7 7 7 7 7"
art = "\{c1\} *
*
**
\{c2\} /\\\\__/\\\\
/ \\\\
\\\\ /
\\\\____/"
}
# Logo: MagpieOS
class Logo_magpieos {
colors = "2 1 3 5 5 5"
art = "\{c1\} ;00000 :000Ol
.x00kk00: O0kk00k;
l00: :00. o0k :O0k.
.k0k. x\{c2\}d\$dddd\{c1\}k' .d00;
k0k. \{c2\}.dddddl \{c1\}o00,
o00. \{c2\}':cc:. \{c1\}d0O
.00l ,00.
l00. d0x
k0O .:k0o
O0k ;dO0000d.
k0O .O0O\{c2\}xxxxk\{c1\}00:
o00. k0O\{c2\}dddddd\{c1\}occ
'00l x0O\{c2\}dddddo\{c3\};..\{c1\}
x00. .x00\{c2\}kxxd\{c3\}:..\{c1\}
.O0x .:oxxx\{c4\}Okl.\{c1\}
.x0d \{c4\},xx,\{c1\}
.:o. \{c4\}.xd ckd\{c1\}
.. \{c4\}dxl .xx;
:xxolldxd'
;oxdl."
}
# Logo: Mandriva
class Logo_mandriva {
colors = "4 3 3 3 3 3"
art = "\{c2\} ``
`-.
\{c1\} ` \{c2\}.---
\{c1\} -/ \{c2\}-::--`
\{c1\} `++ \{c2\}`----...```-:::::.
\{c1\} `os. \{c2\}.::::::::::::::-``` ` `
\{c1\} +s+ \{c2\}.::::::::::::::::---...--`
\{c1\}-ss: \{c2\}`-::::::::::::::::-.``.``
\{c1\}/ss- \{c2\}.::::::::::::-.`` `
\{c1\}+ss: \{c2\}.::::::::::::-
\{c1\}/sso \{c2\}.::::::-::::::-
\{c1\}.sss/ \{c2\}-:::-.` .:::::
\{c1\} /sss+. \{c2\}..`\{c1\} `--` \{c2\}.:::
\{c1\} -ossso+/:://+/-` \{c2\}.:`
\{c1\} -/+ooo+/-. \{c2\}`"
}
# Logo: Manjaro
class Logo_manjaro {
colors = "2 7 7 7 7 7"
art = "\{c1\}██████████████████ ████████
██████████████████ ████████
██████████████████ ████████
██████████████████ ████████
████████ ████████
████████ ████████ ████████
████████ ████████ ████████
████████ ████████ ████████
████████ ████████ ████████
████████ ████████ ████████
████████ ████████ ████████
████████ ████████ ████████
████████ ████████ ████████
████████ ████████ ████████"
}
# Logo: manjaro_small
class Logo_manjaro_small {
colors = "2 7 7 7 7 7"
art = "\{c1\}||||||||| ||||
||||||||| ||||
|||| ||||
|||| |||| ||||
|||| |||| ||||
|||| |||| ||||
|||| |||| ||||"
}
# Logo: Maui
class Logo_maui {
colors = "6 7 7 7 7 7"
art = "\{c1\} `.-://////:--`
.:/oooooooooooooooo+:.
`:+ooooooooooooooooooooooo:`
`:oooooooooooooooooooooooooooo/`
..```-oooooo/-`` `:oooooo+:.` `--
:. +oo+-` /ooo/` -/
-o. `o+- +o/` -o:
`oo` ::` :o/ `+. .+o` /oo.
/o+ . -+oo- ` /oo/ `ooo/
+o- /ooo+` .+ooo. :ooo+
++ .+oooo: -oooo+ `oooo+
:. .oooooo` :ooooo- :oooo:
` .oooooo: :ooooo+ `ooo+-`
.+oooooo` -oooooo: `o/-
+oooooo: .ooooooo.
/ooooooo` /ooooooo/ ..
`:oooooooo/:::/ooooooooo+:--:/:`
`:+oooooooooooooooooooooo+:`
.:+oooooooooooooooo+:.
`.-://////:-.`"
}
# Logo: Mer
class Logo_mer {
colors = "4 7 1 1 1 1"
art = "\{c1\} dMs
.-`
`y`-o+`
``NMMy
.--`:++.
.hNNNNs
/MMMMMN
`ommmd/ +/
```` +/
`:+sssso/-`
.-::. `-::-` `smNMNmdmNMNd/ .://-`
.ymNMNNdmNMMNm+` -dMMh:.....+dMMs `sNNMMNo
dMN+::NMMy::hMM+ mMMo `ohhy/ `dMM+ yMMy::-
MMm yMM- :MMs NMN` `:::::--sMMh dMM`
MMm yMM- -MMs mMM+ `ymmdsymMMMs dMM`
NNd sNN- -NNs -mMNs-.--..:dMMh` dNN
--- .--` `--. .smMMmdddmMNdo` .--
./ohddds+:`
+h- `.:-.
./`.dMMMN+
+MMMMMd
`+dmmy-
``` .+`
.dMNo-y.
`hmm/
.:`
dMs"
}
# Logo: Minix
class Logo_minix {
colors = "1 7 3 3 3 3"
art = "\{c2\} -sdhyo+:-` -/syymm:
sdyooymmNNy. `` .smNmmdysNd
odyoso+syNNmysoyhhdhsoomNmm+/osdm/
:hhy+-/syNNmddhddddddmNMNo:sdNd:
`smNNdNmmNmddddddddddmmmmmmmy`
`ohhhhdddddmmNNdmddNmNNmdddddmdh-
odNNNmdyo/:/-/hNddNy-`..-+ydNNNmd:
`+mNho:` smmd/ sNNh :dmms` -+ymmo.
-od/ -m\{c1\}mm\{c2\}mo -NN+ +m\{c1\}mm\{c2\}m- yms:
+sms -.` :so: .NN+ :os/ .-`mNh:
.-hyh+:////- -sNNd:` .--://ohNs-
`:hNNNNNNNMMd/sNMmhsdMMh/ymmNNNmmNNy/
-+sNNNNMMNNNsmNMo: :NNmymNNNNMMMms:
//oydNMMMMydMMNysNMMmsMMMMMNyo/`
../-yNMMy--/::/-.sMMmos+.`
-+oyhNsooo+omy/```
`::ohdmds-`"
}
# Logo: MX
class Logo_mx {
colors = "4 6 7 7 7 7"
art = "\{c3\}MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMMM
MMMMMMMMMMNs..yMMMMMMMMMMMMMm: +NMMMMMMM
MMMMMMMMMN+ :mMMMMMMMMMNo` -dMMMMMMMM
MMMMMMMMMMMs. `oNMMMMMMh- `sNMMMMMMMMM
MMMMMMMMMMMMN/ -hMMMN+ :dMMMMMMMMMMM
MMMMMMMMMMMMMMh- +ms. .sMMMMMMMMMMMMM
MMMMMMMMMMMMMMMN+` ` +NMMMMMMMMMMMMMM
MMMMMMMMMMMMMMNMMd: .dMMMMMMMMMMMMMMM
MMMMMMMMMMMMm/-hMd- `sNMMMMMMMMMMMMM
MMMMMMMMMMNo` -` :h/ -dMMMMMMMMMMMM
MMMMMMMMMd: /NMMh- `+NMMMMMMMMMM
MMMMMMMNo` :mMMN+` `-hMMMMMMMM
MMMMMMh. `oNMMd: `/mMMMMMM
MMMMm/ -hMd- `sNMMMM
MMNs` - :dMMM
Mm: `oMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
}
# Logo: mx_small
class Logo_mx_small {
colors = "4 6 7 7 7 7"
art = "\{c3\} \\\\\\\\ /
\\\\\\\\/
\\\\\\\\
/\\\\/ \\\\\\\\
/ \\\\ /\\\\
/ \\\\/ \\\\
/__________\\\\"
}
# Logo: Namib
class Logo_namib {
colors = "1 1 1 1 1 1"
art = "\{c1\} .:+shysyhhhhysyhs+:.
-/yyys syyy/-
-shy yhs-
-yhs shy-
+hy yh+
+ds sd+
/ys so sy/
sh smMMNdyo hs
yo ymMMMMNNMMNho oy
N ydMMMNNMMMMMMMMMmy N
N shmMMMMNNMMMMMMMMMMMMMNy N
yo ooshmNMMMNNNNMMMMMMMMMMMMMMMMMms oy
sd yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy ds
/ys sy/
+ds sd+
+hy yh+
-yhs shy-
-shy yhs-
-/yyys syyy/-
.:+shysyhyhhysyhs+:."
}
# Logo: Neptune
class Logo_neptune {
colors = "7 7 7 7 7 7"
art = "\{c1\} ./+sydddddddys/-.
.+ymNNdyooo/:+oooymNNmy/`
`/hNNh/.` `-+dNNy:`
/mMd/. .++.:oy/ .+mMd-
`sMN/ oMMmdy+. `oNNo
`hMd. `/ymy/. :NMo
oMN- `/dMd: /MM-
`mMy -dMN+` mMs
.MMo -NMM/ yMs
dMh mMMMo:` `NMo
/MM/ /ymMMMm- sMN.
+Mm: .hMMd` oMN/
+mNs. `yNd/` -dMm-
.yMNs: `/.` `/yNNo`
.odNNy+-` .:ohNNd/.
-+ymNNmdyyyyyyydmNNmy+.
`-//sssssss//."
}
# Logo: NetBSD
class Logo_netbsd {
colors = "5 7 7 7 7 7"
art = "\{c1\} `-/oshdmNMNdhyo+:-`
\{c2\}y\{c1\}/s+:-`` `.-:+oydNMMMMNhs/-``
\{c2\}-m+\{c1\}NMMMMMMMMMMMMMMMMMMMNdhmNMMMmdhs+/-`
\{c2\}-m+\{c1\}NMMMMMMMMMMMMMMMMMMMMmy+:`
\{c2\}-N/\{c1\}dMMMMMMMMMMMMMMMds:`
\{c2\}-N/\{c1\}hMMMMMMMMMmho:`
\{c2\}-N/\{c1\}-:/++/:.`
\{c2\} :M+
:Mo
:Ms
:Ms
:Ms
:Ms
:Ms
:Ms
:Ms
:Ms"
}
# Logo: netbsd_small
class Logo_netbsd_small {
colors = "5 7 7 7 7 7"
art = "\{c2\}\\\\\\\\\{c1\}\\`-______,----__
\{c2\} \\\\\\\\ \{c1\}__,---\\`_
\{c2\} \\\\\\\\ \{c1\}\\`.____
\{c2\} \\\\\\\\\{c1\}-______,----\\`-
\{c2\} \\\\\\\\
\\\\\\\\
\\\\\\\\"
}
# Logo: Netrunner
class Logo_netrunner {
colors = "4 7 1 1 1 1"
art = "\{c1\} .:oydmMMMMMMmdyo:`
-smMMMMMMMMMMMMMMMMMMds-
+mMMMMMMMMMMMMMMMMMMMMMMMMd+
/mMMMMMMMMMMMMMMMMMMMMMMMMMMMMm/
`hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy`
.mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd`
dMMMMMMMMMMMMMMMMMMMMMMNdhmMMMMMMMMMMh
+MMMMMMMMMMMMMNmhyo+/-. -MMMMMMMMMMMM/
mMMMMMMMMd+:.` `mMMMMMMMMMMMMd
MMMMMMMMMMMdy/. yMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMNh+` +MMMMMMMMMMMMMMM
mMMMMMMMMMMMMMMMMMs -NMMMMMMMMMMMMMMd
+MMMMMMMMMMMMMMMMMN. `mMMMMMMMMMMMMMMM/
dMMMMMMMMMMMMMMMMMy hMMMMMMMMMMMMMMMh
`dMMMMMMMMMMMMMMMMM-+MMMMMMMMMMMMMMMd`
`hMMMMMMMMMMMMMMMMmMMMMMMMMMMMMMMMy
/mMMMMMMMMMMMMMMMMMMMMMMMMMMMMm:
+dMMMMMMMMMMMMMMMMMMMMMMMMd/
-odMMMMMMMMMMMMMMMMMMdo-
`:+ydmNMMMMNmhy+-`"
}
# Logo: Nitrux
class Logo_nitrux {
colors = "4 4 4 4 4 4"
art = "\{c1\}`:/.
`/yo
`/yo
`/yo .+:.
`/yo .sys+:.`
`/yo `-/sys+:.`
`/yo ./sss+:.`
`/yo .:oss+:-`
`/yo ./o///:-`
`/yo `.-:///////:`
`/yo `.://///++//-``
`/yo `.-:////++++/-`
`/yo `-://///++o+/-`
`/yo `-/+o+++ooo+/-`
`/s+:+oooossso/.`
`//+sssssso:.
`+syyyy+:`
:+s+-"
}
# Logo: NixOS
class Logo_nixos {
colors = "4 6 6 6 6 6"
art = "\{c1\} ▗▄▄▄ \{c2\}▗▄▄▄▄ ▄▄▄▖
\{c1\} ▜███▙ \{c2\}▜███▙ ▟███▛
\{c1\} ▜███▙ \{c2\}▜███▙▟███▛
\{c1\} ▜███▙ \{c2\}▜██████▛
\{c1\} ▟█████████████████▙ \{c2\}▜████▛ \{c1\}▟▙
\{c1\} ▟███████████████████▙ \{c2\}▜███▙ \{c1\}▟██▙
\{c2\} ▄▄▄▄▖ ▜███▙ \{c1\}▟███▛
\{c2\} ▟███▛ ▜██▛ \{c1\}▟███▛
\{c2\} ▟███▛ ▜▛ \{c1\}▟███▛
\{c2\}▟███████████▛ \{c1\}▟██████████▙
\{c2\}▜██████████▛ \{c1\}▟███████████▛
\{c2\} ▟███▛ \{c1\}▟▙ ▟███▛
\{c2\} ▟███▛ \{c1\}▟██▙ ▟███▛
\{c2\} ▟███▛ \{c1\}▜███▙ ▝▀▀▀▀
\{c2\} ▜██▛ \{c1\}▜███▙ \{c2\}▜██████████████████▛
\{c2\} ▜▛ \{c1\}▟████▙ \{c2\}▜████████████████▛
\{c1\} ▟██████▙ \{c2\}▜███▙
\{c1\} ▟███▛▜███▙ \{c2\}▜███▙
\{c1\} ▟███▛ ▜███▙ \{c2\}▜███▙
\{c1\} ▝▀▀▀ ▀▀▀▀▘ \{c2\}▀▀▀▘"
}
# Logo: nixos_old
class Logo_nixos_old {
colors = "4 6 6 6 6 6"
art = "\{c1\} ::::. \{c2\}'::::: ::::'
\{c1\} '::::: \{c2\}':::::. ::::'
\{c1\} ::::: \{c2\}'::::.:::::
\{c1\} .......:::::..... \{c2\}::::::::
\{c1\} ::::::::::::::::::. \{c2\}:::::: \{c1\}::::.
::::::::::::::::::::: \{c2\}:::::. \{c1\}.::::'
\{c2\} ..... ::::' \{c1\}:::::'
\{c2\} ::::: '::' \{c1\}:::::'
\{c2\} ........::::: ' \{c1\}:::::::::::.
\{c2\}::::::::::::: \{c1\}:::::::::::::
\{c2\} ::::::::::: \{c1\}.. \{c1\}:::::
\{c2\} .::::: \{c1\}.::: \{c1\}:::::
\{c2\} .::::: \{c1\}::::: \{c1\}''''' \{c2\}.....
::::: \{c1\}':::::. \{c2\}......:::::::::::::'
::: \{c1\}::::::. \{c2\}':::::::::::::::::'
\{c1\} .:::::::: \{c2\}'::::::::::
\{c1\} .::::''::::. \{c2\}'::::.
\{c1\} .::::' ::::. \{c2\}'::::.
\{c1\} .:::: :::: \{c2\}'::::."
}
# Logo: nixos_small
class Logo_nixos_small {
colors = "4 6 6 6 6 6"
art = " \{c1\} \\\\\\\\ \\\\\\\\ //
==\\\\\\\\__\\\\\\\\/ //
// \\\\\\\\//
==// //==
//\\\\\\\\___//
// /\\\\\\\\ \\\\\\\\==
// \\\\\\\\ \\\\\\\\"
}
# Logo: Nurunner
class Logo_nurunner {
colors = "4 4 4 4 4 4"
art = "\{c1\} ,xc
;00cxXl
;K0, .xNo.
:KO' .lXx.
cXk. ;xl cXk.
cXk. ;k:.,xo. cXk.
.lXx. :x::0MNl,dd. :KO,
.xNx. cx;:KMMMMMNo'dx. ;KK;
.dNl. cd,cXMMMMMMMMMWd,ox' 'OK:
;WK. 'K,.KMMMMMMMMMMMMMWc.Kx lMO
'OK: 'dl'xWMMMMMMMMMM0::x: 'OK:
.kNo .xo'xWMMMMMM0;:O: ;KK;
.dXd. .do,oNMMO;ck: ;00,
oNd. .dx,;'cO; ;K0,
oNx. okk; ;K0,
lXx. :KO'
cKk' cXk.
;00:lXx.
,kd."
}
# Logo: NuTyX
class Logo_nutyx {
colors = "4 1 1 1 1 1"
art = "\{c1\} .
.
...
...
.... .........--.
..-++-----....--++++++---.
.-++++++-. .-++++++++++++-----..
.--... .++..-+++--.....-++++++++++--..
. .-+-. .**- .... ..-+----..
.+++. .*+. + -++-----.
.+++++- ++. .*+. .....-+++-----.
-+++-++. .+. .-+***++***++--++++. .
-+-. -- -. -*- ...... ..--.
.-. .+- . -+.
. .+- +.
-- --
-+----. .-
-++-.+. .
.++. --
+. ----.
. .+. ..
- .
."
}
# Logo: Obarun
class Logo_obarun {
colors = "6 6 7 1 1 1"
art = "\{c1\} ,;::::;
;cooolc;,
,coool;
,loool,
loooo;
:ooool
cooooc ,:ccc;
looooc :oooooool
cooooo ;oooooooooo,
:ooooo; :ooooooooooo
oooooo oooooooooooc
:oooooo :ooooooooool
loooooo ;oooooooool
looooooc .coooooooc
cooooooo: ,;co;
,ooooooool; ,:loc
cooooooooooooloooooc
;ooooooooooooool;
;looooooolc;"
}
# Logo: OBRevenge
class Logo_obrevenge {
colors = "1 7 3 3 3 3"
art = "\{c1\} __ __
_@@@@ @@@g_
_@@@@@@ @@@@@@
_@@@@@@M W@@@@@@_
j@@@@P ^W@@@@
@@@@L____ _____Q@@@@
Q@@@@@@@@@@j@@@@@@@@@@
@@@@@ T@j@ T@@@@@
@@@@@ ___Q@J@ _@@@@@
@@@@@fMMM@@j@jggg@@@@@@
@@@@@ j@j@^MW@P @@@@
Q@@@@@ggg@@f@ @@@@@@L
^@@@@WWMMP ^ Q@@@@
@@@@@_ _@@@@l
W@@@@@g_____g@@@@@P
@@@@@@@@@@@@@@@@l
^W@@@@@@@@@@@P
^TMMMMTll"
}
# Logo: Open Source Media Center
class Logo_open_source_media_center {
colors = "4 7 1 1 1 1"
art = "\{c1\} -+shdmNNNNmdhs+-
.+hMNho/:..``..:/ohNMh+.
:hMdo. .odMh:
-dMy- -yMd-
sMd- -dMs
hMy +. .+ yMh
yMy dMs. .sMd yMy
:Mm dMNMs` `sMNMd `mM:
yM+ dM//mNs``sNm//Md +My
mM- dM: +NNNN+ :Md -Mm
mM- dM: `oNN+ :Md -Mm
yM+ dM/+NNo` :Md +My
:Mm` dMMNs` :Md `mM:
yMy dMs` -ms yMy
hMy +. yMh
sMd- -dMs
-dMy- -yMd-
:hMdo. .odMh:
.+hMNho/:..``..:/ohNMh+.
-+shdmNNNNmdhs+-"
}
# Logo: OpenBSD
class Logo_openbsd {
colors = "3 7 6 1 8 8"
art = "\{c3\} _
(_)
\{c1\} | .
\{c1\} . |L /| . \{c3\} _
\{c1\} _ . |\\ _| \\--+._/| . \{c3\}(_)
\{c1\} / ||\\| Y J ) / |/| ./
J |)'( | ` F`.'/ \{c3\} _
\{c1\} -<| F __ .-< \{c3\}(_)
\{c1\} | / .-'\{c3\}. \{c1\}`. /\{c3\}-. \{c1\}L___
J \\\\ < \{c3\}\\ \{c1\} | | \{c5\}O\{c3\}\\\\\{c1\}|.-' \{c3\} _
\{c1\} _J \\\\ .- \\\\\{c3\}/ \{c5\}O \{c3\}| \{c1\}| \\\\ |\{c1\}F \{c3\}(_)
\{c1\} '-F -<_. \\\\ .-' `-' L__
__J _ _. >-' \{c1\})\{c4\}._. \{c1\}|-'
\{c1\} `-|.' /_. \{c4\}\\_| \{c1\} F
/.- . _.<
/' /.' .' `\\\\
/L /' |/ _.-'-\\\\
/'J ___.---'\\|
|\\ .--' V | `. `
|/`. `-. `._)
/ .-.\\\\
\\\\ ( `\\\\
`.\\\\"
}
# Logo: openbsd_small
class Logo_openbsd_small {
colors = "3 7 6 1 8 8"
art = "\{c1\} _____
\\\\- -/
\\\\_/ \\\\
| \{c2\}O O\{c1\} |
|_ < ) 3 )
/ \\\\ /
/-_____-\\\\"
}
# Logo: openEuler
class Logo_openeuler {
colors = "4 7 1 1 1 1"
art = "\{c1\} `.cc.`
``.cccccccc..`
`.cccccccccccccccc.`
``.cccccccccccccccccccccc.``
`..cccccccccccccccccccccccccccc..`
`.ccccccccccccccc\{c2\}/++/\{c1\}ccccccccccccccccc.`
.ccccccccccccccc\{c2\}mNMMNdo+oso+\{c1\}ccccccccccc.
.cccccccccc\{c2\}/++odms+//+mMMMMm/:+syso/\{c1\}cccc
.ccccccccc\{c2\}yNNMMMs:::/::+o+/:\{c1\}c\{c2\}dMMMMMm\{c1\}cccc
.ccccccc\{c2\}:+NmdyyhNNmNNNd:\{c1\}ccccc\{c1\}\{c2\}:oyyyo:\{c1\}cccc
.ccc\{c2\}:ohdmMs:\{c1\}cccc\{c2\}+mNMNmy\{c1\}ccccccccccccccccc
.cc\{c2\}/NMMMMMo////:\{c1\}c\{c2\}:///:\{c1\}cccccccccccccccccc
.cc\{c2\}:syysyNMNNNMNy\{c1\}ccccccccccccccccccccccc
.cccccccc\{c2\}+MMMMMNy\{c1\}c\{c2\}:/+++/\{c1\}cccccccccccccccc
.ccccccccc\{c2\}ohhhs/\{c1\}c\{c2\}omMMMMNh\{c1\}ccccccccccccccc
.ccccccccccccccc\{c2\}:MMMMMMMM/\{c1\}cccccccccccccc
.cccccccccccccccc\{c2\}sNNNNNd+\{c1\}cccccccccccccc.
`..cccccccccccccccc\{c2\}/+/:\{c1\}cccccccccccccc..`
``.cccccccccccccccccccccccccccc.``
`.cccccccccccccccccccccc.`
``.cccccccccccccc.``
`.cccccccc.`
`....`"
}
# Logo: OpenIndiana
class Logo_openindiana {
colors = "4 7 1 1 1 1"
art = "\{c2\} .sy/
.yh+
\{c1\}-+syyyo+- \{c2\} /+.
\{c1\}+ddo/---/sdh/ \{c2\} ym-
\{c1\}`hm+ `sms\{c2\} ym-```````.-.
\{c1\}sm+ sm/ \{c2\} ym- +s
\{c1\}hm. /mo \{c2\} ym- /h
\{c1\}omo ym: \{c2\} ym- `os`
\{c1\}smo` .ym+ \{c2\} ym- .os-
`` \{c1\}:ymy+///oyms- \{c2\} ym- .+s+.
..` \{c1\}`:+oo+/-` \{c2\} -//oyo-
-:` .:oys/.
+- `./oyys/.
h+` `.-:+oyyyo/-`
`/ossssysso+/-.`"
}
# Logo: openmamba
class Logo_openmamba {
colors = "7 2 2 2 2 2"
art = "\{c1\} `````
.-/+ooooooooo+/:-`
./ooooooooooooooooooo+:.
-+oooooooooooooooooooooooo+-
.+ooooooooo+/:---::/+ooooooooo+.
:oooooooo/-` `-/oo\{c2\}s´\{c1\}oooo.\{c2\}s´\{c1\}
:ooooooo/` `\{c2\}sNds\{c1\}ooo\{c2\}sNds\{c1\}
-ooooooo- \{c2\}:dmy\{c1\}ooo\{c2\}:dmy\{c1\}
+oooooo: :oooooo-
.ooooooo .://:`
:oooooo+ ./+o+:`
-ooooooo` `oooooo+
`ooooooo: /oooooo+
-ooooooo: :ooooooo.
:ooooooo+. .+ooooooo:
:oooooooo+-` `-+oooooooo:
.+ooooooooo+/::::://oooooooooo+.
-+oooooooooooooooooooooooo+-
.:ooooooooooooooooooo+:.
`-:/ooooooooo+/:.`
``````"
}
# Logo: OpenMandriva
class Logo_openmandriva {
colors = "4 4 4 4 4 4"
art = "\{c1\} ``````
`-:/+++++++//:-.`
.:+++oooo+/:.`` ``
`:+ooooooo+:. `-:/++++++/:.`
-+oooooooo:` `-++o+/::::://+o+/-
`/ooooooooo- -+oo/.` `-/oo+.
`+ooooooooo. :os/` .+so:
+sssssssss/ :ss/ `+ss-
:ssssssssss` sss` .sso
ossssssssss `yyo sys
`sssssssssss` `yys `yys
`sssssssssss: +yy/ +yy:
oyyyyyyyyyys. `oyy/` `+yy+
:yyyyyyyyyyyo. `+yhs:. `./shy/
oyyyyyyyyyyys:` .oyhys+:----/+syhy+. `
`syyyyyyyyyyyyo-` .:osyhhhhhyys+:``.:`
`oyyyyyyyyyyyyys+-`` `.----.```./oo.
/yhhhhhhhhhhhhhhyso+//://+osyhy/`
`/yhhhhhhhhhhhhhhhhhhhhhhhhy/`
`:oyhhhhhhhhhhhhhhhhhhyo:`
.:+syhhhhhhhhys+:-`
``....``"
}
# Logo: OpenStage
class Logo_openstage {
colors = "2 2 2 2 2 2"
art = "\{c1\} /(/
.(((((((,
/(((((((((/
.(((((/,/(((((,
*(((((* ,(((((/
(((((* .*/((
*((((/ (//(/*
/((((* ((((((((((,
. /((((* (((((((((((((.
((. *((((/ ,((((((((
,(((/ (((((/ ** ,((((((*
/(((((. .(((((/ //(((* *(((((/
.(((((, ((/ .(((((/. .(((((,
/((((* ,(((((((/ ,(((((
/(((((((((((((((((((/. /(((((((((/
/(((((((((((((((((, /(((((((((((/
*/(((((//*. */((/(/(/*"
}
# Logo: openSUSE
class Logo_opensuse {
colors = "2 7 7 7 7 7"
art = "\{c2\} .;ldkO0000Okdl;.
.;d00xl:^''''''^:ok00d;.
.d00l' 'o00d.
.d0Kd'\{c1\} Okxol:;,. \{c2\}:O0d.
.OK\{c1\}KKK0kOKKKKKKKKKKOxo:, \{c2\}lKO.
,0K\{c1\}KKKKKKKKKKKKKKK0P^\{c2\},,,\{c1\}^dx:\{c2\} ;00,
.OK\{c1\}KKKKKKKKKKKKKKKk'\{c2\}.oOPPb.\{c1\}'0k.\{c2\} cKO.
:KK\{c1\}KKKKKKKKKKKKKKK: \{c2\}kKx..dd \{c1\}lKd\{c2\} 'OK:
dKK\{c1\}KKKKKKKKKOx0KKKd \{c2\}^0KKKO' \{c1\}kKKc\{c2\} dKd
dKK\{c1\}KKKKKKKKKK;.;oOKx,..\{c2\}^\{c1\}..;kKKK0.\{c2\} dKd
:KK\{c1\}KKKKKKKKKK0o;...^cdxxOK0O/^^' \{c2\}.0K:
kKK\{c1\}KKKKKKKKKKKKK0x;,,......,;od \{c2\}lKk
'0K\{c1\}KKKKKKKKKKKKKKKKKKKK00KKOo^ \{c2\}c00'
'kK\{c1\}KKOxddxkOO00000Okxoc;'' \{c2\}.dKk'
l0Ko. .c00l'
'l0Kk:. .;xK0l'
'lkK0xl:;,,,,;:ldO0kl'
'^:ldxkkkkxdl:^'"
}
# Logo: openSUSE Leap
class Logo_opensuse_leap {
colors = "2 7 7 7 7 7"
art = "\{c2\} `-++:`
./oooooo/-
`:oooooooooooo:.
-+oooooooooooooooo+-`
./oooooooooooooooooooooo/-
:oooooooooooooooooooooooooo:
` `-+oooooooooooooooooooo/- `
`:oo/- .:ooooooooooooooo+:` `-+oo/.
`/oooooo:. -/oooooooooo/. ./oooooo/.
`:+ooooo+-` `:+oooo+- `:oooooo+:`
.:oooooo/. .::` -+oooooo/.
-/oooooo:. ./oooooo+-
`:+ooooo+-:+oooooo:`
./oooooooooo/.
-/oooo+:`
`:/."
}
# Logo: opensuse_small
class Logo_opensuse_small {
colors = "2 7 7 7 7 7"
art = "\{c1\} _______
__| __ \\\\
/ .\\\\ \\\\
\\\\__/ |
_______|
\\\\_______
__________/"
}
# Logo: openSUSE Tumbleweed
class Logo_opensuse_tumbleweed {
colors = "2 7 7 7 7 7"
art = "\{c2\} ......
.,cdxxxoc,. .:kKMMMNWMMMNk:.
cKMMN0OOOKWMMXo. ; ;0MWk:. .:OMMk.
;WMK;. .lKMMNM, :NMK, .OMW;
cMW; 'WMMMN ,XMK, oMM'
.MMc ..;l. xMN: KM0
'MM. 'NMO oMM
.MM, .kMMl xMN
KM0 .kMM0. .dl:,.. .WMd
.XM0. ,OMMK, OMMMK. .XMK
oWMO:. .;xNMMk, NNNMKl. .xWMx
:ONMMNXMMMKx; . ,xNMWKkxllox0NMWk,
..... .:dOOXXKOxl,"
}
# Logo: OpenWrt
class Logo_openwrt {
colors = "4 7 1 1 1 1"
art = "\{c1\} _______
| |.-----.-----.-----.
| - || _ | -__| |
|_______|| __|_____|__|__|
|__|
________ __
| | | |.----.| |_
| | | || _|| _|
|________||__| |____|"
}
# Logo: Oracle
class Logo_oracle {
colors = "1 7 3 3 3 3"
art = "\{c1\}
`-/+++++++++++++++++/-.`
`/syyyyyyyyyyyyyyyyyyyyyyys/.
:yyyyo/-...............-/oyyyy/
/yyys- .oyyy+
.yyyy` `syyy-
:yyyo /yyy/
.yyyy` `syyy-
/yyys. .oyyyo
/yyyyo:-...............-:oyyyy/`
`/syyyyyyyyyyyyyyyyyyyyyyys+.
`.:/+ooooooooooooooo+/:.`"
}
# Logo: OS Elbrus
class Logo_os_elbrus {
colors = "4 7 3 3 3 3"
art = "\{c1\} ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀██
██ ██
██ ███████ ███████ ██
██ ██ ██ ██ ██ ██
██ ██ ██ ██ ██ ██
██ ██ ██ ██ ██ ██
██ ██ ██ ██ ██ ██
██ ██ ███████ ███████
██ ██ ██
██ ██▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄██
██ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀██
██ ██
███████████████████████████"
}
# Logo: PacBSD
class Logo_pacbsd {
colors = "1 7 3 3 3 3"
art = "\{c1\} :+sMs.
`:ddNMd- -o--`
-sMMMMh: `+N+``
yMMMMMs` .....-/-... `mNh/
yMMMMMmh+-`:sdmmmmmmMmmmmddy+-``./ddNMMm
yNMMNMMMMNdyyNNMMMMMMMMMMMMMMMhyshNmMMMm
:yMMMMMMMMMNdooNMMMMMMMMMMMMMMMMNmy:mMMd
+MMMMMMMMMmy:sNMMMMMMMMMMMMMMMMMMMmshs-
:hNMMMMMMN+-+MMMMMMMMMMMMMMMMMMMMMMMs.
.omysmNNhy/+yNMMMMMMMMMMNMMMMMMMMMNdNNy-
/hMM:::::/hNMMMMMMMMMMMm/-yNMMMMMMN.mMNh`
.hMMMMdhdMMMMMMMMMMMMMMmo `sMMMMMMN mMMm-
:dMMMMMMMMMMMMMMMMMMMMMdo+ oMMMMMMN`smMNo`
/dMMMMMMMMMMMMMMMMMMMMMNd/` :yMMMMMN:-hMMM.
:dMMMMMMMMMMMMMMMMMMMMMNh` oMMMMMMNo/dMNN`
:hMMMMMMMMMMMMMMMMMMMMMMNs--sMMMMMMMNNmy++`
sNMMMMMMMMMMMMMMMMMMMMMMMmmNMMMMMMNho::o.
:yMMMMMMMMMMMMMNho+sydNNNNNNNmysso/` -//
/dMMMMMMMMMMMMMs- ````````..``
.oMMMMMMMMMMMMNs` ./y:`
+dNMMNMMMMMMMmy` ``./ys.
`/hMMMMMMMMMMMNo-`` `.+yy+-`
`-/hmNMNMMMMMMmmddddhhy/-`
`-+oooyMMMdsoo+/:."
}
# Logo: Parabola
class Logo_parabola {
colors = "5 7 7 7 7 7"
art = "\{c1\} `.-. `.
`.` `:++. `-+o+.
`` `:+/. `:+/. `-+oooo+
``-::-.:+/. `:+/. `-+oooooo+
`.-:///- ..` .-. `-+oooooooo-
`..-..` `+ooooooooo:
`` :oooooooo/
`ooooooo:
`oooooo:
-oooo+.
+ooo/`
-ooo-
`+o/.
/+-
//`
-."
}
# Logo: parabola_small
class Logo_parabola_small {
colors = "5 7 7 7 7 7"
art = "\{c1\} __ __ __ _
.`_//_//_/ / `.
/ .`
/ .`
/.`
/`"
}
# Logo: Pardus
class Logo_pardus {
colors = "3 7 6 1 8 8"
art = "\{c1\} .smNdy+- `.:/osyyso+:.` -+ydmNs.
/Md- -/ymMdmNNdhso/::/oshdNNmdMmy/. :dM/
mN. oMdyy- -y `-dMo .Nm
.mN+` sMy hN+ -: yMs `+Nm.
`yMMddMs.dy `+` sMddMMy`
+MMMo .` . oMMM+
`NM/ `````.` `.````` +MN`
yM+ `.-:yhomy ymohy:-.` +My
yM: yo oy :My
+Ms .N` `N. +h sM+
`MN - -::::::- : :o:+`NM`
yM/ sh -dMMMMd- ho +y+My
.dNhsohMh-//: /mm/ ://-yMyoshNd`
`-ommNMm+:/. oo ./:+mMNmmo:`
`/o+.-somNh- :yy: -hNmos-.+o/`
./` .s/`s+sMdd+``+ddMs+s`/s. `/.
: -y. -hNmddmNy. .y- :
-+ `..` +-"
}
# Logo: Parrot
class Logo_parrot {
colors = "6 7 7 7 7 7"
art = "\{c1\} `:oho/-`
`mMMMMMMMMMMMNmmdhy-
dMMMMMMMMMMMMMMMMMMs`
+MMsohNMMMMMMMMMMMMMm/
.My .+dMMMMMMMMMMMMMh.
+ :NMMMMMMMMMMMMNo
`yMMMMMMMMMMMMMm:
/NMMMMMMMMMMMMMy`
.hMMMMMMMMMMMMMN+
``-NMMMMMMMMMd-
/MMMMMMMMMMMs`
mMMMMMMMsyNMN/
+MMMMMMMo :sNh.
`NMMMMMMm -o/
oMMMMMMM.
`NMMMMMM+
+MMd/NMh
mMm -mN`
/MM `h:
dM` .
:M-
d:
-+
-"
}
# Logo: Parsix
class Logo_parsix {
colors = "3 1 7 8 8 8"
art = " \{c2\}-/+/:.
\{c2\}.syssssys.
\{c1\}.--. \{c2\}ssssssssso\{c1\} ..--.
:++++++: \{c2\}+ssssssss+\{c1\} ./++/+++:
/+++++++++.\{c2\}.yssooooy`\{c1\}-+///////o-
/++++++++++.\{c2\}+soooos:\{c1\}:+////////+-
:+++++////o-\{c2\}oooooo-\{c1\}+/////////-
`-/++//++-\{c4\}.-----.-\{c1\}:+/////:-
\{c3\}-://::--\{c1\}-:/:\{c4\}.--.````.--.\{c1\}:::-\{c3\}--::::::.
\{c3\}-/:::::::://:\{c4\}.:-` `-:\{c3\}`:/:::::::--/-
\{c3\}/::::::::::/-\{c4\}--. .-.\{c3\}-/://///::::/
\{c3\}-/:::::::::/:\{c4\}`:-. .-:\{c3\}`:///////////-
`\{c3\}-::::--\{c1\}.-://.\{c4\}---....---\{c1\}`:+/:-\{c3\}--::::-`
\{c1\}-/+///+o/-\{c4\}.----.\{c1\}.:oo+++o+.
\{c1\}-+/////+++o:\{c2\}syyyyy.\{c1\}o+++++++++:
\{c1\}.+////+++++-\{c2\}+sssssy+\{c1\}.++++++++++\\
\{c1\}.+:/++++++.\{c2\}.yssssssy-\{c1\}`+++++++++:
\{c1\}:/+++++- \{c2\}+sssssssss \{c1\}-++++++-
\{c1\}`--` \{c2\}+sssssssso \{c1\}`--`
\{c2\}+sssssy+`
\{c2\}`.::-`"
}
# Logo: PCBSD
class Logo_pcbsd {
colors = "1 7 3 3 3 3"
art = "\{c1\} ..
s.
+y
yN
-MN `.
:NMs `m
.yMMm` `No
`-/+++sdMMMNs+-`+Ms
`:oo+-` .yMMMMy` `-+oNMh
-oo- +NMMMM/ oMMh-
.s+` ` oMMMMM/ - oMMMhy.
+s`- :: :MMMMMd -o `mMMMy`s+
y+ h .Ny+oNMMMMMN/ sh+NMMMMo +y
s+ .ds -NMMMMMMMMMMNdhdNMMMMMMh` +s
-h .NM` `hMMMMMMMMMMMMMMNMMNy: h-
y- hMN` hMMmMMMMMMMMMNsdMNs. -y
m` mMMy` oMMNoNMMMMMMo` sMMMo `m
m` :NMMMdyydMMMMo+MdMMMs sMMMd` `m
h- `+ymMMMMMMMM--M+hMMN/ +MMMMy -h
:y `.sMMMMM/ oMM+.yMMNddNMMMMMm y:
y: `s dMMN- .MMMM/ :MMMMMMMMMMh :y
`h: `mdmMMM/ yMMMMs sMMMMMMMMN- :h`
so -NMMMN /mmd+ `dMMMMMMMm- os
:y: `yMMM` `+NMMMMMMNo`:y:
/s+`.omy /NMMMMMNh/.+s:
.+oo:-. /mdhs+::oo+.
-/o+++++++++++/-"
}
# Logo: PCLinuxOS
class Logo_pclinuxos {
colors = "4 7 1 1 1 1"
art = "\{c1\} mhhhyyyyhhhdN
dyssyhhhhhhhhhhhssyhN
Nysyhhyo/:-.....-/oyhhhssd
Nsshhy+. `/shhysm
dohhy/ -shhsy
dohhs` /hhys
N+hho \{c2\}+ssssss+- .+syhys+ \{c1\}/hhsy
ohhh` \{c2\}ymmo++hmm+`smmy/::+y` \{c1\}shh+
+hho \{c2\}ymm- /mmy+mms \{c1\}:hhod
/hh+ \{c2\}ymmhhdmmh.smm/ \{c1\}.hhsh
+hhs \{c2\}ymm+::-` /mmy` ` \{c1\}/hh+m
yyhh- \{c2\}ymm- /dmdyosyd` \{c1\}`yhh+
ohhy` \{c2\}://` -/+++/- \{c1\}ohhom
N+hhy- `shhoh
sshho. `+hhyom
dsyhhs/. `:ohhhoy
dysyhhhso///://+syhhhssh
dhyssyhhhhhhyssyyhN
mddhdhdmN"
}
# Logo: Pengwin
class Logo_pengwin {
colors = "5 5 13 13 13 13"
art = "\{c3\} ...`
\{c3\} `-///:-`
\{c3\} .+\{c2\}ssys\{c3\}/
\{c3\} +\{c2\}yyyyy\{c3\}o \{c2\}
\{c2\} -yyyyyy:
\{c2\} `.:/+ooo+/:` -yyyyyy+
\{c2\} `:oyyyyyys+:-.`syyyyyy:
\{c2\} .syyyyyyo-` .oyyyyyyo
\{c2\} `syyyyyy `-+yyyyyyy/`
\{c2\} /yyyyyy+ -/osyyyyyyo/.
\{c2\} +yyyyyy- `.-:::-.`
\{c2\} .yyyyyy-
\{c3\} :\{c2\}yyyyy\{c3\}o
\{c3\} .+\{c2\}ooo\{c3\}+
\{c3\} `.::/:."
}
# Logo: Pentoo
class Logo_pentoo {
colors = "5 7 7 7 7 7"
art = "\{c2\} `:oydNNMMMMNNdyo:`
:yNMMMMMMMMMMMMMMMMNy:
:dMMMMMMMMMMMMMMMMMMMMMMd:
oMMMMMMMho/-....-/ohMMMMMMMo
oMMMMMMy. .yMMMMMMo
.MMMMMMo oMMMMMM.
+MMMMMm mMMMMM+
oMMMMMh hMMMMMo
//hMMMMMm//\{c1\}`\{c2\} \{c1\}`\{c2\}////mMMMMMh//
MMMMMMMMMMM\{c1\}/\{c2\} \{c1\}/o/`\{c2\} \{c1\}.\{c2\}smMMMMMMMMMMM
MMMMMMMMMMm \{c1\}`NMN:\{c2\} \{c1\}.\{c2\}yMMMMMMMMMM
MMMMMMMMMMMh\{c1\}:.\{c2\} dMMMMMMMMM
MMMMMMMMMMMMMy\{c1\}.\{c2\} \{c1\}-\{c2\}NMMMMMMMMM
MMMMMMMMMMMd:\{c1\}`\{c2\} \{c1\}-\{c2\}yNMMMMMMMMMM
MMMMMMMMMMh\{c1\}`\{c2\} \{c1\}./\{c2\}hNMMMMMMMMMMMM
MMMMMMMMMM\{c1\}s\{c2\} \{c1\}.:\{c2\}ymMMMMMMMMMMMMMMM
MMMMMMMMMMN\{c1\}s:..-/\{c2\}ohNMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
}
# Logo: Peppermint
class Logo_peppermint {
colors = "1 15 3 3 3 3"
art = "\{c1\} PPPPPPPPPPPPPP
\{c1\} PPPP\{c2\}MMMMMMM\{c1\}PPPPPPPPPPP
\{c1\} PPPP\{c2\}MMMMMMMMMM\{c1\}PPPPPPPP\{c2\}MM\{c1\}PP
\{c1\} PPPPPPPP\{c2\}MMMMMMM\{c1\}PPPPPPPP\{c2\}MMMMM\{c1\}PP
\{c1\} PPPPPPPPPPPP\{c2\}MMMMMM\{c1\}PPPPPPP\{c2\}MMMMMMM\{c1\}PP
\{c1\} PPPPPPPPPPPP\{c2\}MMMMMMM\{c1\}PPPP\{c2\}M\{c1\}P\{c2\}MMMMMMMMM\{c1\}PP
\{c1\} PP\{c2\}MMMM\{c1\}PPPPPPPPPP\{c2\}MMM\{c1\}PPPPP\{c2\}MMMMMMM\{c1\}P\{c2\}MM\{c1\}PPPP
\{c1\} P\{c2\}MMMMMMMMMM\{c1\}PPPPPP\{c2\}MM\{c1\}PPPPP\{c2\}MMMMMM\{c1\}PPPPPPPP
\{c1\} P\{c2\}MMMMMMMMMMMM\{c1\}PPPPP\{c2\}MM\{c1\}PP\{c2\}M\{c1\}P\{c2\}MM\{c1\}P\{c2\}MM\{c1\}PPPPPPPPPPP
\{c1\} P\{c2\}MMMMMMMMMMMMMMMM\{c1\}PP\{c2\}M\{c1\}P\{c2\}MMM\{c1\}PPPPPPPPPPPPPPPP
\{c1\} P\{c2\}MMM\{c1\}PPPPPPPPPPPPPPPPPPPPPPPPPPPPPP\{c2\}MMMMM\{c1\}P
\{c1\} PPPPPPPPPPPPPPPP\{c2\}MMM\{c1\}P\{c2\}M\{c1\}P\{c2\}MMMMMMMMMMMMMMMM\{c1\}PP
\{c1\} PPPPPPPPPPP\{c2\}MM\{c1\}P\{c2\}MM\{c1\}PPPP\{c2\}MM\{c1\}PPPPP\{c2\}MMMMMMMMMMM\{c1\}PP
\{c1\} PPPPPPPP\{c2\}MMMMMM\{c1\}PPPPP\{c2\}MM\{c1\}PPPPPP\{c2\}MMMMMMMMM\{c1\}PP
\{c1\} PPPP\{c2\}MM\{c1\}P\{c2\}MMMMMMM\{c1\}PPPPPP\{c2\}MM\{c1\}PPPPPPPPPP\{c2\}MMMM\{c1\}PP
\{c1\} PP\{c2\}MMMMMMMMM\{c1\}P\{c2\}M\{c1\}PPPP\{c2\}MMMMMM\{c1\}PPPPPPPPPPPPP
\{c1\} PP\{c2\}MMMMMMM\{c1\}PPPPPPP\{c2\}MMMMMM\{c1\}PPPPPPPPPPPP
\{c1\} PP\{c2\}MMMM\{c1\}PPPPPPPPP\{c2\}MMMMMMM\{c1\}PPPPPPPP
\{c1\} PP\{c2\}MM\{c1\}PPPPPPPP\{c2\}MMMMMMMMMM\{c1\}PPPP
\{c1\} PPPPPPPPPP\{c2\}MMMMMMMM\{c1\}PPPP
\{c1\} PPPPPPPPPPPPPP"
}
# Logo: Pisi
class Logo_pisi {
colors = "12 7 6 1 8 8"
art = "\{c1\} \\Fv/!- `:?lzC
\{c1\} Q!::=zFx! \{c2\}`;v6WBCicl;` \{c1\},vCC\\!::#.
\{c1\} ,%:::,'` \{c2\}+#%@@FQ@@. ,cF%i\{c1\}``-',::a?
\{c1\} +m:,'```\{c2\}\}3,/@@Q\\@@ \"af-\{c1\} `-'\"7f
=o'.` \{c2\}/m' :Q@:Qg ,kl\{c1\} `.|o
:k` '\{c2\}\$+ 'Narm >d,\{c1\} ii
#`\{c2\}!p. `C , 'd+\{c1\} %'
\{c2\} !0m `6Kv
=a m+
!A !\\L|: :|L\\! \$:
.8` Q''%Q#' '#Q%''Q `0-
:6 E|.6QQu uQQ6.|E p:
i\{ \\jts9? ?9stj\\ u\\
|a` -''. `e>
,m+ \{c1\}'^ !`\{c2\}s@@@@a\{c1\}'\"`+`\{c2\} >e'
!3|\{c1\}`|=>>r- \{c2\}'U%:\{c1\} '>>>=:`\\3!
'xopE| \{c2\}`'\{c1\} `ledoz-
`;=>>+`\{c2\}`^llci/|==|/iclc;`\{c1\}'>>>>:
`^`+~ \{c2\}````\{c1\} !!-^"
}
# Logo: PNM Linux
class Logo_pnm_linux {
colors = "33 9 15 202 202 202"
art = "
\{c1\}
``.---..` `--`
``.---........-:.\{c2\}-::`\{c1\}
\{c2\}./::-\{c1\}........\{c2\}--::.````\{c1\}
\{c2\}.:://:::\{c1\}----\{c2\}::::-..\{c1\}
..\{c2\}--:::::--::::++-\{c1\}.`
\{c2\}`-:-`\{c1\} .-ohy+::\{c2\}-:::\{c1\}/sdmdd:.\{c2\} `-:-
.-:::\{c1\}...\{c3\}sNNmds\$y\{c1\}o/+\{c3\}sy+NN\$m\{c1\}d+.`\{c2\}-:::-.
`.-:-\{c1\}./\{c3\}dN\{c1\}()\{c3\}yyooosd\{c1\}()\{c3\}\$m\{c1\}dy\{c2\}-.::-.`\{c1\}
\{c2\}`.\{c1\}-...-\{c3\}+hNdyyyyyydmy\{c1\}:......\{c2\}`\{c1\}
``..--.....-\{c3\}yNNm\{c4\}hssssh\{c3\}mmdo\{c1\}.........```
`-:://:.....\{c3\}hNNNNN\{c4\}mddm\{c3\}NNNmds\{c1\}.....//::--`
```.:-...\{c3\}oNNNNNNNNNNNNNNmd/\{c1\}...:-.```
.....\{c3\}hNNNNNNNNNNNNNNmds\{c1\}....`
--...\{c3\}hNNNNNNNNNNNNNNmdo\{c1\}.....
.:...\{c3\}/NNNNNNNNNNNNNNdd\{c1\}:....`
`-...\{c3\}+mNNNNNNNNNNNmh\{c1\}:...-.
\{c4\}.:+o+/:-\{c1\}:+oo+///++o+/:-\{c4\}:/+ooo/:.
\{c4\}+oo/:o- +oooooso.`
\{c4\}.` ` `/ .-//-"
}
# Logo: Pop!_OS
class Logo_pop_os {
colors = "6 7 7 7 7 7"
art = "\{c1\} /////////////
/////////////////////
///////\{c2\}*767\{c1\}////////////////
//////\{c2\}7676767676*\{c1\}//////////////
/////\{c2\}76767\{c1\}//\{c2\}7676767\{c1\}//////////////
/////\{c2\}767676\{c1\}///\{c2\}*76767\{c1\}///////////////
///////\{c2\}767676\{c1\}///\{c2\}76767\{c1\}.///\{c2\}7676*\{c1\}///////
/////////\{c2\}767676\{c1\}//\{c2\}76767\{c1\}///\{c2\}767676\{c1\}////////
//////////\{c2\}76767676767\{c1\}////\{c2\}76767\{c1\}/////////
///////////\{c2\}76767676\{c1\}//////\{c2\}7676\{c1\}//////////
////////////,\{c2\}7676\{c1\},///////\{c2\}767\{c1\}///////////
/////////////*\{c2\}7676\{c1\}///////\{c2\}76\{c1\}////////////
///////////////\{c2\}7676\{c1\}////////////////////
///////////////\{c2\}7676\{c1\}///\{c2\}767\{c1\}////////////
//////////////////////\{c2\}'\{c1\}////////////
//////\{c2\}.7676767676767676767,\{c1\}//////
/////\{c2\}767676767676767676767\{c1\}/////
///////////////////////////
/////////////////////
/////////////"
}
# Logo: popos_small
class Logo_popos_small {
colors = "6 7 7 7 7 7"
art = "\{c1\}______
\\\\ _ \\\\ __
\\\\ \\\\ \\\\ \\\\ / /
\\\\ \\\\_\\\\ \\\\ / /
\\\\ ___\\\\ /_/
\\\\ \\\\ _
__\\\\_\\\\__(_)_
(___________)`"
}
# Logo: Porteus
class Logo_porteus {
colors = "6 7 7 7 7 7"
art = "\{c1\} `.-:::-.`
-+ydmNNNNNNNmdy+-
.+dNmdhs+//////+shdmdo.
.smmy+-` ./sdy:
`omdo. `.-/+osssso+/-` `+dy.
`yms. `:shmNmdhsoo++osyyo-``oh.
hm/ .odNmds/.` ``.....:::-+s
/m: `+dNmy:` `./oyhhhhyyooo++so
ys `yNmy- .+hmmho:-.` ```
s: yNm+` .smNd+.
`` /Nm: +dNd+`
yN+ `smNy.
dm oNNy`
hy -mNm.
+y oNNo
`y` sNN:
`: +NN:
` .mNo
/mm`
/my`
.sy`
.+:
`"
}
# Logo: PostMarketOS
class Logo_postmarketos {
colors = "2 7 7 7 7 7"
art = "\{c1\} /\\\\
/ \\\\
/ \\\\
/ \\\\
/ \\\\
/ \\\\
\\\\ \\\\
/\\\\ \\\\____ \\\\
/ \\\\____ \\\\ \\\\
/ / \\\\ \\\\
/ / \\\\ ___\\\\
/ / \\\\ / ____
/ / \\\\/ / \\\\
/ / __________/ \\\\
/ \\\\ \\\\ \\\\
/ \\\\ \\\\ \\\\
/ / / \\\\
/___________/ /____________________\\\\"
}
# Logo: postmarketos_small
class Logo_postmarketos_small {
colors = "2 7 7 7 7 7"
art = "\{c1\} /\\\\
/ \\\\
/ \\\\
\\\\__ \\\\
/\\\\__ \\\\ _\\\\
/ / \\\\/ __
/ / ____/ \\\\
/ \\\\ \\\\ \\\\
/_____/ /________\\\\"
}
# Logo: Proxmox
class Logo_proxmox {
colors = "7 202 202 202 202 202"
art = "\{c1\} .://:` `://:.
`hMMMMMMd/ /dMMMMMMh`
`sMMMMMMMd: :mMMMMMMMs`
\{c2\}`-/+oo+/:\{c1\}`.yMMMMMMMh- -hMMMMMMMy.`\{c2\}:/+oo+/-`
`:oooooooo/\{c1\}`-hMMMMMMMyyMMMMMMMh-`\{c2\}/oooooooo:`
`/oooooooo:\{c1\}`:mMMMMMMMMMMMMm:`\{c2\}:oooooooo/`
./ooooooo+-\{c1\} +NMMMMMMMMN+ \{c2\}-+ooooooo/.
.+ooooooo+-\{c1\}`oNMMMMNo`\{c2\}-+ooooooo+.
-+ooooooo/.\{c1\}`sMMs`\{c2\}./ooooooo+-
:oooooooo/\{c1\}`..`\{c2\}/oooooooo:
:oooooooo/`\{c1\}..\{c2\}`/oooooooo:
-+ooooooo/.`\{c1\}sMMs\{c2\}`./ooooooo+-
.+ooooooo+-`\{c1\}oNMMMMNo\{c2\}`-+ooooooo+.
./ooooooo+-\{c1\} +NMMMMMMMMN+ \{c2\}-+ooooooo/.
`/oooooooo:`\{c1\}:mMMMMMMMMMMMMm:\{c2\}`:oooooooo/`
`:oooooooo/`\{c1\}-hMMMMMMMyyMMMMMMMh-\{c2\}`/oooooooo:`
`-/+oo+/:`\{c1\}.yMMMMMMMh- -hMMMMMMMy.\{c2\}`:/+oo+/-`
\{c1\} `sMMMMMMMm: :dMMMMMMMs`
`hMMMMMMd/ /dMMMMMMh`
`://:` `://:`"
}
# Logo: PuffOS
class Logo_puffos {
colors = "3 3 3 3 3 3"
art = "\{c1\}
_,..._,m,
,/' '\"\";
/ \".
,'mmmMMMMmm. \\
_/-\"^^^^^\"\"\"%#%mm, ;
,m,_,' \"###) ;,
(###% \\#/ ;##mm.
^#/ __ ___ ; (######)
; //.\\\\ //.\\\\ ; \\####/
_; (#\\\"// \\\\\"/#) ; ,/
@##\\ \\##/ = `\"=\" ,;mm/
`\\##>.____,...,____,<####@"
}
# Logo: Puppy
class Logo_puppy {
colors = "4 7 7 7 7 7"
art = "\{c1\} `-/osyyyysosyhhhhhyys+-
-ohmNNmh+/hMMMMMMMMNNNNd+dMMMMNM+
yMMMMNNmmddo/NMMMNNNNNNNNNo+NNNNNy
.NNNNNNmmmddds:MMNNNNNNNNNNNh:mNNN/
-NNNdyyyhdmmmd`dNNNNNmmmmNNmdd/os/
.Nm+shddyooo+/smNNNNmmmmNh. :mmd.
NNNNy:` ./hmmmmmmmNNNN: hNMh
NMN- -++- +NNNNNNNNNNm+..-sMMMM-
.MMo oNNNNo hNNNNNNNNmhdNNNMMMMM+
.MMs /NNNN/ dNmhs+:-` yMMMMMMMM+
mMM+ .. `sNN+. hMMMMhhMMM-
+MMMmo:...:sNMMMMMms:` hMMMMm.hMMy
yMMMMMMMMMMMNdMMMMMM::/+o+//dMMd`
sMMMMMMMMMMN+:oyyo:sMMMNNMMMNy`
:mMMMMMMMMMMMmddNMMMMMMMMmh/
/dMMMMMMMMMMMMMMMMMMNdy/`
.+hNMMMMMMMMMNmdhs/.
.:/+ooo+/:-."
}
# Logo: PureOS
class Logo_pureos {
colors = "2 7 7 7 7 7"
art = "\{c1\}dmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmd
dNm//////////////////////////////////mNd
dNd dNd
dNd dNd
dNd dNd
dNd dNd
dNd dNd
dNd dNd
dNd dNd
dNd dNd
dNm//////////////////////////////////mNd
dmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmd"
}
# Logo: pureos_small
class Logo_pureos_small {
colors = "2 7 7 7 7 7"
art = "\{c1\} _____________
| _________ |
| | | |
| | | |
| |_________| |
|_____________|"
}
# Logo: Qubes
class Logo_qubes {
colors = "4 5 7 6 6 6"
art = "\{c1\} `..--..`
`.----------.`
`..----------------..`
`.------------------------.``
`..-------------....-------------..`
.::----------..`` ``..----------:+:
:////:----..` `..---:/ossso
:///////:` `/osssssso
:///////: /ssssssso
:///////: /ssssssso
:///////: /ssssssso
:///////: /ssssssso
:///////: /ssssssso
:////////-` .:sssssssso
:///////////-.` `-/osssssssssso
`//////////////:-```.:+ssssssssssssso-
.-://////////////sssssssssssssso/-`
`.:///////////sssssssssssssso:.
.-:///////ssssssssssssssssss/`
`.:////ssss+/+ssssssssssss.
`--//- `-/osssso/."
}
# Logo: Qubyt
class Logo_qubyt {
colors = "4 5 0 4 4 4"
art = "\{c1\} ########################\{c2\}(\{c3\}ooo
\{c1\} ########################\{c2\}(\{c3\}ooo
\{c1\}###\{c2\}(\{c3\}ooo \{c1\}###\{c2\}(\{c3\}ooo
\{c1\}###\{c2\}(\{c3\}ooo \{c1\}###\{c2\}(\{c3\}ooo
\{c1\}###\{c2\}(\{c3\}ooo \{c1\}###\{c2\}(\{c3\}ooo
\{c1\}###\{c2\}(\{c3\}ooo \{c1\}###\{c2\}(\{c3\}ooo
\{c1\}###\{c2\}(\{c3\}ooo \{c1\}###\{c2\}(\{c3\}ooo
\{c1\}###\{c2\}(\{c3\}ooo \{c1\}###\{c2\}(\{c3\}ooo
\{c1\}###\{c2\}(\{c3\}ooo \{c1\}##\{c3\}o \{c2\}((((\{c3\}ooo
\{c1\}###\{c2\}(\{c3\}ooo o\{c2\}((\{c1\}### \{c3\}oooooo
\{c1\}###\{c2\}(\{c3\}ooo oo\{c2\}((\{c1\}###\{c3\}o
\{c1\}###\{c2\}(\{c3\}ooo ooo\{c2\}((\{c1\}###
\{c1\}################\{c2\}(\{c3\}oo oo\{c2\}((((\{c3\}o
\{c2\}(((((((((((((((((\{c3\}ooo ooooo
oooooooooooooooooo o"
}
# Logo: Quibian
class Logo_quibian {
colors = "3 7 7 7 7 7"
art = "\{c1\} `.--::::::::--.`
`.-:::-..`` ``..-::-.`
.::::-` .\{c2\}+\{c1\}:`` `.-::.`
.::::.` -::::::-` `.::.
`-:::-` -:::::::::--..`` .::`
`::::- .\{c2\}oy\{c1\}:::::::---.```.: `::`
-:::: `.-:::::::::::-.``` `::
.::::.`-:::::::::::::. `:.
-::::.::::::::::::::: -:
::::::::::::::::::::` `:
:::::::::::::::::::- `:
::::::::::::::::::: --
.:::::::::::::::::` `:`
`::::::::::::::::: -`
.:::::::::::::::- -`
`::::::::::::::- `.`
.::::::::::::- ``
`.--:::::-."
}
# Logo: Radix
class Logo_radix {
colors = "1 2 2 2 2 2"
art = "\{c2\} .:oyhdmNo
`/yhyoosdms`
-o+/ohmmho-
..`.:/:-`
`.--:::-.``\{c1\}
.+ydNMMMMMMNmhs:`
`omMMMMMMMMMMMMMMNh-
oNMMMNmddhhyyhhhddmy.
mMMMMNmmddhhysoo+/:-`
yMMMMMMMMMMMMMMMMNNh.
-dmmmmmNNMMMMMMMMMMs`
-+oossyhmMMMMMMMMd-
`sNMMMMMMMMMMMMMm:
`yMMMMMMNmdhhhh:
`sNMMMMMNmmho.
`+mMMMMMMMy.
.yNMMMm+`
`:yd+."
}
# Logo: Raspbian
class Logo_raspbian {
colors = "2 1 1 1 1 1"
art = "\{c1\} `.::///+:/-. --///+//-:``
`+oooooooooooo: `+oooooooooooo:
/oooo++//ooooo: ooooo+//+ooooo.
`+ooooooo:-:oo- +o+::/ooooooo:
`:oooooooo+`` `.oooooooo+-
`:++ooo/. :+ooo+/.`
\{c2\}...` `.----.` ``..
.::::-``:::::::::.`-:::-`
-:::-` .:::::::-` `-:::-
`::. `.--.` `` `.---.``.::`
.::::::::` -::::::::` `
.::` .:::::::::- `::::::::::``::.
-:::` ::::::::::. ::::::::::.`:::-
:::: -::::::::. `-:::::::: ::::
-::- .-:::-.``....``.-::-. -::-
.. `` .::::::::. `..`..
-:::-` -::::::::::` .:::::`
:::::::` -::::::::::` :::::::.
.::::::: -::::::::. ::::::::
`-:::::` ..--.` ::::::.
`...` `...--..` `...`
.::::::::::
`.-::::-`"
}
# Logo: Raspbian_small
class Logo_raspbian_small {
colors = "2 1 1 1 1 1"
art = "\{c1\} .. ,.
:oo: .:oo:
'o\\\\o o/o:
\{c2\} :: . :: . ::
:: ::: ::: ::
:' '',.'' ':
::: :::: :::
':, '' ,:'
' ~::~ '"
}
# Logo: Reborn OS
class Logo_reborn_os {
colors = "2 2 8 8 8 8"
art = "\{c3\}
mMMMMMMMMM MMMMMMMMMm
NM MN
MM \{c1\}dddddddd dddddddd \{c3\}MN
mM \{c1\}dd dd \{c3\}MM
\{c1\}dd hhhhhh hhhhh dd
\{c3\}mM \{c1\}hh hh \{c3\}Mm
NM \{c1\}hd \{c3\}mMMMMMMd \{c1\}dh \{c3\}MN
NM \{c1\}dd hh \{c3\}mMMMMMMMMm \{c1\}hh dd \{c3\}MN
NM \{c1\}dd hh \{c3\}mMMMMMMMMMMm \{c1\}hh dd \{c3\}MN
NM \{c1\}dd hh \{c3\}mMMMMMMMMm \{c1\}hh dd \{c3\}MN
NM \{c1\}hd \{c3\}mMMMMMMm \{c1\}dh \{c3\}MN
mM \{c1\}hh hh \{c3\}Mm
\{c1\}dd hhhhhh hhhhhh dd
\{c3\}MM \{c1\}dd dd \{c3\}MM
MM \{c1\}dddddddd dddddddd \{c3\}MN
NM MN
mMMMMMMMMM MMMMMMMMMm"
}
# Logo: Red Star
class Logo_red_star {
colors = "1 7 3 3 3 3"
art = "\{c1\} ..
.oK0l
:0KKKKd.
.xKO0KKKKd
,Od' .d0000l
.c;. .'''... ..'.
.,:cloddxxxkkkkOOOOkkkkkkkkxxxxxxxxxkkkx:
;kOOOOOOOkxOkc'...',;;;;,,,'',;;:cllc:,.
.okkkkd,.lko .......',;:cllc:;,,'''''.
.cdo. :xd' cd:. ..';'',,,'',,;;;,'.
. .ddl.;doooc'..;oc;'..';::;,'.
coo;.oooolllllllcccc:'. .
.ool''lllllccccccc:::::;.
;lll. .':cccc:::::::;;;;'
:lcc:'',..';::::;;;;;;;,,.
:cccc::::;...';;;;;,,,,,,.
,::::::;;;,'. ..',,,,'''.
........ ......"
}
# Logo: Redcore
class Logo_redcore {
colors = "1 1 1 1 1 1"
art = "\{c1\} RRRRRRRRR
RRRRRRRRRRRRR
RRRRRRRRRR RRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRRRR RRR RRR RRRRRRRR
RRRRR RR RRRRRRRRR
RRRR RR RRRRRRRR RR RRRRRR
RRRR R RRRRRRRRRRRRRR RR RRRRR
RRRR R RRRRRRRRRRRRRRRRRR R RRRRR
RRRR RRRRRRRRRRRRRRRRRRR R RRRR
RRR RRRRRRRRRRRRRRRRRRRR R RRRR
RRR RRRRRRRRRRRRRRRRRRRR RRRR
RR RRRRRRRRRRRRRRRRRRR RRR
RR RRRRRRRRRRRRRRRRR RRR
RR RRRRRRRRRRRRRR RR
R RRRR RR"
}
# Logo: Redhat
class Logo_redhat {
colors = "1 1 1 1 1 1"
art = "\{c1\} .MMM..:MMMMMMM
MMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMM.
MMMMMMMMMMMMMMMMMMMMMM
,MMMMMMMMMMMMMMMMMMMMMM:
MMMMMMMMMMMMMMMMMMMMMMMM
.MMMM' MMMMMMMMMMMMMMMMMMMMMM
MMMMMM `MMMMMMMMMMMMMMMMMMMM.
MMMMMMMM MMMMMMMMMMMMMMMMMM .
MMMMMMMMM. `MMMMMMMMMMMMM' MM.
MMMMMMMMMMM. MMMM
`MMMMMMMMMMMMM. ,MMMMM.
`MMMMMMMMMMMMMMMMM. ,MMMMMMMM.
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM:
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
`MMMMMMMMMMMMMMMMMMMMMMMM:
``MMMMMMMMMMMMMMMMM'"
}
# Logo: redhat_old
class Logo_redhat_old {
colors = "1 7 3 3 3 3"
art = "\{c1\} `.-..........`
`////////::.`-/.
-: ....-////////.
//:-::///////////`
`--::: `-://////////////:
//////- ``.-:///////// .`
`://////:-.` :///////::///:`
.-/////////:---/////////////:
.-://////////////////////.
\{c2\} yMN+`.-\{c1\}::///////////////-`
\{c2\} .-`:NMMNMs` `..-------..`
MN+/mMMMMMhoooyysshsss
MMM MMMMMMMMMMMMMMyyddMMM+
MMMM MMMMMMMMMMMMMNdyNMMh` hyhMMM
MMMMMMMMMMMMMMMMyoNNNMMM+. MMMMMMMM
MMNMMMNNMMMMMNM+ mhsMNyyyyMNMMMMsMM"
}
# Logo: Refracted Devuan
class Logo_refracted_devuan {
colors = "8 7 7 7 7 7"
art = "\{c2\} A
VW
VVW\\\\
.yWWW\\\\
,;,,u,;yy;;v;uyyyyyyy ,WWWWW^
*WWWWWWWWWWWWWWWW/ \$VWWWWw ,
^*%WWWWWWVWWX \$WWWW** ,yy
, \"**WWW/' **' ,yy/WWW*`
&WWWWwy `*` <,ywWW%VWWW*
yWWWWWWWWWW* ., \"**WW%W
,&WWWWWM*\"` ,y/ &WWWww ^*
XWWX*^ ,yWWWW09 .WWWWWWWWwy,
*` &WWWWWM WWWWWWWWWWWWWww,
(WWWWW` /#####WWW***********
^WWWW
VWW
Wh.
V/"
}
# Logo: Regata
class Logo_regata {
colors = "7 1 4 5 3 2"
art = "\{c1\} ddhso+++++osydd
dho/.`hh\{c2\}.:/+/:.\{c1\}hhh`:+yd
do-hhhhhh\{c2\}/sssssss+`\{c1\}hhhhh./yd
h/`hhhhhhh\{c2\}-sssssssss:\{c1\}hhhhhhhh-yd
do`hhhhhhhhh\{c2\}`ossssssso.\{c1\}hhhhhhhhhh/d
d/hhhhhhhhhhhh\{c2\}`/ossso/.\{c1\}hhhhhhhhhhhh.h
/hhhhhhhhhhhh\{c3\}`-/osyso/-`\{c1\}hhhhhhhhhhhh.h
shh\{c4\}-/ooo+-\{c1\}hhh\{c3\}:syyso+osyys/`\{c1\}hhh\{c5\}`+oo`\{c1\}hhh/
h\{c4\}`ohhhhhhho`\{c3\}+yyo.\{c1\}hhhhh\{c3\}.+yyo`\{c5\}.sssssss.\{c1\}h`h
s\{c4\}:hhhhhhhhho\{c3\}yys`\{c1\}hhhhhhh\{c3\}.oyy/\{c5\}ossssssso-\{c1\}hs
s\{c4\}.yhhhhhhhy/\{c3\}yys`\{c1\}hhhhhhh\{c3\}.oyy/\{c5\}ossssssso-\{c1\}hs
hh\{c4\}./syyys+.\{c1\} \{c3\}+yy+.\{c1\}hhhhh\{c3\}.+yyo`\{c5\}.ossssso/\{c1\}h`h
shhh\{c4\}``.`\{c1\}hhh\{c3\}`/syyso++oyys/`\{c1\}hhh\{c5\}`+++-`\{c1\}hh:h
d/hhhhhhhhhhhh\{c3\}`-/osyso+-`\{c1\}hhhhhhhhhhhh.h
d/hhhhhhhhhhhh\{c6\}`/ossso/.\{c1\}hhhhhhhhhhhh.h
do`hhhhhhhhh\{c6\}`ossssssso.\{c1\}hhhhhhhhhh:h
h/`hhhhhhh\{c6\}-sssssssss:\{c1\}hhhhhhhh-yd
h+.hhhhhh\{c6\}+sssssss+\{c1\}hhhhhh`/yd
dho:.hhh\{c6\}.:+++/.\{c1\}hhh`-+yd
ddhso+++++osyhd"
}
# Logo: Regolith
class Logo_regolith {
colors = "1 1 1 1 1 1"
art = "\{c1\}
``....```
`.:/++++++/::-.`
-/+++++++:.`
-++++++++:`
`/++++++++-
`/++++++++. -/+/
/++++++++/ `` .:+++:.
-+++++++++/ ./++++:+++/-`
:+++++++++/ `+++++++/-`
:++++++++++` .-/+++++++`
`:++++++++++/``.-/++++:-:::-` `
`:+++++++++++++++++/:.` ./`
:++/-:+++++++++/:-.. -/+.
+++++++++/::-...:/+++/-..````..-/+++.
`......``.::/+++++++++++++++++++++/.
-/+++++++++++++++++++++/.
.:/+++++++++++++++/-`
`.-:://////:-."
}
# Logo: rocky
class Logo_rocky {
colors = "35 35 35 35 35 35"
art = "\{c1\} __wgliliiligw_,
_williiiiiiliilililw,
_%iiiiiilililiiiiiiiiiii_
.Qliiiililiiiiiiililililiilm.
_iiiiiliiiiiililiiiiiiiiiiliil,
.lililiiilililiiiilililililiiiii,
_liiiiiiliiiiiiiliiiiiF\{iiiiiilili,
jliililiiilililiiili@` ~ililiiiiiL
iiiliiiiliiiiiiili>` ~liililii
liliiiliiilililii` -9liiiil
iiiiiliiliiiiii~ \"4lili
4ililiiiiilil~| -w, )4lf
-liiiiililiF' _liig, )'
)iiiliii@` _QIililig,
)iiii>` .Qliliiiililw
)<>~ .mliiiiiliiiiiil,
_gllilililiililii~
giliiiiiiiiiiiiT`
-^~\$ililili@~~'"
}
# Logo: rocky_small
class Logo_rocky_small {
colors = "2 2 2 2 2 2"
art = "\{c1\} `-/+++++++++/-.`
`-+++++++++++++++++-`
.+++++++++++++++++++++.
-+++++++++++++++++++++++.
+++++++++++++++/-/+++++++
+++++++++++++/. ./+++++
+++++++++++:. ./+++
+++++++++:` `:/:` .:/
-++++++:` .:+++++:`
.+++-` ./+++++++++:`
`-` ./+++++++++++-
-+++++++++:-.`"
}
# Logo: Rosa
class Logo_rosa {
colors = "4 7 1 1 1 1"
art = "\{c1\} ROSAROSAROSAROSAR
ROSA AROS
ROS SAROSAROSAROSAR AROS
RO ROSAROSAROSAROSAROSAR RO
ARO AROSAROSAROSARO AROS ROS
ARO ROSAROS OSAR ROSA ROS
RO AROSA ROSAROSAROSA ROSAR RO
RO ROSAR ROSAROSAROSAR R ROSARO RO
RO ROSA AROSAROSAROSA AR ROSARO AR
RO AROS ROSAROSAROSA ROS AROSARO AR
RO AROS ROSAROSARO ROSARO ROSARO AR
RO ROS AROSAROS ROSAROSA AROSAR AR
RO ROSA ROS ROSAROSAR ROSARO RO
RO ROS AROSAROSAROSA ROSARO AR
ARO ROSA ROSAROSAROS AROSAR ARO
ARO OROSA R ROSAROS ROS
RO AROSAROS AROSAROSAR RO
AROS AROSAROSAROSARO AROS
ROSA SARO
ROSAROSAROSAROSAR"
}
# Logo: Sabayon
class Logo_sabayon {
colors = "4 7 1 1 1 1"
art = "\{c1\} ...........
.. ..
.. ..
.. \{c2\}o \{c1\}..
.. \{c2\}:W' \{c1\}..
.. \{c2\}.d. \{c1\}..
:. \{c2\}.KNO \{c1\}.:
:. \{c2\}cNNN. \{c1\}.:
: \{c2\}dXXX, \{c1\}:
: \{c2\}. dXXX, .cd, \{c1\}:
: \{c2\}'kc .. dKKK. ,ll;:' \{c1\}:
: \{c2\}.xkkxc;..dkkkc',cxkkl \{c1\}:
:. \{c2\}.,cdddddddddddddo:. \{c1\}.:
.. \{c2\}:lllllll: \{c1\}..
.. \{c2\}',,,,, \{c1\}..
.. ..
.. ..
..............."
}
# Logo: sabotage
class Logo_sabotage {
colors = "4 7 1 1 1 1"
art = "\{c2\} .|'''.| | '||''|. ..|''||
||.. ' ||| || || .|' ||
''|||. | || ||'''|. || ||
. '|| .''''|. || || '|. ||
|'....|' .|. .||. .||...|' ''|...|'
|''||''| | ..|'''.| '||''''|
|| ||| .|' ' || .
|| | || || .... ||''|
|| .''''|. '|. || ||
.||. .|. .||. ''|...'| .||.....|"
}
# Logo: Sailfish
class Logo_sailfish {
colors = "4 5 7 6 6 6"
art = "\{c1\} _a@b
_#b (b
_@@ @_ _,
_#^@ _#*^^*gg,aa@^^
#- @@^ _a@^^
@_ *g#b
^@_ ^@_
^@_ @
@(b (b
#b(b#^
_@_#@^
_a@a*^
,a@*^"
}
# Logo: SalentOS
class Logo_salentos {
colors = "2 1 3 7 7 7"
art = "\{c1\} ``..``
.-:+oshdNMMMMMMNdhyo+:-.`
-oydmMMMMMMMMMMMMMMMMMMMMMMMMMMNdhs/
\{c4\} +hdddm\{c1\}NMMMMMMMMMMMMMMMMMMMMMMMMN\{c4\}mdddh+`
\{c2\}`MMMMMN\{c4\}mdddddm\{c1\}MMMMMMMMMMMM\{c4\}mdddddm\{c3\}NMMMMM-
\{c2\} mMMMMMMMMMMMN\{c4\}ddddhyyhhddd\{c3\}NMMMMMMMMMMMM`
\{c2\} dMMMMMMMMMMMMMMMMM\{c4\}oo\{c3\}MMMMMMMMMMMMMMMMMN`
\{c2\} yMMMMMMMMMMMMMMMMM\{c4\}hh\{c3\}MMMMMMMMMMMMMMMMMd
\{c2\} +MMMMMMMMMMMMMMMMM\{c4\}hh\{c3\}MMMMMMMMMMMMMMMMMy
\{c2\} :MMMMMMMMMMMMMMMMM\{c4\}hh\{c3\}MMMMMMMMMMMMMMMMMo
\{c2\} .MMMMMMMMMMMMMMMMM\{c4\}hh\{c3\}MMMMMMMMMMMMMMMMM/
\{c2\} `NMMMMMMMMMMMMMMMM\{c4\}hh\{c3\}MMMMMMMMMMMMMMMMM-
\{c2\} mMMMMMMMMMMMMMMMM\{c4\}hh\{c3\}MMMMMMMMMMMMMMMMN`
\{c2\} hMMMMMMMMMMMMMMMM\{c4\}hh\{c3\}MMMMMMMMMMMMMMMMm
\{c2\} /MMMMMMMMMMMMMMMM\{c4\}hh\{c3\}MMMMMMMMMMMMMMMMy
\{c2\} .+hMMMMMMMMMMMMM\{c4\}hh\{c3\}MMMMMMMMMMMMMms:
\{c2\} `:smMMMMMMMMM\{c4\}hh\{c3\}MMMMMMMMMNh+.
\{c2\} .+hMMMMMM\{c4\}hh\{c3\}MMMMMMdo:
\{c2\} `:smMM\{c4\}yy\{c3\}MMNy/`
\{c2\}.- \{c4\}`\{c3\}:."
}
# Logo: Scientific
class Logo_scientific {
colors = "4 7 1 1 1 1"
art = "\{c1\} =/;;/-
+: //
/; /;
-X H.
.//;;;:;;-, X= :+ .-;:=;:;#;.
M- ,=;;;#:, ,:#;;:=, ,@
:# :#.=/++++/=.\$= #=
,#; #/:+/;,,/++:+/ ;+.
,+/. ,;@+, ,#H;, ,/+,
;+;;/= @. \{c3\}.H\{c2\}#\{c3\}#X \{c1\}-X :///+;
;+=;;;.@, \{c2\}.X\{c3\}M\{c2\}@\$. \{c1\}=X.//;=#/.
,;: :@#= =\$H: .+#-
,#= #;-///==///-// =#,
;+ :#-;;;:;;;;-X- +:
@- .-;;;;M- =M/;;;-. -X
:;;::;;-. #- :+ ,-;;-;:==
,X H.
;/ #=
// +;
'////'"
}
# Logo: semc
class Logo_semc {
colors = "2 8 1 1 1 1"
art = "\{c1\} /\\
______/ \\
/ |()| \{c2\}E M C
\{c1\} | (-- | |
\\ \\ | |
.----) | |__|
|_______/ / \{c3\}\"\{c1\} \\
\{c3\}\"
\""
}
# Logo: Septor
class Logo_septor {
colors = "4 7 4 4 4 4"
art = "\{c1\}ssssssssssssssssssssssssssssssssssssssss
ssssssssssssssssssssssssssssssssssssssss
ssssssssssssssssssssssssssssssssssssssss
ssssssssssssssssssssssssssssssssssssssss
ssssssssss\{c2\};okOOOOOOOOOOOOOOko;\{c1\}ssssssssss
sssssssss\{c2\}oNWWWWWWWWWWWWWWWWWWNo\{c1\}sssssssss
ssssssss\{c2\}:WWWWWWWWWWWWWWWWWWWWWW:\{c1\}ssssssss
ssssssss\{c2\}lWWWWWk\{c1\}ssssssssss\{c2\}lddddd:\{c1\}ssssssss
ssssssss\{c2\}cWWWWWNKKKKKKKKKKKKOx:\{c1\}ssssssssss
\{c3\}yy\{c1\}sssssss\{c2\}OWWWWWWWWWWWWWWWWWWWWx\{c1\}sssssss\{c3\}yy
yyyyyyyyyy\{c2\}:kKNNNNNNNNNNNNWWWWWW:\{c3\}yyyyyyyy
yyyyyyyy\{c2\}sccccc;\{c3\}yyyyyyyyyy\{c2\}kWWWWW:\{c3\}yyyyyyyy
yyyyyyyy\{c2\}:WWWWWWNNNNNNNNNNWWWWWW;\{c3\}yyyyyyyy
yyyyyyyy\{c2\}.dWWWWWWWWWWWWWWWWWWWNd\{c3\}yyyyyyyyy
yyyyyyyyyy\{c2\}sdO0KKKKKKKKKKKK0Od;\{c3\}yyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
}
# Logo: Serene
class Logo_serene {
colors = "6 6 6 6 6 6"
art = "\{c1\} __---''''''---__
. .
: :
- _______----_-
s __----''' __----
__h_ _-' _-' h
'-._''--.._ ; _-' y
: ''-._ '-._/ _-' :
y ':_ _--'' y
m .--'' '-._.;' m
m : : m
y '.._ '-__ y
: '--._ '''----___ :
y '--._ ''-- _ y
h '--._ : h
s __'; vs
- __..--'' -
:_..--'' :
. _ .
`''---______---''-``"
}
# Logo: SharkLinux
class Logo_sharklinux {
colors = "4 7 7 7 7 7"
art = "\{c1\} `:shd/
`:yNMMMMs
`-smMMMMMMN.
.+dNMMMMMMMMs
.smNNMMMMMMMMm`
.sNNNNNNNMMMMMM/
`omNNNNNNNMMMMMMm
/dNNNNNNNNMMMMMMM+
.yNNNNNNNNNMMMMMMMN`
+mNNNNNNNNNMMMMMMMMh
.hNNNNNNNNNNMMMMMMMMMs
+mMNNNNNNNNMMMMMMMMMMMs
.hNMMNNNNMMMMMMMMMMMMMMMd
.oNNNNNNNNNNMMMMMMMMMMMMMMMo
`:+syyssoo++++ooooossssssssssso:"
}
# Logo: Siduction
class Logo_siduction {
colors = "4 4 4 4 4 4"
art = "\{c1\} _aass,
jQh: =\$w
QWmwawQW
)\$QQQQ@( ..
_a_a. ~??^ syDY?Sa,
_mW>-<\$c jWmi imm.
]QQwayQE 4QQmgwmQQ`
?WWQWP' -9QQQQQ@'._aas,
_a%is. .adYYs,. -\"?!` aQB*~^3\$c
_Qh;.nm .QWc. \{QL ]QQp;..vmQ/
\"QQmmQ@ -QQQggmQP ]QQWmggmQQ(
-???\" \"\$WQQQY` __, ?QQQQQQW!
_yZ!?q, - .yWY!!Sw, \"???^
.QQa_=qQ mQm>..vmm
\$QQWQQP \$QQQgmQQ@
\"???\" _aa, -9WWQQWY`
_mB>~)\$a -~~
mQms_vmQ.
]WQQQQQP
-?T??\""
}
# Logo: SkiffOS
class Logo_skiffos {
colors = "4 7 7 7 7 7"
art = "\{c2\}
,@@@@@@@@@@@w,_
\{c2\}====~~~,,.\{c2\}A@@@@@@@@@@@@@@@@@W,_
\{c1\}`||||||||||||||L\{\{c2\}\"@\$@@@@@@@@B\"
\{c1\}`|||||||||||||||||||||L\{\{c2\}\"\$D
\{c2\}@@@@@@@@@@@@@@@@@@@@@\{c1\}_||||\}==,
\{c2\}*@@@@@@@@@@@@@@@@@@@@@@@@@p\{c1\}||||==,
\{c1\}`'||LLL\{\{\"\"\{c2\}@\$B@@@@@@@@@@@@@@@p\{c1\}||
\{c1\}`~=|||||||||||L\"\{c2\}\$@@@@@@@@@@@
\{c1\}````'\"\"\"\"\"\"\"\{c2\}'\"\"\"\"\"\"\"\""
}
# Logo: Slackware
class Logo_slackware {
colors = "4 7 1 1 1 1"
art = "\{c1\} :::::::
:::::::::::::::::::
:::::::::::::::::::::::::
::::::::\{c2\}cllcccccllllllll\{c1\}::::::
:::::::::\{c2\}lc dc\{c1\}:::::::
::::::::\{c2\}cl clllccllll oc\{c1\}:::::::::
:::::::::\{c2\}o lc\{c1\}::::::::\{c2\}co oc\{c1\}::::::::::
::::::::::\{c2\}o cccclc\{c1\}:::::\{c2\}clcc\{c1\}::::::::::::
:::::::::::\{c2\}lc cclccclc\{c1\}:::::::::::::
::::::::::::::\{c2\}lcclcc lc\{c1\}::::::::::::
::::::::::\{c2\}cclcc\{c1\}:::::\{c2\}lccclc oc\{c1\}:::::::::::
::::::::::\{c2\}o l\{c1\}::::::::::\{c2\}l lc\{c1\}:::::::::::
:::::\{c2\}cll\{c1\}:\{c2\}o clcllcccll o\{c1\}:::::::::::
:::::\{c2\}occ\{c1\}:\{c2\}o clc\{c1\}:::::::::::
::::\{c2\}ocl\{c1\}:\{c2\}ccslclccclclccclclc\{c1\}:::::::::::::
:::\{c2\}oclcccccccccccccllllllllllllll\{c1\}:::::
::\{c2\}lcc1lcccccccccccccccccccccccco\{c1\}::::
::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::
::::::::::::::::::::::
::::::::::::"
}
# Logo: slackware_small
class Logo_slackware_small {
colors = "4 7 1 1 1 1"
art = "\{c1\} ________
/ ______|
| |______
\\\\______ \\\\
______| |
| |________/
|____________"
}
# Logo: SliTaz
class Logo_slitaz {
colors = "3 3 3 3 3 3"
art = "\{c1\} @ @( @
@@ @@ @ @/
@@ @@ @@ @@
@@ %@@ @@ @@
@@ %@@@ @@@@@. @@@@ @@
@@@ @@@@ @@@@@@@ &@@@ @@@
@@@@@@@ %@@@@@@@@@@@@ &@@@% @@@@@@@/
,@@@@@@@@@@@@@@@@@@@@@@@@@
.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/
@@@@@@. @@@@@@@@@@@@@@@@@@@@@ /@@@@@@
@@ @@@@@ @@@@@@@@@@@@, @@@@@ @@@
@@ @@@@. @@@@@@@@@@@@@% #@@@@ @@.
@@ ,@@ @@@@@@@@@@@@@ @@@ @@
@ @@. @@@@@@@@@@@@@ @@@ *@
@ @@ @@@@@@@@@@@@ @@ @
@ @@@@@@@@@. #@
@ ,@@@@@ @"
}
# Logo: SmartOS
class Logo_smartos {
colors = "6 7 7 7 7 7"
art = "\{c1\}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyys oyyyyyyyyyyyyyyyy
yyyys yyyyyyyyy oyyyyyyyyyyyyyyyy
yyyys yyyyyyyyy oyyyyyyyyyyyyyyyy
yyyys yyyyyyyyy oyyyyyyyyyyyyyyyy
yyyys yyyyyyyyy oyyyyyyyyyyyyyyyy
yyyys yyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyy syyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyy syyyy
yyyyyyyyyyyyyyyy syyyyyyyyy syyyy
yyyyyyyyyyyyyyyy oyyyyyyyyy syyyy
yyyyyyyyyyyyyyyy oyyyyyyyyy syyyy
yyyyyyyyyyyyyyyy syyyyyyyyy syyyy
yyyyyyyyyyyyyyyy yyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
}
# Logo: Solus
class Logo_solus {
colors = "4 7 1 1 1 1"
art = "\{c2\} -```````````
`-+/------------.`
.---:mNo---------------.
.-----yMMMy:---------------.
`------oMMMMMm/----------------`
.------/MMMMMMMN+----------------.
.------/NMMMMMMMMm-+/--------------.
`------/NMMMMMMMMMN-:mh/-------------`
.-----/NMMMMMMMMMMM:-+MMd//oso/:-----.
-----/NMMMMMMMMMMMM+--mMMMh::smMmyo:--
----+NMMMMMMMMMMMMMo--yMMMMNo-:yMMMMd/.
.--oMMMMMMMMMMMMMMMy--yMMMMMMh:-yMMMy-`
`-sMMMMMMMMMMMMMMMMh--dMMMMMMMd:/Ny+y.
`-/+osyhhdmmNNMMMMMm-/MMMMMMMmh+/ohm+
.------------:://+-/++++++\{c1\}oshddys:
-hhhhyyyyyyyyyyyhhhhddddhysssso-
`:ossssssyysssssssssssssssso:`
`:+ssssssssssssssssssss+-
`-/+ssssssssssso+/-`
`.-----..`"
}
# Logo: Source Mage
class Logo_source_mage {
colors = "4 7 1 1 1 1"
art = "\{c2\} :ymNMNho.
.+sdmNMMMMMMMMMMy`
.-::/yMMMMMMMMMMMm-
sMMMMMMMMMMMm/
/NMMMMMMMMMMMMMm:
.MMMMMMMMMMMMMMMMM:
`MMMMMMMMMMMMMMMMMN.
NMMMMMMMMMMMMMMMMMd
mMMMMMMMMMMMMMMMMMMo
hhMMMMMMMMMMMMMMMMMM.
.`/MMMMMMMMMMMMMMMMMs
:mMMMMMMMMMMMMMMMN`
`sMMMMMMMMMMMMMMM+
/NMMMMMMMMMMMMMN`
oMMMMMMMMMMMMM+
./sd.-hMMMMMMMMmmN`
./+oyyyh- `MMMMMMMMMmNh
sMMMMMMMMMmmo
`NMMMMMMMMMd:
-dMMMMMMMMMo
-shmNMMms."
}
# Logo: Sparky
class Logo_sparky {
colors = "1 7 7 7 7 7"
art = "\{c1\}
. `-:-`
.o` .-///-`
`oo` .:/++:.
os+` -/+++:` ``.........```
/ys+`./+++/-.-::::::----......``
`syyo`++o+--::::-::/+++/-``
-yyy+.+o+`:/:-:sdmmmmmmmmdy+-`
::-` :yyy/-oo.-+/`ymho++++++oyhdmdy/`
`/yy+-`.syyo`+o..o--h..osyhhddhs+//osyy/`
-ydhs+-oyy/.+o.-: ` ` :/::+ydhy+```-os-
.sdddy::syo--/:. `.:dy+-ohhho ./:
:yddds/:+oo+//:-`- /+ +hy+.shhy: ``
`:ydmmdysooooooo-.ss`/yss--oyyo
`./ossyyyyo+:-/oo:.osso- .oys
``..-------::////.-oooo/ :so
`...----::::::::--.`/oooo: .o:
``````` ++o+:` `:`
./+/-` `
`-:-.
``"
}
# Logo: Star
class Logo_star {
colors = "7 7 7 7 7 7"
art = "\{c1\} ./
`yy-
`y.`y`
`` s- .y `
+h//:..` +/ /o ``..:/so
/o``.-::/:/+ o/://::-.`+o`
:s` `. .` `s/
.y. .s-
`y- :s`
.-//. /+:.
.:/:. .:/:.
-+o:. .:+:.
-///++///:::` .-::::///+so-
``..o/ d-....```
s. `/. d
h .+o-+o- h.
h -o/` `/o: s:
-s/o:` `:o/+/
/s- -yo"
}
# Logo: SteamOS
class Logo_steamos {
colors = "5 7 7 7 7 7"
art = "\{c1\} .,,,,.
.,'onNMMMMMNNnn',.
.'oNMANKMMMMMMMMMMMNNn'.
.'ANMMMMMMMXKNNWWWPFFWNNMNn.
;NNMMMMMMMMMMNWW'' ,.., 'WMMM,
;NMMMMV+##+VNWWW' .+;'':+, 'WMW,
,VNNWP+\{c2\}######\{c1\}+WW, \{c2\}+: \{c1\}:+, +MMM,
'\{c2\}+#############, +. ,+' \{c1\}+NMMM
\{c2\} '*#########*' '*,,*' \{c1\}.+NMMMM.
\{c2\} `'*###*' ,.,;###\{c1\}+WNM,
\{c2\} .,;;, .;##########\{c1\}+W
\{c2\},',. '; ,+##############'
'###+. :,. .,; ,###############'
'####.. `'' .,###############'
'#####+++################'
'*##################*'
''*##########*''
''''''"
}
# Logo: SunOS
class Logo_sunos {
colors = "3 7 7 7 7 7"
art = "\{c1\} `- `
`-- `+- .:
.+: `++: -/+- .
`.::` -++/``:::`./+/ `.-/.
`++/-`.` ` /++:`
`` ./:` .: `..`.-
``./+/:- -+++:-
-/+` :."
}
# Logo: sunos_small
class Logo_sunos_small {
colors = "3 7 7 7 7 7"
art = "\{c1\} . .; .
. :; :: ;: .
.;. .. .. .;.
.. .. .. ..
.;, ,;."
}
# Logo: SwagArch
class Logo_swagarch {
colors = "4 7 1 1 1 1"
art = "\{c2\} .;ldkOKXXNNNNXXK0Oxoc,.
,lkXMMNK0OkkxkkOKWMMMMMMMMMM;
'K0xo ..,;:c:. `'lKMMMMM0
.lONMMMMMM' `lNMk'
\{c2\} ;WMMMMMMMMMO. \{c1\}....::...
\{c2\} OMMMMMMMMMMMMKl. \{c1\}.,;;;;;ccccccc,
\{c2\} `0MMMMMMMMMMMMMM0: \{c1\}.. .ccccccc.
\{c2\} 'kWMMMMMMMMMMMMMNo. \{c1\}.,:' .ccccccc.
\{c2\} `c0MMMMMMMMMMMMMN,\{c1\},:c; :cccccc:
\{c2\} ckl. `lXMMMMMMMMMX\{c1\}occcc:.. ;ccccccc.
\{c2\}dMMMMXd, `OMMMMMMWk\{c1\}ccc;:''` ,ccccccc:
\{c2\}XMMMMMMMWKkxxOWMMMMMNo\{c1\}ccc; .cccccccc.
\{c2\} `':ldxO0KXXXXXK0Okdo\{c1\}cccc. :cccccccc.
:ccc:' `cccccccc:,
''"
}
# Logo: t2
class Logo_t2 {
colors = "7 4 4 4 4 4"
art = "\{c2\}
TTTTTTTTTT
tt \{c1\}222\{c2\}
tt \{c1\}2 2\{c2\}
tt \{c1\}2\{c2\}
tt \{c1\}2\{c2\}
tt \{c1\}22222\{c2\}"
}
# Logo: Tails
class Logo_tails {
colors = "5 7 7 7 7 7"
art = "\{c1\} ``
./yhNh
syy/Nshh `:o/
N:dsNshh █ `ohNMMd
N-/+Nshh `yMMMMd
N-yhMshh yMMMMd
N-s:hshh █ yMMMMd so//.
N-oyNsyh yMMMMd d Mms.
N:hohhhd:. yMMMMd syMMM+
Nsyh+-..+y+- yMMMMd :mMM+
+hy- -ss/`yMMMM `+d+
:sy/. ./yNMMMMm ``
.+ys- `:+hNMMMMMMy/`
`hNmmMMMMMMMMMMMMdo.
dMMMMMMMMMMMMMMMMMNh:
+hMMMMMMMMMMMMMMMMMmy.
-oNMMMMMMMMMMmy+.`
`:yNMMMds/.`
.//`"
}
# Logo: TeArch
class Logo_tearch {
colors = "39 7 1 1 1 1"
art = "\{c1\} @@@@@@@@@@@@@@
@@@@@@@@@ @@@@@@
@@@@@ @@@@@
@@ @@
@% @@
@ @
@@@@@@@@@@@@@@@@@@@@@@@@ @@
.@@@@@@@@@@@@/@@@@@@@@@@@@
@@@@@@@@@@@@///@@@@@@@@@@@@
@@@@@@@@@@@@@((((@@@@@@@@@@@@
@@@@@@@@@@@#(((((((#@@@@@@@@@@@
@@@@@@@@@@@#//////////@@@@@@@@@@&
@@@@@@@@@@////@@@@@////@@@@@@@@@@
@@@@@@@@//////@@@@@/////@@@@@@@@@
@@@@@@@//@@@@@@@@@@@@@@@//@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ .@@@@@@@@@@@@@@@@@@@@@@@@@ @
@@@@@@ @@@. @@@@@@@
@@@@@@@&@@@@@@@# #@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@"
}
# Logo: Trisquel
class Logo_trisquel {
colors = "4 6 6 6 6 6"
art = "\{c1\} ▄▄▄▄▄▄
▄█████████▄
▄▄▄▄▄▄ ████▀ ▀████
▄██████████▄ ████▀ ▄▄ ▀███
▄███▀▀ ▀▀████ ███▄ ▄█ ███
▄███ ▄▄▄ ████▄ ▀██████ ▄███
███ █▀▀██▄ █████▄ ▀▀ ▄████
▀███ ███ ███████▄▄ ▄▄██████
\{c1\} ▀███▄ ▄███ █████████████\{c2\}████▀
\{c1\} ▀█████████ ███████\{c2\}███▀▀▀
▀▀███▀▀ ██████▀▀
██████▀ ▄▄▄▄
█████▀ ████████
█████ ███▀ ▀███
████▄ ██▄▄▄ ███
█████▄ ▀▀ ▄██
██████▄▄▄████
▀▀█████▀▀"
}
# Logo: Ubuntu
class Logo_ubuntu {
colors = "1 7 3 3 3 3"
art = "\{c1\} .-/+oossssoo+\\-.
´:+ssssssssssssssssss+:`
-+ssssssssssssssssssyyssss+-
.ossssssssssssssssss\{c2\}dMMMNy\{c1\}sssso.
/sssssssssss\{c2\}hdmmNNmmyNMMMMh\{c1\}ssssss\\
+sssssssss\{c2\}hm\{c1\}yd\{c2\}MMMMMMMNddddy\{c1\}ssssssss+
/ssssssss\{c2\}hNMMM\{c1\}yh\{c2\}hyyyyhmNMMMNh\{c1\}ssssssss\\
.ssssssss\{c2\}dMMMNh\{c1\}ssssssssss\{c2\}hNMMMd\{c1\}ssssssss.
+ssss\{c2\}hhhyNMMNy\{c1\}ssssssssssss\{c2\}yNMMMy\{c1\}sssssss+
oss\{c2\}yNMMMNyMMh\{c1\}ssssssssssssss\{c2\}hmmmh\{c1\}ssssssso
oss\{c2\}yNMMMNyMMh\{c1\}sssssssssssssshmmmh\{c1\}ssssssso
+ssss\{c2\}hhhyNMMNy\{c1\}ssssssssssss\{c2\}yNMMMy\{c1\}sssssss+
.ssssssss\{c2\}dMMMNh\{c1\}ssssssssss\{c2\}hNMMMd\{c1\}ssssssss.
\\ssssssss\{c2\}hNMMM\{c1\}yh\{c2\}hyyyyhdNMMMNh\{c1\}ssssssss/
+sssssssss\{c2\}dm\{c1\}yd\{c2\}MMMMMMMMddddy\{c1\}ssssssss+
\\sssssssssss\{c2\}hdmNNNNmyNMMMMh\{c1\}ssssss/
.ossssssssssssssssss\{c2\}dMMMNy\{c1\}sssso.
-+sssssssssssssssss\{c2\}yyy\{c1\}ssss+-
`:+ssssssssssssssssss+:`
.-\\+oossssoo+/-."
}
# Logo: Ubuntu Budgie
class Logo_ubuntu_budgie {
colors = "4 7 1 1 1 1"
art = "\{c2\} ./oydmMMMMMMmdyo/.
:smMMMMMMMMMMMhs+:++yhs:
`omMMMMMMMMMMMN+` `odo`
/NMMMMMMMMMMMMN- `sN/
`hMMMMmhhmMMMMMMh sMh`
.mMmo- /yMMMMm` `MMm.
mN/ yMMMMMMMd- MMMm
oN- oMMMMMMMMMms+//+o+: :MMMMo
m/ +NMMMMMMMMMMMMMMMMm. :NMMMMm
M` .NMMMMMMMMMMMMMMMNodMMMMMMM
M- sMMMMMMMMMMMMMMMMMMMMMMMMM
mm` mMMMMMMMMMNdhhdNMMMMMMMMMm
oMm/ .dMMMMMMMMh: :dMMMMMMMo
mMMNyo/:/sdMMMMMMMMM+ sMMMMMm
.mMMMMMMMMMMMMMMMMMs `NMMMm.
`hMMMMMMMMMMM.oo+. `MMMh`
/NMMMMMMMMMo sMN/
`omMMMMMMMMy. :dmo`
:smMMMMMMMh+-` `.:ohs:
./oydmMMMMMMdhyo/."
}
# Logo: Ubuntu Cinnamon
class Logo_ubuntu_cinnamon {
colors = "1 7 7 7 7 7"
art = "\{c1\} .-/+oooooooo+/-.
`:+oooooooooooooooooo+:`
-+oooooooooooooooooooooooo+-
.ooooooooooooooooooo\{c2\}:ohNd\{c1\}oooooo.
/oooooooooooo\{c2\}:/+oo++:/ohNd\{c1\}ooooooo/
+oooooooooo\{c2\}:osNdhyyhdNNh+:+\{c1\}oooooooo+
/ooooooooo\{c2\}/dN/\{c1\}ooooooooo\{c2\}/sNNo\{c1\}ooooooooo/
.ooooooooo\{c2\}oMd:\{c1\}oooooooooooo\{c2\}:yMy\{c1\}ooooooooo.
+ooooo\{c2\}:+o/Md\{c1\}oooooo\{c2\}:sm/\{c1\}oo/ooo\{c2\}yMo\{c1\}oooooooo+
ooo\{c2\}:sdMdosMo\{c1\}ooooo\{c2\}oNMd\{c1\}//\{c2\}dMd+\{c1\}o\{c2\}:so\{c1\}ooooooooo
oooo\{c2\}+ymdosMo\{c1\}ooo\{c2\}+mMm\{c1\}+/\{c2\}hMMMMMh+hs\{c1\}ooooooooo
+oooooo\{c2\}:\{c1\}:\{c2\}/Nm:\{c1\}/\{c2\}hMNo\{c1\}:y\{c2\}MMMMMMMMMM+\{c1\}oooooooo+
.ooooooooo\{c2\}/NNMNy\{c1\}:o\{c2\}NMMMMMMMMMMo\{c1\}ooooooooo.
/oooooooooo\{c2\}:yh:\{c1\}+m\{c2\}MMMMMMMMMMd/\{c1\}ooooooooo/
+oooooooooo\{c2\}+\{c1\}/h\{c2\}mMMMMMMNds//o\{c1\}oooooooo+
/oooooooooooo\{c2\}+:////:o/ymMd\{c1\}ooooooo/
.oooooooooooooooooooo\{c2\}/sdh\{c1\}oooooo.
-+oooooooooooooooooooooooo+-
`:+oooooooooooooooooo+:`
.-/+oooooooo+/-."
}
# Logo: Ubuntu-GNOME
class Logo_ubuntu_gnome {
colors = "4 5 7 6 6 6"
art = "\{c3\} ./o.
.oooooooo
.oooo```soooo
.oooo` `soooo
.ooo` \{c4\}.o.\{c3\} `\\/ooo.
:ooo \{c4\}:oooo.\{c3\} `\\/ooo.
sooo \{c4\}`ooooo\{c3\} \\/oooo
\\/ooo \{c4\}`soooo\{c3\} `ooooo
`soooo \{c4\}`\\/ooo\{c3\} `soooo
\{c4\}./oo \{c3\}`\\/ooo \{c4\}`/oooo.\{c3\} `/ooo
\{c4\}`\\/ooo. \{c3\}`/oooo. \{c4\}`/oooo.\{c3\} ``
\{c4\} `\\/ooo. \{c3\}/oooo \{c4\}/ooo`
\{c4\} `ooooo \{c3\}`` \{c4\}.oooo
\{c4\} `soooo. .oooo`
`\\/oooooooooo`
``\\/oo``"
}
# Logo: Ubuntu MATE
class Logo_ubuntu_mate {
colors = "2 7 7 7 7 7"
art = "\{c1\} .:/+oossssoo+/:.`
`:+ssssssssssssssssss+:`
-+sssssssssssssss\{c2\}y\{c1\}ssssssss+-
.osssssssssssss\{c2\}yy\{c1\}ss\{c2\}mMmh\{c1\}ssssssso.
/sssssssss\{c2\}ydmNNNmmd\{c1\}s\{c2\}mMMMMNdy\{c1\}sssss/
`+ssssssss\{c2\}hNNdy\{c1\}sssssss\{c2\}mMMMMNdy\{c1\}ssssss+`
+sssssss\{c2\}yNNh\{c1\}ss\{c2\}hmNNNNm\{c1\}s\{c2\}mMmh\{c1\}s\{c2\}ydy\{c1\}sssssss+
-sssss\{c2\}y\{c1\}ss\{c2\}Nm\{c1\}ss\{c2\}hNNh\{c1\}ssssss\{c2\}y\{c1\}s\{c2\}hh\{c1\}ss\{c2\}mMy\{c1\}sssssss-
+ssss\{c2\}yMNdy\{c1\}ss\{c2\}hMd\{c1\}ssssssssss\{c2\}hMd\{c1\}ss\{c2\}NN\{c1\}sssssss+
sssss\{c2\}yMMMMMmh\{c1\}sssssssssssss\{c2\}NM\{c1\}ss\{c2\}dMy\{c1\}sssssss
sssss\{c2\}yMMMMMmhy\{c1\}ssssssssssss\{c2\}NM\{c1\}ss\{c2\}dMy\{c1\}sssssss
+ssss\{c2\}yMNdy\{c1\}ss\{c2\}hMd\{c1\}ssssssssss\{c2\}hMd\{c1\}ss\{c2\}NN\{c1\}sssssss+
-sssss\{c2\}y\{c1\}ss\{c2\}Nm\{c1\}ss\{c2\}hNNh\{c1\}ssssssss\{c2\}dh\{c1\}ss\{c2\}mMy\{c1\}sssssss-
+sssssss\{c2\}yNNh\{c1\}ss\{c2\}hmNNNNm\{c1\}s\{c2\}mNmh\{c1\}s\{c2\}ymy\{c1\}sssssss+
+ssssssss\{c2\}hNNdy\{c1\}sssssss\{c2\}mMMMMmhy\{c1\}ssssss+
/sssssssss\{c2\}ydmNNNNmd\{c1\}s\{c2\}mMMMMNdh\{c1\}sssss/
.osssssssssssss\{c2\}yy\{c1\}ss\{c2\}mMmdy\{c1\}sssssso.
-+sssssssssssssss\{c2\}y\{c1\}ssssssss+-
`:+ssssssssssssssssss+:`
.:/+oossssoo+/:."
}
# Logo: ubuntu_old
class Logo_ubuntu_old {
colors = "1 7 3 3 3 3"
art = "\{c1\} ./+o+-
\{c2\} yyyyy- \{c1\}-yyyyyy+
\{c2\} \{c2\}://+//////\{c1\}-yyyyyyo
\{c3\} .++ \{c2\}.:/++++++/-\{c1\}.+sss/`
\{c3\} .:++o: \{c2\}/++++++++/:--:/-
\{c3\} o:+o+:++.\{c2\}`..```.-/oo+++++/
\{c3\} .:+o:+o/.\{c2\} `+sssoo+/
\{c2\} .++/+:\{c3\}+oo+o:`\{c2\} /sssooo.
\{c2\}/+++//+:\{c3\}`oo+o\{c2\} /::--:.
\{c2\}+/+o+++\{c3\}`o++o\{c1\} ++////.
\{c2\} .++.o+\{c3\}++oo+:`\{c1\} /dddhhh.
\{c3\} .+.o+oo:.\{c1\} `oddhhhh+
\{c3\} +.++o+o`\{c1\}`-````.:ohdhhhhh+
\{c3\} `:o+++ \{c1\}`ohhhhhhhhyo++os:
\{c3\} .o:\{c1\}`.syhhhhhhh/\{c3\}.oo++o`
\{c1\} /osyyyyyyo\{c3\}++ooo+++/
\{c1\} ````` \{c3\}+oo+++o:
\{c3\} `oo++."
}
# Logo: ubuntu_small
class Logo_ubuntu_small {
colors = "1 7 3 3 3 3"
art = "\{c1\} _
---(_)
_/ --- \\\\
(_) | |
\\\\ --- _/
---(_)"
}
# Logo: Ubuntu Studio
class Logo_ubuntu_studio {
colors = "6 7 7 7 7 7"
art = "\{c1\} ..-::::::-.`
`.:+++++++++++\{c2\}ooo\{c1\}++:.`
./+++++++++++++\{c2\}sMMMNdyo\{c1\}+/.
.++++++++++++++++\{c2\}oyhmMMMMms\{c1\}++.
`/+++++++++\{c2\}osyhddddhys\{c1\}+\{c2\}osdMMMh\{c1\}++/`
`+++++++++\{c2\}ydMMMMNNNMMMMNds\{c1\}+\{c2\}oyyo\{c1\}++++`
+++++++++\{c2\}dMMNhso\{c1\}++++\{c2\}oydNMMmo\{c1\}++++++++`
:+\{c2\}odmy\{c1\}+++\{c2\}ooysoohmNMMNmyoohMMNs\{c1\}+++++++:
++\{c2\}dMMm\{c1\}+\{c2\}oNMd\{c1\}++\{c2\}yMMMmhhmMMNs+yMMNo\{c1\}+++++++
`++\{c2\}NMMy\{c1\}+\{c2\}hMMd\{c1\}+\{c2\}oMMMs\{c1\}++++\{c2\}sMMN\{c1\}++\{c2\}NMMs\{c1\}+++++++.
`++\{c2\}NMMy\{c1\}+\{c2\}hMMd\{c1\}+\{c2\}oMMMo\{c1\}++++\{c2\}sMMN\{c1\}++\{c2\}mMMs\{c1\}+++++++.
++\{c2\}dMMd\{c1\}+\{c2\}oNMm\{c1\}++\{c2\}yMMNdhhdMMMs\{c1\}+y\{c2\}MMNo\{c1\}+++++++
:+\{c2\}odmy\{c1\}++\{c2\}oo\{c1\}+\{c2\}ss\{c1\}+\{c2\}ohNMMMMmho\{c1\}+\{c2\}yMMMs\{c1\}+++++++:
+++++++++\{c2\}hMMmhs+ooo+oshNMMms\{c1\}++++++++
`++++++++\{c2\}oymMMMMNmmNMMMMmy+oys\{c1\}+++++`
`/+++++++++\{c2\}oyhdmmmmdhso+sdMMMs\{c1\}++/
./+++++++++++++++\{c2\}oyhdNMMMms\{c1\}++.
./+++++++++++++\{c2\}hMMMNdyo\{c1\}+/.
`.:+++++++++++\{c2\}sso\{c1\}++:.
..-::::::-.."
}
# Logo: Univention
class Logo_univention {
colors = "1 7 7 7 7 7"
art = "\{c1\} ./osssssssssssssssssssssso+-
`ohhhhhhhhhhhhhhhhhhhhhhhhhhhhy:
shhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh-
`-//\{c2\}sssss\{c1\}/hhhhhhhhhhhhhh+\{c2\}s\{c1\}.hhhhhhhhh+
.ohhhy\{c2\}sssss\{c1\}.hhhhhhhhhhhhhh.\{c2\}sss\{c1\}+hhhhhhh+
.yhhhhy\{c2\}sssss\{c1\}.hhhhhhhhhhhhhh.\{c2\}ssss\{c1\}:hhhhhh+
+hhhhhy\{c2\}sssss\{c1\}.hhhhhhhhhhhhhh.\{c2\}sssss\{c1\}yhhhhh+
+hhhhhy\{c2\}sssss\{c1\}.hhhhhhhhhhhhhh.\{c2\}sssss\{c1\}yhhhhh+
+hhhhhy\{c2\}sssss\{c1\}.hhhhhhhhhhhhhh.\{c2\}sssss\{c1\}yhhhhh+
+hhhhhy\{c2\}sssss\{c1\}.hhhhhhhhhhhhhh.\{c2\}sssss\{c1\}yhhhhh+
+hhhhhy\{c2\}sssss\{c1\}.hhhhhhhhhhhhhh.\{c2\}sssss\{c1\}yhhhhh+
+hhhhhy\{c2\}sssss\{c1\}.hhhhhhhhhhhhhh.\{c2\}sssss\{c1\}yhhhhh+
+hhhhhy\{c2\}sssss\{c1\}.hhhhhhhhhhhhhh.\{c2\}sssss\{c1\}yhhhhh+
+hhhhhy\{c2\}ssssss\{c1\}+yhhhhhhhhhhy/\{c2\}ssssss\{c1\}yhhhhh+
+hhhhhh:\{c2\}sssssss\{c1\}:hhhhhhh+\{c2\}.ssssssss\{c1\}yhhhhy.
+hhhhhhh+`\{c2\}ssssssssssssssss\{c1\}hh\{c2\}sssss\{c1\}yhhho`
+hhhhhhhhhs+\{c2\}ssssssssssss\{c1\}+hh+\{c2\}sssss\{c1\}/:-`
-hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhho
:yhhhhhhhhhhhhhhhhhhhhhhhhhhhh+`
-+ossssssssssssssssssssss+:`"
}
# Logo: Venom
class Logo_venom {
colors = "8 4 4 4 4 4"
art = "\{c1\} ::::::: :::::::
mMMMMMMm dMMMMMMm
/MMMMMMMo +MMMMMMM/
yMMMMMMN mMMMMMMy
NMMMMMMs oMMMMMMm
+MMMMMMN: NMMMMMM+
hMMMMMMy sMMMMMMy
:NMMMMMM::NMMMMMN:
oMMMMMMyyMMMMMM+
dMMMMMMMMMMMMh
/MMMMMMMMMMMN:
sMMMMMMMMMMo
mMMMMMMMMd
+MMMMMMMN:
::::::"
}
# Logo: VNux
class Logo_vnux {
colors = "11 8 15 1 7 7"
art = "\{c1\} `
^[XOx~.
^_nwdbbkp0ti'
<vJCZw0LQ0Uj>
\{c2\} _j>!vC1,,
\{c4\},\{c2\} ,CY\{c3\}O\{c2\}t\{c3\}O\{c2\}1(l;\"
`\{c4\}~-\{r(1I\{c2\} ^\{c1\}/zmwJuc:\{c2\}I^
'\{c4\}?)|\{c1\}U\{c4\}/\}-\{c2\} ^\{c3\}f\{c1\}OCLLOw\{c3\}_\{c2\},;
,\{c4\}i,``. \{c2\}\",\{c3\}k%ooW@\$d\"\{c2\}I,'
' ;^\{c3\}u\$\$\$\$\$\$\$\$^<\{c2\}:^
` .>>\{c3\}(\$\$\{c5\}\$@@@@\$\$\{c3\}\$nl\{c2\}[::
`!\}?\{c3\}B\$\{c5\}%&WMMW&%\$\{c3\}\$1\}-\{c2\}\}\":
^?j\{c3\}Z\$\{c5\}WMMWWWWMMW\$\{c3\}ofc\{c2\};;`
<~x&\{c3\}\$\{c5\}&MWWWWWWWWp\{c3\}-\{c5\}l>[<
\{c1\} 'ljmwn\{c2\}~tk8\{c5\}MWWWWM8O\{c2\}X\{c1\}r\{c2\}+]nC\{c1\}[
!JZqwwdX\{c2\}:^C8\{c5\}#MMMM@\{c2\}X\{c1\}Odpdpq0<
<wwwwmmpO\{c2\}1\{c3\}0@%%%%8\{c2\}d\{c1\}nqmwmqqqJl
?QOZmqqqpb\{c2\}t[run/?!\{c1\}0pwqqQj-,
^:l<\{nUUv> ^x00J(\"
^\""
}
# Logo: Void
class Logo_void {
colors = "2 8 8 8 8 8"
art = "\{c1\} __.;=====;.__
_.=+==++=++=+=+===;.
-=+++=+===+=+=+++++=_
. -=:`` `--==+=++==.
_vi, ` --+=++++:
.uvnvi. _._ -==+==+.
.vvnvnI` .;==|==;. :|=||=|.
\{c2\}+QmQQm\{c1\}pvvnv; \{c2\}_yYsyQQWUUQQQm #QmQ#\{c1\}:\{c2\}QQQWUV\$QQm.
\{c2\} -QQWQW\{c1\}pvvo\{c2\}wZ?.wQQQE\{c1\}==<\{c2\}QWWQ/QWQW.QQWW\{c1\}(: \{c2\}jQWQE
\{c2\} -\$QQQQmmU' jQQQ@\{c1\}+=<\{c2\}QWQQ)mQQQ.mQQQC\{c1\}+;\{c2\}jWQQ@'
\{c2\} -\$WQ8Y\{c1\}nI: \{c2\}QWQQwgQQWV\{c1\}`\{c2\}mWQQ.jQWQQgyyWW@!
\{c1\} -1vvnvv. `~+++` ++|+++
+vnvnnv, `-|===
+vnvnvns. . :=-
-Invnvvnsi..___..=sv=. `
+Invnvnvnnnnnnnnvvnn;.
~|Invnvnvvnvvvnnv\}+`
-~|\{*l\}*|~"
}
# Logo: void_small
class Logo_void_small {
colors = "2 8 8 8 8 8"
art = "\{c1\} _______
_ \\\\______ -
| \\\\ ___ \\\\ |
| | / \\ | |
| | \\___/ | |
| \\\\______ \\\\_|
-_______\\\\"
}
# Logo: Windows
class Logo_windows {
colors = "1 2 4 3 3 3"
art = "\{c1\} ,.=:!!t3Z3z.,
:tt:::tt333EE3
\{c1\} Et:::ztt33EEEL\{c2\} @Ee., ..,
\{c1\} ;tt:::tt333EE7\{c2\} ;EEEEEEttttt33#
\{c1\} :Et:::zt333EEQ.\{c2\} \$EEEEEttttt33QL
\{c1\} it::::tt333EEF\{c2\} @EEEEEEttttt33F
\{c1\} ;3=*^```\"*4EEV\{c2\} :EEEEEEttttt33@.
\{c3\} ,.=::::!t=., \{c1\}`\{c2\} @EEEEEEtttz33QF
\{c3\} ;::::::::zt33)\{c2\} \"4EEEtttji3P*
\{c3\} :t::::::::tt33.\{c4\}:Z3z..\{c2\} ``\{c4\} ,..g.
\{c3\} i::::::::zt33F\{c4\} AEEEtttt::::ztF
\{c3\} ;:::::::::t33V\{c4\} ;EEEttttt::::t3
\{c3\} E::::::::zt33L\{c4\} @EEEtttt::::z3F
\{c3\}\{3=*^```\"*4E3)\{c4\} ;EEEtttt:::::tZ`
\{c3\} `\{c4\} :EEEEtttt::::z7
\"VEzjt:;;z>*`"
}
# Logo: Windows 10
class Logo_windows_10 {
colors = "6 7 7 7 7 7"
art = "\{c1\} ..,
....,,:;+ccllll
...,,+:; cllllllllllllllllll
,cclllllllllll lllllllllllllllllll
llllllllllllll lllllllllllllllllll
llllllllllllll lllllllllllllllllll
llllllllllllll lllllllllllllllllll
llllllllllllll lllllllllllllllllll
llllllllllllll lllllllllllllllllll
llllllllllllll lllllllllllllllllll
llllllllllllll lllllllllllllllllll
llllllllllllll lllllllllllllllllll
llllllllllllll lllllllllllllllllll
llllllllllllll lllllllllllllllllll
`'ccllllllllll lllllllllllllllllll
`' \\\\*:: :ccllllllllllllllll
````''*::cll
``"
}
# Logo: Windows 11
class Logo_windows_11 {
colors = "6 7 7 7 7 7"
art = "\{c1\}
################ ################
################ ################
################ ################
################ ################
################ ################
################ ################
################ ################
################ ################
################ ################
################ ################
################ ################
################ ################
################ ################
################ ################"
}
# Logo: XFerience
class Logo_xferience {
colors = "6 6 7 1 1 1"
art = "\{c1\} ``--:::::::-.`
.-/+++ooooooooo+++:-`
`-/+oooooooooooooooooo++:.
-/+oooooo/+ooooooooo+/ooo++:`
`/+oo++oo. .+oooooo+.-: +:-o+-
`/+o/. -o. :oooooo+ ```:.+oo+-
`:+oo- -/` :oooooo+ .`-`+oooo/.
.+ooo+. .` `://///+-+..oooooo+:`
-+ooo:` ``.-+oooooo+/`
-+oo/` :+oooo/.
.+oo: ..-/. . -+oo+/`
`/++- -:::++::/. -+oo+-
./o: `:///+- `./ooo+:`
.++- `` /-` -:/+oooo+:`
.:+/:`` `-:ooooooo++-
./+o+//:...../+oooooooo++:`
`:/++ooooooooooooo++/-`
`.-//++++++//:-.`
``````"
}
# Logo: Ximper
class Logo_ximper {
colors = "21 57 92 128"
art = "\{c1\}⠀⠀⠀⠀⡹⣶⣄⡀⠀⠀⠀⠀⠀⠀\{c2\}⠀⠀⠀⠀⠀⠀\{c3\}⠀⠀⠀⠀\{c4\}⠀⠀⠀⠀⣠⣶⠏⡀⠀⠀⠀
\{c1\}⠀⠀⠀⠀⣷⡘⣿⣿⣶⣤⣀⠀⠀⠀\{c2\}⠀⠀⠀⠀⠀⠀\{c3\}⠀⠀⠀⠀\{c4\}⢀⣠⣶⣿⣿⢋⣼⠁⠀⠀⠀
\{c1\}⠀⠀⠀⠀⣿⣷⡌⢿⣿⣿⣿⣷⣦⣄\{c2\}⠀⠀⠀⠀⠀⠀\{c3\}⠀⣠⣴⣾\{c4\}⣿⣿⣿⡿⢃⣾⣿⠀⠀⠀⠀
\{c1\}⠀⠀⠀⠀⣿⣿⣿⣎⢻⣿⣿⣿⣿⣿\{c2\}⣿⣶⡄⠀⢠⣶\{c3\}⣿⣿⣿⣿\{c4\}⣿⣿⡟⢡⣿⣿⣿⠀⠀⠀⠀
\{c1\}⠀⠀⠀⠀⢸⣿⣿⣿⣦⠻⣿⣿⣿⣿\{c2\}⠟⣩⣾⡇⣷⣍\{c3\}⠻⣿⣿⣿\{c4\}⣿⠟⣰⣿⣿⣿⡏⠀⠀⠀⠀
\{c1\}⠀⠀⠀⠀⠸⠟⣛⣋⣭⣦⡙⣿⢟⣵\{c2\}⣿⣿⣿⠇⣿⣿\{c3\}⣷⣬⡛⢿\{c4\}⢏⣴⣬⣝⣛⡻⠇⠀⠀⠀⠀
\{c1\}⠀⠀⠀⠀⣠⣍⠻⠟⠛⠉⠁⠀⠻⣿\{c2\}⣿⣿⣿⠤⣿⣿\{c3\}⣿⣿⠟⠀\{c4\}⠈⠉⠛⠻⠟⣫⣤⠀⠀⠀⠀
\{c1\}⠀⠀⢀⣼⡿⡋⣠⠠⡀⠀⠀⠀⠀⠈\{c2\}⢛⣫⡇⣤⠨⣝\{c3\}⡛⠁⠀⠀\{c4\}⠀⠀⣀⡄⣤⠙⠿⣧⡀⠀⠀
\{c1\}⠀⢀⠞⣡⠞⣼⣿⣧⢹⣶⡄⣤⣶⣾\{c2\}⣿⠋⣼⣿⣧⠙\{c3\}⣿⣷⣶⣄\{c4\}⢠⣾⡟⣼⣿⣧⠳⣌⠳⡀⠀
\{c1\}⢀⣡⠾⢋⣾⣿⠿⣋⣤⢻⡇⢿⣿⡟\{c2\}⣱⠑⠟⠛⠻⠂\{c3\}⣎⢻⣿⣿\{c4\}⢸⡟⣠⣙⠿⣿⣷⡙⠷⣌⠀
\{c1\}⠀⠀⢠⡾⢟⣡⣾⣿⣿⣆⠇⢸⢋⣾\{c2\}⣿⣷⣄⠀⣠⣴\{c3\}⣿⣷⡹⣿\{c4\}⠸⣰⣿⣿⣷⣌⡛⢷⡄⠀⠀
\{c1\}⠀⠐⣫⣴⣿⠿⠿⠿⠿⠛⠂⠰⢿⣿\{c2\}⣿⠟⠁⠀⠈⠛\{c3\}⢿⣿⣿⠆\{c4\}⠐⠛⠻⠿⠿⠿⣿⣦⣍⠀⠀
\{c1\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉\{c2\}⠀⠀⠀⠀⠀⠀\{c3\}⠀⠉⠀⠀\{c4\}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
"
}
# Logo: Xubuntu
class Logo_xubuntu {
colors = "4 7 1 1 1 1"
art = "\{c1\} `.:/ossyyyysso/:.
`.yyyyyyyyyyyyyyyyyyyy.`
`yyyyyyyyyyyyyyyyyyyyyyyyyy`
`yyyyyyyyyyyyyyyyyyyy\{c2\}::\{c1\}yyyyyyyy`
.yyyyyyyyyyy\{c2\}/+:\{c1\}yyyyyyy\{c2\}ds\{c1\}yyy\{c2\}+y\{c1\}yyyy.
yyyyyyy\{c2\}:o/\{c1\}yy\{c2\}dMMM+\{c1\}yyyyy\{c2\}/M+\{c1\}y\{c2\}:hM+\{c1\}yyyyyy
yyyyyyy\{c2\}+MMMy\{c1\}y\{c2\}mMMMh\{c1\}yyyyy\{c2\}yM::mM+\{c1\}yyyyyyyy
`yyyyyyy\{c2\}+MMMMysMMMd\{c1\}yyyyy\{c2\}dh:mN+\{c1\}yyyyyyyyy`
yyyyyyyy\{c2\}:NMMMMmMMMMmmdhyy+/y:\{c1\}yyyyyyyyyyy
yyyyyyyy\{c2\}+MMMMMMMMMMMMMMMMMMNho:\{c1\}yyyyyyyyy
yyyyyyyy\{c2\}mMMMMMMMMMMMMMMMMMMMMMMy\{c1\}yyyyyyyy
yyyyyyy\{c2\}+MMMMMMMMMMMMMMMMMMMMMMMM/\{c1\}yyyyyyy
`yyyyyy\{c2\}sMMMMMMMMMMMMMMMMMMMMMMmo\{c1\}yyyyyyy`
yyyyyy\{c2\}oMMMMMMMMMMMMMMMMMMMmy+\{c1\}yyyyyyyyy
yyyyy\{c2\}:mMMMMMMMMMMMMMMNho/\{c1\}yyyyyyyyyyy
.yyyy\{c2\}:yNMMMMMMMNdyo:\{c1\}yyyyyyyyyyyyy.
`yyyyyy\{c2\}:/++/::\{c1\}yyyyyyyyyyyyyyyyy`
`yyyyyyyyyyyyyyyyyyyyyyyyyy`
`.yyyyyyyyyyyyyyyyyyyy.`
`.:/oosyyyysso/:.`"
}
# Logo: Zorin
class Logo_zorin {
colors = "4 7 7 7 7 7"
art = "\{c1\} ./ohmNd/ +dNmho/-
`:+ydNMMMMMMMM.-MMMMMMMMMdyo:.
`hMMMMMMNhs/sMMM-:MMM+/shNMMMMMMh`
-NMMMMMmo-` /MMM-/MMM- `-omMMMMMN.
`.`-+hNMMMMMNhyMMM-/MMMshmMMMMMmy+...`
+mMNds:-:sdNMMMMMMMyyMMMMMMMNdo:.:sdMMm+
dMMMMMMmy+.-/ymNMMMMMMMMNmy/-.+hmMMMMMMd
oMMMMmMMMMNds:.+MMMmmMMN/.-odNMMMMmMMMM+
.MMMM-/ymMMMMMmNMMy..hMMNmMMMMMmy/-MMMM.
hMMM/ `/dMMMMMMMN////NMMMMMMMd/. /MMMh
/MMMdhmMMMmyyMMMMMMMMMMMMhymMMMmhdMMM:
`mMMMMNho//sdMMMMM//NMMMMms//ohNMMMMd
`/so/:+ymMMMNMMMM` mMMMMMMMmh+::+o/`
`yNMMNho-yMMMM` NMMMm.+hNMMNh`
-MMMMd: oMMMM. NMMMh :hMMMM-
-yNMMMmooMMMM- NMMMyomMMMNy-
.omMMMMMMMM-`NMMMMMMMmo.
`:hMMMMMM. NMMMMMh/`
.odNm+ /dNms."
}
# neofetch-ct: main.ct
# Entry point — argument parsing, print_info, output management
func parse_args (cfg: Config, cli_args) {
# Parse command-line arguments into Config
# args is a string of all arguments
arg_list = cli_args.split (" ")
i = 0
while i < arg_list.len () {
arg = arg_list.get (i)
when arg {
"--title_fqdn" { i = i + 1; cfg.title_fqdn = arg_list.get (i) }
"--package_managers" { i = i + 1; cfg.package_managers = arg_list.get (i) }
"--os_arch" { i = i + 1; cfg.os_arch = arg_list.get (i) }
"--cpu_cores" { i = i + 1; cfg.cpu_cores = arg_list.get (i) }
"--cpu_speed" { i = i + 1; cfg.cpu_speed = arg_list.get (i) }
"--speed_type" { i = i + 1; cfg.speed_type = arg_list.get (i) }
"--distro_shorthand" { i = i + 1; cfg.distro_shorthand = arg_list.get (i) }
"--kernel_shorthand" { i = i + 1; cfg.kernel_shorthand = arg_list.get (i) }
"--uptime_shorthand" { i = i + 1; cfg.uptime_shorthand = arg_list.get (i) }
"--cpu_brand" { i = i + 1; cfg.cpu_brand = arg_list.get (i) }
"--gpu_brand" { i = i + 1; cfg.gpu_brand = arg_list.get (i) }
"--gpu_type" { i = i + 1; cfg.gpu_type = arg_list.get (i) }
"--refresh_rate" { i = i + 1; cfg.refresh_rate = arg_list.get (i) }
"--de_version" { i = i + 1; cfg.de_version = arg_list.get (i) }
"--shell_path" { i = i + 1; cfg.shell_path = arg_list.get (i) }
"--shell_version" { i = i + 1; cfg.shell_version = arg_list.get (i) }
"--ip_host" { i = i + 1; cfg.public_ip_host = arg_list.get (i) }
"--ip_timeout" { i = i + 1; cfg.public_ip_timeout = arg_list.get (i) }
"--song_format" { i = i + 1; cfg.song_format = arg_list.get (i) }
"--music_player" { i = i + 1; cfg.music_player = arg_list.get (i) }
"--memory_percent" { i = i + 1; cfg.memory_percent = arg_list.get (i) }
"--memory_unit" { i = i + 1; cfg.memory_unit = arg_list.get (i) }
"--cpu_temp" { i = i + 1; cfg.cpu_temp = arg_list.get (i) }
"--disk_subtitle" { i = i + 1; cfg.disk_subtitle = arg_list.get (i) }
"--disk_percent" { i = i + 1; cfg.disk_percent = arg_list.get (i) }
# Text formatting
"--underline" { i = i + 1; cfg.underline_enabled = arg_list.get (i) }
"--underline_char" { i = i + 1; cfg.underline_char = arg_list.get (i) }
"--bold" { i = i + 1; cfg.bold = arg_list.get (i) }
"--separator" { i = i + 1; cfg.separator = arg_list.get (i) }
# Color blocks
"--color_blocks" { i = i + 1; cfg.color_blocks = arg_list.get (i) }
"--block_range" {
i = i + 1; cfg.block_range_start = arg_list.get (i)
i = i + 1; cfg.block_range_end = arg_list.get (i)
}
"--block_width" { i = i + 1; cfg.block_width = arg_list.get (i) }
"--block_height" { i = i + 1; cfg.block_height = arg_list.get (i) }
"--col_offset" { i = i + 1; cfg.col_offset = arg_list.get (i) }
# Bars
"--bar_char" {
i = i + 1; cfg.bar_char_elapsed = arg_list.get (i)
i = i + 1; cfg.bar_char_total = arg_list.get (i)
}
"--bar_border" { i = i + 1; cfg.bar_border = arg_list.get (i) }
"--bar_length" { i = i + 1; cfg.bar_length = arg_list.get (i) }
# Display modes
"--memory_display" { i = i + 1; cfg.memory_display = arg_list.get (i) }
"--battery_display" { i = i + 1; cfg.battery_display = arg_list.get (i) }
"--disk_display" { i = i + 1; cfg.disk_display = arg_list.get (i) }
# Image backend
"--backend" { i = i + 1; cfg.image_backend = arg_list.get (i) }
"--source" { i = i + 1; cfg.image_source = arg_list.get (i) }
"--ascii" { cfg.image_backend = "ascii" }
"--off" { cfg.image_backend = "off" }
"--kitty" { cfg.image_backend = "kitty" }
"--sixel" { cfg.image_backend = "sixel" }
"--w3m" { cfg.image_backend = "w3m" }
"--catimg" { cfg.image_backend = "catimg" }
"--chafa" { cfg.image_backend = "chafa" }
"--jp2a" { cfg.image_backend = "jp2a" }
"--viu" { cfg.image_backend = "viu" }
"--iterm2" { cfg.image_backend = "iterm2" }
"--tycat" { cfg.image_backend = "tycat" }
"--pixterm" { cfg.image_backend = "pixterm" }
"--caca" { cfg.image_backend = "caca" }
# ASCII options
"--ascii_distro" { i = i + 1; cfg.ascii_distro = arg_list.get (i) }
"--ascii_bold" { i = i + 1; cfg.ascii_bold = arg_list.get (i) }
# Image options
"--loop" { cfg.image_loop = "on" }
"--image_size" { i = i + 1; cfg.image_size = arg_list.get (i) }
"--crop_mode" { i = i + 1; cfg.crop_mode = arg_list.get (i) }
"--crop_offset" { i = i + 1; cfg.crop_offset = arg_list.get (i) }
"--gap" { i = i + 1; cfg.gap = arg_list.get (i) }
"--xoffset" { i = i + 1; cfg.xoffset = arg_list.get (i) }
"--yoffset" { i = i + 1; cfg.yoffset = arg_list.get (i) }
"--bg_color" { i = i + 1; cfg.background_color = arg_list.get (i) }
# Misc
"--stdout" { cfg.stdout = "on" }
"--color_text" { i = i + 1; cfg.color_text = arg_list.get (i) }
"-v" { cfg.verbose = "on" }
"--verbose" { cfg.verbose = "on" }
"-L" {
cfg.image_backend = "ascii"
}
"--logo" {
cfg.image_backend = "ascii"
}
"--version" {
print ("neofetch " .. cfg.version)
exit (0)
}
"--help" {
print_help ()
exit (0)
}
}
i = i + 1
}
}
func print_help () {
help_text = "Usage: neofetch --option \"value\" --option \"value\"
Neofetch is a CLI system information tool written in ContenT.
Neofetch displays information about your system next to an image,
your OS logo, or any ASCII file of your choice.
INFO:
--title_fqdn on/off Enable/Disable FQDN hostname
--os_arch on/off Show/Hide OS Architecture
--cpu_brand on/off Enable/Disable CPU brand
--cpu_speed on/off Enable/Disable CPU speed
--cpu_cores logical/physical Show CPU cores
--cpu_temp C/F/off CPU temperature
--gpu_brand on/off Enable/Disable GPU brand
--gpu_type all/dedicated/integrated
--shell_path on/off Show/Hide shell path
--shell_version on/off Show/Hide shell version
--memory_percent on/off Show memory percentage
--memory_unit kib/mib/gib Memory output unit
--disk_percent on/off Show disk percentage
--music_player player Manually set music player
--de_version on/off Show DE version
TEXT FORMATTING:
--underline on/off Enable/Disable underline
--underline_char char Character for underline
--bold on/off Enable/Disable bold text
--separator string Separator between subtitle and info
COLOR BLOCKS:
--color_blocks on/off Enable/Disable color blocks
--block_range start end Range of colors to print
--block_width num Width of color blocks
--block_height num Height of color blocks
IMAGE BACKEND:
--backend backend Which backend to use
--ascii Use ASCII art
--off Disable image
--kitty Use kitty backend
--sixel Use sixel backend
--w3m Use w3m backend
--ascii_distro distro Which distro's logo to use
--ascii_bold on/off Bold ASCII art
OTHER:
--stdout Turn off all colors/formatting
--version Show version
--help Show this help
-v, --verbose Verbose output
"
print (help_text)
}
func print_info (sys_info: SystemInfo, display: Display, cfg: Config) {
# Title
display.print_title (sys_info.user, sys_info.hostname, cfg)
# Calculate underline length
title_len = sys_info.user .. "@" .. sys_info.hostname
display.last_length = title_len.len ()
# Underline
display.print_underline (cfg)
# System info
if sys_info.distro != "" {
display.prin ("OS", sys_info.distro, cfg)
}
if sys_info.model != "" {
display.prin ("Host", sys_info.model, cfg)
}
if sys_info.kernel != "" {
display.prin ("Kernel", sys_info.kernel, cfg)
}
if sys_info.uptime != "" {
display.prin ("Uptime", sys_info.uptime, cfg)
}
if sys_info.packages != "" {
display.prin ("Packages", sys_info.packages, cfg)
}
if sys_info.shell != "" {
display.prin ("Shell", sys_info.shell, cfg)
}
if sys_info.resolution != "" {
display.prin ("Resolution", sys_info.resolution, cfg)
}
de_str = sys_info.get_de_string (cfg)
if de_str != "" {
display.prin ("DE", de_str, cfg)
}
if sys_info.wm != "" {
display.prin ("WM", sys_info.wm, cfg)
}
if sys_info.wm_theme != "" {
display.prin ("WM Theme", sys_info.wm_theme, cfg)
}
if sys_info.theme != "" {
display.prin ("Theme", sys_info.theme, cfg)
}
if sys_info.icons != "" {
display.prin ("Icons", sys_info.icons, cfg)
}
if sys_info.term != "" {
display.prin ("Terminal", sys_info.term, cfg)
}
if sys_info.term_font != "" {
display.prin ("Terminal Font", sys_info.term_font, cfg)
}
if sys_info.cpu != "" {
display.prin ("CPU", sys_info.cpu, cfg)
}
if sys_info.gpu != "" {
display.prin ("GPU", sys_info.gpu, cfg)
}
if sys_info.memory != "" {
display.prin ("Memory", sys_info.memory, cfg)
}
# Print line break before color blocks
display.print_line_break ()
# Color blocks
display.print_cols (cfg)
}
func print_ascii_with_info (ascii_art: AsciiArt, sys_info: SystemInfo, display: Display, cfg: Config) {
art = ascii_art.ascii_data
# Enable buffer mode — print_info will collect lines in display.info_buffer
display.buffer_mode = "on"
display.info_buffer = ""
print_info (sys_info, display, cfg)
display.buffer_mode = "off"
info_data = display.info_buffer
# Write art and info to temp files for interleaving
tmp_id = env.PPID
art_file = "/tmp/.neofetch_ct_art_" .. tmp_id
info_file = "/tmp/.neofetch_ct_info_" .. tmp_id
# Escape backticks to prevent command substitution inside sh -c
art_safe = art.replace ("`", "\\`")
info_safe = info_data.replace ("`", "\\`")
sh ("-c", "printf '%b\\n' \"{art_safe}\" > \"{art_file}\"")
sh ("-c", "printf '%b\\n' \"{info_safe}\" > \"{info_file}\"")
# Get art width for padding (strip actual ESC bytes from printf %b output)
art_width = sed ("s/\\x1b\\[[0-9;]*m//g", art_file) | awk ("\{ if (length > max) max = length \} END \{ print max+0 \}")
art_width = trim (art_width)
if art_width == "" || art_width == "0" {
art_width = "40"
}
gap = cfg.gap
total_pad = art_width + gap
# Pad art file with empty lines if info has more lines
_m_art_lines = cat (art_file) | wc ("-l")
_m_art_lines = trim (_m_art_lines)
_m_info_lines = cat (info_file) | wc ("-l")
_m_info_lines = trim (_m_info_lines)
_m_pad_diff = _m_info_lines - _m_art_lines
if _m_pad_diff > 0 {
sh ("-c", "for _i in $(seq 1 {_m_pad_diff}); do echo '' >> \"{art_file}\"; done")
}
# Interleave art and info side by side using cursor positioning
# \033[{total_pad}G moves cursor to absolute column — works regardless of ANSI codes width
sh ("-c", "paste -d '' <(awk '\{printf \"%s\\033[{total_pad}G\\n\", $0\}' \"{art_file}\") \"{info_file}\" | while IFS= read -r line; do printf '%b\\n' \"$line\"; done")
# Cleanup
fs.remove (art_file)
fs.remove (info_file)
}
# === Entry point ===
cfg = new Config ()
display = new Display ()
sys_info = new SystemInfo ()
ascii_art = new AsciiArt ()
img_backend = new ImageBackend ()
# Parse args via args module
argc = args.count ()
all_args = ""
for i in range (0, argc) {
arg_val = args.get (i)
if all_args != "" {
all_args = all_args .. " " .. arg_val
} else {
all_args = arg_val
}
}
parse_args (cfg, all_args)
# Verbose mode
if cfg.verbose != "on" {
sh ("-c", "exec 2>/dev/null")
}
# Setup bold
display.set_bold (cfg)
# Detect system info
sys_info.detect_all (cfg)
# Stdout mode
if cfg.stdout == "on" {
display.stdout_mode ()
cfg.color_blocks = "off"
print_info (sys_info, display, cfg)
exit (0)
}
# Hide cursor and disable line wrap
print ("\\e[?25l\\e[?7l")
# Ensure cursor is restored on exit
trap ("printf '\\e[?25h\\e[?7h'", "EXIT")
# Load ASCII art
ascii_art.load (sys_info.distro, cfg, display)
# Handle image backend
if cfg.image_backend == "ascii" || cfg.image_backend == "off" {
if cfg.image_backend == "ascii" {
# Print with ASCII art
print_ascii_with_info (ascii_art, sys_info, display, cfg)
} else {
# Off mode — just print info
print_info (sys_info, display, cfg)
}
} else {
# Image backend mode
img_backend.init (cfg)
if img_backend.image != "" {
img_backend.make_thumbnail (cfg)
text_pad = img_backend.get_text_padding (cfg)
display.text_padding = text_pad
img_backend.display (cfg)
}
print_info (sys_info, display, cfg)
}
# neofetch-ct: utils.ct
# Utility functions
func trim (text) {
return text.trim ()
}
func trim_quotes (text) {
_tq_res = text.replace ("'", "")
_tq_res = _tq_res.replace ("\"", "")
return _tq_res
}
func strip_sequences (text) {
_ss_res = printf ("%s", text) | sed ("s/\\x1b\\[[0-9;]*m//g")
return _ss_res
}
func has_cmd (cmd) {
_hc_res = sh ("-c", "command -v {cmd} 2>/dev/null || true")
if _hc_res != "" {
return "true"
}
return ""
}
func read_file (path) {
if fs.exists (path) {
return fs.read (path)
}
return ""
}
func get_ppid (pid) {
_gpp_res = sh ("-c", "ps -p {pid} -o ppid= 2>/dev/null")
return _gpp_res.trim ()
}
func get_process_name (pid) {
_gpn_res = sh ("-c", "ps -p {pid} -o comm= 2>/dev/null")
return _gpn_res.trim ()
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment