2021-03-12 06:32:12 +00:00
|
|
|
### Abaddon
|
|
|
|
---
|
|
|
|
Alternative Discord client made in C++ with GTK
|
2020-11-16 02:00:20 +00:00
|
|
|
|
2021-03-12 06:32:12 +00:00
|
|
|
<img src="/.readme/s3.png">
|
|
|
|
|
2021-11-25 03:24:40 +00:00
|
|
|
<a href="https://discord.gg/wkCU3vuzG5"><img src="https://discord.com/api/guilds/858156817711890443/widget.png?style=shield"></a>
|
2021-06-26 07:18:50 +00:00
|
|
|
|
2021-03-12 06:32:12 +00:00
|
|
|
Current features:
|
2022-04-07 06:17:59 +00:00
|
|
|
|
2021-03-12 06:32:12 +00:00
|
|
|
* Not Electron
|
|
|
|
* Handles most types of chat messages including embeds, images, and replies
|
|
|
|
* Completely styleable/customizable with CSS (if you have a system GTK theme it won't really use it though)
|
2021-09-21 05:48:49 +00:00
|
|
|
* Identifies to Discord as the web client unlike other clients so less likely to be falsely flagged as spam<sup>1</sup>
|
2021-03-12 06:32:12 +00:00
|
|
|
* Set status
|
2022-01-27 05:15:26 +00:00
|
|
|
* Unread and mention indicators
|
2021-03-12 06:32:12 +00:00
|
|
|
* Start new DMs and group DMs
|
|
|
|
* View user profiles (notes, mutual servers, mutual friends)
|
|
|
|
* Kick, ban, and unban members
|
|
|
|
* Modify roles and modify members' roles
|
|
|
|
* Manage invites
|
2021-03-18 03:55:41 +00:00
|
|
|
* Manage emojis
|
2021-03-12 06:32:12 +00:00
|
|
|
* View audit log
|
|
|
|
* Emojis<sup>2</sup>
|
2021-09-21 05:48:49 +00:00
|
|
|
* Thread support<sup>3</sup>
|
2021-03-12 06:32:12 +00:00
|
|
|
* Animated avatars, server icons, emojis (can be turned off)
|
2021-09-21 05:48:49 +00:00
|
|
|
|
2022-04-07 06:17:59 +00:00
|
|
|
1 - Abaddon tries its best to make Discord think it's a legitimate web client. Some of the things done to do this
|
|
|
|
include: using a browser user agent, sending the same IDENTIFY message that the official web client does, using API v9
|
|
|
|
endpoints in all cases, and not using endpoints the web client does not normally use. There are still a few smaller
|
|
|
|
inconsistencies, however. For example the web client sends lots of telemetry via the `/science` endpoint (uBlock origin
|
|
|
|
stops this) as well as in the headers of all requests. **In any case,** you should use an official client for joining
|
|
|
|
servers, sending new DMs, or managing your friends list if you are afraid of being caught in Discord's spam filters
|
|
|
|
(unlikely).
|
|
|
|
|
|
|
|
2 - Unicode emojis are substituted manually as opposed to rendered by GTK on non-Windows platforms. This can be changed
|
|
|
|
with the `stock_emojis` setting as shown at the bottom of this README. A CBDT-based font using Twemoji is provided to
|
|
|
|
allow GTK to render emojis natively on Windows.
|
|
|
|
|
|
|
|
3 - There are some inconsistencies with thread state that might be encountered in some more uncommon cases, but they are
|
|
|
|
the result of fundamental issues with Discord's thread implementation.
|
2021-09-21 05:48:49 +00:00
|
|
|
|
2021-03-12 06:32:12 +00:00
|
|
|
### Building manually (recommended if not on Windows):
|
2022-04-07 06:17:59 +00:00
|
|
|
|
|
|
|
#### Windows (with MSYS2):
|
|
|
|
|
|
|
|
1. Install following packages:
|
|
|
|
* mingw-w64-x86_64-cmake
|
|
|
|
* mingw-w64-x86_64-ninja
|
|
|
|
* mingw-w64-x86_64-sqlite3
|
|
|
|
* mingw-w64-x86_64-nlohmann-json
|
|
|
|
* mingw-w64-x86_64-curl
|
|
|
|
* mingw-w64-x86_64-zlib
|
|
|
|
* mingw-w64-x86_64-gtkmm3
|
|
|
|
2. `git clone --recurse-submodules="subprojects" https://github.com/uowuo/abaddon && cd abaddon`
|
2020-09-09 21:37:09 +00:00
|
|
|
3. `mkdir build && cd build`
|
2022-04-07 06:17:59 +00:00
|
|
|
4. `cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo ..`
|
|
|
|
5. `ninja`
|
2020-09-05 05:09:46 +00:00
|
|
|
|
2021-01-07 07:41:49 +00:00
|
|
|
#### Mac:
|
2022-04-07 06:17:59 +00:00
|
|
|
|
2021-01-07 07:41:49 +00:00
|
|
|
1. `git clone https://github.com/uowuo/abaddon && cd abaddon`
|
2021-01-23 21:07:03 +00:00
|
|
|
2. `brew install gtkmm3 nlohmann-json`
|
2022-02-14 04:58:51 +00:00
|
|
|
3. `git submodule update --init subprojects`
|
|
|
|
4. `mkdir build && cd build`
|
|
|
|
5. `cmake ..`
|
|
|
|
6. `make`
|
2021-01-07 07:41:49 +00:00
|
|
|
|
|
|
|
#### Linux:
|
2022-04-07 06:17:59 +00:00
|
|
|
|
|
|
|
1. Install dependencies: `libgtkmm-3.0-dev`, `libcurl4-gnutls-dev`,
|
|
|
|
and [nlohmann-json](https://github.com/nlohmann/json)
|
2021-01-07 07:41:49 +00:00
|
|
|
2. `git clone https://github.com/uowuo/abaddon && cd abaddon`
|
|
|
|
3. `mkdir build && cd build`
|
|
|
|
4. `cmake ..`
|
|
|
|
5. `make`
|
2020-09-05 05:09:46 +00:00
|
|
|
|
2021-09-21 05:48:49 +00:00
|
|
|
### Downloads:
|
|
|
|
|
|
|
|
Latest release version: https://github.com/uowuo/abaddon/releases/latest
|
|
|
|
|
|
|
|
**CI:**
|
|
|
|
|
2021-01-08 00:11:21 +00:00
|
|
|
- Windows: [here](https://nightly.link/uowuo/abaddon/workflows/ci/master/build-windows-RelWithDebInfo.zip)
|
2022-04-07 06:17:59 +00:00
|
|
|
- MacOS: [here](https://nightly.link/uowuo/abaddon/workflows/ci/master/build-macos-RelWithDebInfo.zip) unsigned,
|
|
|
|
unpackaged, requires gtkmm3 (e.g. from homebrew)
|
|
|
|
- Linux: [here](https://nightly.link/uowuo/abaddon/workflows/ci/master/build-linux-MinSizeRel.zip) unpackaged (for now),
|
|
|
|
requires gtkmm3. built on Ubuntu 18.04 + gcc9
|
2021-01-18 06:35:27 +00:00
|
|
|
|
2022-04-07 06:17:59 +00:00
|
|
|
⚠️ If you use Windows, make sure to start from the `bin` directory
|
2021-07-01 01:45:26 +00:00
|
|
|
|
2021-09-21 05:48:49 +00:00
|
|
|
On Linux, `css` and `res` can also be loaded from `~/.local/share/abaddon` or `/usr/share/abaddon`
|
2021-07-01 01:45:26 +00:00
|
|
|
|
2022-04-07 06:17:59 +00:00
|
|
|
`abaddon.ini` will also be automatically used if located at `~/.config/abaddon/abaddon.ini` and there is
|
|
|
|
no `abaddon.ini` in the working directory
|
|
|
|
|
|
|
|
#### Dependencies:
|
2020-09-09 21:37:09 +00:00
|
|
|
|
2020-08-26 02:10:39 +00:00
|
|
|
* [gtkmm](https://www.gtkmm.org/en/)
|
|
|
|
* [JSON for Modern C++](https://github.com/nlohmann/json)
|
|
|
|
* [IXWebSocket](https://github.com/machinezone/IXWebSocket)
|
2021-01-23 21:07:03 +00:00
|
|
|
* [libcurl](https://curl.se/)
|
2020-09-05 05:09:46 +00:00
|
|
|
* [zlib](https://zlib.net/)
|
2020-12-10 22:15:15 +00:00
|
|
|
* [SQLite3](https://www.sqlite.org/index.html)
|
2020-09-09 22:32:45 +00:00
|
|
|
|
2020-11-16 02:00:20 +00:00
|
|
|
### TODO:
|
2022-04-07 06:17:59 +00:00
|
|
|
|
2020-11-16 02:00:20 +00:00
|
|
|
* Voice support
|
2021-03-12 06:32:12 +00:00
|
|
|
* User activities
|
|
|
|
* More server management stuff
|
2020-11-16 02:00:20 +00:00
|
|
|
* A bunch of other stuff
|
|
|
|
|
2020-09-09 22:32:45 +00:00
|
|
|
### Styling
|
2022-04-07 06:17:59 +00:00
|
|
|
|
2020-09-09 22:32:45 +00:00
|
|
|
#### CSS selectors
|
2022-04-07 06:17:59 +00:00
|
|
|
|
2021-03-12 06:32:12 +00:00
|
|
|
.app-window - Applied to all windows. This means the main window and all popups
|
2022-04-07 06:17:59 +00:00
|
|
|
.app-popup - Additional class for `.app-window`s when the window is not the main window
|
|
|
|
|
|
|
|
.channel-list - Container of the channel list
|
|
|
|
|
2020-09-09 22:32:45 +00:00
|
|
|
.messages - Container of user messages
|
|
|
|
.message-container - The container which holds a user's messages
|
|
|
|
.message-container-author - The author label for a message container
|
|
|
|
.message-container-timestamp - The timestamp label for a message container
|
2021-03-12 06:32:12 +00:00
|
|
|
.message-container-avatar - Avatar for a user in a message
|
2020-10-06 02:46:44 +00:00
|
|
|
.message-container-extra - Label containing BOT/Webhook
|
2021-01-01 06:48:35 +00:00
|
|
|
.message-text - The text of a user message
|
2021-04-03 06:40:37 +00:00
|
|
|
.pending - Extra class of .message-text for messages pending to be sent
|
|
|
|
.failed - Extra class of .message-text for messages that failed to be sent
|
2021-01-01 06:48:35 +00:00
|
|
|
.message-attachment-box - Contains attachment info
|
|
|
|
.message-reply - Container for the replied-to message in a reply (these elements will also have .message-text set)
|
2021-03-12 06:32:12 +00:00
|
|
|
.message-input - Applied to the chat input container
|
2021-03-14 22:59:52 +00:00
|
|
|
.replying - Extra class for chat input container when a reply is currently being created
|
2021-01-01 06:48:35 +00:00
|
|
|
.reaction-box - Contains a reaction image and the count
|
|
|
|
.reacted - Additional class for reaction-box when the user has reacted with a particular reaction
|
2022-04-07 06:17:59 +00:00
|
|
|
.reaction-count - Contains the count for reaction
|
|
|
|
|
2021-01-01 06:48:35 +00:00
|
|
|
.completer - Container for the message completer
|
|
|
|
.completer-entry - Container for a single entry in the completer
|
|
|
|
.completer-entry-label - Contains the label for an entry in the completer
|
2022-04-07 06:17:59 +00:00
|
|
|
.completer-entry-image - Contains the image for an entry in the completer
|
|
|
|
|
2020-09-09 22:32:45 +00:00
|
|
|
.embed - Container for a message embed
|
|
|
|
.embed-author - The author of an embed
|
|
|
|
.embed-title - The title of an embed
|
|
|
|
.embed-description - The description of an embed
|
|
|
|
.embed-field-title - The title of an embed field
|
|
|
|
.embed-field-value - The value of an embed field
|
2022-04-07 06:17:59 +00:00
|
|
|
.embed-footer - The footer of an embed
|
|
|
|
|
2020-09-09 22:32:45 +00:00
|
|
|
.members - Container of the member list
|
|
|
|
.members-row - All rows within the members container
|
|
|
|
.members-row-label - All labels in the members container
|
|
|
|
.members-row-member - Rows containing a member
|
2021-01-01 06:48:35 +00:00
|
|
|
.members-row-role - Rows containing a role
|
2022-04-07 06:17:59 +00:00
|
|
|
.members-row-avatar - Contains the avatar for a row in the member list
|
|
|
|
|
2021-01-27 20:45:21 +00:00
|
|
|
.status-indicator - The status indicator
|
|
|
|
.online - Applied to status indicators when the associated user is online
|
|
|
|
.idle - Applied to status indicators when the associated user is away
|
|
|
|
.dnd - Applied to status indicators when the associated user is on do not disturb
|
2022-04-07 06:17:59 +00:00
|
|
|
.offline - Applied to status indicators when the associated user is offline
|
|
|
|
|
|
|
|
.typing-indicator - The typing indicator (also used for replies)
|
|
|
|
|
2021-03-12 06:32:12 +00:00
|
|
|
Used in reorderable list implementation:
|
2022-04-07 06:17:59 +00:00
|
|
|
.drag-icon .drag-hover-top .drag-hover-bottom
|
2021-03-12 06:32:12 +00:00
|
|
|
|
|
|
|
Used in guild settings popup:
|
|
|
|
.guild-settings-window
|
|
|
|
.guild-members-pane-list - Container for list of members in the members pane
|
|
|
|
.guild-members-pane-info - Container for member info
|
2022-04-07 06:17:59 +00:00
|
|
|
.guild-roles-pane-list - Container for list of roles in the roles pane
|
|
|
|
|
2021-03-12 06:32:12 +00:00
|
|
|
Used in profile popup:
|
|
|
|
.mutual-friend-item - Applied to every item in the mutual friends list
|
|
|
|
.mutual-friend-item-name - Name in mutual friend item
|
|
|
|
.mutual-friend-item-avatar - Avatar in mutual friend item
|
|
|
|
.mutual-guild-item - Applied to every item in the mutual guilds list
|
|
|
|
.mutual-guild-item-name - Name in mutual guild item
|
|
|
|
.mutual-guild-item-icon - Icon in mutual guild item
|
|
|
|
.mutual-guild-item-nick - User nickname in mutual guild item
|
|
|
|
.profile-connection - Applied to every item in the user connections list
|
|
|
|
.profile-connection-label - Label in profile connection item
|
|
|
|
.profile-connection-check - Checkmark in verified profile connection items
|
|
|
|
.profile-connections - Container for profile connections
|
|
|
|
.profile-notes - Container for notes in profile window
|
|
|
|
.profile-notes-label - Label that says "NOTE"
|
|
|
|
.profile-notes-text - Actual note text
|
|
|
|
.profile-info-pane - Applied to container for info section of profile popup
|
|
|
|
.profile-info-created - Label for creation date of profile
|
|
|
|
.user-profile-window
|
|
|
|
.profile-main-container - Inner container for profile
|
|
|
|
.profile-avatar
|
|
|
|
.profile-username
|
|
|
|
.profile-switcher - Buttons used to switch viewed section of profile
|
|
|
|
.profile-stack - Container for profile info that can be switched between
|
|
|
|
.profile-badges - Container for badges
|
2022-04-07 06:17:59 +00:00
|
|
|
.profile-badge
|
|
|
|
|
2021-01-01 06:48:35 +00:00
|
|
|
### Settings
|
2022-04-07 06:17:59 +00:00
|
|
|
|
2021-01-01 06:48:35 +00:00
|
|
|
Settings are configured (for now) by editing abaddon.ini
|
2022-04-07 06:17:59 +00:00
|
|
|
The format is similar to the standard Windows ini format **except**:
|
|
|
|
|
2021-11-24 08:14:41 +00:00
|
|
|
* `#` is used to begin comments as opposed to `;`
|
|
|
|
* Section and key names are case-sensitive
|
|
|
|
|
2021-03-12 06:32:12 +00:00
|
|
|
You should edit these while the client is closed even though there's an option to reload while running
|
2021-01-01 06:48:35 +00:00
|
|
|
This listing is organized by section.
|
|
|
|
For example, memory_db would be set by adding `memory_db = true` under the line `[discord]`
|
|
|
|
|
|
|
|
#### discord
|
2022-04-07 06:17:59 +00:00
|
|
|
|
2021-11-24 08:14:41 +00:00
|
|
|
* gateway (string) - override url for Discord gateway. must be json format and use zlib stream compression
|
|
|
|
* api_base (string) - override base url for Discord API
|
2021-01-01 06:48:35 +00:00
|
|
|
* memory_db (true or false, default false) - if true, Discord data will be kept in memory as opposed to on disk
|
|
|
|
* token (string) - Discord token used to login, this can be set from the menu
|
2022-04-07 06:17:59 +00:00
|
|
|
* prefetch (true or false, default false) - if true, new messages will cause the avatar and image attachments to be
|
|
|
|
automatically downloaded
|
2021-01-01 06:48:35 +00:00
|
|
|
|
|
|
|
#### http
|
2022-04-07 06:17:59 +00:00
|
|
|
|
2021-01-01 06:48:35 +00:00
|
|
|
* user_agent (string) - sets the user-agent to use in HTTP requests to the Discord API (not including media/images)
|
2021-11-24 08:14:41 +00:00
|
|
|
* concurrent (int, default 20) - how many images can be concurrently retrieved
|
2021-01-01 06:48:35 +00:00
|
|
|
|
|
|
|
#### gui
|
2022-04-07 06:17:59 +00:00
|
|
|
|
2021-01-01 06:48:35 +00:00
|
|
|
* member_list_discriminator (true or false, default true) - show user discriminators in the member list
|
2022-04-07 06:17:59 +00:00
|
|
|
* stock_emojis (true or false, default true) - allow abaddon to substitute unicode emojis with images from emojis.bin,
|
|
|
|
must be false to allow GTK to render emojis itself
|
2021-05-24 06:03:42 +00:00
|
|
|
* custom_emojis (true or false, default true) - download and use custom Discord emojis
|
2021-01-01 06:48:35 +00:00
|
|
|
* css (string) - path to the main CSS file
|
2022-04-07 06:17:59 +00:00
|
|
|
* animations (true or false, default true) - use animated images where available (e.g. server icons, emojis, avatars).
|
|
|
|
false means static images will be used
|
|
|
|
* animated_guild_hover_only (true or false, default true) - only animate guild icons when the guild is being hovered
|
|
|
|
over
|
2021-03-04 05:02:37 +00:00
|
|
|
* owner_crown (true or false, default true) - show a crown next to the owner
|
2022-01-27 05:15:26 +00:00
|
|
|
* unreads (true or false, default true) - show unread indicators and mention badges
|
2020-09-09 22:32:45 +00:00
|
|
|
|
2021-07-23 04:35:33 +00:00
|
|
|
#### style
|
2022-04-07 06:17:59 +00:00
|
|
|
|
2021-01-01 06:48:35 +00:00
|
|
|
* linkcolor (string) - color to use for links in messages
|
2021-07-23 04:35:33 +00:00
|
|
|
* expandercolor (string) - color to use for the expander in the channel list
|
|
|
|
* nsfwchannelcolor (string) - color to use for NSFW channels in the channel list
|
2022-01-27 05:15:26 +00:00
|
|
|
* channelcolor (string) - color to use for SFW channels in the channel list
|
|
|
|
* mentionbadgecolor (string) - background color for mention badges
|
|
|
|
* mentionbadgetextcolor (string) - color to use for number displayed on mention badges
|
2022-01-28 19:46:33 +00:00
|
|
|
* unreadcolor (string) - color to use for the unread indicator
|
2021-07-01 01:45:26 +00:00
|
|
|
|
|
|
|
### Environment variables
|
|
|
|
|
|
|
|
* ABADDON_NO_FC (Windows only) - don't use custom font config
|
|
|
|
* ABADDON_CONFIG - change path of configuration file to use. relative to cwd or can be absolute
|