A small Emacs startup panel focused on recent files, startup info, and optional weather.
- Shows up to 9 recent files with icons and numeric shortcuts.
- Shows a terminal-friendly ASCII intro block by default in TTY Emacs.
- Highlights the
[n]shortcut for the current line. - Opens the current line with
REToro. - Shows startup time and loaded package count.
- Optionally shows current weather from Open-Meteo.
- Optionally shows a centered PNG image.
- Refreshes with
gorr.
- Emacs 27.1+
plznerd-iconsfor file and status icons (optional but recommended)
recentf is built in.
(use-package panel
:straight (:host github
:repo "LuciusChen/panel")
:init
(setq panel-title "Quick access [C-number to open file]"
panel-min-left-padding 10
panel-path-max-length 72)
:config
(panel-create-hook))(add-to-list 'load-path "/path/to/panel")
(require 'panel)
(panel-create-hook)(setq panel-title "Quick access [C-number to open file]"
panel-min-left-padding 10
panel-path-max-length 72
panel-intro-display 'tty
panel-intro-horizontal-offset -2
panel-use-icons t)The intro block is rendered with plain text, so it works in terminal Emacs without image support.
(setq panel-intro-display 'tty
panel-intro-lines
'("┌─┐ ┌┬┐ ┌─┐ ┌─┐ ┌─┐"
"├┤ │││ ├─┤ │ └─┐"
"└─┘ ┴ ┴ ┴ ┴ └─┘ └─┘")
panel-intro-help-lines
'(("C-x C-f" . "find a file")
("C-h t" . "start the Emacs tutorial")
("q" . "close this panel")))panel-intro-display: show the intro intty,always, ornever.panel-intro-lines: override the ASCII logo lines.panel-intro-horizontal-offset: shift the top header horizontally. Affects both the TTY intro and the graphical image.panel-intro-help-lines: override the key hints shown below the logo.panel-use-icons: keep usingnerd-iconswhen available, including in terminal Emacs.
Set both coordinates to enable weather. Negative values are valid.
(setq panel-latitude 31.2304
panel-longitude 121.4737
panel-weather-update-interval 900
panel-weather-cache-duration 900
panel-weather-max-retries 3
panel-weather-api-base-url "https://api.open-meteo.com/v1/forecast")Weather is fetched from Open-Meteo and refreshed on a timer. Cached data is reused while valid, and transient API failures show Weather unavailable instead of leaving the panel stuck on Loading weather data....
If panel-image-file points to an existing PNG file, it is shown above the recent-files list in graphical Emacs.
(setq panel-image-file "~/Pictures/panel.png"
panel-image-width 200
panel-image-height 200)RET: open the recent file on the current lineo: open the recent file on the current line1..9: open recent file by indexM-s-1..M-s-9: open recent file by indexg: refresh panelr: refresh panel
panel-titlepanel-min-left-paddingpanel-path-max-lengthpanel-latitudepanel-longitudepanel-image-filepanel-image-widthpanel-image-heightpanel-weather-update-intervalpanel-weather-cache-durationpanel-weather-max-retriespanel-weather-api-base-urlpanel-show-file-pathpanel-intro-displaypanel-intro-linespanel-intro-horizontal-offsetpanel-intro-help-linespanel-use-icons
- The panel buffer is
*welcome*. - Set
panel-show-file-pathto nil to hide directory prefixes in recent-file entries. - Missing files are shown in the list and opening them reports a user error instead of creating a new buffer.
M-x panel-create-hookM-x panel-refresh
