Tony Olagbaiye cd0beab676 | 4 years ago | |
---|---|---|
axc@1d4454ea42 | 4 years ago | |
omemo@7667e54d64 | 4 years ago | |
.dir-locals.el | 4 years ago | |
.envrc | 4 years ago | |
.gitattributes | 7 years ago | |
.gitignore | 4 years ago | |
.gitmodules | 4 years ago | |
.travis.yml | 7 years ago | |
LICENSE | 7 years ago | |
Makefile | 4 years ago | |
README.org | 4 years ago | |
account.c | 4 years ago | |
account.h | 4 years ago | |
buffer.c | 4 years ago | |
buffer.h | 4 years ago | |
channel.c | 4 years ago | |
channel.h | 4 years ago | |
command.c | 4 years ago | |
command.h | 4 years ago | |
config.c | 4 years ago | |
config.h | 4 years ago | |
connection.c | 4 years ago | |
connection.h | 4 years ago | |
input.c | 4 years ago | |
input.h | 4 years ago | |
message.c | 4 years ago | |
message.h | 4 years ago | |
omemo.c | 4 years ago | |
omemo.h | 4 years ago | |
plugin.c | 4 years ago | |
plugin.h | 4 years ago | |
user.c | 4 years ago | |
user.h | 4 years ago |
README.org
weechat-xmpp
https://api.travis-ci.org/bqv/weechat-xmpp.svg?branch=master">file:https://api.travis-ci.org/bqv/weechat-xmpp.svg?branch=master https://coveralls.io/repos/github/bqv/weechat-xmpp/badge.svg?branch=master">file:https://coveralls.io/repos/github/bqv/weechat-xmpp/badge.svg?branch=master " title="file:" /> " title="file:" /> " title="file:" /> " title="file:" />
Status: | XMPP for power users and digital masochists |
Location: | http://github.com/bqv/weechat-xmpp |
Version: | 0.1.1 |
Disclaimer: | I'm lazy and unashamedly clinically insane |
Description
A weechat plugin in C to extend the chat client to support XMPP and a currently minimal but ideally maximal set of XEPs.
Usage
- Start with
/xmpp add
, use/help xmpp
for instructions. - Use
/xmpp connect <account-name>
with the name set at add-time.
Installing
Place xmpp.so in the appropriate place for weechat plugins.
Dependencies
- libstrophe (dynamic, dependency)
- libxml2 (dynamic, dependency)
- glib (dynamic, dependency of libomemo)
- sqlite (dynamic, dependency of libomemo/axc)
- libsignal-protocol-c (dynamic, dependency of axc)
- weechat (>= v2.5)
.. or just use the guix spec in .envrc
Building
git clone git://github.com/bqv/weechat-xmpp.git
cd weechat-xmpp
git submodule update --init --recursive
make
make install
Do NOT run make install as root, it installs the plugin to your local weechat plugins directory
Development
I use emacs for development of this, although I am also a fan of vim.
My debug build process involves static analysis with clang and cppcheck,
and dynamic analysis with address-sanitizer and leak-sanitizer.
My debug evaluation process involves gdb/mi run with the arguments
-ex "handle SIGPIPE nostop noprint pass" --args weechat -a 2>asan.log
since part of weechat and it's default plugins use SIGPIPE as control.
I have no real requests for style of pull requests besides a wish that you keep vaguely to the style I have adopted for this project.
Happy coding!
Tasks
DONE [A] Implement basic functionality (milestone v0.1)
- Connecting
- Pretty-printing stanzas
- Receiveing and formatting PMs to a dedicated buffer
- Responding to PMs and formatting responses
- Opening PMs (/chat)
TODO [A] Implement essential functionality (milestone v0.2)
- Opening PMs with initial message
- OOB media messages
- Buffer autoswitch on enter/open
- Handle open/enter jids with a resource without breaking
- Allow /close without crashing
-
[#B] Handle wide errors gracefully
- [#B] Event-driven MUC entrance
-
MUCs
- Opening (/enter)
- Receiving
- Sending
- [#B] Edits
- [#B] Handle errors gracefully
-
[#B] Presence/nicklist
- [#B] Enters
- [#B] Leaves
- [#B] Tracking
- [#B] Set/show topic
-
OMEMO (libsignal-protocol-c / axc)
- Presence
- Messages
- MUC PMs
- Send typing notifications
- Recv typing notifications
- Read receipts
- OTR (libotr)
- PGP (libgpgme)
TODO [C] Implement completion engine (milestone v0.3)
TODO [#D] Close all issues (milestone v1.0)
Contributing
Your contributions are always welcome! Please submit a pull request or create an issue to add a new or missing feature.
License
weechat-xmpp is licensed under the Mozilla Public License Version 2.0 available here and in LICENSE.