hamacs/ha-aux-apps.org

248 lines
10 KiB
Org Mode
Raw Permalink Normal View History

2023-12-03 18:57:36 +00:00
#+title: Auxillary and Optional Applications
#+author: Howard X. Abrams
#+date: 2021-11-18
#+tags: emacs
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:
;; ~/src/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.
* Federation
** 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.
2022-11-08 04:47:18 +00:00
#+begin_src emacs-lisp
(use-package mastodon
2023-03-13 04:25:23 +00:00
:straight (:host codeberg :repo "martianh/mastodon.el")
2022-11-08 04:47:18 +00:00
:init
2024-10-01 22:09:07 +00:00
(setq mastodon-instance-url "https://pdx.sh"
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
2022-11-08 04:47:18 +00:00
:config
(ha-leader "a m" `("mastodon" . ,(ha-app-perspective "mastodon" #'mastodon)))
2024-06-02 00:52:54 +00:00
(defun ha-mastodon-scroll-or-more ()
"Scroll a window, and at the end, get more entries in timeline."
(interactive)
(condition-case nil
(scroll-up-command)
(end-of-buffer
(mastodon-tl--more))))
(use-package major-mode-hydra
:config
(major-mode-hydra-define mastodon-mode nil
("Timelines"
(("u" mastodon-tl--update "update")
("F" mastodon-tl--get-federated-timeline "Federated")
("H" mastodon-tl--get-home-timeline "Home")
("L" mastodon-tl--get-local-timeline "Local")
("T" mastodon-tl--get-tag-timeline "Hashtag"))
"Specials"
(("M" mastodon-notifications--get-mentions "Mentions")
("N" mastodon-notifications-get "Notifications")
("A" mastodon-tl--followed-tags-timeline "All Tags")
("S" mastodon-profile--view-bookmarks "Saved bookmarks")
("O" mastodon-profile--my-profile "My Profile"))
"Post"
(("c" mastodon-toot "Compose toot")
("e" mastodon-toot--edit-toot-at-point "Edit toot")
("t" mastodon-tl--thread "Read thread")
("r" mastodon-toot--reply "Reply")
("m" mastodon-tl--dm-user "Direct Msg")
("d" mastodon-toot--delete-toot "Delete"))
"Toot"
(("f" mastodon-toot--toggle-favourite "Favorite")
("b" mastodon-toot--toggle-boost "Boost")
("s" mastodon-toot--toggle-bookmark "Save")
("y" mastodon-toot--copy-toot-url "Copy URL")
("Y" mastodon-toot--copy-toot-text "Copy text"))
"Navigation"
(("n" mastodon-tl--next-tab-item "next" :color pink)
2024-06-02 00:52:54 +00:00
("p" mastodon-tl--previous-tab-item "previous" :color pink)
("," ha-mastodon-scroll-or-more "...more" :color pink))))))
#+end_src
Lets turn on non-fixed-width fonts to make everything easier to read:
#+begin_src emacs-lisp
(use-package mastodon
:hook (mastodon-mode . mixed-pitch-mode))
#+end_src
#+end_src
** Matrix/Element
2024-03-22 20:43:12 +00:00
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.com/alphapapa/ement.el][ement]] project.
2023-02-22 01:25:33 +00:00
#+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)))
2023-02-22 01:25:33 +00:00
(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)
:custom-face
(ement-room-self-message ((t (:inherit variable-pitch :height 1.0))))
(ement-room-message-text ((t (:inherit variable-pitch :height 1.1 :foreground "#f08c60"))))
:init
(setq ement-save-sessions t
2024-03-22 20:43:12 +00:00
ement-room-avatars nil
ement-room-timestamp-format ""
ement-room-send-message-filter 'ement-room-send-org-filter))
#+end_src
* Other
** 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.
** 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
:config
(setq telega-chat-show-avatars nil
telega-use-tracking-for nil ; '(any pin unread)
;; Use org formatting for normal messages.
;; Want to send the org markup without formatting?
;; The `nil' sets that with `C-u' then Return:
telega-chat-input-markups '("org" nil)
telega-emoji-use-images t
; telega-completing-read-function #'ivy-completing-read
telega-msg-rainbow-title nil)
(when (fboundp 'evil-insert-state)
(add-hook 'telega-chat-mode-hook 'evil-insert-state))
(ha-leader "a t" `("telega" . ,(ha-app-perspective "telega" #'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.
In the Telega chats, lets turn on non-fixed-width fonts:
#+begin_src emacs-lisp
(use-package telega
:hook (telega-chat-mode . mixed-pitch-mode))
#+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? "~/src/emacs-rpgdm")
(use-package rpgdm
:straight (:local-repo "~/src/emacs-rpgdm")
:commands (rpgdm-mode rpgdm-tables-load)
:init (setq rpgdm-base (expand-file-name "~/src/emacs-rpgdm"))
:config (ha-leader "t D" '("rpg dm" . rpgdm-mode))))
#+end_src
2024-05-19 16:31:24 +00:00
Working on my new replacement of my DM code:
#+begin_src emacs-lisp
(when (f-directory? "~/src/emacs-rpgtk")
2024-05-19 16:31:24 +00:00
(use-package rpgtk
:straight (:local-repo "~/src/emacs-rpgtk")
:after hydra
2024-05-19 16:31:24 +00:00
;; :commands (rpgtk-mode rpgtk-tables-load rpgtk-dice rpgtk-message)
:custom
(rpgtk-tables-directory (expand-file-name "~/src/emacs-rpgtk/tables"))
2024-05-19 16:31:24 +00:00
:config
(ha-leader
"t D" '("rpg dm" . rpgtk-mode)
"a d" '("rpg dm" . hydra-rpgtk/body))))
#+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? "~/src/emacs-ironsworn")
(use-package rpgdm-ironsworn
:after rpgdm
:straight (:local-repo "~/src/emacs-ironsworn")
:init
(setq rpgdm-ironsworn-project (expand-file-name "~/src/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.
* Playing Music
Why not? Lets see if the [[https://github.com/isamert/empv.el][empv]] project is sufficient. First install =mpv=, as in:
#+begin_src sh
brew install mpv
#+end_src
What else?
#+begin_src emacs-lisp
(use-package empv
:straight (:host github :repo "isamert/empv.el")
:general (ha-leader
"a p" '(empv-map :wk "play music")))
#+end_src
* 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:t todo:nil tasks:nil tags:nil date:nil
#+options: skip:nil author:nil email:nil creator:nil timestamp:nil
#+infojs_opt: view:nil toc:t ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js