System Crafters

System Crafters Live! - June 4, 2021

Watch the recording on YouTube!

The Great IRC Experiment

  • About 40-50 people in the channel at any time
  • We're now a registered community on Libera.Chat!
  • The #systemcrafters channel is bridged to Matrix (matrix.org instance)
  • Benoit is working on crafter-bot derived from the one from #emacs
  • Will we be leaving Discord? Short answer: no!

Shom's wiki page: https://wiki.systemcrafters.cc/community/chat-with-us/

Contribute to the System Crafters wiki! https://github.com/SystemCrafters/wiki-site

I'm experimenting with a ZNC bouncer for $5+ sponsors, looking for 5 people to try it!

Improving the IRC Experience in ERC

Improving the display of messages

You can change how ERC displays messages with erc-fill-mode:


(setq erc-fill-column 120
      erc-fill-function 'erc-fill-static
      erc-fill-static-center 20)

Customizing activity tracking

Mode line tracking of channels is useful but can be a little annoying:


(setq erc-track-exclude '("#emacs")
      erc-track-exclude-types '("JOIN" "NICK" "QUIT" "MODE" "AWAY")
      erc-hide-list '("JOIN" "NICK" "QUIT" "MODE" "AWAY")
      erc-track-exclude-server-buffer t)

If you're using multiple frames, especially if you keep IRC buffers on a specific EXWM workspace, this setting can be useful:


(setq erc-track-visibility nil) ; Only use the selected frame for visibility

Tracking specific keywords or people


(setq erc-pals '("shom_" "masteroman" "benoitj")
            erc-fools '("daviwil-test")
            erc-keywords '("guix" "wiki"))

Desktop notifications for matches/mentions


(add-to-list 'erc-modules 'notifications)

Uniquely colorizing nicknames in chat

This makes it easier to recognize specific people at a glance!


(use-package erc-hl-nicks
  :ensure t
  :after erc
  :config
  (add-to-list 'erc-modules 'hl-nicks))

You might need to run M-: (erc-update-modules) after running this in an existing Emacs session!

Displaying inline images


(use-package erc-image
  :ensure t
  :after erc
  :config
  (setq erc-image-inline-rescale 300)
  (add-to-list 'erc-modules 'image))

Try it out in a chat (like in /query NickServ): https://upload.wikimedia.org/wikipedia/commons/thumb/0/08/EmacsIcon.svg/1200px-EmacsIcon.svg.png

NOTE: Make sure to pull the latest version of the package! Karthik and TitanOfOld on #systemcrafters IRC worked together to fix image scaling on Emacs 27+!

https://github.com/kidd/erc-image.el/pull/25

Displaying emojis in messages

Use emojify-mode:


(use-package emojify
  :ensure t
  :hook (erc-mode . emojify-mode)
  :commands emojify-mode)

Connecting to a specific server with a keybinding


(defun my/connect-irc ()
  (interactive)
  (erc-tls
      :server "irc.libera.chat"
      :port 6697
      :nick "mynick"
      ;; This is using password-store.el.  Not needed if you use auth-source!
      :password (password-store-get "IRC/irc.libera.chat")))

(global-set-key (kbd "C-c c c") 'my/connect-irc)

Jumping to IRC buffers easily

Two commands are useful for this:

  • erc-switch-to-buffer
  • erc-track-switch-buffer (bound to C-c C-SPC if erc-track-enable-keybindings is t)

(setq erc-track-enable-keybindings t)

Automatically logging in

You'll need auth-source set up for this to work! Check out the video I made about storing your passwords in Emacs.

Setting this variable to nil will tell ERC that it should look up your password automatically when connecting.


(setq erc-prompt-for-password nil)

Using ZNC

https://github.com/sshirokov/ZNC.el

Emacs News

Next week on the stream

We'll be doing another Dotfile Detective stream featuring a discussion with Ambrevar about his dotfiles and possibly other topics!