Collection of bug-fixes and tweaks

Including:
  - Booting Spotify and Twitter
  - Booting icanhasshortcut for Hammerspoon
  - Fixes for helping to identify the line the cursor is on
This commit is contained in:
Howard Abrams 2026-06-05 16:06:12 -07:00
parent 7e06b04300
commit b6891017af
8 changed files with 43 additions and 150 deletions

View file

@ -19,7 +19,7 @@
"A WAV or AU file used at the completion of a function.")
;; My replacement in case we can't play internal sounds:
(defun beep-beep ()
(defun beep-beep (&rest _)
"Play a default notification sound file.
Customize the variable, `beep-alert-sound-file' to adjust the sound."
(if (fboundp 'play-sound-internal)

View file

@ -33,7 +33,7 @@ start some music to indicate we are working, and set a timer.
Call `ha-focus-break' when finished."
(interactive)
(ha-focus-countdown-timer 25 'ha-focus-break)
(ha-focus--command "tell application \"Spotify\" to play")
(ha-focus--command "tell application \"VLC\" to play")
(if (eq major-mode 'org-mode)
(org-clock-in)
(org-clock-in-last))
@ -47,7 +47,7 @@ This also starts another break timer, that calls
`ha-focus-break-over' when finished."
(interactive)
(run-with-idle-timer 30 nil 'ha-focus-capture)
(ha-focus--command "tell application \"Spotify\" to pause")
(ha-focus--command "tell application \"VLC\" to pause")
(ha-focus-countdown-timer 5 'ha-focus-break-over)
(message "🍅 Time to take a break."))

View file

@ -26,7 +26,7 @@ A literate programming file for helper apps in Emacs.
#+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
* Social Media Apps
** 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
@ -143,19 +143,6 @@ Perhaps we can make it more attractive:
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.

View file

@ -244,6 +244,7 @@ Im use [[https://github.com/deseven/icanhazshortcut][ICanHazShortcut]] to hav
#+begin_src sh :shebang "#!/bin/bash" :tangle ~/bin/emacs-capture-clock
/usr/bin/osascript ~/bin/emacs-capture-clock.scr
#+end_src
But the following Applescript does the work:
#+begin_src applescript :sheband "#!/usr/bin/osascript" :tangle ~/bin/emacs-capture-clock.scr
tell application "System Events" to set theApp to name of first application process whose frontmost is true
@ -273,6 +274,7 @@ Now we have some goodies on the clipboard, and the script uses =emacsclient= to
(ignore-errors
(delete-frame)))
#+end_src
Oh, and it this is from the Terminal program, lets wrap it in a block:
#+begin_src emacs-lisp
(defun ha-external-capture-code-to-org ()
@ -288,136 +290,10 @@ Oh, and it this is from the Terminal program, lets wrap it in a block:
(ignore-errors
(delete-frame)))
#+end_src
#+begin_src conf :tangle ~/.config/iCanHazShortcut/config.ini
[main]
config version = 2
shell = /bin/bash -l
populate_menu_with_actions = yes
show_hotkeys_in_menu = yes
check_for_updates = yes
start_on_login = yes
show_icon_in_statusbar = yes
set_workdir_with_cd = no
window_x = -988
window_y = 172
window_width = 600
window_height = 361
shortcut_column_enabled = yes
action_column_enabled = yes
command_column_enabled = yes
workdir_column_enabled = no
shortcut_column_width = 80
action_column_width = 160
command_column_width = 173
workdir_column_width = 100
[shortcut1]
shortcut = ⇧⌃⌥⌘E
action = Personal Emacs
command = open -a Emacs
workdir =
enabled = yes
[shortcut2]
shortcut = ⇧⌃⌥E
action = Work Emacs
command = FOR_WORK=yes open -a Emacs-Work
workdir =
enabled = yes
[shortcut3]
shortcut = ⇧⌃⌥⌘X
action = Emacs Capture
command = ~/bin/emacs-capture
workdir =
enabled = yes
[shortcut4]
shortcut = ⇧⌃⌥X
action = Emacs Capture Clipboard
command = ~/bin/emacs-capture-clock
workdir =
enabled = yes
[shortcut5]
shortcut = ⇧⌃⌥T
action = iTerm
command = open -a iTerm
workdir =
enabled = yes
[shortcut6]
shortcut = ⇧⌃⌥S
action = Slack
command = open -a Slack
workdir =
enabled = yes
[shortcut7]
shortcut = ⇧⌃⌥W
action = Spotify
command = open -a Spotify
workdir =
enabled = yes
[shortcut8]
shortcut = ⇧⌃⌥F
action = Firefox
command = open -a Firefox
workdir =
enabled = yes
[shortcut9]
shortcut = ⇧⌃⌥C
action = Chome
command = ~/bin/chrome.scr
workdir =
enabled = yes
[shortcut10]
shortcut = ⇧⌃⌥Q
action = Keepass
command = open -a KeepassXC
workdir =
enabled = yes
[shortcut11]
shortcut = ⇧⌃⌥Z
action = Zoom
command = open -a zoom.us
workdir =
enabled = yes
[shortcut12]
shortcut = ⌃F1
action = Mute Zoom
command = ~/bin/zoom-muter
workdir =
enabled = yes
[shortcut13]
shortcut = ⇧⌃⌥⌘M
action = Capture Meeting
command = ~/bin/emacs-capture-meeting
workdir =
enabled = yes
[shortcut14]
shortcut = ⇧⌃⌥⌘B
action = Outlook
command = open -a "Microsoft Outlook"
workdir =
enabled = yes
[shortcut15]
shortcut = ⇧⌃⌥⌘D
action = Discord
command = open -a Discord
workdir =
enabled = yes
#+end_src
Configure the *ICanHazShortcut* shortcuts to call these scripts, as in this screenshot:
[[file:screenshots/icanhazshortcuts.png]]
And here is the configuration file for that:
#+begin_src conf :tangle ~/.config/iCanHazShortcut/config.ini :mkdirp yes
[main]

View file

@ -1112,6 +1112,7 @@ And some shortcut keys from the =general= project:
"<tab> n" '("new space" . ha-tab-bar-new)
"<tab> u" '("update names" . ha-tab-bar-update-names)
"<tab> d" '("delete space" . ha-tab-bar-delete)
"<tab> t" '("toggle tab-bar" . tab-bar-mode)
"<tab> w" '("special space" . ha-switch-to-special)
"<tab> `" '("recent" . tab-bar-switch-to-recent-tab))

View file

@ -76,8 +76,7 @@ To make the active window /more noticeable/, we /dim/ the in-active windows with
As an interesting alternative, check out the [[https://www.emacs.dyerdwelling.family/emacs/20240208164549-emacs-selected-window-accent-mode-now-on-melpa/][selected-window-accent]] project.
** Ultra Scroll
The [[https://github.com/jdtsmith/ultra-scroll][ultra-scroll]] project allows smoother scrolling of text and images. While this splits text at the top/bottom of buffer windows, we no longer work within a 80x24 text matrix. Large images would
either be "there or not" which resulted large jumps and large distractions.
The [[https://github.com/jdtsmith/ultra-scroll][ultra-scroll]] project allows smoother scrolling of text and images. While this splits text at the top/bottom of buffer windows, we no longer work within a 80x24 text matrix. Large images would either be "there or not" which resulted large jumps and large distractions.
#+BEGIN_SRC emacs-lisp
(use-package ultra-scroll
@ -89,16 +88,45 @@ either be "there or not" which resulted large jumps and large distractions.
(ultra-scroll-mode 1))
#+END_SRC
** Find the Bloody Cursor
Large screen, lots of windows, so where is the cursor? While I used to use =hl-line+=, I found that the prolific [[https://protesilaos.com/][Protesilaos Stavrou]] [[https://protesilaos.com/codelog/2022-03-14-emacs-pulsar-demo/][introduced his Pulsar project]] is just what I need. Specifically, I might /loose the cursor/ and need to have it highlighted (using ~F8~), but also, this automatically highlights the cursor line with specific /actions/ , like changing windows.
Large screen, lots of windows, so where is the cursor? While I used to use =hl-line+=, Sacha Chuas [[https://fediscience.org/@ericsfraga/116279043710841253][suggestion]] solves the problem of the built-in =hl-line= that /highlights paragraphs/ in Org with a single function:
#+BEGIN_SRC emacs-lisp
(defun get-visual-line-range ()
"Identify current visual line (for highlighting mostly)
Use the visual line functions to define the range in the buffer
that should be highlighted when ~hl-line-mode~ is enabled. By
default, the whole line in the file is highlighted. This is not
particularly useful in org files where I have whole paragraphs in a
single file line."
(let (b e)
(save-excursion
(beginning-of-visual-line)
(setq b (point))
(end-of-visual-line)
(setq e (point)))
(cons b e)))
(setq hl-line-range-function #'get-visual-line-range)
(global-hl-line-mode 1)
#+END_SRC
The real trick should /visually/ highlight the current line without being too light and interfering with seeing the text or being too obnoxious (see my [[file:ha-theme.org::*Dark Theme][Dark Theme]]).
I found that the prolific [[https://protesilaos.com/][Protesilaos Stavrou]] [[https://protesilaos.com/codelog/2022-03-14-emacs-pulsar-demo/][introduced his Pulsar project]] is just what I need. Specifically, I might /loose the cursor/ and need to have it highlighted (using ~F8~), but also, this automatically highlights the cursor line with specific /actions/ , like changing windows.
#+begin_src emacs-lisp
(use-package pulsar
:straight (:host github :repo "protesilaos/pulsar")
:after winum ace-window
:custom
(pulsar-face 'pulsar-generic)
(pulsar-delay 0.15)
:config
(set-face-attribute 'pulsar-generic nil :background "orange")
(dolist (built-in-function '(recenter-top-bottom move-to-window-line-top-bottom reposition-window
bookmark-jump other-window delete-window delete-other-windows
forward-page backward-page scroll-up-command scroll-down-command

View file

@ -3,7 +3,7 @@
#+date: 2020-09-18
#+tags: emacs org
#+startup: inlineimages
#+lastmod: [2025-12-02 Tue]
#+lastmod: [2026-04-08 Wed]
A literate programming file for configuring org-mode and those files.
@ -1022,8 +1022,8 @@ Next, create a configuration file, =~/.config/proselint/config= file, to turn on
}
#+end_src
And tell [[https://www.flycheck.org/][flycheck]] to use this:
#+begin_src emacs-lisp
And tell [[https://www.flycheck.org/][flycheck]] to use Proselint:
#+begin_src emacs-lisp :tangle no
(use-package flycheck
:config
(add-to-list 'flycheck-checkers 'proselint)

View file

@ -325,6 +325,7 @@ Lets make a /theme/:
`(window-divider ((t :foreground "black")))
`(cursor ((t (:foreground ,gray-10 :background ,cursor))))
`(region ((t (:background ,region))))
`(hl-line ((t (:background ,gray-20))))
`(mode-line ((t (:background ,active :foreground "white"))))
`(mode-line-active ((t (:background ,active))))