# pingwinowanie kolejne
## zadanie 1

~~(zobaczymy czy da się to zrobić na manjaro :smile:)~~ Chyba się nie da:(((
### setfont
Ustawia dany font. Raczej korzysta się w miejsach bez GUI. Np jak wejdziemy na jakieś tty to możemy znaleźć jakieś fonty.
Ma jakieś możliwości na modyfikacje oryginalnego fontu np.
* -h -> zmień wysokość
* -d -> podwaja rozmiar obecnego fontu
```bash=
# Lista dostępnych fontów
ls /usr/share/consolefonts
# I żeby zmienić na jakiś inny to np
setfont Lat7-TerminusBold32x16.psf.gz
```
### setupcon
Jest trochę mocniejsze niż setfont, bo może jeszcze ustawić np. setup klawiatury.
Czyli mozemy sobie stworzyć alternatywną konfigurację keyboard.big i console-setup.big i żeby zmienić to robimy
```bash=
setupcon big
```
a jeśli chcemy wrócić do domyślnej to po prostu `setupcon`
Można też jakoś niby ustawiać inne języki np greka/cyrylica itd ale nie próbowałem
Gdzie mamy te setupy?
* /etc/default/keyboard
* /etc/default/console-setup
Jakieś opcje
* -f -> font only
* -k -> keyboard only
* -t -> terminal only
* --current-tty
Jakiś przykład żeby pokazać ugabuga font się zmienia

### formaty
#### PSF - PC Screen Font
Jakies proste bitmapy przetrzymujące literki.
Mamy PSF1 i PSF2 dla rozmiarów do 8x16 i 16x32.
Fonty są zapisane jako pliki binarne
https://www.win.tue.nl/~aeb/linux/kbd/font-formats-1.html
#### BDF - Glyph Bitmap Distribution Format
Text-based, na początku tworzony przez Adobe Systems. BDF są human-readablei mają jakieś dużo info np font size, character bitmap/encoding
https://docs.fileformat.com/font/bdf/
#### PCF - Portable Compiled Format
Kolejna bitmapa tak o, używana w Unix-based systemach. Dziedziczy torszkę po BDF, ale jest kompilowane do binarki żeby szybciej się ładowało. Chyba najbardziej popularne
### Zap
Nwm do pobrania, ale szłu nie ma imo
https://www.zap.org.au/projects/console-fonts-zap/#download
### Urządzenia
#### /dev/tty*
To chyba powtórka, po prostu wirtualne konsole terminali
#### /dev/vcs*
Virtual console screen, pozwalają na bezpośredni dostęp do framebuffer'a każdego tty, dzięki czemu można pisać i czytać do pamęci ekranu
#### /dev/fb*
framebuffer, korzysta się z nich do przechowywania info o wyświetlanych pixelach na danym urządzeniu. Aplikacje piszą bezpośrednio do fb, żeby kontrolować output
### Programy
#### fbgrab
Wsm jak nazwa wskazuje, łapie content z /dev/fb* i zapisuje to pliku ze zdjęciem (forma robienia screena)
#### fbcat
Analogicznie, ale nie zapisuje tylko wypisuje na stdout. To służy do jakiegoś pipeingu raczej
#### fbi
framebuffer image viewer, umożliwia wyświetlanie obrazów bezpośrednio na na fb bez konieczności angażowania serwera X
#### fbset
Ogarnia fb, można zmieniać takie rzeczy jak rozdzielczość, kolor, fps itd
#### chvt
change vt, wsm fajne, swapuje tty, zamiast swapować klawiszami robimy ```chvt 3``` i cyk jesteśmy na tty3
#### openvt
Otwiera nowy tty
### Już prawie koniec
#### Linux framebuffer
To jest jakaś alternatywa dla GUI? To taki ficzer, który daje jakiś interfejs dla grafiki. Tak jak wyżej apki mogą pisać bezpośrednio do niego (więc wsm na ekran) przez co GUI do wyjebania
Zdaje się, że z plusów jest całkiem prosty i nawet wydajny
#### kernel mode setting
W skrócie to taki opt. Ma na celu poprawienie wydajności przechodzenia między terminalami graficznymi i tekstowymi.

https://wiki.archlinux.org/title/kernel_mode_setting
#### hardware text mode
Tryb który umożliwia renderowanie text-based outputu bezpośrednio przez hardware. Dzięki czemu nie potrzeba GUI ani soft nie musi nic robić. Chyba w tym trybie korzystamy np ascii/unicode
Główny plusik to fakt, że to dalej text więc mega lekkie i wydajne
### dlaczego w konsoli tekstowej nie można używać czcionek wektorowych i antialiasingu, tak jak w terminalu graficznym?
No chyba jest kilka powodów
1. Wydajność, konsole tekstowe miały być proste, a użycie czcionek wektorowych i antialiasingu kłóciłoby się z tą ideą
2. Chyba jesteśmy ograniczeni sprzętowo? KT korzysta z prostego interfejsu, więc może nie być tam jakichś bardziej zaawansowanych operacji potrzebnych do renderowania tych fancy czcionek
### initramfs
Mi działało po prostu po przepisaniu z wykładu
### Generowanie obrazu
Obraz jest w /boot
```bash=
uname -r # get <kernel>
sudo update-initramfs -c -k <kernel>
sudo update-grub
```