.github/workflows Loading last commit info...
server
src
.gitignore
.gitmodules
LICENSE
README.md
docker-attach.sh
docker-compose.yaml
docker-shutdown.sh
docker-update-start.sh
README.md

Blink

Chat application in gtk4, written purely in C++.

blink

Note

If you want to use terminal interface for client and/or want static build, you can use the ncurses branch.

Windows

Building on Windows

  • Windows build is possible using MSYS2 UCRT64
  • Run MSYS2 UCRT64 as administrator
  • You will need to install following packages:
  • pacman -S git make unzip mingw-w64-ucrt-x86_64-gtkmm-4.0 mingw-w64-ucrt-x86_64-libsodium mingw-w64-ucrt-x86_64-toolchain
  • Hopefully, you will be able to build it with make win command in src and consequently make install_win to install it

Linux

Dependencies

Shared

  • make,libsodium, g++ with c++23 support

Client

  • unzip and gtkmm4 for GUI

Server

  • docker and docker-compose optionally for server

Client

Build

git clone https://github.com/Hikari03/Blink.git && \
cd Blink/src && \
make && \
make install

Usage

blink

or launch from your desktop environment as an app

  • then follow instructions
  • to exit in connected chat, type /q and then enter

Screenshots

intro.png chat.png

Server

  • Uses Port : 6999
  • If you want to change it you can do so in server/main.cpp and src/App.cpp

Use Docker

With scripts

You can get the docker-update-start.sh, docker-attach.sh and docker-shutdown.sh. With them, you can control the server with ease.

  • docker-update-start.sh will automatically update the image if needed and start the server
  • docker-attach.sh will attach you to server console. Use help to print available commands. When you want to exit console, use CTRL + P, CTRL + Q.
  • docker-shutdown.sh will shutdown the container

Manually

  • download the docker-compose.yml
  • docker compose up -d or docker-compose up -d
  • to control the server use docker attach blink-server
  • docker compose down or docker-compose down

From Source

Build

git clone https://github.com/Hikari03/Blink.git && \
cd Blink/server && \
make

Usage:

in Blink/server

./blink-server

Controls

  • help help
  • q quit server
  • list list all connected clients
  • kick <name> kick out client with name
  • ipban <name> ban client with name
  • ipunban <name> unban client with name
  • ipbans list all banned clients

Attributions

TODO

  •  better resource management
  •  better server terminal
  •  fix kicking out users
  •  sending only last n messages so everything is stable
  •  ability to see online users
  •  better syncing of chat when someone connects or leaves
    • this is when new user connects and doesn't see the chat history or when someone leaves and the chat history is not updated
  •  fix server having unexpected behavior when closing server with clients connected
  •  implement code for graceful stop in docker
  •  transfer ncurses static build to librender that will make static library
  •  make communication encrypted
  •  remake client to use gtkmm4
  •  fix duplicate messages that show only sometimes
  •  port to windows
  •  make default theme (probably catppuccin)
  •  build catppuccin theme in makefile and not store it in repo
  •  make persistent storage for server
  •  make persistent storage for client
  •  fix ncurses branch client
  •  implement notice when client gets kicked out
Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover