this post was submitted on 13 Jun 2023
27 points (100.0% liked)

Emacs

1978 readers
2 users here now

Our infinitely powerful editor.

founded 4 years ago
MODERATORS
 

The lack of keyboard interface on Lemmy is killing me, but really what I want is a good client in Emacs. However, it's beyond my Elisp to design and start such a project, but I could probably help. Anyone on it?

top 25 comments
sorted by: hot top controversial new old
[–] [email protected] 9 points 1 year ago* (last edited 1 year ago) (4 children)

I have quite a few endpoints working now, each mostly just with the basic options implemented, and its easy to add endpoints with a handy macro i wrote. There are still quite a few quirks with lemmy itself that i'm struggling to work out, like how to search for my second account on another instance and actually have it appear in results. I might ask in a support room. The type-heavy rust and ts code is super foreign to me, it's also very large. Moreover, the various documentation links, another one is https://join-lemmy.org/api/classes/LemmyHttp.html, sometime contradict each other. Maybe having the basics down I cd start on some necrco diy interface. [posted and edited via lem.el]

[–] asterisk 3 points 1 year ago (1 children)

I think this would be the best way to go.

Myself, I'd love to be able to interact with Lemmy through Gnus, but it would be great to have a general emacs API for flexibility so you can choose the front-end.

It looks as though the api for a client is defined in api_common.

[–] [email protected] 3 points 1 year ago* (last edited 1 year ago) (1 children)

thanks for the link. so https://github.com/LemmyNet/lemmy/blob/main/src/api_routes_http.rs shows the paths and params, i tried them in a rest client and it's no too hard to follow.

the mastodon.el http layer isn't great, but it could be v quickly adapted for this case.

[–] asterisk 1 points 1 year ago (1 children)

Thanks, yes that's a more useful source than my one.

[–] [email protected] 2 points 1 year ago (1 children)

https://codeberg.org/martianh/lem has some basics, functions returning plain JSON. i didn't do any auth, but if its oauth and so similar to mastodon.el, we cd also just move its auth code into the fedi.el library. and fedi-http.el is already set up to handle auth tokens.

discovering lemmy's query parameters is quite a pain for me, as i don't know rust.

[–] asterisk 1 points 1 year ago

That looks a promising start. I'll have a look into it when I have some time. I hope some others do too!

I don't know Rust either, but it does appear to be relatively easy to understand; could be worse anyhow.

It would be nice to have a fully documented API to work from: probably not a priority for the lemmy devs right now, I'd imagine.

[–] beizhia 1 points 1 year ago

Do you have, or plan to have, any code up in a github repo? I'm decent with elisp and this sounds like a fun thing to hack on. My spare time is spread a little thin, so I doubt I'll get to start on anything anytime soon, but I could totally try to contribute. If not, no worries.

[–] [email protected] 1 points 1 year ago

Lol oops, i edited using the wrong id! baby steps. For reference, the API 'docs' can be found in the following: https://join-lemmy.org/api/classes/LemmyHttp.html https://github.com/LemmyNet/lemmyBB/tree/main/src/api https://github.com/LemmyNet/lemmy/blob/main/src/api_routes_http.rs.

The first seems most complete.

[–] HaHaBudBud 4 points 1 year ago (1 children)

Any emacs interface would be great. Perhaps someone who is familiar with elfeed could hook into that?

[–] [email protected] 1 points 1 year ago (1 children)

FWIW I'm reading lemmy RSS feed with elfeed (hope this gets through - popping my lemmy cherry here)

[–] [email protected] 1 points 1 year ago* (last edited 1 year ago) (1 children)

can you see comments that way? you just subscribe to communities i imagine?

[–] [email protected] 1 points 1 year ago

Sorry for delayed response, just getting used to lemmy ...

No, I don't see comments - if I'm interested in the headline, I press 'b' to pop up the full item in my browser.

Yes, I subscribe to communities like this:

(use-package elfeed
  :bind (:map elfeed-search-mode-map
              ("s" . elfeed-search-set-filter)
              ("S" . elfeed-search-live-filter))
  :config (setf elfeed-sort-order 'ascending))

;; elfeed-dashboard is a nice add-on
(use-package elfeed-dashboard
  :ensure t
  :bind ("C-x w" . 'elfeed-dashboard)
  :config
  (setq elfeed-dashboard-file "~/.config/emacs/elfeed-dashboard.org")
  ;; update feed counts on elfeed-quit
  (advice-add 'elfeed-search-quit-window :after #'elfeed-dashboard-update-links))

(setq elfeed-feeds '(
                     ("http://xkcd.com/rss.xml" comic xkcd)
                     ("http://rss.slashdot.org/Slashdot/slashdotMain" slashdot)
                     ("https://www.reddit.com/r/emacs/new/.rss?sort=new" reddit emacs)
                     ("https://www.reddit.com/r/linux/new/.rss?sort=new" reddit linux)
                     ("https://rss.beehiiv.com/feeds/iiTciQgHPG.xml" fossweekly linux)
                     ("https://distrowatch.com/news/dw.xml" news distrowatch linux)
                     ("http://oglaf.com/feeds/rss/" comic oglaf)
                     ("https://www.reddit.com/r/linuxquestions/new/.rss?sort=new" reddit linuxquestions)
                     ("https://www.reddit.com/r/fedora/new/.rss?sort=new" reddit fedora)
                     ("https://feeds.bbci.co.uk/news/rss.xml" news bbc)
                     ("https://www.rt.com/rss/" news rt)
                     ("https://hnrss.org/frontpage?count=100" news hacker)
                     ("https://www.reddit.com/r/swaywm/new/.rss?sort=new" reddit sway)
                     ("https://www.reddit.com/r/i3wm/new/.rss?sort=new" reddit i3wm)
                     ("https://www.reddit.com/r/nordvpn/new/.rss?sort=new" reddit nordvpn)
                     ("https://lwn.net/headlines/rss" news LWN.net)
                     ("https://lobste.rs/t/linux.rss" news lobsterlinux linux)
                     ("https://www.emacswiki.org/emacs?action=rss" news EmacsWiki emacs)
                     ("https://feeds.arstechnica.com/arstechnica/index" news arstechnica)
                     ("https://www.engadget.com/rss.xml" news engadget)
                     ("https://lemmy.ml/feeds/c/emacs.xml?sort=Active" emacs lemmy)
                     ("https://lemmy.ml/feeds/c/linux.xml?sort=New" linux lemmy)
                     ("https://lemmy.ml/feeds/c/swaywm.xml?sort=New" sway lemmy)))
[–] DarthRedLeader 2 points 1 year ago

This might work -https://codeberg.org/martianh/mastodon.el

[–] [email protected] 2 points 1 year ago (1 children)

Help the world and start learning Elisp while writing a Lemmy client.

[–] [email protected] 3 points 1 year ago (1 children)

The point is there are people out there who are very familiar with the options for making this, who could easily kick-start a solution that would be more rational and better designed and based on a well conceived base. If I were to do it I would re-invent the wheel and flail around with awkward solutions.

I do know Elisp and have written packages so am at a basic-intermediate level. I just recognize that experience has benefits and I could contribute best by enhancing and fixing someone else's base design.

[–] [email protected] -1 points 1 year ago (1 children)

I'm not forcing you, but "re-invent the wheel" is a bit misconception when Lemmy itself is in the very early development stage.

[–] [email protected] 3 points 1 year ago (1 children)

You misunderstand me. I mean reinventing the wheel of the various functions the solution requires. The actual communication with Lemmy will be a tiny fraction of the work.

[–] zmhanham 1 points 1 year ago

It's always a learning opportunity regardless! Could be a great portfolio project as well. If you're worried about reinventing the wheel: Google every step of the way to find if a well supported package already exists for what you're trying to do. Read code of other popular packages that implement that feature you need and "steal" it from them. Maybe your lisp won't be very idiomatic but that can always be fixed and you have to learn that through experience anyways.

[–] [email protected] 1 points 1 year ago

I had also been thinking about this and figured it would make sense as a backend for gnus.el. I thught of starting a thread here but found this one first, so am posting to say I'm also interested in using such a thing. Idk if I'm organized enough to code it myself, due to RL distractions.

[–] [email protected] 1 points 1 year ago

made some progress. mainly spent time working on getting the sorting types and listing types going, so you can cycle between them on the go. v basic display of post details in byline, etc., but that can easily be spruced up by pulling code from mastodon.el. + markdown rendered posts/comments, uwu!

https://codeberg.org/martianh/lem. the readme has a rough todo list.

logging in and loading lem as package is still pretty rough, or kinda broken. but i'll get it sorted soon.

still gotta build a comments tree also, that's a biggie.

[–] [email protected] 1 points 1 year ago

I would be 100% down to support this - maybe something with an interface similar to notmuch?

[–] [email protected] 1 points 1 year ago

That's a brilliant idea! I hope that someone will pick it up and develop it. I've been super excited with Lemmy and the fediverse and if this happens it will take the whole experience to another level!

load more comments
view more: next ›