Skip to content
/ aegyo Public

Cross-platform GUI app for learning Korean Hangul.

License

Notifications You must be signed in to change notification settings

ryouze/aegyo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aegyo

CI Release Release version

aegyo is a cross-platform GUI app for learning Korean Hangul.

Screenshot

Motivation

When I was learning Japanese kana, I liked the idea of drilling the characters into my memory through pure brute-force repetition. I found an iOS app called Kana School that did exactly that. Unfortunately, no similar app existed for Korean Hangul, so I decided to create one myself.

Features

  • Written in modern C++ (C++17).
  • Verified for accuracy by a Korean language teacher.
  • Comprehensive documentation with doxygen-style comments.
  • Automatic third-party dependency management using CMake's FetchContent.
  • No missing STL headers thanks to header-warden.

Tested Systems

This project has been tested on the following systems:

  • macOS 15.1 (Sequoia)
  • Manjaro 24.0 (Wynsdey)
  • Windows 11 23H2

Automated testing is also performed on the latest versions of macOS, GNU/Linux, and Windows using GitHub Actions.

Pre-built Binaries

Pre-built binaries are available for macOS (ARM64), GNU/Linux (x86_64), and Windows (x86_64). You can download the latest version from the Releases page.

To remove macOS quarantine, use the following commands:

xattr -d com.apple.quarantine aegyo-macos-arm64.app
chmod +x aegyo-macos-arm64.app

On Windows, the OS might complain about the binary being unsigned. You can bypass this by clicking on "More info" and then "Run anyway".

Requirements

To build and run this project, you'll need:

  • C++17 or higher
  • CMake

Build

Follow these steps to build the project:

  1. Clone the repository:

    git clone https://github.com/ryouze/aegyo.git
  2. Generate the build system:

    cd aegyo
    mkdir build && cd build
    cmake ..

    Optionally, you can disable compile warnings by setting ENABLE_COMPILE_FLAGS to OFF:

    cmake .. -DENABLE_COMPILE_FLAGS=OFF
  3. Compile the project:

    To compile the project, use the following command:

    make

    If you want to use all available cores when compiling with make, you can pass the -j flag along with the number of cores available on your system:

    • macOS:

      make -j$(sysctl -n hw.ncpu)
    • GNU/Linux:

      make -j$(nproc)
    • 8-core CPU:

      make -j8

After successful compilation, you can run the program using ./aegyo (open aegyo.app on macOS). However, it is highly recommended to install the program, so that it can be run from any directory. Refer to the Install section below.

Note: The mode is set to Release by default. To build in Debug mode, use cmake .. -DCMAKE_BUILD_TYPE=Debug.

Install

If not already built, follow the steps in the Build section and ensure that you are in the build directory.

To install the program, use the following command:

sudo cmake --install .

On macOS, this will install the program to /Applications. You can then run aegyo.app from the Launchpad, Spotlight, or by double-clicking the app in Finder.

Usage

To start the program, simply run the aegyo executable (aegyo.app on macOS, open /Applications/aegyo.app to run from the terminal).

On first run on macOS, the app will request access to keystrokes from any application:

"aegyo.app" would like to receive keystrokes from any application.

Grant access to this application in Privacy & Security settings, located in System Settings.

This is caused by the underlying SFML library, which reads raw keyboard input. You should deny this request, as the app does not expect any input while it's not in focus. I'd rather not have such a request appear in the first place, but I have no control over it.

Controls

You can select the correct answer by clicking on it or by pressing the corresponding number key on your keyboard (1, 2, 3, 4).

The buttons in the top right corner toggle the vocabulary category:

  • Vow for Basic Vowels
  • Con for Basic Consonants
  • DCon for Double Consonants
  • CompV for Compound Vowels

All categories are enabled by default. You can disable a category by clicking on the corresponding button.

If you're a beginner, start with the Vow categories and gradually enable the other categories as you continue to learn.

Testing

Tests are included in the project but are not built by default.

To enable and build the tests manually, run the following commands:

cmake .. -DBUILD_TESTS=ON
make
ctest --output-on-failure

Credits

Contributing

All contributions are welcome.

License

This project is licensed under the MIT License.