惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
T
The Blog of Author Tim Ferriss
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
Last Week in AI
Last Week in AI
Recorded Future
Recorded Future
博客园 - 司徒正美
V
Vulnerabilities – Threatpost
月光博客
月光博客
C
CXSECURITY Database RSS Feed - CXSecurity.com
D
Darknet – Hacking Tools, Hacker News & Cyber Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Microsoft Azure Blog
Microsoft Azure Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Jina AI
Jina AI
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hacker News: Ask HN
Hacker News: Ask HN
S
Security Affairs
V
Visual Studio Blog
Schneier on Security
Schneier on Security
T
Tailwind CSS Blog
Martin Fowler
Martin Fowler
V2EX - 技术
V2EX - 技术
博客园 - Franky
S
Secure Thoughts
Blog — PlanetScale
Blog — PlanetScale
G
GRAHAM CLULEY
D
DataBreaches.Net
O
OpenAI News
Forbes - Security
Forbes - Security
云风的 BLOG
云风的 BLOG
Google Online Security Blog
Google Online Security Blog
博客园 - 三生石上(FineUI控件)
T
Tor Project blog
T
Tenable Blog
Latest news
Latest news
N
News and Events Feed by Topic
博客园_首页
Simon Willison's Weblog
Simon Willison's Weblog
C
Cybersecurity and Infrastructure Security Agency CISA
美团技术团队
T
The Exploit Database - CXSecurity.com
K
Kaspersky official blog
B
Blog
阮一峰的网络日志
阮一峰的网络日志
T
Threat Research - Cisco Blogs
SecWiki News
SecWiki News
PCI Perspectives
PCI Perspectives
GbyAI
GbyAI

Planet GNU

Fundraiser extended. Help us reach our goal and get an anti-surveillance cover — Free Software Foundation — Working together for free software Free Software Directory meeting on IRC: Friday, September 4, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software Stop the GUARD Act and age verification laws worldwide — Free Software Foundation — Working together for free software GNU Screen - News [Savannah] findutils @ Savannah: GNU findutils 4.11.0 released Free Software Directory meeting on IRC: Friday, July 17, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software How the FSF sysadmins block botnets with reaction — Free Software Foundation — Working together for free software Free Software Directory meeting on IRC: Friday, July 10, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software GNU CSSC - News [Savannah] GNU Guix: ‘guix substitute‘ and ‘guix pull‘ Vulnerabilities We're campaigning for free software. We need your help — Free Software Foundation — Working together for free software June GNU Spotlight with Amin Bandali featuring eighteen new GNU releases: Linux-libre, Direvent, and more! — Free Software Foundation — Working together for free software LibrePhone update, organizing locally, and more in issue 48 of the digital Bulletin — Free Software Foundation — Working together for free software Free Software Directory meeting on IRC: Friday, July 3, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software Unifont - News [Savannah] GNU Parallel - News [Savannah] Ten stories from around the world: LibreLocal 2026, part one — Free Software Foundation — Working together for free software Informing and defending — Free Software Foundation — Working together for free software Informing and defending — Free Software Foundation — Working together for free software Free Software Directory meeting on IRC: Friday, June 26, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software GNU Guix: One year with Codeberg Statement regarding GNU Savannah security reports — Free Software Foundation — Working together for free software longintrepr.h – gbenson.net GNU CSSC - News [Savannah] GNU Press Shop open now through July 19 — Free Software Foundation — Working together for free software Past, present and future — Free Software Foundation — Working together for free software Free Software Directory meeting on IRC: Friday, June 19, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software GNU Taler Free Software Directory meeting on IRC: Friday, June 12, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software GNUtrition - News [Savannah] GNU direvent - News [Savannah] GNU Libtool - News [Savannah] Nominate a person or project by July 12 — Free Software Foundation — Working together for free software GNUtrition - News [Savannah] Freie/libre/libero/liber software, for sovereignty and freedom — Free Software Foundation — Working together for free software FSD meeting and weekly recap 2026-05-29 — Free Software Foundation — Working together for free software GNU FreeIPMI - News [Savannah] Free Software Directory meeting on IRC: Friday, June 5, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software May GNU Spotlight with Amin Bandali featuring eleven new GNU releases: GnuPG, G-Golf, and more! — Free Software Foundation — Working together for free software Free software activities in May 2026 GNUtrition - News [Savannah] Free Software Directory meeting on IRC: Friday, May 29, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software GNUtrition - News [Savannah] GNU Parallel - News [Savannah] Thinking about life - chat with Protesilaos Forty-six free software meetups on six continents — Free Software Foundation — Working together for free software GNU Taler Docker images by age or size – gbenson.net Free Software Directory meeting on IRC: Friday, May 22, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software FFS code review and Emacs extensibility with Protesilaos GNUtrition - News [Savannah] Free Software vs malware and the need for reverse engineering — Free Software Foundation — Working together for free software GNU Guix: Time travel without borders GNUtrition - News [Savannah] Free Software Directory meeting on IRC: Friday, May 8, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software FFS code review with Protesilaos Emacs Chat with Sacha Chua FSD meeting and weekly recap 2026-05-01 — Free Software Foundation — Working together for free software April GNU Spotlight with Amin Bandali featuring nineteen new GNU releases: Parallel, Time, and more! — Free Software Foundation — Working together for free software GNU Taler www.gnu.org - News [Savannah] It's May, and we've been keeping busy — Free Software Foundation — Working together for free software GNU Health - News [Savannah] GNU Parallel - News [Savannah] Nonfree and unethical — Free Software Foundation — Working together for free software GNU sed - News [Savannah] GNU Core Utilities - News [Savannah] GNU Health - News [Savannah] GNU Taler GNU Health - News [Savannah] You cannot use the GNU (A)GPL to take software freedom away — Free Software Foundation — Working together for free software GNU Time - News [Savannah] GNU Health - News [Savannah] Trisquel 12.0 "Ecne" release announcement | Trisquel GNU/Linux GNU Parted - News [Savannah] GNU Health - News [Savannah] GNU Taler Parabola GNU/Linux-libre - News: iptables-legacy www.gnu.org - News [Savannah] GNU Parallel - News [Savannah] GNU remotecontrol - News [Savannah] GNU Taler Autoconf - News [Savannah] LibreDWG - News [Savannah] GNUnet hello - GNU greeting package GNU TeXmacs - News [Savannah] Unifont - News [Savannah] Engineering and Certification Manager at the Free Software Foundation — Free Software Foundation — Working together for free software PSPP - News [Savannah] PSPP - News [Savannah] texinfo - GNU documentation system GNU Guix: The 64-bit Hurd is Here! MediaGoblin 0.15.0 | MediaGoblin The FSF announces global call for FSF's LibreLocal 2026 meetups — Free Software Foundation — Working together for free software GNU Parallel - News [Savannah] GNU Guix: Result of Sustain and Strengthen Fundraising Jose E. Marchesi: First package written in Algol 68 lands in Gentoo Jose E. Marchesi: Algol 68 support in VS Code Jose E. Marchesi: godcc 1.0 released
ffs 0.2.2 released - bandali
Amin Bandali · 2026-05-22 · via Planet GNU

ffs provides a minor mode for simple plain text presentations in Emacs, where the slides are separated using the page-delimiter, by default the form feed character (^L).

I wrote ffs in early 2022 for my LibrePlanet 2022 presentation the Net beyond the Web, and earlier this year decided to polish it towards being a proper package and submit it to GNU ELPA. The manual still needs some more work, but the overall package is in pretty good shape so I submitted for inclusion in GNU ELPA.

ffs and I owe a debt of gratitude to Protesilaos for rounds of code review and feedback for improving and polishing the package in preparation for submission to GNU ELPA. You can watch videos of these sessions posted earlier on my website:

Further, inspiration for parts of ffs's implementation was gratefully drawn from Protesilaos's Logos package for Emacs.

Dedicated to the loving memory of Farangis Yousefinia.

Below are the release notes.


Version 0.2.2 on 2026-05-21

First release of ffs on GNU ELPA.

The attempted build of ffs 0.2.1 within GNU ELPA build sandbox failed with an Error: void-function (org-texinfo-kbd-macro) due to use of #+macro: kbd (eval (org-texinfo-kbd-macro $1)) in ffs.org for better formatting of key sequences in the exported Texinfo copy. This seems to have happened for the specific case of generating a plain text README using ox-ascii where ELPA didn't load ox-texinfo. To try and mitigate this, a README.md has been added for use as the package README instead of ffs.org. If not sufficient, a Texinfo copy of the ffs manual will be shipped instead of the Org one in the next release.

ffs 0.2.2 also includes small fixes and improvements throughout ffs.el from Stefan Monnier, and additional feedback to be addressed in future releases.

Version 0.2.1 on 2026-05-20

The attempted build of ffs 0.2.0 within GNU ELPA build sandbox failed with a "Cannot include file" error on the "#+include: fdl.org" in the manual. So, as a workaround, we switch to using the official Texinfo copy of the GNU FDL license rather than an Org copy.

Version 0.2.0 on 2026-05-19

First release of ffs intended for GNU ELPA.

After a few years of inactivity, in early 2026 I decided to dust off ffs.el, polish and document it, and offer for inclusion in GNU ELPA as a proper package.

Default value of ffs-default-face-height changed to nil

To minimize unexpected and/or unnecessary changes out-of-the-box, the default value of ffs-default-face-height has been changed to nil.

ffs-edit-buffer-name demoted from user option to variable

This is not an important user-facing setting, so to help avoid overwhelming users with many options, this has been demoted from a user option to a variable.

Several new user options for customizing ffs's behaviour

As part of the effort to bring ffs more in line with the conventions of other existing Emacs packages, the mechanisms for toggling various parts of Emacs's interface to minimize visual clutter were changed from being minor modes to being customizable user options. These are the replacement new user options, with a default value of nil:

  • ffs-hide-cursor
  • ffs-hide-mode-line
  • ffs-hide-header-line

Their value is buffer-local, and may be set globally using setq-default. See the sample configuration in the manual for an example of how to customize them.

The new ffs-page-delimiter user option defines the page delimiter inserted by ffs-edit-done when inserting a new slide. Emacs's page-delimiter regexp should be able to match ffs-page-delimiter's value, so if you use a custom page-delimiter be sure to customize ffs-page-delimiter accordingly.

The new ffs-echo-progress user option controls whether to display in echo area the progress through the slides. When non-nil, changing slides will also display the progress through the slides in the echo area. The format of the displayed progress can be customized using the new ffs-echo-progress-format user option.

The new ffs-edit-display-buffer-alist user option may be used to control the Window configuration for the ffs-edit buffer. By default, it will display the ffs-edit buffer in the same window.

The new ffs-edit-done-hook user option may be used to define hooks to be run at the end of ffs-edit-done after returning to the main ffs presentation buffer.

Lastly, a new ffs-find-speaker-notes-function variable was added to allow customizing the find function used for opening the speaker's notes file, defaulting to find-file-other-frame.

Version 0.1.0 on 2022-05-19

Initial publication of ffs.el as part of my personal configurations for GNU Emacs.

My first attempt at this concept was a now-archived ffsanim.el, a major mode implementation that used Emacs's animate library to animate slide texts onto the screen. Shortly after realizing the shortcomings of that approach, I abandoned it in favour a minor mode implementation and published version 0.1.0 of what is now ffs in my personal configs repository.

I used this implementation for presenting my LibrePlanet 2022 talk, The Net beyond the Web.

I picked "ffs" as the package name, the acronym for form feed slides.