# Emacs UI for Discourse

**URL:** <https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161>\
**Category:** Emacs\
**Created:** [February 3, 2024, 9:21am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161 "2024-02-03T09:21:42Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![alphapapa](https://avatars.discourse-cdn.com/v4/letter/a/5f9b8f/32.png) [@alphapapa](https://forum.systemcrafters.net/u/alphapapa)\
**Post date:** [February 3, 2024, 9:21am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/1 "2024-02-03T09:21:42Z")

</div>

Well, there’s a `discourse` package from 2016 that offers a “discourse api,” and there’s `nndiscourse` for Gnus, but other than that…

---

<div class="post-metadata">

**Author:** ![daviwil](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/daviwil/32/1_2.png) [@daviwil](https://forum.systemcrafters.net/u/daviwil)\
**Post date:** [February 3, 2024, 9:22am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/2 "2024-02-03T09:22:41Z")

</div>

I think @sqrtminusone has been investigating this a little bit. Maybe another Emacs package expert can be nerd-sniped into it too? 😉

---

<div class="post-metadata">

**Author:** ![alphapapa](https://avatars.discourse-cdn.com/v4/letter/a/5f9b8f/32.png) [@alphapapa](https://forum.systemcrafters.net/u/alphapapa)\
**Post date:** [February 3, 2024, 9:25am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/3 "2024-02-03T09:25:11Z")

</div>

I think not. At least, not anytime soon. I already have another chil…I mean, package, `activities` (which you should try, BTW). 🙂

---

<div class="post-metadata">

**Author:** ![sqrtminusone](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/sqrtminusone/32/106_2.png) [@sqrtminusone](https://forum.systemcrafters.net/u/sqrtminusone)\
**Post date:** [February 3, 2024, 9:27am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/4 "2024-02-03T09:27:00Z")

</div>

Yeah, basically, it should be possible, but it will probably be a few weeks before I can try to make something of it 🙂

I’m just a bit surprised nothing like that already exists, not even some TUI client

---

<div class="post-metadata">

**Author:** ![daviwil](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/daviwil/32/1_2.png) [@daviwil](https://forum.systemcrafters.net/u/daviwil)\
**Post date:** [February 3, 2024, 9:27am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/5 "2024-02-03T09:27:28Z")

</div>

Had not heard of it yet, link me?

---

<div class="post-metadata">

**Author:** ![alphapapa](https://avatars.discourse-cdn.com/v4/letter/a/5f9b8f/32.png) [@alphapapa](https://forum.systemcrafters.net/u/alphapapa)\
**Post date:** [February 3, 2024, 9:27am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/6 "2024-02-03T09:27:37Z")

</div>

If I may, I’d suggest using the Emacs `ewoc` library to build the UI. And/or `magit-section`.

---

<div class="post-metadata">

**Author:** ![daviwil](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/daviwil/32/1_2.png) [@daviwil](https://forum.systemcrafters.net/u/daviwil)\
**Post date:** [February 3, 2024, 9:28am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/7 "2024-02-03T09:28:00Z")

</div>

Let me know if you need an API key when you give it a shot, I’ll set it up

---

<div class="post-metadata">

**Author:** ![alphapapa](https://avatars.discourse-cdn.com/v4/letter/a/5f9b8f/32.png) [@alphapapa](https://forum.systemcrafters.net/u/alphapapa)\
**Post date:** [February 3, 2024, 9:28am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/8 "2024-02-03T09:28:17Z")

</div>

> **[GitHub - alphapapa/activities.el: Activities for Emacs](https://github.com/alphapapa/activities.el)**
>
> Activities for Emacs. Contribute to alphapapa/activities.el development by creating an account on GitHub.

Also:

> An error occurred: You’re replying a bit too quickly. Please wait 19 seconds before trying again.
> 
> [OK]

Grr, no! Not “OK!” 😛

---

<div class="post-metadata">

**Author:** ![daviwil](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/daviwil/32/1_2.png) [@daviwil](https://forum.systemcrafters.net/u/daviwil)\
**Post date:** [February 3, 2024, 9:29am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/9 "2024-02-03T09:29:20Z")

</div>

Yes, yes, the power! I can control the alphapapa!

---

<div class="post-metadata">

**Author:** ![alphapapa](https://avatars.discourse-cdn.com/v4/letter/a/5f9b8f/32.png) [@alphapapa](https://forum.systemcrafters.net/u/alphapapa)\
**Post date:** [February 3, 2024, 9:30am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/10 "2024-02-03T09:30:18Z")

</div>

Another possibility would be if there were a Matrix bridge for Discourse, since we already have an Emacs UI for Matrix… 😉

---

<div class="post-metadata">

**Author:** ![ryuslash](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/ryuslash/32/66_2.png) [@ryuslash](https://forum.systemcrafters.net/u/ryuslash)\
**Post date:** [February 3, 2024, 9:30am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/11 "2024-02-03T09:30:45Z")

</div>

> [@alphapapa](#):
>
> … I’d suggest using the Emacs `ewoc` library to build the UI …

That’d be cool… I only remember seeing ewoc used for `jabber.el`, but haven’t looked for any others.

---

<div class="post-metadata">

**Author:** ![sqrtminusone](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/sqrtminusone/32/106_2.png) [@sqrtminusone](https://forum.systemcrafters.net/u/sqrtminusone)\
**Post date:** [February 3, 2024, 9:31am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/12 "2024-02-03T09:31:14Z")

</div>

Let’s see if I can post a reply with curl

---

<div class="post-metadata">

**Author:** ![alphapapa](https://avatars.discourse-cdn.com/v4/letter/a/5f9b8f/32.png) [@alphapapa](https://forum.systemcrafters.net/u/alphapapa)\
**Post date:** [February 3, 2024, 9:31am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/13 "2024-02-03T09:31:18Z")

</div>

The `vc` commands use `ewoc`, but it’s not obvious.

---

<div class="post-metadata">

**Author:** ![sqrtminusone](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/sqrtminusone/32/106_2.png) [@sqrtminusone](https://forum.systemcrafters.net/u/sqrtminusone)\
**Post date:** [February 3, 2024, 9:31am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/14 "2024-02-03T09:31:59Z")

</div>

Yay, it works 😃 And it… has a minimum message length of 20? Interesting

---

<div class="post-metadata">

**Author:** ![daviwil](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/daviwil/32/1_2.png) [@daviwil](https://forum.systemcrafters.net/u/daviwil)\
**Post date:** [February 3, 2024, 9:32am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/15 "2024-02-03T09:32:37Z")

</div>

Whoa, nice, were you able to get your own api key?

---

<div class="post-metadata">

**Author:** ![sqrtminusone](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/sqrtminusone/32/106_2.png) [@sqrtminusone](https://forum.systemcrafters.net/u/sqrtminusone)\
**Post date:** [February 3, 2024, 9:33am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/16 "2024-02-03T09:33:24Z")

</div>

No, I re-used the cookie, which is returned in Set-Cookie in the login request

---

<div class="post-metadata">

**Author:** ![ryuslash](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/ryuslash/32/66_2.png) [@ryuslash](https://forum.systemcrafters.net/u/ryuslash)\
**Post date:** [February 3, 2024, 9:33am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/17 "2024-02-03T09:33:46Z")

</div>

> [@alphapapa](#):
>
> The `vc` commands use `ewoc`, but it’s not obvious.

Somehow I feel like I should have noticed this while working on `vc-p4` 😮

---

<div class="post-metadata">

**Author:** ![sqrtminusone](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/sqrtminusone/32/106_2.png) [@sqrtminusone](https://forum.systemcrafters.net/u/sqrtminusone)\
**Post date:** [February 3, 2024, 9:35am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/18 "2024-02-03T09:35:36Z")

</div>

Also, the API is a bit… intrusive lol, it POSTs what I’m doing like every second, the message request has fields `typing_duration_msec`, `composer_open_duration_msec`… I wonder if it’s all recorded.

And what for.

---

<div class="post-metadata">

**Author:** ![alphapapa](https://avatars.discourse-cdn.com/v4/letter/a/5f9b8f/32.png) [@alphapapa](https://forum.systemcrafters.net/u/alphapapa)\
**Post date:** [February 3, 2024, 9:37am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/19 "2024-02-03T09:37:09Z")

</div>

Probably saving your drafts as you write them, and it’s sending typing notifications like a chat client. That’s kind of cool, e.g. I saw David typing in response whereas without it I would have navigated away. It’s almost like each thread is (or can be) a small chat room.

---

<div class="post-metadata">

**Author:** ![ryuslash](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.systemcrafters.net/ryuslash/32/66_2.png) [@ryuslash](https://forum.systemcrafters.net/u/ryuslash)\
**Post date:** [February 3, 2024, 9:38am UTC](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161/20 "2024-02-03T09:38:25Z")

</div>

Yeah, although it also seems odd to have the typing notifications in forum software because it can take quite a while to type up a response.

[Next page](https://forum.systemcrafters.net/t/emacs-ui-for-discourse/161.md?page=2)
