wpa-manager.el and torrent-mode.el

2023/03/12

There is a nice bluetooth-mode to scan and connect to bluetooth devices, but no such mode for wifi. It’s time to fix that. I’ve started implementing wpa-manager which controls wpa_supplicant over its D-Bus interface. Currently the manager supports scanning and connecting using WPA PSK. It already solves most of my use cases.

SSID                     BSSID                            Freq  Signalâ–¼
SARG                     5B:32:C6:8F:55:03                5180   -47
FRITZ!Box 7362 SL        7D:3D:12:D4:C1:1C                2417   -53
ZYXEL-795                65:18:77:8E:6B:0C                2412   -56
WLAN-123488              27:49:1B:71:5D:F7                2412   -62
FRITZ!Box 7530 IG        F0:B4:4A:AB:B4:9F                2462   -63
WLAN-WWAAAB              83:F9:C3:23:C1:1C                2462   -65
FRITZ!Box 7430 DR        63:E7:BC:09:16:C0                2462   -73
WLAN-123488              B2:8A:27:3B:C7:39                5500   -75

Another package is torrent-mode which provides a tabulated view of a torrent file content. An example of how it looks like.

   Idx â–¼Size     Name
   000  2.1k     dumpruninfo.txt
   001  4.8G     enwiki-20170220-abstract.xml
   002  741M     enwiki-20170220-abstract1.xml
   003  353M     enwiki-20170220-abstract2.xml
   004  259M     enwiki-20170220-abstract3.xml
   005  202M     enwiki-20170220-abstract4.xml
*  006  168M     enwiki-20170220-abstract5.xml
*  007  161M     enwiki-20170220-abstract6.xml
*  008  183M     enwiki-20170220-abstract7.xml
*  009  161M     enwiki-20170220-abstract8.xml
*  010  133M     enwiki-20170220-abstract9.xml

This mode supports selecting individual files which could then be fed into aria2 using a small defun:

(defun torrent-mode-download-selected (dest-dir)
  "Download ARG entries."
  (interactive
   (list (read-directory-name
          "Directory: "
          (or (dired-dwim-target-directory)
              aria2-download-directory)
          nil
          t))
   'torrent-mode)

  ;; aria2.addTorrent([secret, ]torrent[, uris[, options[, position]]])
  (make-request
   aria2--cc "aria2.addTorrent"
   (aria2--base64-encode-file buffer-file-name)
   []
   `(:select-file ,(seq-map #'car (tablist-get-marked-items))
     :dir ,(expand-file-name dest-dir))))