https://github.com/odilitime/session-native
native implementation of Session in c without Electron using the opengem framework (OpenGL, software, linux framebuffer)
https://github.com/odilitime/session-native
discord ee2e irc matrix opengem session signal tavrn telegram
Last synced: 7 months ago
JSON representation
native implementation of Session in c without Electron using the opengem framework (OpenGL, software, linux framebuffer)
- Host: GitHub
- URL: https://github.com/odilitime/session-native
- Owner: odilitime
- License: mit
- Created: 2021-02-11T05:04:25.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-05-30T08:03:54.000Z (over 4 years ago)
- Last Synced: 2025-01-10T12:58:54.461Z (9 months ago)
- Topics: discord, ee2e, irc, matrix, opengem, session, signal, tavrn, telegram
- Language: C
- Homepage:
- Size: 495 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

# session-native
native implementation of Session in c without Electron using the opengem framework (supports OpenGL as well as Linux framebuffer)## Binaries
[No offical release yet, please try the CI artifacts (mac/linux) of one of the workflow run results](https://github.com/odilitime/session-native/actions?query=workflow%3ACMake)## how to run
`./session-native`
it will look for a `Resources/` directory in the startup directory for CA bundle and ttf font.## Milestones
### Supports
- snode communication
- Session protocol encryption (sending)
- Session protocol decryption (recieving)
- initial UI
- non-blocking net-io### Working On
- Finishing MVP UI / design
- encrypted database
- identity management
- open group support
- profile support
- avatar / attachment support
- mutlithreading
- onion routing support / lokinet support
- closed group supprt## Build Information
### Build requirements
- [cmake 2.8.7+](https://cmake.org/)
- git
- a c compiler such as gcc (4.2.1+) or llvm (mainly dev'd on llvm)
- [FreeType2](https://www.freetype.org/)
- [GLFW](https://www.glfw.org/), [SDL1](https://www.libsdl.org/download-1.2.php) and/or [SDL2](https://www.libsdl.org/download-2.0.php)
- GLFW is OpenGL only (and will eventually support Vulkan)
- SDL1 is software renderer (and will eventually also support OpenGL). This the only one that doesn't required a windowing system like X.
- SDL2 is OpenGL with fallback to software render (will automatically select the best for your system)
- libsodium 1.0.18+
- protobuf-c development headers
- openssl (mbed support coming soon)
- opengem (cmake will automatically download via git)#### Package shortucts
Some of these do not include mbedtls yet, if you know the correct package name for your distro, please let us know##### Debian (and derivates)
`sudo apt-get install libfreetype6-dev libglfw3-dev libprotoc-dev libprotobuf-c-dev libsodium-dev
Also will need either libmbedtls-dev (Debian 9/Ubuntu 16LTS (xenial)) or libpolarssl-dev (Debian 8 or earlier)
Looks like on Ubuntu, only zesty and newer have 2.4+ of mbedtls##### Arch (and derivates)
`sudo pacman -Suy glew freetype2 mbedtls`##### Void
`sudo xbps-install -S glfw`##### Gentoo
`sudo emerge freetype glfw`#### Mac OS X (Brew)
`sudo brew install glfw openssl protobuf-c libsodium`#### OpenBSD
Note: OpenBSD 6.1 has freetype is 1.3.1 and mbedtls is 2.2.1 which won't work (try -CURRENT)
Be sure to use gmake too
`pkg_add glew glfw freetype mbedtls`### how to build
- `cmake .` runs the configuration and detection of all the libraries you have installed on your system
- `make -jX` where X is the number of CPU cores you want to use (if you use more than you have it'll slow it down)### Special build options
By default it prefers GLFW and SDL1 support. We prefer SDL1 over SDL2 because it has linux frame buffer support.
USE GLFW and SDL2 `cmake -DPREFER_SDL2=ON .`
USE SDL1 only `cmake -DIGNORE_GLFW=ON .`
USE SDL2 only `cmake -DPREFER_SDL2=ON -DIGNORE_GLFW=ON .`# Support my work
Oxen donations:
LT2mP2DrmGD82gFnH16ty8ZtP6f33czpA6XgQdnuTVeT5bNGyy3vnaUezzKq1rEYyq3cvb2GBZ5LjCC6uqDyKnbvFki9aAX