An education app which you can study through out High School!
  • C 95.3%
  • CSS 3.2%
  • Batchfile 0.7%
  • CMake 0.5%
  • Makefile 0.3%
Find a file
2026-09-11 22:17:26 +02:00
assets thumbnails 2026-09-07 16:28:58 +02:00
.gitattributes Windows build 2/2? 2026-09-10 09:57:12 +02:00
.gitignore Windows build 2/2? 2026-09-10 09:57:12 +02:00
build-windows.bat Windows build 2/2? 2026-09-10 09:57:12 +02:00
CMakeLists.txt Split the UI code into multiple files 2026-09-11 11:42:13 +02:00
exercise_common.c made vocabulary exercise just a bit more tolerant 2026-09-11 22:08:45 +02:00
exercise_u1.c made vocabulary exercise just a bit more tolerant 2026-09-11 22:08:45 +02:00
exercise_u2.c Split the UI code into multiple files 2026-09-11 11:42:13 +02:00
exercise_u3.c Split the UI code into multiple files 2026-09-11 11:42:13 +02:00
globals.c UI resizing tweaks 2026-09-11 21:50:54 +02:00
hw.c Add Technické vybavení unit 3: bits and bytes with quiz. 2026-09-11 21:03:51 +02:00
i18n.c made vocabulary exercise just a bit more tolerant 2026-09-11 22:08:45 +02:00
icons.c Add Technické vybavení unit 1: von Neumann architecture with quiz. 2026-09-11 20:48:48 +02:00
LICENSE Initial commit 2026-09-03 10:53:24 +02:00
main.c UI resizing tweaks 2026-09-11 21:50:54 +02:00
Makefile Split the UI code into multiple files 2026-09-11 11:42:13 +02:00
maturita.h made the vocabulary exercise in unit 1 less out of place by moving it a few pixels 2026-09-11 22:17:26 +02:00
navigation.c Split the UI code into multiple files 2026-09-11 11:42:13 +02:00
net.c Add Technické vybavení unit 1: von Neumann architecture with quiz. 2026-09-11 20:48:48 +02:00
progress.c Add Technické vybavení unit 1: von Neumann architecture with quiz. 2026-09-11 20:48:48 +02:00
README.md Document Technické vybavení units 1–3 in the README. 2026-09-11 21:11:28 +02:00
roadmap.c Split the UI code into multiple files 2026-09-11 11:42:13 +02:00
run-windows.bat Windows build 2/2? 2026-09-10 09:57:12 +02:00
settings.c Split the UI code into multiple files 2026-09-11 11:42:13 +02:00
stats.c Add Technické vybavení unit 1: von Neumann architecture with quiz. 2026-09-11 20:48:48 +02:00
style.css UI tweaks again (made it so special symbols like stars arent affected since it makes it look weird on retina screens) 2026-09-11 22:11:25 +02:00
subjects.c Place Technické vybavení next to networks on the subjects map. 2026-09-11 21:24:58 +02:00
theme.c UI tweaks again (made it so special symbols like stars arent affected since it makes it look weird on retina screens) 2026-09-11 22:11:25 +02:00
unitmap.c made the vocabulary exercise in unit 1 less out of place by moving it a few pixels 2026-09-11 22:17:26 +02:00
util.c made vocabulary exercise just a bit more tolerant 2026-09-11 22:08:45 +02:00

maturita.c

An educational GTK 4 app written in C. / Vzdělávací GTK 4 aplikace napsaná v C.

English · Česky


English

Description

maturita.c is an educational program for high-school and gymnasium students preparing for their maturita exam. The UI is available in Czech and English and is built from a set of small C modules (see Project structure) that render a modern, CSS-styled GTK 4 interface.

Screenshots

Welcome screen Subjects ("Předměty") German learning roadmap
Welcome screen Subjects screen German roadmap

Features

  • Welcome screen branded greeting with a description of the program and a continue button to get started
  • Subjects ("Předměty") adaptive serpentine subject map with 13 subjects
    • Deutsch is open (round bubble with the German flag) and opens the German learning path
    • Správa počítačových sítí / Computer Network Administration is open too (shown with a Wi-Fi icon) and leads to a 30-unit computer-networks path; units 110 are playable, units 1130 are locked placeholders
    • Technické vybavení / Computer Hardware is open (chip icon) and leads to a 10-unit hardware path; units 13 are playable, units 410 are locked placeholders
    • the remaining subjects are dimmed/locked placeholders until their content is added
    • layout folds into multiple rows when the window is narrow
  • Learning roadmap adaptive serpentine learning path with 10 units
    • each unit numbered and labeled with its topic (e.g. "Neue Freunde")
    • units 13 are open; completed units shown in green with a checkmark
    • remaining units dimmed with a lock icon
    • finish node at the end of the path
    • layout folds into multiple rows when the window is narrow
  • Back navigation themed circular back button (top-left) returns to the previous screen
  • Unit 1 exercises "Neue Freunde" opens an interactive bubble map with 13 exercises (dialogs, sentence building, multiple choice, free answers, numbers, verb conjugation, greeting sorting and more), each with German prompts and an instant-check button
  • Unit 2 exercises "Aus aller Welt" is playable from the start (no need to finish unit 1 first) and offers a bubble map with 19 exercises: verb conjugation, prepositions aus/in, question words, nationalities and countries, spelling/look-and-find tasks, a matching exercise, a number/word game, free-answer "Steckbrief" tasks and a Hangman game with 5 professions
  • Unit 3 exercises "Bei uns zu Hause" covers family vocabulary, possessives, accusative and related grammar across 15 exercises (drop-down sentence fill-ins, word building, "Was siehst du?", sentence ordering and missing-letter sentences)
  • Hints & model answers in exercises where you write or complete a German sentence the Czech meaning is shown right away as a hint, and clicking the check button also reveals the correct German sentence so you can compare
  • Computer networks path ten unlocked units (theory slides + practice):
    1. Výpočet IP adres / IP Address Calculation 4-slide VLSM walkthrough and four interactive subnetting tasks (prefix, network, broadcast, host range) with check and “show solution”
    2. Základní pojmy a rozdělení sítí slides + multiple-choice quiz
    3. Sítě KlientServer a Cloud slides + quiz
    4. Přenos dat a jeho zabezpečení slides + quiz
    5. Signály a modulace slides + quiz
    6. Cesta, kanál a okruh slides + quiz
    7. Multiplex a směry přenosu slides + quiz
    8. Přepojování slides + quiz
    9. Vrstevnaté modely a protokoly slides + quiz
    10. Model ISO/OSI a TCP/IP slides + quiz
      Progress for networks is saved to progress/net.conf (one flag per unit); completed network units show a checkmark on the path and count in Statistics
  • Computer hardware path three unlocked units (theory slides + quiz):
    1. Architektura počítače / Computer architecture von Neumann, the von Neumann model (ALU, control unit, memory, I/O), then a quiz
    2. Historie počítačů / History of computers generations 04 (vacuum tubes, transistors, ICs, microprocessors and milestones), then a quiz
    3. Zobrazování dat / Data representation bit and byte, then a quiz
      Progress for hardware is saved to progress/hw.conf; completed units show a checkmark on the path and count in Statistics
  • Progress tracking completed exercises are marked green; progress is saved per unit to progress/unit1.conf, progress/unit2.conf and progress/unit3.conf and restored on startup
  • Statistics chart icon in the header opens a per-subject progress overview: summary totals (exercises done, percent, finished units) at the top, then every subject with its own progress bar (subjects without tracked content yet are shown as locked; networks and hardware use lesson completion from progress/net.conf / progress/hw.conf), and a per-unit breakdown with progress bars for Deutsch; numbers update as soon as you finish an exercise
  • Settings gear icon in the top-right header opens a panel where you can choose:
    • mode: dark or light, as a segmented control
    • theme: 10 palettes picked from a grid of color swatches
    • language: Czech or English, applied instantly without a restart
    • all three preferences are stored in progress/settings.conf
  • Keyboard quit shortcuts Super/Cmd+Q or Alt+F4 closes the app
  • Modular C codebase split across several files, cross-platform (Linux, macOS and Windows)

Installation

Prerequisites

1. GTK 4 development libraries

macOS:

brew install gtk4

Linux (Debian / Ubuntu):

sudo apt install libgtk-4-dev

Linux (Fedora):

sudo dnf install gtk4-devel

Linux (Arch):

sudo pacman -S gtk4

Windows there is no official GTK 4 installer. The recommended path is MSYS2 + MinGW UCRT64 (no Visual Studio). See Windows install guide (GTK4) below.

2. Build tools (compiler, Make, pkg-config)

macOS install these explicitly; they are not preinstalled:

brew install gcc make pkg-config
# or Apple's Clang toolchain:
# xcode-select --install

Linux on most distributions gcc is already available (build-essential / base-devel):

# Debian / Ubuntu
sudo apt install build-essential pkg-config
# Fedora
sudo dnf groupinstall "Development Tools"
sudo dnf install pkgconf-pkg-config
# Arch
sudo pacman -S base-devel pkgconf

Windows gcc, GTK 4 and pkg-config are installed in step 1 of the Windows guide below. Visual Studio is not required.

Building the application

  1. Clone or download this repository
  2. Navigate to the project directory
  3. Build with the Makefile:
make

Or manually:

# Linux / macOS
gcc -o maturita *.c $(pkg-config --cflags --libs gtk4) -lm

# Windows (MSYS2 UCRT64)
gcc -o maturita.exe *.c $(pkg-config --cflags --libs gtk4) -lm -mwindows
Building with CMake (optional, Linux / macOS)
cmake -S . -B build
cmake --build build

CMake finds GTK 4 through pkg-config. On Windows prefer the MSYS2 flow below.

Running the application

make run

or

# Linux / macOS
./maturita

# Windows (from the same MSYS2 UCRT64 shell used to build)
./maturita.exe

Windows install guide (GTK4)

Follow these steps to compile and run on Windows. Visual Studio is not required MSYS2 and MinGW UCRT64 are enough.

  1. Install MSYS2 and GTK4

    Open Command Prompt (CMD) or PowerShell as Administrator and run:

    winget install --id MSYS2.MSYS2 -e --source winget
    C:\msys64\ucrt64.exe pacman -S --noconfirm mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-gtk4 mingw-w64-ucrt-x86_64-pkg-config
    

    Wait until both commands finish. If winget says MSYS2 is already installed, continue with the second command. (The second command opens an MSYS2 window, downloads packages, then exits that is expected.)

  2. Get the project

    Clone or download this repository and note the path, e.g. C:\Users\Josef\maturita.c.

  3. Open the MSYS2 UCRT64 terminal

    In the Start menu search for MSYS2 UCRT64 and open it. Do not use regular CMD or PowerShell gcc and pkg-config work in this shell.

  4. Enter the project folder and compile

    In MSYS2, paths look like /c/... instead of C:\.... Adjust the path and run:

    cd /c/Users/Josef/maturita.c
    gcc -o maturita.exe *.c $(pkg-config --cflags --libs gtk4) -lm -mwindows
    

    Path conversion examples:

    • C:\Users\Josef\maturita.c/c/Users/Josef/maturita.c
    • C:\Users\Josef\Desktop\maturita.c/c/Users/Josef/Desktop/maturita.c

    If compilation succeeds, maturita.exe appears in the project folder.

  5. Run the app

    From the same UCRT64 terminal:

    ./maturita.exe
    
  6. (Optional) Double-click from File Explorer

    Running maturita.exe outside the MSYS2 terminal usually fails with missing DLLs. From the UCRT64 terminal (after installing make) you can bundle everything into dist/:

    pacman -S --noconfirm make
    make bundle
    

    Then double-click dist/maturita.exe.

Usage

When launched, the application shows the welcome screen. From there:

  1. Click "Pokračuj" / "Continue" to open the Předměty / Subjects map.
  2. Click the Deutsch bubble (German flag) for the German path, the Wi-Fi bubble ("Správa počítačových sítí") for networks, or the chip bubble ("Technické vybavení") for hardware. Other subjects are still locked.
  3. Browse the units along the path; the roadmap reflows into rows and scrolls if the window is too narrow.
  4. Click the "Neue Freunde" node to open unit 1, "Aus aller Welt" for unit 2 or "Bei uns zu Hause" for unit 3, then pick any bubble to start an exercise. Units 2 and 3 are available even if the earlier units are not finished yet.
  5. On the networks path, units 110 are open. Unit 1 (Výpočet IP adres) walks through four VLSM slides and then four interactive subnetting tasks with check / “show solution”. Units 210 each have theory slides followed by a multiple-choice quiz (basic concepts, clientserver/cloud, transmission security, signals, path/channel/circuit, multiplexing, switching, layered models, ISO/OSI & TCP/IP). Units 1130 stay locked placeholders.
  6. On the hardware path, units 13 are open (architecture / von Neumann, computer history generations, bit & byte), each with slides and a quiz. Units 410 stay locked.
  7. Use the back button in the top-left corner to return to the previous screen.
  8. Open Statistiky / Statistics (chart icon, top-right) to see progress grouped per subject (overall totals plus, for Deutsch, a per-unit breakdown). Network and hardware lesson completion is included in the subject totals.
  9. Open Nastavení / Settings (gear icon, top-right) to switch dark/light mode, pick a color theme, or change the interface language.

German units 13, network units 110 and hardware units 13 are currently implemented. Locked nodes do nothing they are placeholders until lessons are added. Completed Deutsch exercises stay green and are saved per unit to progress/unit1.conf / progress/unit2.conf / progress/unit3.conf. Completed network units are saved to progress/net.conf; hardware units to progress/hw.conf.

Keyboard shortcuts

Shortcut Action
Super/Cmd + Q Quit application
Alt + F4 Quit application

Project structure

maturita.h              shared types, macros, globals and prototypes
globals.c               shared global state (window, stack, units, theme, …)
theme.c                 theme palettes, stylesheet injection and settings file
i18n.c                  Czech/English translation tables and language switching
icons.c                 Cairo-drawn vector icons (check, lock, wifi, chip, …)
util.c                  small helpers (answer normalisation, feedback, umlaut note)
progress.c              per-unit exercise progress (load/save/completion)
stats.c                 statistics page and progress aggregation
navigation.c            back button, top bar, welcome page, key shortcuts
roadmap.c               German learning-path roadmap
subjects.c              subjects map and subject catalogue
unitmap.c               per-unit exercise bubble map
exercise_common.c       shared exercise shell + combo/assembly/choice widgets
exercise_u1.c           unit 1 ("Neue Freunde") exercises
exercise_u2.c           unit 2 ("Aus aller Welt") exercises
exercise_u3.c           unit 3 ("Bei uns zu Hause") exercises
settings.c              settings popover (mode, theme, language)
net.c                   computer-networks path (30 nodes), units 110 slides
                        and exercises (unit 1: VLSM practice; 210: MC quizzes)
hw.c                    computer-hardware path (10 nodes), units 13 slides
                        and quizzes (architecture, history, bit/byte)
main.c                  application entry point and page wiring
style.css               GTK stylesheet (palette colors are injected at runtime)
Makefile                build & run targets (Linux, macOS, MSYS2); `make bundle` on Windows
CMakeLists.txt          optional CMake build (Linux / macOS)
build-windows.bat       legacy MSVC build (requires Visual Studio + gvsbuild GTK)
run-windows.bat         legacy launcher for the MSVC build with GTK DLLs on PATH
README.md               this file
LICENSE                 GPL-3.0 license
assets/                 README screenshots (welcome, subjects, German roadmap)
progress/               created at runtime
  unit1.conf            unit 1 exercise completion state
  unit2.conf            unit 2 exercise completion state
  unit3.conf            unit 3 exercise completion state
  net.conf              computer-networks lesson completion
  hw.conf               computer-hardware lesson completion
  settings.conf         theme, dark/light mode and language preference

Theming

The app ships with ten palettes Catppuccin, Nord, Dracula, Rose Pine, Ocean, Gruvbox, Solarized, Everforest, Monokai and One Dark each available in dark and light mode. Colors are defined as theme palettes in theme.c, injected as @define-color bindings, and combined with the rules in the external style.css stylesheet (plus matching Cairo colors for the roadmap rails and icons).

Change the look from the in-app settings panel, or edit the palette tables in theme.c / the rules in style.css and rebuild.

Languages

The interface can be switched between Czech and English from the settings panel; the choice takes effect immediately and is remembered between runs. Translations live in two tables in i18n.c: tr_ui holds interface strings under short keys, while tr_content translates the Czech meanings shown next to the German exercise items and uses the Czech text itself as the key. Widgets are registered with i18n_bind() so apply_language() can retranslate them in place.

German prompts, unit names and exercise titles are learning material and stay German in both languages.

To-Do plans

  • Wire unit nodes to actual German vocabulary/grammar exercises
    • Unit 1 ("Neue Freunde") 13 interactive exercises with progress saving
    • Unit 2 ("Aus aller Welt") 19 interactive exercises (incl. Hangman)
    • Unit 3 ("Bei uns zu Hause") 15 interactive exercises
  • Computer networks units 110 (IP/VLSM + nine theory units with quizzes)
  • Progress tracking / statistics for the networks path
  • Technické vybavení units 13 (architecture, history, bit/byte + quizzes)
  • Lesson progression and unlock system for the remaining units
  • Add audio pronunciation features
  • Add user settings panel (theme, dark/light mode, language)
  • Implement spaced repetition system for vocabulary
  • Add listening and reading comprehension exercises
  • Add writing practice with feedback
  • Expand progress tracking with statistics
  • Move CSS styling to an external file
  • Split the UI code into multiple files
  • Add internationalization support (Czech and English)
  • Add more interface languages
  • Add unit testing framework

License

This project is licensed under the GPL-3.0 License see the LICENSE file for details.

Acknowledgments

  • Created as a learning exercise in C and GTK programming
  • Inspired by language learning applications
  • Built with GTK 4 for modern GUI development

Česky

Popis

maturita.c je vzdělávací program pro středoškoláky a gymnazisty připravující se na maturitu. Rozhraní je v češtině a angličtině a aplikace je rozdělena do několika malých C modulů (viz Struktura projektu) s moderním GTK 4 rozhraním stylovaným přes CSS.

Screenshoty

Úvodní obrazovka Předměty Německá učební cesta
Welcome screen Subjects screen German roadmap

Funkce

  • Úvodní obrazovka branding, popis programu a tlačítko pokračovat
  • Předměty přizpůsobivá „hadí“ mapa s 13 předměty
    • Deutsch je otevřený (bublina s německou vlajkou) a vede na německou učební cestu
    • Správa počítačových sítí je také otevřená (ikona WiFi) a vede na cestu s 30 jednotkami; jednotky 110 jsou hratelné, 1130 jsou zamčené placeholdery
    • Technické vybavení je otevřené (ikona čipu) a vede na cestu s 10 jednotkami; jednotky 13 jsou hratelné, 410 jsou zamčené placeholdery
    • ostatní předměty jsou ztmavené / zamčené placeholdery
    • při úzkém okně se mapa zalomí do více řad
  • Učební cesta přizpůsobivá cesta s 10 jednotkami
    • každá jednotka má číslo a název (např. „Neue Freunde“)
    • jednotky 13 jsou otevřené; dokončené jsou zelené s fajfkou
    • zbývající jsou ztmavené se zámkem
    • na konci je cílová / finish uzel
    • při úzkém okně se cesta zalomí do více řad
  • Zpět kulaté tlačítko vlevo nahoře vrátí na předchozí obrazovku
  • Cvičení jednotky 1 „Neue Freunde“: mapa s 13 cvičeními (dialogy, skládání vět, výběr z možností, volné odpovědi, čísla, časování sloves, řazení pozdravů…), německé zadání a okamžitá kontrola
  • Cvičení jednotky 2 „Aus aller Welt“ je hratelná hned (není nutné dokončit jednotku 1): 19 cvičení časování, předložky aus/in, tázací slova, národnosti a země, pravopis / hledej a najdi, párování, hra s čísly, volné „Steckbrief“ odpovědi a Hangman s 5 povoláními
  • Cvičení jednotky 3 „Bei uns zu Hause“: rodina, přivlastňovací zájmena, akuzativ a další gramatika v 15 cvičeních (doplňování vět, skládání slov, „Was siehst du?“, řazení vět, chybějící písmena)
  • Nápovědy a vzorové odpovědi u psaných / doplňovaných vět je hned český význam; po kontrole se ukáže i správná německá věta
  • Cesta počítačových sítí deset odemčených jednotek (snímky + cvičení):
    1. Výpočet IP adres 4 snímky VLSM a čtyři interaktivní úlohy (prefix, síť, broadcast, rozsah uzlů) s kontrolou a „ukázat řešení“
    2. Základní pojmy a rozdělení sítí snímky + kvíz
    3. Sítě KlientServer a Cloud snímky + kvíz
    4. Přenos dat a jeho zabezpečení snímky + kvíz
    5. Signály a modulace snímky + kvíz
    6. Cesta, kanál a okruh snímky + kvíz
    7. Multiplex a směry přenosu snímky + kvíz
    8. Přepojování snímky + kvíz
    9. Vrstevnaté modely a protokoly snímky + kvíz
    10. Model ISO/OSI a TCP/IP snímky + kvíz
      Postup u sítí se ukládá do progress/net.conf (příznak na jednotku); dokončené jednotky mají fajfku na cestě a počítají se ve Statistikách
  • Cesta technického vybavení tři odemčené jednotky (snímky + kvíz):
    1. Architektura počítače von Neumann, Von Neumannovo schéma (ALS, řadič, paměť, V/V) a kvíz
    2. Historie počítačů generace 04 (elektronky, tranzistory, IO, mikroprocesory a milníky) a kvíz
    3. Zobrazování dat v počítači bit a byte a kvíz
      Postup se ukládá do progress/hw.conf; dokončené jednotky mají fajfku na cestě a počítají se ve Statistikách
  • Ukládání postupu hotová cvičení zezelenají; stav se ukládá do progress/unit1.conf, progress/unit2.conf a progress/unit3.conf a při startu se načte zpět
  • Statistiky ikona grafu v hlavičce ukáže postup po předmětech (součty, procenta, dokončené jednotky), progress bary u každého předmětu (předměty bez trackovaného obsahu jsou zamčené; sítě a technické vybavení berou dokončení lekcí z progress/net.conf / progress/hw.conf) a rozpad po jednotkách u Deutsch
  • Nastavení ozubené kolečko vpravo nahoře:
    • režim: tmavý / světlý
    • téma: 10 barevných palet
    • jazyk: čeština nebo angličtina, bez restartu
    • vše se ukládá do progress/settings.conf
  • Klávesové zkratky pro ukončení Super/Cmd+Q nebo Alt+F4
  • Modulární C kód v několika souborech, multiplatformní (Linux, macOS i Windows)

Instalace

Požadavky

1. Vývojářské knihovny GTK 4

macOS:

brew install gtk4

Linux (Debian / Ubuntu):

sudo apt install libgtk-4-dev

Linux (Fedora):

sudo dnf install gtk4-devel

Linux (Arch):

sudo pacman -S gtk4

Windows oficiální instalátor GTK 4 neexistuje. Doporučený postup je MSYS2 + MinGW UCRT64 (bez Visual Studia). Viz Instalační návod pro Windows (GTK4) níže.

2. Build nástroje (kompilátor, Make, pkg-config)

macOS nainstalujte je ručně, nejsou předinstalované:

brew install gcc make pkg-config
# nebo Apple Clang:
# xcode-select --install

Linux na většině distro je gcc už k dispozici (build-essential / base-devel):

# Debian / Ubuntu
sudo apt install build-essential pkg-config
# Fedora
sudo dnf groupinstall "Development Tools"
sudo dnf install pkgconf-pkg-config
# Arch
sudo pacman -S base-devel pkgconf

Windows gcc, GTK 4 i pkg-config se nainstalují v kroku 1 návodu níže. Visual Studio není potřeba.

Sestavení aplikace

  1. Naklonujte nebo stáhněte tento repozitář
  2. Přejděte do složky projektu
  3. Sestavte pomocí Makefile:
make

Nebo ručně:

# Linux / macOS
gcc -o maturita *.c $(pkg-config --cflags --libs gtk4) -lm

# Windows (MSYS2 UCRT64)
gcc -o maturita.exe *.c $(pkg-config --cflags --libs gtk4) -lm -mwindows
Sestavení přes CMake (volitelné, Linux / macOS)
cmake -S . -B build
cmake --build build

CMake najde GTK 4 přes pkg-config. Na Windows použijte MSYS2 návod níže.

Spuštění aplikace

make run

nebo

# Linux / macOS
./maturita

# Windows (ze stejného MSYS2 UCRT64 terminálu, ve kterém jste kompilovali)
./maturita.exe

Instalační návod pro Windows (GTK4)

Následujte tyto kroky pro rychlé zkompilování a spuštění na Windows. Visual Studio není potřeba stačí MSYS2 a MinGW UCRT64.

  1. Nainstalujte MSYS2 a GTK4

    Otevřete Příkazový řádek (CMD) nebo PowerShell jako Správce a spusťte:

    winget install --id MSYS2.MSYS2 -e --source winget
    C:\msys64\ucrt64.exe pacman -S --noconfirm mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-gtk4 mingw-w64-ucrt-x86_64-pkg-config
    

    Počkejte, až se obě instalace dokončí. Pokud winget hlásí, že MSYS2 už je nainstalované, klidně pokračujte druhým příkazem. (Druhý příkaz otevře okno MSYS2, stáhne balíčky a zase se ukončí to je v pořádku.)

  2. Stáhněte projekt

    Naklonujte nebo stáhněte tento repozitář a zapamatujte si cestu, např. C:\Users\Josef\maturita.c.

  3. Otevřete terminál MSYS2 UCRT64

    Ve Start menu vyhledejte MSYS2 UCRT64 a spusťte ho. Nepoužívejte běžný CMD ani PowerShell gcc a pkg-config fungují právě v tomto okně.

  4. Přejděte do složky projektu a zkompilujte

    V MSYS2 se cesty píší jako /c/... místo C:\.... Upravte cestu podle sebe a spusťte:

    cd /c/Users/Josef/maturita.c
    gcc -o maturita.exe *.c $(pkg-config --cflags --libs gtk4) -lm -mwindows
    

    Příklady převodu cesty:

    • C:\Users\Josef\maturita.c/c/Users/Josef/maturita.c
    • C:\Users\Josef\Desktop\maturita.c/c/Users/Josef/Desktop/maturita.c

    Pokud kompilace projde bez chyb, ve složce projektu vznikne maturita.exe.

  5. Spusťte aplikaci

    Ze stejného terminálu UCRT64:

    ./maturita.exe
    
  6. (Volitelně) Spuštění dvojklikem z Průzkumníka

    Samotný maturita.exe bez MSYS2 terminálu obvykle spadne na chybějící DLL. Z UCRT64 terminálu (po instalaci make) můžete vytvořit složku dist/ se vším potřebným:

    pacman -S --noconfirm make
    make bundle
    

    Pak spusťte dist/maturita.exe dvojklikem.

Použití

Po spuštění se zobrazí úvodní obrazovka. Odtud:

  1. Klikněte na "Pokračuj" / "Continue" a otevře se mapa Předměty / Subjects.
  2. Klikněte na bublinu Deutsch (německá vlajka) pro německou cestu, na bublinu WiFi („Správa počítačových sítí“) pro sítě, nebo na bublinu čipu („Technické vybavení“) pro hardware. Ostatní předměty jsou zatím zamčené.
  3. Procházejte jednotky po cestě; při úzkém okně se cesta zalomí a scrolluje.
  4. Otevřete "Neue Freunde" (jednotka 1), "Aus aller Welt" (2) nebo "Bei uns zu Hause" (3) a vyberte bublinu cvičení. Jednotky 2 a 3 jdou otevřít i bez dokončení předchozích.
  5. Na síťové cestě jsou otevřené jednotky 110. Jednotka 1 (Výpočet IP adres) má 4 snímky VLSM a pak 4 interaktivní úlohy s kontrolou / „ukázat řešení“. Jednotky 210 mají snímky teorie a kvíz s výběrem (základní pojmy, klientserver/cloud, zabezpečení přenosu, signály, cesta/ kanál/okruh, multiplex, přepojování, vrstevnaté modely, ISO/OSI a TCP/IP). Jednotky 1130 zůstávají zamčené.
  6. Na cestě technického vybavení jsou otevřené jednotky 13 (architektura / von Neumann, historie generací, bit a byte), každá se snímky a kvízem. Jednotky 410 zůstávají zamčené.
  7. Tlačítkem zpět vlevo nahoře se vrátíte na předchozí obrazovku.
  8. Statistiky (ikona grafu vpravo nahoře) ukazují postup po předmětech (u Deutsch i po jednotkách). Dokončené síťové a hardwarové lekce se započítávají do součů předmětu.
  9. Nastavení (ozubené kolečko) tmavý/světlý režim, barevné téma nebo jazyk rozhraní.

Hotové jsou německé jednotky 13, síťové jednotky 110 a hardwarové jednotky 13. Zamčené uzly nic nedělají jsou to placeholdery. Dokončená německá cvičení zůstanou zelená a ukládají se do progress/unit1.conf / progress/unit2.conf / progress/unit3.conf. Dokončené síťové jednotky se ukládají do progress/net.conf, hardwarové do progress/hw.conf.

Klávesové zkratky

Zkratka Akce
Super/Cmd + Q Ukončit aplikaci
Alt + F4 Ukončit aplikaci

Struktura projektu

maturita.h              sdílené typy, makra, globální proměnné a prototypy
globals.c               sdílený globální stav (okno, stack, jednotky, téma, …)
theme.c                 palety témat, vkládání stylu a soubor nastavení
i18n.c                  české/anglické překlady a přepínání jazyka
icons.c                 vektorové ikony kreslené Cairem (fajfka, zámek, wifi, čip, …)
util.c                  pomocné funkce (normalizace odpovědí, feedback, poznámka)
progress.c              postup cvičení jednotek (načtení/uložení/dokončení)
stats.c                 stránka statistik a agregace pokroku
navigation.c            tlačítko zpět, horní lišta, úvodní stránka, zkratky
roadmap.c               německá učební cesta
subjects.c              mapa předmětů a katalog předmětů
unitmap.c               mapa cvičení jednotlivých jednotek
exercise_common.c       společné jádro cvičení + combo/skládání/výběr
exercise_u1.c           cvičení jednotky 1 („Neue Freunde“)
exercise_u2.c           cvičení jednotky 2 („Aus aller Welt“)
exercise_u3.c           cvičení jednotky 3 („Bei uns zu Hause“)
settings.c              panel nastavení (režim, téma, jazyk)
net.c                   cesta počítačových sítí (30 uzlů), jednotky 110
                        (1: VLSM cvičení; 210: kvízy s výběrem)
hw.c                    cesta technického vybavení (10 uzlů), jednotky 13
                        (architektura, historie, bit/byte + kvízy)
main.c                  vstupní bod aplikace a zapojení stránek
style.css               GTK styl (barvy palety se vkládají za běhu)
Makefile                build & run (Linux, macOS, MSYS2); `make bundle` na Windows
CMakeLists.txt          volitelný CMake build (Linux / macOS)
build-windows.bat       legacy MSVC build (vyžaduje Visual Studio + gvsbuild GTK)
run-windows.bat         legacy spouštění MSVC buildu s GTK DLL na PATH
README.md               tento soubor
LICENSE                 licence GPL-3.0
assets/                 screenshoty do README (úvod, předměty, německá cesta)
progress/               vzniká za běhu
  unit1.conf            stav cvičení jednotky 1
  unit2.conf            stav cvičení jednotky 2
  unit3.conf            stav cvičení jednotky 3
  net.conf              dokončení síťových lekcí
  hw.conf               dokončení hardwarových lekcí
  settings.conf         téma, režim a jazyk

Témata

Aplikace má deset palet Catppuccin, Nord, Dracula, Rose Pine, Ocean, Gruvbox, Solarized, Everforest, Monokai a One Dark každou ve světlém i tmavém režimu. Barvy jsou v theme.c, vkládají se jako @define-color a spojují se s pravidly v externím souboru style.css (a Cairo barvy pro koleje a ikony na mapě).

Vzhled změníte v nastavení, nebo upravte tabulky palet v theme.c / pravidla v style.css a znovu zkompilujte.

Jazyky

Rozhraní přepnete mezi češtinou a angličtinou v nastavení; změna platí hned a zapamatuje se. Překlady jsou ve dvou tabulkách v i18n.c: tr_ui drží texty rozhraní pod krátkými klíči, tr_content překládá české významy u německých cvičení (klíčem je samotný český text). Widgety se registrují přes i18n_bind(), aby je apply_language() přeložila na místě.

Německá zadání, názvy jednotek a cvičení zůstávají německá v obou jazycích rozhraní.

Plány do budoucna

  • Napojit zbývající jednotky na skutečná cvičení slovní zásoby / gramatiky
    • Jednotka 1 („Neue Freunde“) 13 interaktivních cvičení s ukládáním
    • Jednotka 2 („Aus aller Welt“) 19 cvičení (včetně Hangmana)
    • Jednotka 3 („Bei uns zu Hause“) 15 cvičení
  • Počítačové sítě: jednotky 110 (IP/VLSM + 9 teoretických s kvízy)
  • Ukládání postupu / statistiky pro síťovou cestu
  • Technické vybavení: jednotky 13 (architektura, historie, bit/byte + kvízy)
  • Postupné odemykání zbývajících jednotek
  • Audio / výslovnost
  • Panel nastavení (téma, režim, jazyk)
  • Spaced repetition pro slovní zásobu
  • Poslech a čtení s porozuměním
  • Psaní s feedbackem
  • Statistiky postupu
  • Přesunout CSS do externího souboru
  • Rozdělit UI kód do více souborů
  • Internacionalizace (čeština a angličtina)
  • Další jazyky rozhraní
  • Unit testy

Licence

Projekt je pod licencí GPL-3.0 detaily viz soubor LICENSE.

Poděkování

  • Vzniklo jako cvičení v C a GTK
  • Inspirováno jazykovými učebními aplikacemi
  • Postaveno na GTK 4