hamacs/ha-aux-apps.org
Howard Abrams b8f8f2421f Tangling was a mistake
Unless I want to redo everything, and always tangle files (tempting).
2023-07-10 09:25:40 -07:00

184 lines
7.8 KiB
Org Mode
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#+TITLE: Auxillary and Optional Applications
#+AUTHOR: Howard X. Abrams
#+DATE: 2021-11-18
A literate programming file for helper apps in Emacs.
#+begin_src emacs-lisp :exports none
;;; ha-aux-apps --- Configuring helper apps in Emacs. -*- lexical-binding: t; -*-
;;
;; © 2021-2023 Howard X. Abrams
;; Licensed under a Creative Commons Attribution 4.0 International License.
;; See http://creativecommons.org/licenses/by/4.0/
;;
;; Author: Howard X. Abrams <http://gitlab.com/howardabrams>
;; Maintainer: Howard X. Abrams
;; Created: November 18, 2021
;;
;; This file is not part of GNU Emacs.
;;
;; *NB:* Do not edit this file. Instead, edit the original literate file at:
;; ~/other/hamacs/ha-aux-apps.org
;; And tangle the file to recreate this one.
;;
;;; Code:
#+end_src
* Introduction
The following applications are not needed. I alternate between trying to /stay in Emacs/ taking advantage of the consistent interface, and using a stand-alone app on my Workday computer.
* Twitter
The venerable [[https://github.com/hayamiz/twittering-mode/tree/master][twittering-mode]] allows me to follow all the twits.
#+begin_src emacs-lisp :tangle no
(use-package twittering-mode
:init
(setq twittering-use-master-password t
epa-pinentry-mode 'loopback)
:config
(defalias 'epa--decode-coding-string 'decode-coding-string)
(ha-leader "a t" '("twitter" . twit)))
#+end_src
And we are no longer using this package.
* Mastodon
Glad to see the 2FA feature is working on the [[https://codeberg.org/martianh/mastodon.el][mastodon.el]] project, and even more glad to see the great birdland diaspora arrive in the land of the toots.
#+begin_src emacs-lisp
(use-package mastodon
:straight (:host codeberg :repo "martianh/mastodon.el")
:init
(setq mastodon-instance-url "https://emacs.ch"
mastodon-active-user "howard"))
#+end_src
I would like a dedicate perspective to Mastodon, and I would like a leader key sequence that /expands/ will all options, once Mastodon is running in its own perspective:
#+begin_src emacs-lisp
(use-package mastodon
:config
(defun mastodon-perspective ()
(interactive)
(let ((already-tooted? (seq-contains-p
(persp-names) "mastodon" 'equal)))
(persp-switch "mastodon")
(unless already-tooted?
(ha-local-leader :keymaps 'mastodon-mode-map
;; "," '("thread" . mastodon-tl--thread)
"t" '("toot" . mastodon-toot)
"u" '("update" . mastodon-tl--update)
"f" '("favorite" . mastodon-toot--toggle-favourite)
"b" '("boost" . mastodon-toot--toggle-boost)
"r" '("reply" . mastodon-toot--reply)
"s" '("share" . mastodon-toot--copy-toot-url)
"y" '("copy text" . mastodon-toot--copy-toot-text)
"d" '("discover" . mastodon-discover))
(my-mastodon-start))))
(ha-leader
"a m" '("mastodon" . mastodon-perspective)))
#+end_src
Starting the =mastodon= perspective, I set some initial windows:
#+begin_src emacs-lisp
(defun my-mastodon-start ()
"Configure the window placement for a Mastodon Instance."
(let ((default-directory (getenv "HOME")))
(mastodon)
(switch-to-buffer "*mastodon-home*")
(split-window-right)
(mastodon-tl--get-local-timeline)
(switch-to-buffer "*mastodon-local*")))
#+end_src
* Telega
I'm thinking the [[https://zevlg.github.io/telega.el/][Telega package]] would be better than Bitlbee for Telegram communication.
#+begin_src emacs-lisp
(use-package telega
:commands (telega)
:config
(setq telega-user-use-avatars nil
telega-use-tracking-for nil ; '(any pin unread)
telega-chat-use-markdown-formatting t
telega-emoji-use-images t
; telega-completing-read-function #'ivy-completing-read
telega-msg-rainbow-title nil)
(add-hook 'telega-chat-mode-hook 'evil-insert-state)
(ha-leader "a t" 'telega))
#+end_src
For some reason, you need [[https://github.com/Fanael/rainbow-identifiers][rainbow-identifiers]] to work, oh, I guess the docs state this.
* Matrix/Element
Yet another encrypted chat/VoIP client-server, but unlike Signal and Telegram, [[matrix.org][Matrix]] is act ually open source. In other words, a project for nerds. Well be using Alphapapas latest [[https://github.c om/alphapapa/ement.el][ement]] project.
#+begin_src emacs-lisp
(use-package ement
:straight (:host github :repo "alphapapa/ement.el")
:config
(defun ha-ement-connect ()
(interactive)
(let* ((auth-results (auth-source-search :host "howardism-matrix"))
(auth-first (first auth-results))
(username (plist-get auth-first :user))
(password (funcall (plist-get auth-first :secret))))
(ement-connect :user-id username
:password password
:uri-prefix "https://howardism.org"))
(ha-leader
"a x S" '("send" . ement-send-direct-message)
"a x s" '("send" . ement-room-send-message)
"a x c" '("compose" . ement-room-compose-message)
"a x r" '("room" . ement-view-room)
"a x d" '("discover" . mastodon-discover)))
(ha-leader
"a x" '(:ignore t :which-key "matrix")
"a x x" '("connect" . ha-ement-connect)
"a x s" '("send" . ement-send-direct-message)))
#+end_src
Perhaps we can make it more attractive:
#+begin_src emacs-lisp
(use-package ement
:hook (ement-room-mode . ha-textual-litagures)
:init
(setq ement-save-sessions t
ement-room-send-message-filter 'ement-room-send-org-filter))
#+end_src
* RPG DM
Been working on my [[https://gitlab.com/howardabrams/emacs-rpgdm][RPG DM project]] for getting Emacs helping as a /Dungeon Master's Assistant/. The idea is to be able to roll dice and whatnot. What I find most useful is the [[https://gitlab.com/howardabrams/emacs-rpgdm/-/blob/main/rpgdm-tables.el][random tables]].
#+begin_src emacs-lisp
(when (f-directory? "~/other/rpgdm")
(use-package rpgdm
:straight (:local-repo "~/other/rpgdm")
:commands (rpgdm-mode rpgdm-tables-load)
:init (setq rpgdm-base (expand-file-name "~/other/rpgdm"))
:config (ha-leader "t D" '("rpg dm" . rpgdm-mode))))
#+end_src
And my [[https://gitlab.com/howardabrams/emacs-ironsworn][new Ironsworn project]] expands on it, giving me both the Oracles and the Moves. With an Org file, I can easily play Solo:
#+begin_src emacs-lisp
(when (f-directory? "~/other/emacs-ironsworn")
(use-package rpgdm-ironsworn
:after rpgdm
:straight (:local-repo "~/other/emacs-ironsworn")
:init
(setq rpgdm-ironsworn-project (expand-file-name "~/other/emacs-ironsworn")
;; Ignore org links that call my RPG functions:
org-link-elisp-skip-confirm-regexp (rx string-start (optional "(") "rpgdm-"
(or "tables-" "ironsworn-")
(one-or-more any)))))
#+end_src
The project is interesting, and I should record a tutorial how to use it.
* Technical Artifacts :noexport:
Let's =provide= a name so we can =require= this file:
#+begin_src emacs-lisp :exports none
(provide 'ha-aux-apps)
;;; ha-aux-apps.el ends here
#+end_src
#+DESCRIPTION: A literate programming file for helper apps in Emacs.
#+PROPERTY: header-args:sh :tangle no
#+PROPERTY: header-args:emacs-lisp :tangle yes
#+PROPERTY: header-args :results none :eval no-export :comments no mkdirp yes
#+OPTIONS: num:nil toc:nil todo:nil tasks:nil tags:nil date:nil
#+OPTIONS: skip:nil author:nil email:nil creator:nil timestamp:nil
#+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js