Just my blogroll - BlogFlock 2026-01-24T07:14:07.933Z BlogFlock Justin Barclay, Protesilaos Stavrou: News and Announcements, The Emacs Cat, Arialdo Martini, BuzzMachine, GamingOnLinux Latest Articles, Xah Lee, Sacha Chua, Emacs@ Dyerdwelling, Jeff Kreeftmeijer, MacAdie Web Blog, Karthinks, Philip KALUDERCIC, Bowmansarrow, Irreal, Take on Rules, manuel uberti, Wilfred Hughes::Blog, Bicycle For Your Mind, LWN.net, Rock Paper Shotgun Latest Articles Feed, McSweeney’s Queuing multiple transcriptions with whisper.el speech recognition - Sacha Chua https://sachachua.com/blog/2026/01/queue-multiple-transcriptions-with-whisper-el-speech-recognition/ 2026-01-23T19:50:37.000Z <p> I want to be able to talk out loud and have the ideas go into Emacs. I can do this in a number of different ways: </p> <ol class="org-ol"> <li>I briefly demonstrated a step-by-step approach with <a href="https://sachachua.com/blog/2026/01/using-whisper-el-to-capture-text-to-speech-in-emacs/">natrys/whisper.el with a single file</a>. I press a keyboard shortcut to start the recording, another shortcut to stop the recording, and it transcribes it in the background. But the way whisper.el is set up is that if I press the keyboard shortcut to start recording again it will offer to interrupt the transcription process, which is not what I want. I want to just keep talking and have it process results as things come in.</li> <li>I'm also experimenting with <a href="https://sachachua.com/dotemacs#writing-and-editing-speech-recognition-streaming-speech-recognition-into-emacs-using-google-chrome-web-speech-api">Google Chrome's web speech API to do continuous speech recognition</a>, which I can get into Emacs using a web socket.</li> <li>What I've just figured out is how to layer a semi-continuous interface for speech recognition on top of whisper.el so that while it's processing in the background, I can just press a keyboard shortcut (I'm using numpad 9 to call <code>my-whisper-continue</code>) to stop the previous recording, queue it for processing, and start the next recording. If I use this keyboard shortcut to separate my thoughts, then Whisper has a much easier time making sense of the whole sentence or paragraph or whatever, instead of trying to use the sliding 30 second context window that many streaming approaches to speech recognition try to use.</li> </ol> <p> Question: Did you fix the keyboard delay you've got while speech catches what you're saying? </p> <p> Sometimes, when the speed recognition kicks in, my computer gets busy. When my computer gets really busy, it doesn't process my keystrokes in the right order, which is very annoying because then I have to delete the previous word and retype it. I haven't sorted that out yet, but it seems like I probably have to lower the priority on different processes. On the plus side, as I mentioned, if I dictate things instead of typing them, then I don't run into that problem at all. </p> <p> Also, other notes on delays: The continuous speech recognition via Google Chrome shows up fairly quickly, but it's not very precise, and it doesn't have punctuation. Even if there's a little bit of a delay, as long as I press the my-whisper-continue shortcut after each thought, then I can get that text into my Emacs buffer using the nicer transcription from my selected model. There is going to be a bit of a delay for that one because it gets processed at the end of the thought. Also, I need to start thinking in complete sentences instead of just adding one cause after the other as my brain goes on all of these tangents. I think it's pretty promising. There's the continuous speech recognition via Google Chrome if I don't mind the lower accuracy and lack of punctuation, and I can still get the pretty version on the other side. </p> <p> Why talk out loud? I liked the <a href="https://emacsconf.org/2025/talks/bookclub-tapas">Bookclub Tapas</a> presentation that Maddie Sullivan did at EmacsConf 2025. Talking out loud helps me be a lot more verbose about what I'm saying, compared to typing things out or even like having to switch to my notes or interrupting my screen with an Org capture buffer. Of course I want to clean that up for putting into a blog post, but given that my life still sometimes has random interruptions from a kiddo who must have my attention at that very minute, having that kind of record that I can at least try to reread afterwards to reconstruct what I was thinking about sounds like it might be helpful. </p> <p> Still, making sense out loud is hard. I'm not actually used to talking to people that much now. This is probably a good reason for me to experiment with streaming more. Then I get the practice in talking out loud, there are backup recordings, and people can ask questions when things are unclear. </p> <p> Of course, sometimes the text doesn't quite make sense because of the speech recognition errors. I can usually figure it out from the context. I save the audio as well so that I can go back and listen to it again if I really need to. </p> <p> Anyway, here's the code for sending the current recording to whisper in the background and starting another recording. It assumes a lot about how things are set up. For example, I'm only testing this with a local speaches server instead of whisper.cpp. You might need to look at my other speech related configuration blog posts and sections in order to make sense of it. </p> <details><summary>Code for queuing whisper.el requests to a local server</summary> <div class="org-src-container"> <pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-whisper&#45;&#45;queue</span> nil) (<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-continue</span> (<span class="org-type">&amp;optional</span> arg) <span class="org-doc">"Send what we've got so far for transcription and then continue recording.</span> <span class="org-doc">Call with \\[</span><span class="org-doc"><span class="org-constant">universal-argument</span></span><span class="org-doc">] to signal that we can stop."</span> (<span class="org-keyword">interactive</span> <span class="org-string">"P"</span>) (<span class="org-keyword">setq</span> whisper&#45;&#45;marker (point-marker) whisper&#45;&#45;point-buffer (current-buffer)) (<span class="org-keyword">when</span> (process-live-p whisper&#45;&#45;recording-process) (add-to-list <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-whisper&#45;&#45;queue</span> (list <span class="org-builtin">:file</span> whisper&#45;&#45;temp-file <span class="org-builtin">:buffer</span> (format <span class="org-string">"*result: %s*"</span> (file-name-base whisper&#45;&#45;temp-file))) t) <span class="org-comment-delimiter">;; </span><span class="org-comment">Remove the sentinel; handle results ourselves</span> (set-process-sentinel whisper&#45;&#45;recording-process (<span class="org-keyword">lambda</span> (process event) (my-whisper-process-queue))) (interrupt-process whisper&#45;&#45;recording-process)) (<span class="org-keyword">unless</span> arg (run-hooks <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper-before-transcription-hook</span>) (whisper&#45;&#45;record-audio))) (<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-discard</span> () <span class="org-doc">"Ignore the previous recording."</span> (<span class="org-keyword">interactive</span>) (<span class="org-keyword">when</span> (process-live-p whisper&#45;&#45;recording-process) <span class="org-comment-delimiter">;; </span><span class="org-comment">Remove the sentinel; handle results ourselves</span> (set-process-sentinel whisper&#45;&#45;recording-process (<span class="org-keyword">lambda</span> (process event) (<span class="org-keyword">when</span> (file-exists-p whisper&#45;&#45;temp-file) (delete-file whisper&#45;&#45;temp-file)) (my-whisper-process-queue))) (interrupt-process whisper&#45;&#45;recording-process))) (<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-discard-and-continue</span> () <span class="org-doc">"Ignore the previous recording and continue."</span> (<span class="org-keyword">interactive</span>) (<span class="org-keyword">if</span> (process-live-p whisper&#45;&#45;recording-process) (<span class="org-keyword">progn</span> <span class="org-comment-delimiter">;; </span><span class="org-comment">Remove the sentinel; handle results ourselves</span> (set-process-sentinel whisper&#45;&#45;recording-process (<span class="org-keyword">lambda</span> (process event) (my-whisper-process-queue) (my-whisper-continue))) (interrupt-process whisper&#45;&#45;recording-process)) (my-whisper-continue))) (<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-done</span> () (<span class="org-keyword">interactive</span>) (<span class="org-keyword">when</span> (process-live-p whisper&#45;&#45;recording-process) (add-to-list <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-whisper&#45;&#45;queue</span> (list <span class="org-builtin">:file</span> whisper&#45;&#45;temp-file <span class="org-builtin">:buffer</span> (format <span class="org-string">"*result: %s*"</span> (file-name-base whisper&#45;&#45;temp-file))) t) <span class="org-comment-delimiter">;; </span><span class="org-comment">Remove the sentinel; handle results ourselves</span> (set-process-sentinel whisper&#45;&#45;recording-process (<span class="org-keyword">lambda</span> (process event) (my-whisper-process-queue))) (interrupt-process whisper&#45;&#45;recording-process))) (<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-process-queue-result</span> () <span class="org-doc">"Process the first part of the queue that already has results."</span> (<span class="org-keyword">while</span> (plist-get (car my-whisper&#45;&#45;queue) <span class="org-builtin">:results</span>) (<span class="org-keyword">let</span> ((o (<span class="org-keyword">pop</span> my-whisper&#45;&#45;queue))) (<span class="org-keyword">unless</span> my-whisper-target-markers (<span class="org-keyword">setq</span> whisper&#45;&#45;marker (point-marker) whisper&#45;&#45;point-buffer (current-buffer))) (<span class="org-keyword">with-current-buffer</span> (plist-get o <span class="org-builtin">:buffer</span>) (erase-buffer) (insert (plist-get o <span class="org-builtin">:results</span>)) (goto-char (point-min)) (run-hook-wrapped <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper-after-transcription-hook</span> (<span class="org-keyword">lambda</span> (f) (<span class="org-keyword">with-current-buffer</span> (get-buffer (plist-get o <span class="org-builtin">:buffer</span>)) (<span class="org-keyword">save-excursion</span> (funcall f))) nil)))))) (<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-process-queue</span> () (<span class="org-keyword">let</span> (o) (<span class="org-keyword">while</span> (<span class="org-keyword">setq</span> o (seq-find (<span class="org-keyword">lambda</span> (o) (<span class="org-keyword">and</span> (plist-get o <span class="org-builtin">:file</span>) (not (plist-get o <span class="org-builtin">:process</span>)) (not (plist-get o <span class="org-builtin">:results</span>)))) my-whisper&#45;&#45;queue)) (<span class="org-keyword">let*</span> ((headers (list <span class="org-string">"Content-Type: multipart/form-data"</span>)) (params (list (concat <span class="org-string">"file=@"</span> (plist-get o <span class="org-builtin">:file</span>)) <span class="org-string">"temperature=0.0"</span> <span class="org-string">"temperature_inc=0.2"</span> <span class="org-string">"response_format=json"</span> (concat <span class="org-string">"model="</span> whisper-model) (concat <span class="org-string">"language="</span> whisper-language))) (url (format my-whisper-url-format whisper-server-host whisper-server-port)) (command <span class="org-highlight-quoted-quote">`</span>(<span class="org-string">"curl"</span> <span class="org-string">"-s"</span> ,url ,@(mapcan (<span class="org-keyword">lambda</span> (h) (list <span class="org-string">"-H"</span> h)) headers) ,@(mapcan (<span class="org-keyword">lambda</span> (p) (list <span class="org-string">"-F"</span> p)) params)))) (<span class="org-keyword">with-current-buffer</span> (get-buffer-create (plist-get o <span class="org-builtin">:buffer</span>)) (erase-buffer)) (plist-put o <span class="org-builtin">:process</span> (make-process <span class="org-builtin">:name</span> <span class="org-string">"whisper-curl"</span> <span class="org-builtin">:command</span> command <span class="org-builtin">:buffer</span> (plist-get o <span class="org-builtin">:buffer</span>) <span class="org-builtin">:coding</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">utf-8</span> <span class="org-builtin">:sentinel</span> (<span class="org-keyword">lambda</span> (process event) (<span class="org-keyword">with-current-buffer</span> (process-buffer process) (<span class="org-keyword">let</span> ((current my-whisper&#45;&#45;queue-item)) (<span class="org-keyword">when</span> (<span class="org-keyword">and</span> (get-buffer (plist-get current <span class="org-builtin">:buffer</span>)) (string-equal <span class="org-string">"finished\n"</span> event)) (<span class="org-keyword">with-current-buffer</span> (plist-get current <span class="org-builtin">:buffer</span>) (goto-char (point-min)) (plist-put current <span class="org-builtin">:results</span> (<span class="org-keyword">or</span> (<span class="org-keyword">condition-case</span> nil (gethash <span class="org-string">"text"</span> (json-parse-buffer)) (<span class="org-warning">error</span> <span class="org-string">""</span>)) <span class="org-string">"(error)"</span>)))))) (my-whisper-process-queue-result)))) (plist-put o <span class="org-builtin">:command</span> (string-join command <span class="org-string">" "</span>)) (<span class="org-keyword">with-current-buffer</span> (process-buffer (plist-get o <span class="org-builtin">:process</span>)) (<span class="org-keyword">setq-local</span> my-whisper&#45;&#45;queue-item o)))))) (<span class="org-keyword">defvar-local</span> <span class="org-variable-name">my-whisper&#45;&#45;queue-item</span> nil) (<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-reprocess-queue</span> () (<span class="org-keyword">interactive</span>) (<span class="org-keyword">setq</span> whisper&#45;&#45;marker (point-marker) whisper&#45;&#45;point-buffer (current-buffer)) (mapc (<span class="org-keyword">lambda</span> (o) (<span class="org-keyword">when</span> (process-live-p (plist-get o <span class="org-builtin">:process</span>)) (kill-process (plist-get o <span class="org-builtin">:process</span>))) (<span class="org-keyword">when</span> (get-buffer (plist-get o <span class="org-builtin">:buffer</span>)) (kill-buffer (plist-get o <span class="org-builtin">:buffer</span>))) (plist-put o <span class="org-builtin">:process</span> nil) (plist-put o <span class="org-builtin">:results</span> nil)) my-whisper&#45;&#45;queue) (my-whisper-process-queue)) (<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-clear-queue</span> () (<span class="org-keyword">interactive</span>) (mapc (<span class="org-keyword">lambda</span> (o) (<span class="org-keyword">when</span> (process-live-p (plist-get o <span class="org-builtin">:process</span>)) (kill-process (plist-get o <span class="org-builtin">:process</span>))) (<span class="org-keyword">when</span> (get-buffer (plist-get o <span class="org-builtin">:buffer</span>)) (kill-buffer (plist-get o <span class="org-builtin">:buffer</span>))) (plist-put o <span class="org-builtin">:process</span> nil) (plist-put o <span class="org-builtin">:results</span> nil)) my-whisper&#45;&#45;queue) (<span class="org-keyword">setq</span> my-whisper&#45;&#45;queue nil)) (keymap-global-set <span class="org-string">"&lt;kp-9&gt;"</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my-whisper-continue</span>) (keymap-global-set <span class="org-string">"&lt;kp-8&gt;"</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my-whisper-discard-and-continue</span>) (keymap-global-set <span class="org-string">"C-&lt;kp-9&gt;"</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my-whisper-done</span>) </code></pre> </div> </details> <div class="note">This is part of my <a href="https://sachachua.com/dotemacs#writing-and-editing-speech-recognition-queue-multiple-transcriptions-with-whisper-el-speech-recognition">Emacs configuration.</a></div><div><a href="https://sachachua.com/blog/2026/01/queue-multiple-transcriptions-with-whisper-el-speech-recognition/index.org">View org source for this post</a></div> <p>You can <a href="https://social.sachachua.com/@sacha/statuses/01KFP6RDJ52ERX664SPP6CN7S9" target="_blank" rel="noopener noreferrer">comment on Mastodon</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F01%2Fqueue-multiple-transcriptions-with-whisper-el-speech-recognition%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p> Arc Raiders devs reveal plans for "new large Arc", a fresh map, and two more Expeditions this spring - Rock Paper Shotgun Latest Articles Feed https://www.rockpapershotgun.com/arc-raiders-devs-reveal-plans-for-new-large-arc-a-fresh-map-two-expeditions-and-extra-matchmaking-options 2026-01-23T17:41:41.000Z <img src="https://assetsio.gnwcdn.com/arcraidersspring2026.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Har(c)ken to me, defenders of Speranza! Embark have just announced their plans for ARC Raiders updates over the first four months of 2026. The extraction shooter&rsquo;s next season is called Escalation, and its offerings range from new maps and enemies to new Raider decks, changes to existing maps, and more Expeditions. The headline attraction is surely the &ldquo;new large Arc&rdquo; coming in April. I wonder how big Arcs can get. Perhaps an Arc the size of a map, like Cronos in God Of War 3? But, you know, metal?</p> <p><a href="https://www.rockpapershotgun.com/arc-raiders-devs-reveal-plans-for-new-large-arc-a-fresh-map-two-expeditions-and-extra-matchmaking-options">Read more</a></p> 46 US lawmakers express "serious concerns" about the Saudi-led EA buyout's impact on game developers - Rock Paper Shotgun Latest Articles Feed https://www.rockpapershotgun.com/46-us-lawmakers-express-serious-concerns-about-the-saudi-led-ea-buyouts-impact-on-game-developers 2026-01-23T17:08:37.000Z <img src="https://assetsio.gnwcdn.com/battlefield-6-update-drone-exploit-fix-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>The Saudi-led acquisition of Electronic Arts is meeting with more friction in the US House of Congress. 46 lawmakers have signed a letter calling on the Federal Trade Commission to investigate the debt-financed $55 billion deal for signs that it could be damaging for workers and anti-competitive to the point of breaking US anti-trust law.</p> <p><a href="https://www.rockpapershotgun.com/46-us-lawmakers-express-serious-concerns-about-the-saudi-led-ea-buyouts-impact-on-game-developers">Read more</a></p> Fable, Forza Horizon 6 and more from Xbox Developer Direct 2026 - GamingOnLinux Latest Articles https://www.gamingonlinux.com/2026/01/fable-forza-horizon-6-and-more-from-xbox-developer-direct-2026/ 2026-01-23T16:55:22.000Z Microsoft recently did their latest Xbox Developer_Direct event with the 2026 edition giving us a new look at multiple games and new release dates.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/772983448id28367gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/fable-forza-horizon-6-and-more-from-xbox-developer-direct-2026/">GamingOnLinux</a>.</p> Steam Machine and Steam Deck support will be coming to Nexus Mods' Windows-only mod manager at some point - Rock Paper Shotgun Latest Articles Feed https://www.rockpapershotgun.com/steam-machine-and-steam-deck-support-will-be-coming-to-nexus-mods-windows-only-mod-manager-at-some-point 2026-01-23T16:45:53.000Z <img src="https://assetsio.gnwcdn.com/steam-machine-steam-deck-support-nexus-mods-vortex-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Ah, cool. The world's foremost hosts of unofficial <a href="https://www.rockpapershotgun.com/games/the-elder-scrolls-v-skyrim">Skyrim</a> additions you'd rather not have to explain to an elderly relative, Nexus Mods, have committed to bringing SteamOS support to their mod manager Vortex at some point down the line. That'll mean you can use it with the Steam Machine and Steam Deck, if you fancy a modded playthrough on the go or via a smaller package.</p> <p><a href="https://www.rockpapershotgun.com/steam-machine-and-steam-deck-support-will-be-coming-to-nexus-mods-windows-only-mod-manager-at-some-point">Read more</a></p> AMD confirm the Ryzen 7 9850X3D launch date and pricing - GamingOnLinux Latest Articles https://www.gamingonlinux.com/2026/01/amd-confirm-the-ryzen-7-9850x3d-launch-date-and-pricing/ 2026-01-23T16:32:59.000Z AMD's powerful new gaming processor the Ryzen 7 9850X3D now actually has an official release date and pricing.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1661511524id28366gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/amd-confirm-the-ryzen-7-9850x3d-launch-date-and-pricing/">GamingOnLinux</a>.</p> Valve's in-development game Deadlock just got a massive upgrade - GamingOnLinux Latest Articles https://www.gamingonlinux.com/2026/01/valve-s-in-development-game-deadlock-just-got-a-massive-upgrade/ 2026-01-23T16:03:54.000Z Deadlock is an online-only third-person MOBA currently in development by Valve, and they just released a massive upgrade for the game.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/594346331id28365gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/valve-s-in-development-game-deadlock-just-got-a-massive-upgrade/">GamingOnLinux</a>.</p> Casual EWW - Irreal https://irreal.org/blog/?p=13562 2026-01-23T15:58:34.000Z <p> You&rsquo;ve all heard me moan many times about my failure to bring my last remaining significant application—Web browsing—into Emacs. There <i>are</i> some solutions but none of them come close to being sufficient. If you want full featured browsing, you&rsquo;re mostly restricted to Safari, Firefox, one of the niche browsers, or the privacy violating Chrome and whatever Microsoft&rsquo;s browser de jour is called. </p> <p> Still, there is EWW, which some people find some sufficient for a subset of browsing tasks. Charles Choi is one of those people so naturally he&rsquo;s made using EWW easier by adding <a href="http://yummymelon.com/devnull/announcing-casual-eww.html">Casual EWW</a> to his Casual Suite. </p> <p> You can read his announcement for the details but, as usual, it&rsquo;s mainly a set of transient menus that make discovery and remembering obscure commands easier. As I&rsquo;ve said before, even if you need only some of the apps, it&rsquo;s worthwhile installing the Casual Suite.</p> Get the Just Cause Complete Collection in a new Humble Bundle - GamingOnLinux Latest Articles https://www.gamingonlinux.com/2026/01/get-the-just-cause-complete-collection-in-a-new-humble-bundle/ 2026-01-23T15:31:32.000Z The Just Cause Complete Collection Humble Bundle launched with a whole lot of action that you can grab for a decent price.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1753816842id28364gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/get-the-just-cause-complete-collection-in-a-new-humble-bundle/">GamingOnLinux</a>.</p> Become a literal galaxy brain in this ambitious space strategy sim about an AI seeking a new home for humanity - Rock Paper Shotgun Latest Articles Feed https://www.rockpapershotgun.com/become-a-literal-galaxy-brain-in-this-ambitious-space-strategy-sim-about-an-ai-seeking-a-new-home-for-humanity 2026-01-23T15:31:22.000Z <img src="https://assetsio.gnwcdn.com/sine-fine-16-9.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p> Sine Fine is a &ldquo;hard sci-fi&rdquo; space exploration game from the avid stargazers at Vindemiatrix Collective, a developer based across western Europe. It is certainly hard to get your head around, but also, very promising. The premise is that you&rsquo;re a lonely, functionally immortal AI, seeking a new home for some meagre frozen embryos in the wake of humanity&rsquo;s extinction. Labouring across eons, you&rsquo;ll send out probes to nearby systems and build outposts and communication networks. </p> <p><a href="https://www.rockpapershotgun.com/become-a-literal-galaxy-brain-in-this-ambitious-space-strategy-sim-about-an-ai-seeking-a-new-home-for-humanity">Read more</a></p> Cyberpunk 2077 VR modder hit by alleged second DMCA strike, "forced to temporarily pause" Patreon - Rock Paper Shotgun Latest Articles Feed https://www.rockpapershotgun.com/cyberpunk-2077-vr-modder-hit-by-alleged-second-dmca-strike-forced-to-temporarily-pause-patreon 2026-01-23T15:30:07.000Z <img src="https://assetsio.gnwcdn.com/cyberpunk-vr-modder-second-dmca-505-games-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>After having the <a href="https://www.rockpapershotgun.com/games/cyberpunk-2077">Cyberpunk 2077</a> bit of their R.E.A.L VR mod/framework <a href="https://www.rockpapershotgun.com/cyberpunk-2077-vr-mod-flatlines-after-cd-projekt-file-dmca-strike-and-request-its-creator-drop-their-paywall">taken down via a DMCA from CD Projekt</a>, modder Luke Ross claims to have had another stike filed against their work. This time, the strike has come from <a href="https://www.rockpapershotgun.com/games/ghostrunner">Ghostrunner</a> publishers 505 Games, according to a post from Ross in which they say they've been "forced to temporarily pause" their Patreon page.</p> <p>While Ross' Cyberpunk VR mod <a href="https://www.rockpapershotgun.com/cyberpunk-2077-vr-modder-doesnt-rule-out-releasing-it-for-free-after-dmca-claims-there-was-no-negotiation-with-cd-projekt">being behind a paywall</a> was at the centre of CD Projekt's decision to file a takedown, there appears to have been no indication so far as to whether the same is true of the alleged strike from 505.</p> <p><a href="https://www.rockpapershotgun.com/cyberpunk-2077-vr-modder-hit-by-alleged-second-dmca-strike-forced-to-temporarily-pause-patreon">Read more</a></p> [$] Filesystem medley: EROFS, NTFS, and XFS - LWN.net https://lwn.net/Articles/1055062/ 2026-01-23T15:27:39.000Z Filesystems seem to be one of those many areas where the problems are well understood, but there is always somebody working toward a better solution. As a result, filesystem development in the Linux kernel continues at a fast pace even after all these years. In recent news, the EROFS filesystem is on the path to gain a useful page-cache-sharing feature, there is a new NTFS implementation on the horizon, and XFS may be about to get an infrastructure for self healing. GPD claim the WIN 5 is getting an official Bazzite Linux adaptation but the Bazzite team say otherwise - GamingOnLinux Latest Articles https://www.gamingonlinux.com/2026/01/gpd-claim-the-win-5-is-getting-an-official-bazzite-linux-adaptation-but-the-bazzite-team-say-otherwise/ 2026-01-23T15:16:25.000Z GPD are being weird again - making a claim that the GPD WIN 5 is getting an "official" adaptation with Bazzite Linux but the Bazzite team say otherwise.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/982487662id28363gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/gpd-claim-the-win-5-is-getting-an-official-bazzite-linux-adaptation-but-the-bazzite-team-say-otherwise/">GamingOnLinux</a>.</p> Vulkan 1.4.340 released with new extension to improve DirectX performance on Linux - GamingOnLinux Latest Articles https://www.gamingonlinux.com/2026/01/vulkan-1-4-340-released-with-new-extension-to-improve-directx-performance-on-linux/ 2026-01-23T14:51:07.000Z We're seeing excitement build up from the Vulkan API release 1.4.340, with a new extension that should eventually improve DirectX performance on Linux.<p><img src="https://www.gamingonlinux.com/uploads/tagline_gallery/vulkan.png" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/vulkan-1-4-340-released-with-new-extension-to-improve-directx-performance-on-linux/">GamingOnLinux</a>.</p> Nexus Mods say they are committed to supporting Vortex on SteamOS Linux - GamingOnLinux Latest Articles https://www.gamingonlinux.com/2026/01/nexus-mods-say-they-are-committed-to-supporting-vortex-on-steamos-linux/ 2026-01-23T14:28:05.000Z After cancelling the newer Nexus Mods app that had Linux support to refocus on the older Vortex, the Nexus Mods team now say Vortex will support SteamOS.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/619177069id28361gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/nexus-mods-say-they-are-committed-to-supporting-vortex-on-steamos-linux/">GamingOnLinux</a>.</p> Ubisoft implementing cost-reduction restructuring, cancelling various games and closing studios - GamingOnLinux Latest Articles https://www.gamingonlinux.com/2026/01/ubisoft-implementing-cost-reduction-restructuring-cancelling-various-games-and-closing-studios/ 2026-01-23T14:18:34.000Z Ubisoft are implementing various cost-cutting measures and have announced they've cancelled 6 games, while also closing studios in a big shift.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/748902802id28360gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/ubisoft-implementing-cost-reduction-restructuring-cancelling-various-games-and-closing-studios/">GamingOnLinux</a>.</p> GNU Guix 1.5.0 released - LWN.net https://lwn.net/Articles/1055675/ 2026-01-23T14:14:25.000Z <p><a href="https://guix.gnu.org/blog/2026/gnu-guix-1.5.0-released/">Version 1.5.0</a> of the GNU Guix package manager and the Guix System have been released. Notable improvements include the ability to run the Guix daemon without root privileges, support for 64-bit RISC-V, and experimental support for the GNU Hurd kernel.</p> <blockquote class="bq"> <p>The release comes with ISO-9660 installation images, virtual machine images, and with tarballs to install the package manager on top of your GNU/Linux distro, either from source or from binaries—check out the download page. Guix users can update by running guix pull.</p> <p>It's been 3 years since the previous release. That's a lot of time, reflecting both the fact that, as a rolling release, users continuously get new features and update by running guix pull; but it also shows a lack of processes, something that we had to address before another release could be made.</p> <p>During that time, Guix received about 71,338 commits by 744 people, which include many new features.</p> </blockquote> <p>LWN <a href="https://lwn.net/Articles/962788/">last looked at Guix</a> in February 2024.</p> <p></p> Two new stable kernels for Friday - LWN.net https://lwn.net/Articles/1055672/ 2026-01-23T14:05:12.000Z <p>Greg Kroah-Hartman has released the <a href="https://lwn.net/Articles/1055673/">6.18.7</a> and <a href="https://lwn.net/Articles/1055674/">6.12.67</a> stable kernels. As always, each contains important fixes throughout the tree. Users are advised to upgrade. </p> Valve tweak accessibility categories and release new Steam update with controller improvements and new Beta UI - GamingOnLinux Latest Articles https://www.gamingonlinux.com/2026/01/valve-tweak-accessibility-categories-and-release-new-steam-update-with-controller-improvements-and-new-beta-ui/ 2026-01-23T14:00:41.000Z Valve have given their accessibility categories on Steam for discovering games a small overhaul, along with a big new Steam client update for everyone.<p><img src="https://www.gamingonlinux.com/uploads/tagline_gallery/steam_plain_2025.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/valve-tweak-accessibility-categories-and-release-new-steam-update-with-controller-improvements-and-new-beta-ui/">GamingOnLinux</a>.</p> Security updates for Friday - LWN.net https://lwn.net/Articles/1055671/ 2026-01-23T13:59:30.000Z Security updates have been issued by <b>AlmaLinux</b> (kernel), <b>Debian</b> (bind9, chromium, osslsigncode, and python-urllib3), <b>Fedora</b> (freerdp, ghostscript, hcloud, rclone, rust-rkyv0.7, rust-rkyv_derive0.7, and vsftpd), <b>Mageia</b> (avahi and harfbuzz), <b>SUSE</b> (alloy, avahi, busybox, cargo-c, corepack22, corepack24, curl, docker, dpdk, exiv2-0_26, ffmpeg-4, firefox, glib2, go1.24, go1.25, gpg2, haproxy, kernel, kernel-firmware, keylime, libpng16, librsvg, libsodium, libsoup, libsoup2, libtasn1, log4j, net-snmp, open-vm-tools, openldap2_5, ovmf, pgadmin4, php7, podman, python-filelock, python-marshmallow, python-pyasn1, python-tornado, python-urllib3, python-virtualenv, python3, python311-pyasn1, python311-weasyprint, rust1.91, rust1.92, util-linux, webkit2gtk3, and wireshark), and <b>Ubuntu</b> (libxml2 and pyasn1).