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:
parent
7e06b04300
commit
b6891017af
8 changed files with 43 additions and 150 deletions
|
|
@ -19,7 +19,7 @@
|
||||||
"A WAV or AU file used at the completion of a function.")
|
"A WAV or AU file used at the completion of a function.")
|
||||||
|
|
||||||
;; My replacement in case we can't play internal sounds:
|
;; My replacement in case we can't play internal sounds:
|
||||||
(defun beep-beep ()
|
(defun beep-beep (&rest _)
|
||||||
"Play a default notification sound file.
|
"Play a default notification sound file.
|
||||||
Customize the variable, `beep-alert-sound-file' to adjust the sound."
|
Customize the variable, `beep-alert-sound-file' to adjust the sound."
|
||||||
(if (fboundp 'play-sound-internal)
|
(if (fboundp 'play-sound-internal)
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ start some music to indicate we are working, and set a timer.
|
||||||
Call `ha-focus-break' when finished."
|
Call `ha-focus-break' when finished."
|
||||||
(interactive)
|
(interactive)
|
||||||
(ha-focus-countdown-timer 25 'ha-focus-break)
|
(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)
|
(if (eq major-mode 'org-mode)
|
||||||
(org-clock-in)
|
(org-clock-in)
|
||||||
(org-clock-in-last))
|
(org-clock-in-last))
|
||||||
|
|
@ -47,7 +47,7 @@ This also starts another break timer, that calls
|
||||||
`ha-focus-break-over' when finished."
|
`ha-focus-break-over' when finished."
|
||||||
(interactive)
|
(interactive)
|
||||||
(run-with-idle-timer 30 nil 'ha-focus-capture)
|
(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)
|
(ha-focus-countdown-timer 5 'ha-focus-break-over)
|
||||||
(message "🍅 Time to take a break."))
|
(message "🍅 Time to take a break."))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ A literate programming file for helper apps in Emacs.
|
||||||
#+end_src
|
#+end_src
|
||||||
* Introduction
|
* 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.
|
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
|
** 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.
|
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
|
#+begin_src emacs-lisp
|
||||||
|
|
@ -143,19 +143,6 @@ Perhaps we can make it more attractive:
|
||||||
ement-room-timestamp-format ""
|
ement-room-timestamp-format ""
|
||||||
ement-room-send-message-filter 'ement-room-send-org-filter))
|
ement-room-send-message-filter 'ement-room-send-org-filter))
|
||||||
#+end_src
|
#+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
|
** Telega
|
||||||
I'm thinking the [[https://zevlg.github.io/telega.el/][Telega package]] would be better than Bitlbee for Telegram communication.
|
I'm thinking the [[https://zevlg.github.io/telega.el/][Telega package]] would be better than Bitlbee for Telegram communication.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -244,6 +244,7 @@ I’m use [[https://github.com/deseven/icanhazshortcut][ICanHazShortcut]] to hav
|
||||||
#+begin_src sh :shebang "#!/bin/bash" :tangle ~/bin/emacs-capture-clock
|
#+begin_src sh :shebang "#!/bin/bash" :tangle ~/bin/emacs-capture-clock
|
||||||
/usr/bin/osascript ~/bin/emacs-capture-clock.scr
|
/usr/bin/osascript ~/bin/emacs-capture-clock.scr
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
But the following Applescript does the work:
|
But the following Applescript does the work:
|
||||||
#+begin_src applescript :sheband "#!/usr/bin/osascript" :tangle ~/bin/emacs-capture-clock.scr
|
#+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
|
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
|
(ignore-errors
|
||||||
(delete-frame)))
|
(delete-frame)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Oh, and it this is from the Terminal program, let’s wrap it in a block:
|
Oh, and it this is from the Terminal program, let’s wrap it in a block:
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(defun ha-external-capture-code-to-org ()
|
(defun ha-external-capture-code-to-org ()
|
||||||
|
|
@ -288,136 +290,10 @@ Oh, and it this is from the Terminal program, let’s wrap it in a block:
|
||||||
(ignore-errors
|
(ignore-errors
|
||||||
(delete-frame)))
|
(delete-frame)))
|
||||||
#+end_src
|
#+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:
|
Configure the *ICanHazShortcut* shortcuts to call these scripts, as in this screenshot:
|
||||||
[[file:screenshots/icanhazshortcuts.png]]
|
[[file:screenshots/icanhazshortcuts.png]]
|
||||||
|
|
||||||
And here is the configuration file for that:
|
And here is the configuration file for that:
|
||||||
#+begin_src conf :tangle ~/.config/iCanHazShortcut/config.ini :mkdirp yes
|
#+begin_src conf :tangle ~/.config/iCanHazShortcut/config.ini :mkdirp yes
|
||||||
[main]
|
[main]
|
||||||
|
|
|
||||||
|
|
@ -1112,6 +1112,7 @@ And some shortcut keys from the =general= project:
|
||||||
"<tab> n" '("new space" . ha-tab-bar-new)
|
"<tab> n" '("new space" . ha-tab-bar-new)
|
||||||
"<tab> u" '("update names" . ha-tab-bar-update-names)
|
"<tab> u" '("update names" . ha-tab-bar-update-names)
|
||||||
"<tab> d" '("delete space" . ha-tab-bar-delete)
|
"<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> w" '("special space" . ha-switch-to-special)
|
||||||
"<tab> `" '("recent" . tab-bar-switch-to-recent-tab))
|
"<tab> `" '("recent" . tab-bar-switch-to-recent-tab))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
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
|
** 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
|
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.
|
||||||
either be "there or not" which resulted large jumps and large distractions.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(use-package ultra-scroll
|
(use-package ultra-scroll
|
||||||
|
|
@ -89,16 +88,45 @@ either be "there or not" which resulted large jumps and large distractions.
|
||||||
(ultra-scroll-mode 1))
|
(ultra-scroll-mode 1))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
** Find the Bloody Cursor
|
** 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 Chua’s [[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
|
#+begin_src emacs-lisp
|
||||||
(use-package pulsar
|
(use-package pulsar
|
||||||
:straight (:host github :repo "protesilaos/pulsar")
|
:straight (:host github :repo "protesilaos/pulsar")
|
||||||
|
:after winum ace-window
|
||||||
:custom
|
:custom
|
||||||
(pulsar-face 'pulsar-generic)
|
(pulsar-face 'pulsar-generic)
|
||||||
(pulsar-delay 0.15)
|
(pulsar-delay 0.15)
|
||||||
|
|
||||||
:config
|
:config
|
||||||
|
(set-face-attribute 'pulsar-generic nil :background "orange")
|
||||||
|
|
||||||
(dolist (built-in-function '(recenter-top-bottom move-to-window-line-top-bottom reposition-window
|
(dolist (built-in-function '(recenter-top-bottom move-to-window-line-top-bottom reposition-window
|
||||||
bookmark-jump other-window delete-window delete-other-windows
|
bookmark-jump other-window delete-window delete-other-windows
|
||||||
forward-page backward-page scroll-up-command scroll-down-command
|
forward-page backward-page scroll-up-command scroll-down-command
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
#+date: 2020-09-18
|
#+date: 2020-09-18
|
||||||
#+tags: emacs org
|
#+tags: emacs org
|
||||||
#+startup: inlineimages
|
#+startup: inlineimages
|
||||||
#+lastmod: [2025-12-02 Tue]
|
#+lastmod: [2026-04-08 Wed]
|
||||||
|
|
||||||
A literate programming file for configuring org-mode and those files.
|
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
|
#+end_src
|
||||||
|
|
||||||
And tell [[https://www.flycheck.org/][flycheck]] to use this:
|
And tell [[https://www.flycheck.org/][flycheck]] to use Proselint:
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp :tangle no
|
||||||
(use-package flycheck
|
(use-package flycheck
|
||||||
:config
|
:config
|
||||||
(add-to-list 'flycheck-checkers 'proselint)
|
(add-to-list 'flycheck-checkers 'proselint)
|
||||||
|
|
|
||||||
|
|
@ -325,6 +325,7 @@ Let’s make a /theme/:
|
||||||
`(window-divider ((t :foreground "black")))
|
`(window-divider ((t :foreground "black")))
|
||||||
`(cursor ((t (:foreground ,gray-10 :background ,cursor))))
|
`(cursor ((t (:foreground ,gray-10 :background ,cursor))))
|
||||||
`(region ((t (:background ,region))))
|
`(region ((t (:background ,region))))
|
||||||
|
`(hl-line ((t (:background ,gray-20))))
|
||||||
|
|
||||||
`(mode-line ((t (:background ,active :foreground "white"))))
|
`(mode-line ((t (:background ,active :foreground "white"))))
|
||||||
`(mode-line-active ((t (:background ,active))))
|
`(mode-line-active ((t (:background ,active))))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue