# LimoX The Linux on mobile XMPP (LimoX) client. It should be fast, compliant and usable on mobile linux devices like smartphones or tablets. Also mind the [project page][2] and my [packaging repository][3] for Arch Linux with support for LimoX. Currently there is an ongoing rewrite in progress. There is the initial version of LimoX and a rewrite (`limox_sdl2` in the build folder). The rewrite substitutes GTK4 by SDL2 for graphics and maybe will also drop libstrophe as a dependency. A nice reference which helps me a lot is [Beej's Guide to Network Programming][4]. ## Building and dependencies Install these build dependencies: - meson - ninja - gcc Install these runtime dependencies: - libstrophe - gtk4 - sdl2 Just run these commands to build and run: ``` meson setup build ninja -C build ./build/limox ./build/limox_sdl2 # the SDL2 based rewrite ``` Run `rm -r build` to clean the build folder. You can get a help page by running `./build/limox -h`. ## Roadmap - [x] build a GTK 4 GUI - [x] finish minimal viable product (MVP) to send and receive text messages - [x] static GUI widgets - [x] dynamic GUI widgets (like text messages) - [x] roster request - [x] receiving one-to-one text messages - [x] sending one-to-one text messages - [ ] switch from GTK4 to SDL2 - [x] implement second executable with empty SDL2 window - [ ] integrate libstrophe into SDL2 event loop (validate with presence) - [ ] re-implement login page - [ ] re-implement roster page - [ ] re-implement chat page - [ ] refactoring - [x] fix reconnection bug - [ ] check memory management - [ ] handle roster updates - [ ] remove states enum in net.c (doubles logic from libstrophe) - [ ] consistent error handling (maybe including semantic error codes) - [ ] logging / debug flags and output - [ ] OS signal handling - [ ] write docstrings - [ ] check if code is splint-clean - [ ] persistence with sqlite3 - [ ] XEP-0077: In-Band Registration (just password change) - [ ] XEP-0313: Message Archive Management - [ ] implement XMPP core client ([compliance suite 2022][1]) - [ ] RFC 6120: XMPP Core - [ ] RFC 7590: TLS for XMPP - [ ] XEP-0030: Service Discovery - [ ] XEP-0115: Entity Capabilities - [ ] implement XMPP IM client ([compliance suite 2022][1]) - [ ] RFC 6121: XMPP Instant Messaging - [ ] XEP-0245: The /me Command - [ ] XEP-0054: vcard-temp - [ ] XEP-0280: Message Carbons - [ ] XEP-0045: Multi-User Chat - [ ] XEP-0249: Direct MUC Invitations - [ ] XEP-0363: HTTP File Upload - [ ] implement XMPP mobile client ([compliance suite 2022][1]) - [ ] XEP-0198: Stream Management - [ ] XEP-0352: Client State Indication - [ ] evaluate multi-platform support (up to Linux, Windows, Android, Mac, iOS) - [ ] implement further XEPs - [ ] XEP-0286: Mobile Considerations on LTE Networks - [ ] XEP-0333: Chat Markers - [ ] XEP-0085: Chat State Notifications - [ ] XEP-0191: Blocking Command - [ ] XEP-0308: Last Message Correction - [ ] XEP-0393: Message Styling - [ ] XEP-0444: Message Reactions - [ ] XEP-0392: Consistent Color Generation - [ ] XEP-0184: Message Delivery Receipts - [ ] XEP-0380: Explicit Message Encryption - [ ] XEP-0384: OMEMO Encryption [1]: https://xmpp.org/extensions/xep-0459.html [2]: https://xengineering.eu/git/limox [3]: https://xengineering.eu/git/pkgbuilds [4]: https://www.beej.us/guide/bgnet/html/