<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nick Otmazgin</title>
    <description>The latest articles on DEV Community by Nick Otmazgin (@nickotmazgin).</description>
    <link>https://dev.to/nickotmazgin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4161504%2F92ad1bdc-17b1-4f9f-a866-dcc8749405ca.jpg</url>
      <title>DEV Community: Nick Otmazgin</title>
      <link>https://dev.to/nickotmazgin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nickotmazgin"/>
    <language>en</language>
    <item>
      <title>Numeric Clock 17.7: a numeric date and time for the GNOME top bar, with GNOME 51, menu styles, About and Donate</title>
      <dc:creator>Nick Otmazgin</dc:creator>
      <pubDate>Thu, 22 Oct 2026 13:04:44 +0000</pubDate>
      <link>https://dev.to/nickotmazgin/numeric-clock-176-a-numeric-date-and-time-for-the-gnome-top-bar-now-with-gnome-51-menu-styles-51oh</link>
      <guid>https://dev.to/nickotmazgin/numeric-clock-176-a-numeric-date-and-time-for-the-gnome-top-bar-now-with-gnome-51-menu-styles-51oh</guid>
      <description>&lt;p&gt;GNOME's top bar shows the time as &lt;code&gt;Oct 22  13:17&lt;/code&gt;, and there is no setting to change that. &lt;strong&gt;Numeric Clock&lt;/strong&gt; is my free, open-source GNOME Shell extension that turns it into a clear numeric date and time: &lt;code&gt;22/10/2026 13:17:05&lt;/code&gt;, &lt;code&gt;2026-10-22 13:17&lt;/code&gt;, &lt;code&gt;10/22/2026 01:17:05 PM&lt;/code&gt;, or any other &lt;code&gt;strftime&lt;/code&gt; format you like. It works on &lt;strong&gt;GNOME Shell 45–51&lt;/strong&gt;, on Wayland and X11.&lt;/p&gt;

&lt;p&gt;Versions 17.6 and 17.7 are the biggest update in a while, so here is a quick tour first:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/VlcEy6rQHBw" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnickotmazgin%2FLinux-Numeric-Date-And-Clock%2F04b5700e8c983f9563026f68114b25787e32e6db%2Fscreenshots%2Fcollage.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnickotmazgin%2FLinux-Numeric-Date-And-Clock%2F04b5700e8c983f9563026f68114b25787e32e6db%2Fscreenshots%2Fcollage.jpg" alt="Numeric Clock 17.7: tray menu, presets, menu styles and Preferences" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  New in 17.7: About and Donate, and the menu opens where you click
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;About Numeric Clock&lt;/strong&gt; and &lt;strong&gt;Donate&lt;/strong&gt; are now right in the quick menu, both from the tray icon and from a right-click on the clock. &lt;em&gt;About&lt;/em&gt; opens Preferences straight on its About page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fixed:&lt;/strong&gt; after right-clicking the clock, the next left-click on the tray icon opened the menu over by the clock. The menu now always opens under whatever you clicked. Spotted in daily use, fixed the same day.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Each click on the tray icon does something different
&lt;/h2&gt;

&lt;p&gt;The clock icon in the top bar used to open the same menu on every click. Now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Left-click&lt;/strong&gt; opens the quick menu: copy the time, pick a preset, change the menu style, open Preferences or About, or donate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right-click&lt;/strong&gt; opens Preferences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Middle-click&lt;/strong&gt; copies the current time to the clipboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Right- and middle-click are configurable (quick menu, Preferences or copy time), and hovering the icon shows the time plus a reminder of what each click does.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F05a3mdqkj0flc324pom9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F05a3mdqkj0flc324pom9.jpg" alt="Hover tooltip with the click hints" width="798" height="145"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fquux34zr6y6mlmn7so3n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fquux34zr6y6mlmn7so3n.jpg" alt="Left-click: the quick menu, with About and Donate" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also right-click the clock itself for the same menu, which opens right under the clock. A left-click on the clock still opens the GNOME calendar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxyybt0vi1kryarm0w7y3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxyybt0vi1kryarm0w7y3.jpg" alt="Right-click the clock" width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Menu styles: System, Light or Dark
&lt;/h2&gt;

&lt;p&gt;The quick menu and its tooltip follow your shell theme by default, or you can make them always light or always dark, from Preferences or straight from the menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqb1o4kpoghc6l5y1qvi4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqb1o4kpoghc6l5y1qvi4.jpg" alt="Menu style: Light and Dark" width="799" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Eight presets, one click each
&lt;/h2&gt;

&lt;p&gt;International (DD/MM with seconds), weekday, compact, time only, &lt;strong&gt;ISO 8601&lt;/strong&gt;, &lt;strong&gt;ISO date with the week number&lt;/strong&gt; (new), US 12-hour, and top bar only. Each preset in Preferences shows a live sample, so you see the result before you apply it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwmsk5ak71997u7usqot0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwmsk5ak71997u7usqot0.jpg" alt="Quick presets" width="800" height="916"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Rebuilt Preferences
&lt;/h2&gt;

&lt;p&gt;Preferences now use libadwaita rows bound straight to the settings, so a change made from the panel menu shows up live. There is a live preview, a built-in list of format codes, the menu style, and what each click on the icon does.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fygpfom4lr3jmvf2tpjt3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fygpfom4lr3jmvf2tpjt3.jpg" alt="Preferences: clock format, preview and format codes" width="800" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcj8cq0zmbenm3odbcz5d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcj8cq0zmbenm3odbcz5d.jpg" alt="Preferences: appearance and panel icon clicks" width="800" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fixes that came out of an audit (17.5)
&lt;/h2&gt;

&lt;p&gt;Before adding features I went through the clock engine line by line, and found real bugs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Seconds could lag by up to a second.&lt;/strong&gt; After the first tick, "smooth tick" used &lt;code&gt;GLib.timeout_add_seconds()&lt;/code&gt;, which GLib shifts by a per-session offset to save power. Each tick now lands within about 10 ms of the second boundary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An invalid or empty format blanked the clock.&lt;/strong&gt; &lt;code&gt;GLib.DateTime.format()&lt;/code&gt; returns &lt;code&gt;null&lt;/code&gt; instead of throwing, so the old &lt;code&gt;try/catch&lt;/code&gt; never caught it. Both now fall back to the default format.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disabling the extension left your format on screen&lt;/strong&gt; until GNOME's next minute tick. The stock clock now comes back immediately.&lt;/li&gt;
&lt;li&gt;With "Only change the top bar clock" turned off, any label containing a day or month word, or a time like "meeting at 10:30", could be overwritten, including notifications. Now a label is only touched when its whole text looks like a clock.&lt;/li&gt;
&lt;li&gt;The panel icon was redrawn on the 16 px pixel grid, so it is crisp next to the other status icons.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And one fix in &lt;strong&gt;17.6.1&lt;/strong&gt;: Preferences opened with the format field focused and selected, and every key press was saved, so a stray key could replace your whole format. The format is now saved only when you press &lt;strong&gt;Enter&lt;/strong&gt;, and formats without any &lt;code&gt;%&lt;/code&gt; code are refused.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install or update
&lt;/h2&gt;

&lt;p&gt;Download &lt;code&gt;numeric-clock@nickotmazgin.v32.shell-extension.zip&lt;/code&gt; from &lt;a href="https://github.com/nickotmazgin/Linux-Numeric-Date-And-Clock/releases/latest" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;, then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gnome-extensions &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--force&lt;/span&gt; numeric-clock@nickotmazgin.v32.shell-extension.zip
gnome-extensions &lt;span class="nb"&gt;enable &lt;/span&gt;numeric-clock@nickotmazgin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Wayland, log out and back in. On X11, press Alt+F2, type &lt;code&gt;r&lt;/code&gt; and press Enter.&lt;/p&gt;

&lt;p&gt;Every release is built by GitHub Actions from an SSH-signed tag, is immutable, and has a build-provenance attestation. You can check a download yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh attestation verify numeric-clock@nickotmazgin.v32.shell-extension.zip &lt;span class="nt"&gt;--repo&lt;/span&gt; nickotmazgin/Linux-Numeric-Date-And-Clock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How it is tested
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An isolated &lt;strong&gt;nested GNOME Shell&lt;/strong&gt; smoke test (its own D-Bus session and settings) runs 36 checks: formats, tick alignment, menus and where they open, click actions, menu styles, About, and disable/enable cycles.&lt;/li&gt;
&lt;li&gt;A Preferences test runs in plain &lt;code&gt;gjs&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;ESLint, ShellCheck and CodeQL run on every pull request, and &lt;code&gt;main&lt;/code&gt; requires all of them plus signed commits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The demo video above was recorded the same way, inside that nested shell, so nothing on my real desktop was clicked. The narration is Kokoro-82M (Apache-2.0) and the music is an original synthesised track.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compatibility
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GNOME Shell 45–51&lt;/td&gt;
&lt;td&gt;Supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X11 / Xorg&lt;/td&gt;
&lt;td&gt;Supported and tested daily (Zorin OS 18.1, GNOME 46)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wayland&lt;/td&gt;
&lt;td&gt;Supported; passes the nested Wayland smoke test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network access&lt;/td&gt;
&lt;td&gt;None, no telemetry&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/Linux-Numeric-Date-And-Clock" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/Linux-Numeric-Date-And-Clock&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latest release:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/Linux-Numeric-Date-And-Clock/releases/latest" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/Linux-Numeric-Date-And-Clock/releases/latest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Changelog:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/Linux-Numeric-Date-And-Clock/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/Linux-Numeric-Date-And-Clock/blob/main/CHANGELOG.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Announcement and questions:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/Linux-Numeric-Date-And-Clock/discussions/76" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/Linux-Numeric-Date-And-Clock/discussions/76&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demo on YouTube:&lt;/strong&gt; &lt;a href="https://youtu.be/VlcEy6rQHBw" rel="noopener noreferrer"&gt;https://youtu.be/VlcEy6rQHBw&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My other GNOME extensions: &lt;a href="https://github.com/nickotmazgin/clipflow-pro" rel="noopener noreferrer"&gt;ClipFlow Pro&lt;/a&gt; (clipboard history) and &lt;a href="https://github.com/nickotmazgin/comfort-control-easehub" rel="noopener noreferrer"&gt;Comfort Control (EaseHub)&lt;/a&gt; (a compact panel menu).&lt;/p&gt;

&lt;p&gt;Numeric Clock is free and MIT licensed. I direct, review, test and sign every release; AI coding assistants (including Claude Code) helped with parts of this work, and the &lt;a href="https://github.com/nickotmazgin/Linux-Numeric-Date-And-Clock#credits--acknowledgements" rel="noopener noreferrer"&gt;README&lt;/a&gt; credits them. If it saves you a squint at the top bar, a ⭐ on GitHub helps other GNOME users find it.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>linux</category>
      <category>opensource</category>
      <category>gnome</category>
    </item>
    <item>
      <title>EaseHub 1.3.0: a compact GNOME menu, with sound and Files right-click actions</title>
      <dc:creator>Nick Otmazgin</dc:creator>
      <pubDate>Tue, 20 Oct 2026 16:13:30 +0000</pubDate>
      <link>https://dev.to/nickotmazgin/easehub-130-a-compact-gnome-menu-with-sound-and-files-right-click-actions-16ma</link>
      <guid>https://dev.to/nickotmazgin/easehub-130-a-compact-gnome-menu-with-sound-and-files-right-click-actions-16ma</guid>
      <description>&lt;p&gt;&lt;strong&gt;EaseHub 1.3.0&lt;/strong&gt; is out. It is my free, open-source panel menu for &lt;strong&gt;GNOME Shell 45–51&lt;/strong&gt; (Wayland and X11). This release replaces the long one-item-per-row list with a compact menu, adds a volume row, and puts EaseHub actions in the Files right-click menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsb92jqe6kl1ji8ji2x9h.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsb92jqe6kl1ji8ji2x9h.jpg" alt="EaseHub 1.3.0 collage: compact menu, light and dark appearance, Files Copy, and settings" width="800" height="875"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A menu that fits on the screen
&lt;/h2&gt;

&lt;p&gt;The old menu was about 23 rows. The new &lt;strong&gt;compact&lt;/strong&gt; layout, which is the default, is about 10:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a row of power buttons&lt;/li&gt;
&lt;li&gt;a volume row: mute, down, a slider and up, for the current output device&lt;/li&gt;
&lt;li&gt;quick-toggle tiles&lt;/li&gt;
&lt;li&gt;four groups you can open and close&lt;/li&gt;
&lt;li&gt;a footer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Classic&lt;/strong&gt; (one row per item) is still there, in Preferences.&lt;/p&gt;

&lt;p&gt;The quick toggles are Wi-Fi, Bluetooth, Airplane Mode, Do Not Disturb, Dark Mode, Night Light and &lt;strong&gt;Keep Awake&lt;/strong&gt; (the screen stays on, and the computer does not sleep, while it is on). A tile hides itself when the hardware or service is not there. Tiles update live if Dark Mode, Do Not Disturb or Night Light change somewhere else while the menu is open.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffwi3lixxqdusp3s3dxu6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffwi3lixxqdusp3s3dxu6.png" alt="Compact panel menu: power, volume and quick toggles" width="684" height="1064"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every icon-only control has a tooltip with the full name and the current state, for example "Do Not Disturb: Off" or "Volume: 70%".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbdbllvcsu8agsxj5fxcg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbdbllvcsu8agsxj5fxcg.png" alt="A tooltip on an icon-only control" width="684" height="1064"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The four groups
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Apps &amp;amp; Files&lt;/strong&gt; opens Files, Settings, Extensions, Tweaks and a terminal. &lt;strong&gt;Empty Trash&lt;/strong&gt; tells you how many items are in there and asks first. &lt;strong&gt;Clear Recent Files&lt;/strong&gt; asks first too. The same group has the switch for the Files right-click menu, and a shortcut into its settings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8s4rqjzwcq29pp08zxg5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8s4rqjzwcq29pp08zxg5.png" alt="Apps and Files, including the Files right-click switch" width="684" height="1592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clipboard &amp;amp; Screenshot&lt;/strong&gt; opens GNOME's built-in screenshot tool (area, screen, window or screencast), and can clear the clipboard or the primary selection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Updates &amp;amp; System&lt;/strong&gt; checks for updates and upgrades packages (APT, DNF, Zypper, Pacman and Flatpak) in your terminal. It asks before an upgrade proceeds. The tour opens that confirm dialog and closes it. On X11 this group also has Reload GNOME Shell.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8nhbe2cnd36ea94ygcch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8nhbe2cnd36ea94ygcch.png" alt="Confirm before a package upgrade" width="799" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sudo Timeout&lt;/strong&gt; shows the current value (for example "Sudo Timeout (60 min)"), plus &lt;strong&gt;Forget Password Now&lt;/strong&gt; and a custom minutes entry. Sharing one login across all terminals (&lt;code&gt;timestamp_type=global&lt;/code&gt;) is optional and off by default.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feqzr56xyigmduor8uech.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feqzr56xyigmduor8uech.png" alt="Sudo Timeout: presets, forget, and a custom value" width="684" height="1520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The footer has the new panel icon (a hub; you can pick another), and &lt;strong&gt;Appearance&lt;/strong&gt;: System (follows your shell theme), Light, or Dark. That choice covers the EaseHub menu and its tooltips, so it stays readable on a light theme and on a dark one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7oe0lyr2q3dcsif4eo4p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7oe0lyr2q3dcsif4eo4p.png" alt="Light appearance, set from the footer" width="684" height="1064"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Femwwnkdrbyheqeb3z0yb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Femwwnkdrbyheqeb3z0yb.png" alt="Dark appearance" width="684" height="1064"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is also a keyboard shortcut to open the menu. None is set until you choose one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Files, right-click, Scripts ▸ EaseHub
&lt;/h2&gt;

&lt;p&gt;This is off until you turn it on (Preferences → Files, or the switch in Apps &amp;amp; Files). It adds actions under &lt;strong&gt;Scripts ▸ EaseHub&lt;/strong&gt; in Files (Nautilus):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copy&lt;/strong&gt;: name, full path, path and name, parent folder, path from home (&lt;code&gt;~&lt;/code&gt;), a shell-safe quoted path, the file URI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open&lt;/strong&gt;: terminal here, or your editor&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools&lt;/strong&gt;: size and type, SHA-256 checksum, make executable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can keep that grouping, or flatten it. You can rename the menu or any action, hide actions, and turn notifications on or off. It uses your EaseHub terminal. Symbolic links copy the path you clicked, not the target. Broken links, spaces, quotes and non-Latin names are fine. Sizes are real file sizes.&lt;/p&gt;

&lt;p&gt;EaseHub only removes files it created. Anything you add yourself under that scripts folder is kept. Turning the option off removes the menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy3f3dquebnur6dp7kpyn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy3f3dquebnur6dp7kpyn.png" alt="Files right-click: Scripts, EaseHub, Copy" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1e2iy1zr9yf6lbxfcrjp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1e2iy1zr9yf6lbxfcrjp.png" alt="Open" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbl09kdmutwqdd55w5jjo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbl09kdmutwqdd55w5jjo.png" alt="Tools" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Settings, each tab
&lt;/h2&gt;

&lt;p&gt;Preferences now have a &lt;strong&gt;Menu&lt;/strong&gt; page (show or hide every item, and the sudo timeout options) and a &lt;strong&gt;Files&lt;/strong&gt; page. They reopen on the page you used last. &lt;strong&gt;Reset all settings&lt;/strong&gt; asks first. Settings you already had from 1.2 are kept: items you had hidden stay hidden, and the new items appear.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb7v5zpnot7xpfd7slv0p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb7v5zpnot7xpfd7slv0p.png" alt="Settings, General: layout, appearance, icon, shortcut" width="780" height="940"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffllfhp5fq8zjwyh8r78g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffllfhp5fq8zjwyh8r78g.png" alt="Settings, Menu" width="780" height="940"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftxod2i57taiqab8jsidn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftxod2i57taiqab8jsidn.png" alt="Settings, Files" width="780" height="940"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk5lwz36cbpv1idh25uhq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk5lwz36cbpv1idh25uhq.png" alt="Settings, About" width="780" height="940"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The two-minute tour
&lt;/h2&gt;

&lt;p&gt;The narrated tour opens the panel menu with every quick toggle (Wi-Fi, Bluetooth, Airplane Mode, Do Not Disturb, Dark Mode, Night Light, Keep Awake), each group, the Files right-click actions, and every Settings tab from top to bottom.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/5A7521LUAQ8" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Install or update
&lt;/h2&gt;

&lt;p&gt;Download &lt;code&gt;comfort-control@nickotmazgin-45-51.shell-extension.zip&lt;/code&gt; from GitHub Releases, then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gnome-extensions &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--force&lt;/span&gt; comfort-control@nickotmazgin-45-51.shell-extension.zip
gnome-extensions &lt;span class="nb"&gt;enable &lt;/span&gt;comfort-control@nickotmazgin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Wayland, log out and back in. On X11, press Alt+F2, type &lt;code&gt;r&lt;/code&gt; and press Enter.&lt;/p&gt;

&lt;p&gt;Every release is built by GitHub Actions from a signed tag, is immutable, and has a build-provenance attestation. You can check a download yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh attestation verify comfort-control@nickotmazgin-45-51.shell-extension.zip &lt;span class="nt"&gt;--repo&lt;/span&gt; nickotmazgin/comfort-control-easehub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Compatibility
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GNOME Shell 45–51&lt;/td&gt;
&lt;td&gt;Supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X11 / Xorg&lt;/td&gt;
&lt;td&gt;Supported and tested (Zorin OS, GNOME 46)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wayland&lt;/td&gt;
&lt;td&gt;Supported; reports are welcome&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GNOME Shell 42–44&lt;/td&gt;
&lt;td&gt;No longer built&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Reports from Wayland and from GNOME 47–51 are very welcome in Discussions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/comfort-control-easehub" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/comfort-control-easehub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release 1.3.0:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/comfort-control-easehub/releases/tag/v1.3.0" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/comfort-control-easehub/releases/tag/v1.3.0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discussion:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/comfort-control-easehub/discussions/73" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/comfort-control-easehub/discussions/73&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Changelog:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/comfort-control-easehub/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/comfort-control-easehub/blob/main/CHANGELOG.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demo on YouTube:&lt;/strong&gt; &lt;a href="https://youtu.be/5A7521LUAQ8" rel="noopener noreferrer"&gt;https://youtu.be/5A7521LUAQ8&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;EaseHub is free and MIT licensed. I direct, review, test and sign every release; AI coding assistants helped with parts of this work, and the README credits them. If it saves you time, a ⭐ on GitHub helps other GNOME users find it.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>gnome</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>ClipFlow Pro 1.5.8: respects password managers and works with light GNOME themes</title>
      <dc:creator>Nick Otmazgin</dc:creator>
      <pubDate>Mon, 19 Oct 2026 10:33:19 +0000</pubDate>
      <link>https://dev.to/nickotmazgin/clipflow-pro-158-respects-password-managers-and-works-with-light-gnome-themes-1a7d</link>
      <guid>https://dev.to/nickotmazgin/clipflow-pro-158-respects-password-managers-and-works-with-light-gnome-themes-1a7d</guid>
      <description>&lt;p&gt;Two releases of &lt;strong&gt;ClipFlow Pro&lt;/strong&gt;, my free, open-source clipboard history manager for &lt;strong&gt;GNOME Shell 45–51&lt;/strong&gt; (Wayland and X11), came out after &lt;a href="https://dev.to/nickotmazgin/clipflow-pro-156-a-free-open-source-clipboard-history-manager-for-gnome-45-51-wayland-x11-2o0l"&gt;my first post about 1.5.6&lt;/a&gt;. Both came from user feedback, and each one fixes something you'd only notice at the worst moment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnickotmazgin%2Fclipflow-pro%2F00deacdab80e7894ce31a1f78e0e630ce05d53a1%2Fscreenshots%2Fcollage-v1.5.8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnickotmazgin%2Fclipflow-pro%2F00deacdab80e7894ce31a1f78e0e630ce05d53a1%2Fscreenshots%2Fcollage-v1.5.8.png" alt="ClipFlow Pro 1.5.8: history window, panel menus and settings" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1.5.7: passwords from your password manager are no longer saved
&lt;/h2&gt;

&lt;p&gt;A reader on Threads asked a good question: &lt;em&gt;does the password filter use hints from password managers, or does it only inspect the copied text?&lt;/em&gt; At the time, it only inspected the text. Now it does both.&lt;/p&gt;

&lt;p&gt;When you copy a password from &lt;strong&gt;KeePassXC&lt;/strong&gt; (and other password managers that do this), they add a small marker next to it on the clipboard: &lt;code&gt;x-kde-passwordManagerHint&lt;/code&gt; = &lt;code&gt;secret&lt;/code&gt;. ClipFlow Pro 1.5.7 reads that marker on every clipboard path (X11, the fallback path and Wayland):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;With &lt;strong&gt;Ignore Password-like Content&lt;/strong&gt; on (the default), a marked clip is &lt;strong&gt;not saved&lt;/strong&gt; to your history.&lt;/li&gt;
&lt;li&gt;With it off, the clip is saved but flagged as sensitive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There was a catch. When the password manager closes, GNOME offers the same text again, this time &lt;em&gt;without&lt;/em&gt; the marker. To catch that copy too, ClipFlow Pro remembers a SHA-256 hash of recently marked clips (never the text itself, at most 32, in memory only) and skips a clip whose hash matches.&lt;/p&gt;

&lt;p&gt;The existing check for password-like text and common API tokens still runs as before.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tested with the real thing:&lt;/strong&gt; on Zorin OS 18.1 / GNOME 46 / X11 with &lt;strong&gt;KeePassXC 2.7.6&lt;/strong&gt;, a random password copied with Ctrl+C was not saved, a normal clip copied right after was saved, and quitting KeePassXC left nothing in the history.&lt;/p&gt;

&lt;h2&gt;
  
  
  1.5.8: readable on light shell themes
&lt;/h2&gt;

&lt;p&gt;With a light shell theme (for example Zorin Light), the right-click &lt;strong&gt;recent clips&lt;/strong&gt; menu showed white text on a light background, which was nearly impossible to read. In 1.5.8:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The recent clips menu now uses the same self-contained dark surface as the panel menu, with matching hover and focus colors, so both menus are readable on light &lt;strong&gt;and&lt;/strong&gt; dark themes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disable Extension Stylesheet&lt;/strong&gt; (Settings → Appearance) now really hands &lt;strong&gt;both&lt;/strong&gt; menus back to your shell theme's own colors. Before, it only affected the panel menu.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I checked it on screen with the ZorinBlue-Light and Catppuccin Mocha (dark) themes: the recent clips menu, the panel menu, Actions, the history window and every settings tab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiac020te5b1ulpguw3s4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiac020te5b1ulpguw3s4.png" alt="Recent clips menu (right-click the panel icon)" width="663" height="794"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpyfcl08wltvtgzpuqfxe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpyfcl08wltvtgzpuqfxe.png" alt="Panel menu with the ⋮ clip menu" width="397" height="548"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcjhad9q43gbcl3szpbop.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcjhad9q43gbcl3szpbop.png" alt="Settings → Appearance" width="800" height="704"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No new buttons or switches: the two existing settings, &lt;em&gt;Ignore Password-like Content&lt;/em&gt; and &lt;em&gt;Disable Extension Stylesheet&lt;/em&gt;, simply do more now.&lt;/p&gt;

&lt;h2&gt;
  
  
  A quick look again
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feyp8m5rec1k2gyo0lezj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feyp8m5rec1k2gyo0lezj.png" alt="History window" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdsdvup0j3cb9jo6b6u53.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdsdvup0j3cb9jo6b6u53.png" alt="Panel menu Actions" width="396" height="977"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy95fzn1m7h2ol5cs5ic6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy95fzn1m7h2ol5cs5ic6.png" alt="Settings → About (1.5.8)" width="800" height="704"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the 2-minute narrated tour (everything in it still applies to 1.5.8):&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/Cao9ljjI5JI" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Install or update
&lt;/h2&gt;

&lt;p&gt;Download &lt;code&gt;clipflow-pro@nickotmazgin.github.io-1.5.8-gs45-51.zip&lt;/code&gt; from &lt;a href="https://github.com/nickotmazgin/clipflow-pro/releases/latest" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;, then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gnome-extensions &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--force&lt;/span&gt; clipflow-pro@nickotmazgin.github.io-1.5.8-gs45-51.zip
gnome-extensions &lt;span class="nb"&gt;enable &lt;/span&gt;clipflow-pro@nickotmazgin.github.io
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Wayland, log out and back in. On X11, press Alt+F2, type &lt;code&gt;r&lt;/code&gt; and press Enter.&lt;/p&gt;

&lt;p&gt;Every release is built by GitHub Actions from a signed tag, is immutable, and has a build-provenance attestation. You can check a download yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh attestation verify clipflow-pro@nickotmazgin.github.io-1.5.8-gs45-51.zip &lt;span class="nt"&gt;--repo&lt;/span&gt; nickotmazgin/clipflow-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Compatibility
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GNOME Shell 45–51&lt;/td&gt;
&lt;td&gt;Supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X11 / Xorg&lt;/td&gt;
&lt;td&gt;Supported and tested daily (Zorin OS 18.1, GNOME 46)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wayland&lt;/td&gt;
&lt;td&gt;Supported; reports are welcome&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Password-manager marker&lt;/td&gt;
&lt;td&gt;Tested with KeePassXC 2.7.6&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Reports from Wayland, GNOME 51 and other password managers are very welcome in &lt;a href="https://github.com/nickotmazgin/clipflow-pro/discussions" rel="noopener noreferrer"&gt;Discussions&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/clipflow-pro" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/clipflow-pro&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release 1.5.8:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/clipflow-pro/releases/latest" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/clipflow-pro/releases/latest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Changelog:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/clipflow-pro/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/clipflow-pro/blob/main/CHANGELOG.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AlternativeTo:&lt;/strong&gt; &lt;a href="https://alternativeto.net/software/clipflow-pro/about/" rel="noopener noreferrer"&gt;https://alternativeto.net/software/clipflow-pro/about/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demo on YouTube:&lt;/strong&gt; &lt;a href="https://youtu.be/Cao9ljjI5JI" rel="noopener noreferrer"&gt;https://youtu.be/Cao9ljjI5JI&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ClipFlow Pro is free and GPL-3.0 licensed. I direct, review, test and sign every release; AI coding assistants (including Claude Code) helped with parts of this work, and the &lt;a href="https://github.com/nickotmazgin/clipflow-pro#credits--acknowledgements" rel="noopener noreferrer"&gt;README&lt;/a&gt; credits them. If it saves you time, a ⭐ on GitHub helps other GNOME users find it.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>linux</category>
      <category>opensource</category>
      <category>gnome</category>
    </item>
    <item>
      <title>ClipFlow Pro 1.5.6: a free, open-source clipboard history manager for GNOME 45–51 (Wayland &amp; X11)</title>
      <dc:creator>Nick Otmazgin</dc:creator>
      <pubDate>Sun, 18 Oct 2026 13:56:33 +0000</pubDate>
      <link>https://dev.to/nickotmazgin/clipflow-pro-156-a-free-open-source-clipboard-history-manager-for-gnome-45-51-wayland-x11-2o0l</link>
      <guid>https://dev.to/nickotmazgin/clipflow-pro-156-a-free-open-source-clipboard-history-manager-for-gnome-45-51-wayland-x11-2o0l</guid>
      <description>&lt;p&gt;ClipFlow Pro is a free, open-source clipboard history manager for &lt;strong&gt;GNOME Shell 45–51&lt;/strong&gt;, on both &lt;strong&gt;Wayland and X11/Xorg&lt;/strong&gt;. It sits in the top bar, remembers what you copy, and gives you a searchable history window, quick panel menus and pinned clips. Version 1.5.6 is out, and this is the first time I'm writing about it here.&lt;/p&gt;

&lt;p&gt;Here's the 2-minute narrated tour, so turn the sound on:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/Cao9ljjI5JI" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;I copy a lot during the day: commands, links, code, JSON, notes in several languages. GNOME has no clipboard history built in, so the moment I copied something new, the previous thing was gone. I wanted a clipboard manager that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;feels like part of GNOME, not a separate app&lt;/li&gt;
&lt;li&gt;works the same on Wayland and X11&lt;/li&gt;
&lt;li&gt;keeps everything on my own computer&lt;/li&gt;
&lt;li&gt;lets me find an old clip by typing a few letters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That became ClipFlow Pro.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnickotmazgin%2Fclipflow-pro%2Fv1.5.6-gnome45-51%2Fscreenshots%2Fcollage-v1.5.3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnickotmazgin%2Fclipflow-pro%2Fv1.5.6-gnome45-51%2Fscreenshots%2Fcollage-v1.5.3.png" alt="ClipFlow Pro: history window, panel menus and settings" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;History window:&lt;/strong&gt; left-click the panel icon to open it. Type to search instantly, double-click an entry to insert it into the app you were using, right-click for copy, insert, pin, star and delete. You can select several entries and delete them together.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recent clips menu:&lt;/strong&gt; right-click the panel icon for a quick list of your latest clips.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Panel menu:&lt;/strong&gt; the full menu with the ⋮ menu on each clip and an Actions section (export, import, purge duplicates, pause monitoring and more).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pinned and starred clips&lt;/strong&gt; in their own sections at the top.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content-type detection&lt;/strong&gt; for links, email addresses, file paths, code and JSON.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every kind of text:&lt;/strong&gt; emoji, symbols and other languages, including right-to-left text like Hebrew and Arabic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy options:&lt;/strong&gt; password filtering, pause monitoring, clear history on lock or logout.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Export and import&lt;/strong&gt; of your history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reset to Defaults&lt;/strong&gt; in Settings → About restores all 50 settings and keeps your history.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The history window
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6u1170cxq4yhiosonigf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6u1170cxq4yhiosonigf.png" alt="History window" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzfv4oq3zcv4s67ii4o3z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzfv4oq3zcv4s67ii4o3z.png" alt="Instant search" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4u9lcy24mjd0adx4l8rc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4u9lcy24mjd0adx4l8rc.png" alt="Row actions on right-click" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The panel menus
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmqohddd2bu71wzr8uhjo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmqohddd2bu71wzr8uhjo.png" alt="Recent clips menu (right-click)" width="635" height="786"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4x1uq56mm3xmpo1dyu7o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4x1uq56mm3xmpo1dyu7o.png" alt="Panel menu" width="396" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxgk88kpj2i2j7h5v7d43.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxgk88kpj2i2j7h5v7d43.png" alt="Actions" width="396" height="977"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Settings
&lt;/h3&gt;

&lt;p&gt;Five tabs: General, Behavior, Appearance, Shortcuts and About.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwj6zd9n7dhpvbcqm6k6i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwj6zd9n7dhpvbcqm6k6i.png" alt="General settings" width="800" height="704"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx37e8um1wst28z4s769v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx37e8um1wst28z4s769v.png" alt="Shortcuts settings" width="800" height="704"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The full gallery, with every menu and settings tab, is in the &lt;a href="https://github.com/nickotmazgin/clipflow-pro#screenshots" rel="noopener noreferrer"&gt;README&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your clipboard stays on your computer
&lt;/h2&gt;

&lt;p&gt;A clipboard manager sees everything you copy, so privacy came first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;History is stored locally in your home folder, in files only you can read (&lt;code&gt;0600&lt;/code&gt;), written atomically. Nothing is sent anywhere.&lt;/li&gt;
&lt;li&gt;On X11 it reads the clipboard through GNOME's own &lt;code&gt;St.Clipboard&lt;/code&gt;, so there's no helper process on every check.&lt;/li&gt;
&lt;li&gt;When text has to go to a helper like &lt;code&gt;wl-copy&lt;/code&gt; or &lt;code&gt;xclip&lt;/code&gt;, it's passed on standard input, never in temporary files or command-line arguments that other programs could see.&lt;/li&gt;
&lt;li&gt;Password-like entries can be filtered out, and the history can be cleared automatically when you lock the screen or log out.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's new in 1.5.5 and 1.5.6
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GNOME Shell 51 support (1.5.5).&lt;/strong&gt; ClipFlow Pro installs and runs on GNOME 51, the September 2026 release. I checked the code against the official porting guide; it was already free of the APIs GNOME 51 removed (&lt;code&gt;St&lt;/code&gt; &lt;code&gt;vertical&lt;/code&gt;, async &lt;code&gt;disable()&lt;/code&gt;, &lt;code&gt;pointerWatcher&lt;/code&gt;, &lt;code&gt;GLSLEffect&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No default clipboard shortcuts (1.5.6).&lt;/strong&gt; Super+C and Super+Shift+H are no longer set out of the box. Left-click on the panel icon still opens the history window, and you can add the shortcuts you want in Settings → Shortcuts, which suggests a combination for each one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clearer clipboard notice (1.5.6).&lt;/strong&gt; The extension's description now says plainly that it reads and stores your clipboard locally and sends nothing anywhere.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Suggested shortcuts
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Suggested shortcut&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Open the history window&lt;/td&gt;
&lt;td&gt;Super+Shift+H&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open the recent clips menu&lt;/td&gt;
&lt;td&gt;Super+Shift+R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Paste the latest entry&lt;/td&gt;
&lt;td&gt;Super+Shift+Insert&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Paste the entry before it&lt;/td&gt;
&lt;td&gt;Super+Shift+V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enhanced copy&lt;/td&gt;
&lt;td&gt;Super+Shift+C&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;Download &lt;code&gt;clipflow-pro@nickotmazgin.github.io-1.5.6-gs45-51.zip&lt;/code&gt; from &lt;a href="https://github.com/nickotmazgin/clipflow-pro/releases/latest" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;, then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gnome-extensions &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--force&lt;/span&gt; clipflow-pro@nickotmazgin.github.io-1.5.6-gs45-51.zip
gnome-extensions &lt;span class="nb"&gt;enable &lt;/span&gt;clipflow-pro@nickotmazgin.github.io
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Wayland, log out and back in. On X11, press Alt+F2, type &lt;code&gt;r&lt;/code&gt; and press Enter.&lt;/p&gt;

&lt;p&gt;Or build it from source:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/nickotmazgin/clipflow-pro.git
&lt;span class="nb"&gt;cd &lt;/span&gt;clipflow-pro
./build.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./install.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each release is built by GitHub Actions, the tag is signed, and the zip has a build-provenance attestation, so you can check that it came from the repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compatibility
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GNOME Shell 45, 46, 47, 48, 49, 50, 51&lt;/td&gt;
&lt;td&gt;Supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X11 / Xorg&lt;/td&gt;
&lt;td&gt;Supported and tested daily (Zorin OS 18.1, GNOME 46)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wayland&lt;/td&gt;
&lt;td&gt;Supported; reports are welcome&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GNOME 43–44&lt;/td&gt;
&lt;td&gt;No longer supported&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How it's made
&lt;/h2&gt;

&lt;p&gt;ClipFlow Pro is written in GJS (GNOME's JavaScript) as modern ES modules. Releases go through CI that lints the code and validates the zip before anything is published. I'm the only maintainer: I direct and review every change, test it on a real GNOME desktop, and sign and release every version. AI coding assistants (OpenAI Codex, Cursor and Claude Code) helped with parts of the work, always under my review, and the &lt;a href="https://github.com/nickotmazgin/clipflow-pro#credits--acknowledgements" rel="noopener noreferrer"&gt;README&lt;/a&gt; credits them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/clipflow-pro" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/clipflow-pro&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latest release:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/clipflow-pro/releases/latest" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/clipflow-pro/releases/latest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Changelog:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/clipflow-pro/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/clipflow-pro/blob/main/CHANGELOG.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discussions:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/clipflow-pro/discussions" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/clipflow-pro/discussions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demo on YouTube:&lt;/strong&gt; &lt;a href="https://youtu.be/Cao9ljjI5JI" rel="noopener noreferrer"&gt;https://youtu.be/Cao9ljjI5JI&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My other GNOME extensions: &lt;a href="https://github.com/nickotmazgin/Linux-Numeric-Date-And-Clock" rel="noopener noreferrer"&gt;Numeric Clock&lt;/a&gt;, a DD/MM/YYYY 24-hour top-bar clock with seconds, and &lt;a href="https://github.com/nickotmazgin/comfort-control-easehub" rel="noopener noreferrer"&gt;Comfort Control (EaseHub)&lt;/a&gt;, a panel menu for power, screenshots, updates and utilities.&lt;/p&gt;

&lt;p&gt;ClipFlow Pro is free and GPL-3.0 licensed. Feedback, bug reports and stars are very welcome. If it saves you time, a ⭐ on GitHub helps other GNOME users find it.&lt;/p&gt;

&lt;h1&gt;
  
  
  GNOME #Linux #OpenSource #Wayland #ClipboardManager #FOSS
&lt;/h1&gt;

</description>
      <category>showdev</category>
      <category>linux</category>
      <category>opensource</category>
      <category>gnome</category>
    </item>
    <item>
      <title>FluentVoice Pro 1.6.4: online voices back on Microsoft's original server</title>
      <dc:creator>Nick Otmazgin</dc:creator>
      <pubDate>Thu, 15 Oct 2026 20:14:50 +0000</pubDate>
      <link>https://dev.to/nickotmazgin/fluentvoice-pro-164-online-voices-back-on-microsofts-original-server-2nld</link>
      <guid>https://dev.to/nickotmazgin/fluentvoice-pro-164-online-voices-back-on-microsofts-original-server-2nld</guid>
      <description>&lt;p&gt;FluentVoice Pro &lt;strong&gt;1.6.4&lt;/strong&gt; is out: the Microsoft online voices are back on their &lt;strong&gt;original&lt;/strong&gt; server.&lt;/p&gt;

&lt;p&gt;In October 2026 Microsoft's classic voice server started refusing connections (HTTP 403) for every app built on edge-tts (&lt;a href="https://github.com/rany2/edge-tts/issues/490" rel="noopener noreferrer"&gt;edge-tts #490&lt;/a&gt;). FluentVoice 1.6.3 worked around that by switching to Microsoft's newer server. Upstream &lt;strong&gt;edge-tts 7.3.0 / 7.3.1&lt;/strong&gt; fixed the outage, so 1.6.4 requires edge-tts 7.3.1 and reads from the classic server again. The 1.6.3 failover stays as a safety net.&lt;/p&gt;

&lt;p&gt;Also new: if Microsoft briefly limits requests after many readings (HTTP 429), &lt;strong&gt;Test providers&lt;/strong&gt; now says so in plain words and suggests waiting a minute or using an offline voice.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub release: &lt;a href="https://github.com/nickotmazgin/fluentvoice-pro/releases/tag/v1.6.4" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/fluentvoice-pro/releases/tag/v1.6.4&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Discussion: &lt;a href="https://github.com/nickotmazgin/fluentvoice-pro/discussions/72" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/fluentvoice-pro/discussions/72&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Store: &lt;a href="https://apps.microsoft.com/detail/9N293MJ0MD9F" rel="noopener noreferrer"&gt;https://apps.microsoft.com/detail/9N293MJ0MD9F&lt;/a&gt; (1.6.4 is live)&lt;/li&gt;
&lt;li&gt;Scoop: &lt;code&gt;scoop update fluentvoicepro&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Earlier write-up for the 1.6.3 health check and failover: &lt;a href="https://dev.to/nickotmazgin/fluentvoice-pro-163-the-microsoft-online-voices-work-again-plus-a-health-check-that-says-what-2bfh"&gt;https://dev.to/nickotmazgin/fluentvoice-pro-163-the-microsoft-online-voices-work-again-plus-a-health-check-that-says-what-2bfh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Some AI assistance was used while preparing this post.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwpdkzrs1skaacxvl8qbh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwpdkzrs1skaacxvl8qbh.jpg" alt="FluentVoice Pro reading aloud on laptops in a library" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe8414ql1y5ihif4vwk81.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe8414ql1y5ihif4vwk81.jpg" alt="FluentVoice Pro in use on a laptop during a flight" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi8oy3ppre5tpz4ckcr5o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi8oy3ppre5tpz4ckcr5o.jpg" alt="FluentVoice Pro on a cruise deck in Alaska" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp27jdzykb39z3m2tqb6k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp27jdzykb39z3m2tqb6k.jpg" alt="FluentVoice Pro in operations and EMS settings (collage)" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tts</category>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>FluentVoice Pro 1.6.3: the Microsoft online voices work again, plus a health check that says what to fix</title>
      <dc:creator>Nick Otmazgin</dc:creator>
      <pubDate>Mon, 12 Oct 2026 10:48:14 +0000</pubDate>
      <link>https://dev.to/nickotmazgin/fluentvoice-pro-163-the-microsoft-online-voices-work-again-plus-a-health-check-that-says-what-2bfh</link>
      <guid>https://dev.to/nickotmazgin/fluentvoice-pro-163-the-microsoft-online-voices-work-again-plus-a-health-check-that-says-what-2bfh</guid>
      <description>&lt;p&gt;FluentVoice Pro is my free, open-source text-to-speech tray app for Windows 11 and 10: select or copy text anywhere, press a hotkey, and it reads it aloud with natural Microsoft online voices, offline HD voices (Piper and Kokoro) or the built-in Windows voices. &lt;strong&gt;Version 1.6.3&lt;/strong&gt; is out, and it's mostly about one thing: the online voices stopped working for a lot of people this year, and now they work again.&lt;/p&gt;

&lt;p&gt;Here's the 75-second tour of what's new (the real app, real voices; sound on):&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/z2wI4P4XTtk" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  The Microsoft online voices work again
&lt;/h2&gt;

&lt;p&gt;FluentVoice, like many apps, uses &lt;a href="https://github.com/rany2/edge-tts" rel="noopener noreferrer"&gt;edge-tts&lt;/a&gt; to reach the same neural voices Microsoft Edge uses for Read Aloud. In 2026 Microsoft's classic endpoint started answering many users with &lt;strong&gt;HTTP 403&lt;/strong&gt; (&lt;a href="https://github.com/rany2/edge-tts/issues/490" rel="noopener noreferrer"&gt;edge-tts #490&lt;/a&gt;), for every edge-tts based app, and there's no upstream fix yet. FluentVoice already fell back to an offline voice when that happened, so you still heard the text, just not with the voice you picked.&lt;/p&gt;

&lt;p&gt;1.6.3 fixes it on our side. When the classic server refuses with a 403, FluentVoice points edge-tts at &lt;strong&gt;Microsoft's newer server for the same voices&lt;/strong&gt; (&lt;code&gt;api.msedgeservices.com&lt;/code&gt;) and keeps using it for the rest of the session. A few details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;edge-tts itself isn't modified (it's LGPL, and I want to drop the workaround the day upstream ships a fix). It reads its websocket URL at connect time, so the switch is one assignment behind a lock.&lt;/li&gt;
&lt;li&gt;It only reacts to a real 403. Timeouts, DNS errors or "no audio" keep their existing handling, so a flaky Wi-Fi doesn't move you to a different server.&lt;/li&gt;
&lt;li&gt;I tested &lt;strong&gt;all 80 online voices in 22 languages&lt;/strong&gt; on the new server: every one answered, with a median of about 1.1 s to first audio.&lt;/li&gt;
&lt;li&gt;One lesson from CodeQL: the new server's URL carries a client key, so the log line names the &lt;em&gt;host&lt;/em&gt; only and never the full URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Every language, the right voice
&lt;/h2&gt;

&lt;p&gt;Two language-detection fixes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chinese, Japanese and Korean text with English names&lt;/strong&gt; is detected correctly. "欢迎使用 FluentVoice Pro" used to count as English, because one CJK character weighed as much as one Latin letter. Each CJK character now counts like a short word, and a test checks that every language's sample sentence is detected as that language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Languages FluentVoice has no voices of its own for&lt;/strong&gt; (Dutch, Polish, Turkish, Swedish, Vietnamese, Finnish, Greek and more) are read by a &lt;strong&gt;Multilingual voice&lt;/strong&gt; instead of an English one, and Settings shows the real name ("Lang: Dutch (Multilingual voice)"). Short snippets keep the current voice, and text the detector isn't sure about still counts as English.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnkbomlxc0985vy3w9mwh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnkbomlxc0985vy3w9mwh.png" alt="Dutch text read by a Multilingual voice" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  New: a health check that tells you what to fix
&lt;/h2&gt;

&lt;p&gt;When a TTS app goes quiet, the user usually can't tell whether it's their internet, a firewall, Microsoft, the audio device or a hotkey that another app grabbed. Settings → About &amp;amp; Developer now has a &lt;strong&gt;Components &amp;amp; sources&lt;/strong&gt; panel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Test providers&lt;/strong&gt; runs live checks of the online voices, the offline HD voices, the Windows voices, the tray and hotkeys, the audio output and the last 24 hours of errors in the log. Each problem comes with a plain-language diagnosis, what to do, and the alternatives: "not connected to the internet" is told apart from "a firewall blocks the voice server" and from "Microsoft refuses the connection".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify / repair offline voices&lt;/strong&gt; re-hashes every downloaded Piper / Kokoro file against the SHA-256 pinned in the app, and offers to download damaged ones again, only from the official hosts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Components&lt;/strong&gt; lists the version, licence and source of everything FluentVoice is built from.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fojk0pwvxt5s2etncqnyo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fojk0pwvxt5s2etncqnyo.png" alt="Health check: Test providers" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Everything else, at a glance
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazfvbx37wvs2vpmlakkn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazfvbx37wvs2vpmlakkn.jpg" alt="FluentVoice Pro v1.6.3 collage" width="800" height="802"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Still there from earlier releases: 57 offline HD voices in 16 languages that never send text anywhere, an Offline-only privacy mode, a hotkey that reads your selection (and an optional Stop hotkey), voice fallback that returns to online by itself, single-stream playback so voices never overlap, and a release pipeline with attested builds and &lt;code&gt;SHA256SUMS.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The full 5-minute tour of the app is here: &lt;a href="https://youtu.be/jpwKR2xFVRA" rel="noopener noreferrer"&gt;https://youtu.be/jpwKR2xFVRA&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Get it (free)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Store:&lt;/strong&gt; &lt;a href="https://apps.microsoft.com/detail/9N293MJ0MD9F" rel="noopener noreferrer"&gt;https://apps.microsoft.com/detail/9N293MJ0MD9F&lt;/a&gt; (updates automatically; 1.6.3 arrives after Microsoft's certification)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub release:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/fluentvoice-pro/releases/tag/v1.6.3" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/fluentvoice-pro/releases/tag/v1.6.3&lt;/a&gt; (source ZIP, portable EXE, MSIX, all attested)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scoop:&lt;/strong&gt; &lt;code&gt;scoop bucket add nickotmazgin https://github.com/nickotmazgin/scoop-bucket&lt;/code&gt;, then &lt;code&gt;scoop install nickotmazgin/fluentvoicepro&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source, changelog and screenshots: &lt;a href="https://github.com/nickotmazgin/fluentvoice-pro" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/fluentvoice-pro&lt;/a&gt; · Release notes and questions: &lt;a href="https://github.com/nickotmazgin/fluentvoice-pro/discussions/66" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/fluentvoice-pro/discussions/66&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you build on edge-tts and hit the 403, the failover is about 50 lines in &lt;a href="https://github.com/nickotmazgin/fluentvoice-pro/blob/main/fluentvoice/core.py" rel="noopener noreferrer"&gt;&lt;code&gt;fluentvoice/core.py&lt;/code&gt;&lt;/a&gt;; feel free to borrow the idea. Feedback and bug reports are welcome in the comments or on GitHub.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>opensource</category>
      <category>windows</category>
      <category>a11y</category>
    </item>
    <item>
      <title>FluentVoice Pro 1.6.1 is now in the Microsoft Store: free, open-source text-to-speech for Windows</title>
      <dc:creator>Nick Otmazgin</dc:creator>
      <pubDate>Sat, 10 Oct 2026 12:03:08 +0000</pubDate>
      <link>https://dev.to/nickotmazgin/fluentvoice-pro-161-is-now-in-the-microsoft-store-free-open-source-text-to-speech-for-windows-5hjm</link>
      <guid>https://dev.to/nickotmazgin/fluentvoice-pro-161-is-now-in-the-microsoft-store-free-open-source-text-to-speech-for-windows-5hjm</guid>
      <description>&lt;p&gt;FluentVoice Pro 1.6.1 is now in the Microsoft Store 🎙️ It's a free, open-source text-to-speech app for Windows 11/10 with 80 online voices, 57 offline HD voices and an Offline-only privacy mode.&lt;/p&gt;

&lt;p&gt;Here's the 5-minute demo with real voices, so turn the sound on:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/jpwKR2xFVRA" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;FluentVoice Pro sits in the system tray and reads text aloud from any app: browsers, PDF readers, Office, VS Code, Cursor, Slack, terminals. It isn't a browser extension, and it stays light in the background (about 30–60 MB of RAM).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global hotkey:&lt;/strong&gt; select text and press &lt;code&gt;Ctrl+Shift+Space&lt;/code&gt; (configurable) to start or stop reading, from any app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-Read on Copy:&lt;/strong&gt; optionally, newly copied text is read aloud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direct Text Reader:&lt;/strong&gt; a scratchpad window for pasting and reading long articles, notes or PDFs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The voices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;80 Microsoft online voices in 22 languages&lt;/strong&gt;, with a male and a female voice for every language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;57 offline HD voices that run on your PC:&lt;/strong&gt; 29 Piper voices and 28 Kokoro voices. Every download is pinned by SHA-256 and comes only from the official hosts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every Windows voice&lt;/strong&gt; you already have, both the classic SAPI5 voices and the newer OneCore voices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart language routing:&lt;/strong&gt; it detects the language of the text and picks a matching voice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline-only privacy mode:&lt;/strong&gt; your text never leaves the computer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3eun7gy713dxhi0zal9a.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3eun7gy713dxhi0zal9a.jpg" alt="FluentVoice Pro 1.6.1 collage: Settings tabs, voices and the tray menu" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Now in the Microsoft Store
&lt;/h2&gt;

&lt;p&gt;The Store version is free, signed by Microsoft and updates automatically, and you don't need Python. Windows handles Start with Windows, and the app appears in the Start menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.microsoft.com/detail/9N293MJ0MD9F" rel="noopener noreferrer"&gt;Get FluentVoice Pro from the Microsoft Store&lt;/a&gt;, or install it from a terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;winget&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;9N293MJ0MD9F&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--source&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;msstore&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpq009l5fcougbgacj9q0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpq009l5fcougbgacj9q0.jpg" alt="FluentVoice Pro in the Microsoft Store" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new in 1.6.1
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tidier Settings in the Store version.&lt;/strong&gt; I found these by running the Store package on a real PC. The app no longer shows switches that the Store or Windows handle (Start with Windows, GitHub update checks), and the help text describes the Store version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release ZIPs follow the ZIP format.&lt;/strong&gt; &lt;code&gt;Compress-Archive&lt;/code&gt; in Windows PowerShell 5.1 writes backslashes into the paths inside a ZIP. The ZIP format requires forward slashes, so winget's local archive scan reported a false "malware" result. A small Python script now builds the release ZIPs, and the same files pass the scan.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Other ways to install
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Portable ZIP&lt;/strong&gt; from &lt;a href="https://github.com/nickotmazgin/fluentvoice-pro/releases" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;: built by GitHub Actions, with a build-provenance attestation and &lt;code&gt;SHA256SUMS.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scoop:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;scoop&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;bucket&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;nickotmazgin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://github.com/nickotmazgin/scoop-bucket&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;scoop&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;nickotmazgin/fluentvoicepro&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's also listed on AlternativeTo, where you can leave a review or suggest it as an alternative:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffxdlwhsr97kqi5dasi91.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffxdlwhsr97kqi5dasi91.jpg" alt="FluentVoice Pro on AlternativeTo" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Store:&lt;/strong&gt; &lt;a href="https://apps.microsoft.com/detail/9N293MJ0MD9F" rel="noopener noreferrer"&gt;https://apps.microsoft.com/detail/9N293MJ0MD9F&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/nickotmazgin/fluentvoice-pro" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/fluentvoice-pro&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AlternativeTo:&lt;/strong&gt; &lt;a href="https://alternativeto.net/software/fluentvoice-pro/about/" rel="noopener noreferrer"&gt;https://alternativeto.net/software/fluentvoice-pro/about/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;FluentVoice Pro is free and MIT-licensed. Feedback, issues and stars are very welcome. If it's useful to you, a review on the Store or AlternativeTo helps other people find it.&lt;/p&gt;

&lt;h1&gt;
  
  
  TextToSpeech #Windows11 #Windows10 #OpenSource #Accessibility #Python #MicrosoftStore #Piper #Kokoro #FOSS
&lt;/h1&gt;

</description>
      <category>showdev</category>
      <category>opensource</category>
      <category>windows</category>
      <category>a11y</category>
    </item>
    <item>
      <title>Adding offline HD voices to a Windows text-to-speech app (Piper + Kokoro, verified downloads)</title>
      <dc:creator>Nick Otmazgin</dc:creator>
      <pubDate>Sun, 04 Oct 2026 12:10:41 +0000</pubDate>
      <link>https://dev.to/nickotmazgin/adding-offline-hd-voices-to-a-windows-text-to-speech-app-piper-kokoro-verified-downloads-1k9j</link>
      <guid>https://dev.to/nickotmazgin/adding-offline-hd-voices-to-a-windows-text-to-speech-app-piper-kokoro-verified-downloads-1k9j</guid>
      <description>&lt;p&gt;FluentVoice Pro is a small open-source tray app for Windows 11 and 10 that reads selected or copied text aloud. Until version 1.5, every natural-sounding voice came from Microsoft's online voices. They sound great, but they need the internet, and some people don't want their text to leave the PC at all.&lt;/p&gt;

&lt;p&gt;So in v1.5.0 I added &lt;strong&gt;offline HD voices&lt;/strong&gt; that run entirely on the user's computer. Here's how it works, and what I learned along the way.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/onsD0E8ivHk" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Two engines: Piper and Kokoro
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Piper&lt;/strong&gt; (via &lt;code&gt;piper-tts&lt;/code&gt;): fast, small models (60-115 MB each) and lots of languages. The app ships a catalogue of 29 voices in 15 languages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kokoro&lt;/strong&gt; (via &lt;code&gt;sherpa-onnx&lt;/code&gt;): one 350 MB pack with very natural voices for English, Spanish, French, Italian, Portuguese and Hindi.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing is bundled with the app: a voice is downloaded only when the user picks it in &lt;strong&gt;Settings &amp;gt; Voice Providers&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Downloads you can trust
&lt;/h2&gt;

&lt;p&gt;Downloading model files from the internet is exactly where a desktop app can get hurt, so every file is treated as untrusted until proven otherwise:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Allow-listed hosts only:&lt;/strong&gt; Hugging Face (the official Piper voice library) and the official sherpa-onnx release on GitHub. Any other host, including redirects, is refused.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pinned SHA-256 and size&lt;/strong&gt; for every single file in the catalogue. A file that doesn't match is deleted and never loaded, and it is checked again the first time it's used.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe archive extraction:&lt;/strong&gt; the Kokoro pack is a &lt;code&gt;.tar.bz2&lt;/code&gt;, and extraction rejects absolute paths, &lt;code&gt;..&lt;/code&gt; traversal and links.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Licences, voice by voice
&lt;/h2&gt;

&lt;p&gt;"Open model" doesn't mean "free to use however you like". Each voice's training data has its own licence, so the app shows a badge next to every voice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free to use:&lt;/strong&gt; public domain, CC0, CC BY, CC BY-SA, Apache-2.0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personal use only:&lt;/strong&gt; for example non-commercial recordings; the app asks for confirmation before downloading these&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Voices trained on research-only data were left out, and so were Kokoro voices named after other companies' voices. The full table is generated from the catalogue into &lt;code&gt;docs/VOICE_LICENSES.md&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy mode and fallback
&lt;/h2&gt;

&lt;p&gt;With &lt;strong&gt;Offline only&lt;/strong&gt; switched on, no text is ever sent to an online voice: each language is read by a downloaded offline voice or a built-in Windows voice. And when the online voice is simply unreachable, reading continues with an offline voice &lt;strong&gt;in the same language&lt;/strong&gt;. Before, a Hebrew text would fall back to an English Windows voice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Store&lt;/strong&gt; (free, signed by Microsoft, automatic updates): &lt;a href="https://apps.microsoft.com/detail/9N293MJ0MD9F" rel="noopener noreferrer"&gt;https://apps.microsoft.com/detail/9N293MJ0MD9F&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Download (portable EXE, no Python needed): &lt;a href="https://github.com/nickotmazgin/fluentvoice-pro/releases/latest" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/fluentvoice-pro/releases/latest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Or with Scoop: &lt;code&gt;scoop bucket add nickotmazgin https://github.com/nickotmazgin/scoop-bucket&lt;/code&gt; then &lt;code&gt;scoop install nickotmazgin/fluentvoicepro&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Source code (MIT): &lt;a href="https://github.com/nickotmazgin/fluentvoice-pro" rel="noopener noreferrer"&gt;https://github.com/nickotmazgin/fluentvoice-pro&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;On AlternativeTo: &lt;a href="https://alternativeto.net/software/fluentvoice-pro/about/" rel="noopener noreferrer"&gt;https://alternativeto.net/software/fluentvoice-pro/about/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback, bug reports and voice suggestions are very welcome in GitHub Discussions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was drafted by an AI assistant (Claude) from the project's code and docs, at my request, and published by me.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>opensource</category>
      <category>windows</category>
      <category>a11y</category>
    </item>
  </channel>
</rss>
