[HN Gopher] Show HN: A Tiling Window Manager for Windows, Writte...
       ___________________________________________________________________
        
       Show HN: A Tiling Window Manager for Windows, Written in Janet
        
       Hi HN!  I read[1] about Janet[2] some time ago, then immediately
       got impressed by the enthusiasm of its community, and by the
       language itself, so I started playing with it.  At the time I was
       searching for a tiling window manager for Windows, and unavoidably
       the idea of scratching my own itch with Janet got hold of me, so
       Jwno was born.  Simply put, Jwno is a keyboard-driven tiling window
       manager for Windows, scriptable with Janet. But since it has a
       complete Lisp runtime, and a thin wrapper library for Win32
       APIs[3], you can certainly do much more with it.  I hope you'll
       enjoy playing with it as much as I enjoyed building it.  And yes, I
       use StumpWM on the Linux side, by the way.  [1]:
       https://ianthehenry.com/posts/why-janet/  [2]: https://janet-
       lang.org/  [3]: https://github.com/agent-kilo/jw32
        
       Author : agentkilo
       Score  : 183 points
       Date   : 2025-05-20 15:08 UTC (7 hours ago)
        
 (HTM) web link (agent-kilo.github.io)
 (TXT) w3m dump (agent-kilo.github.io)
        
       | pjerem wrote:
       | Oh ! That looks cool :)
        
         | agentkilo wrote:
         | Thanks :)
        
       | piskov wrote:
       | Just in case someone new is looking, komorebi is great:
       | 
       | https://github.com/LGUG2Z/komorebi
        
         | agentkilo wrote:
         | Definitely! I got great inspirations from both of the Komorebi
         | and GlazeWM communities. People who like tidy desktops are
         | definitely nice people :)
        
         | bsnnkv wrote:
         | komorebi dev here - Jwno is awesome and I highly recommend
         | people give it a try (especially people who enjoy writing
         | Lisp!)
         | 
         | The Windows tiling window manager development scene is a very
         | kind, relaxed and collaborative space where we all take
         | inspiration from and support each other
        
           | TeMPOraL wrote:
           | That is amazing and I hope it'll continue to be so :).
           | 
           | The Linux scene isn't bad either (or at least it wasn't 4+
           | years ago when I was into this); I've used StumpWM as a daily
           | driver for many years, and while it was definitely niche, I
           | still saw friendly exchange of ideas and experiences with
           | people using and/or contributing to dwm, i3, and ratpoison.
           | 
           | (Then there's EXWM, but I never really mustered the courage
           | necessary to try it.)
        
       | bsnnkv wrote:
       | Jwno is great, agentkilo is kind, Lisp is magic :)
        
         | agentkilo wrote:
         | Thanks for the kind words! It means a lot coming from you :)
        
       | pbohun wrote:
       | This is so cool! It's funny because open source devs are making
       | Windows better while MS is actively making it worse. If MS
       | removed all telemetry and AI (and restored win10 functions in
       | context menus), I would probably move back to it.
       | 
       | I've recently started playing around with Janet, and it's a great
       | language. I think it's inspired by Clojure and Lua, and somehow
       | manages to be better than both (in my opinion).
        
         | agentkilo wrote:
         | > I think it's inspired by Clojure and Lua, and somehow manages
         | to be better than both
         | 
         | This is exactly how I feel about Janet too. I don't think I
         | have enough experience on Clojure or Lua to comment on them,
         | but I got attracted to Janet almost immediately.
         | 
         | Working on Jwno also confirms my first impression on Janet:
         | It's really a practical language. The tooling has some room for
         | improvement, but the language itself can get things done -
         | usually fast and easily.
        
           | cfiggers wrote:
           | Agreed on the need for better Janet tooling. I'm trying to be
           | the change I wish to see with Janet LSP[0]. Issues and
           | contributions are welcome!
           | 
           | [0] https://GitHub.com/CFiggers/janet-lsp
        
           | pbohun wrote:
           | This is how I feel about Janet too, absolutely practical. So
           | far it's been a breeze to write the little experiments I've
           | done so far.
        
           | sph wrote:
           | How's the REPL/interactive editing story? I feel weird using
           | a Lisp that is not as interactive as Racket, Scheme or Common
           | Lisp. Running scripts from the REPL ain't the same thing as
           | C-x C-e an expression on a live program
        
             | behnamoh wrote:
             | > I feel weird using a Lisp that is not as interactive as
             | Racket, Scheme or Common Lisp
             | 
             | I think Racket and Scheme don't belong in there because
             | neither has a REPL as powerful and "interactive" as Common
             | Lisp REPL. They don't support images either (but Janet and
             | CL do).
        
               | TeMPOraL wrote:
               | There's multiple dimensions you can slice and dice the
               | Lisp family by. Images and REPL experience are two big
               | ones, but they're almost orthogonal.
        
               | behnamoh wrote:
               | I didn't mean that Racket and Scheme aren't Lisp (they
               | are!). I meant they don't have the images and REPL-driven
               | development of Common Lisp.
        
               | tmtvl wrote:
               | As a Common Lisper with a Scheme background I'm gonna
               | guess that by the interactivity of the REPL you mean the
               | condition system with restarts? While most Schemes don't
               | really have anything like it, I seem to recall MIT/GNU
               | Scheme having something kinda similar. And I mean, hey,
               | it's got Edwin, so it definitely has interactivity.
        
               | behnamoh wrote:
               | Yes, I mean the conditions and restarts system in CL.
               | Haven't seen anything like that in Clojure and other
               | Lisps.
        
       | rich_sasha wrote:
       | I'm curious, did you find there were things that were easier to
       | do _because_ it 's Janet/lisp-like language? Or you just fancied
       | like using it (perfectly valid reason of course!).
       | 
       | I tried various lisp dialects, but I could never find the killer
       | feature vs other languages I already use. And I can justify why I
       | use these specific languages I do use, if that makes sense.
        
         | agentkilo wrote:
         | I find the REPL and interactive development workflow
         | invaluable. A window manager is a long-running background
         | service by nature, and has a lot of accumulated runtime states.
         | The ability to peek inside and debug while the process keeps
         | running helped me a lot when building Jwno.
         | 
         | I think Jwno's REPL module is so important, I specifically
         | changed Jwno's architecture at one point to make it work.
        
           | behnamoh wrote:
           | > I find the REPL and interactive development workflow
           | invaluable. A window manager is a long-running background
           | service by nature, and has a lot of accumulated runtime
           | states. The ability to peek inside and debug while the
           | process keeps running helped me a lot when building Jwno.
           | 
           | Sure, but any particular reason you picked Janet over Common
           | Lisp? They both support images, REPL, hot-code-reloading,
           | etc.
        
         | iLemming wrote:
         | > I could never find the killer feature vs other languages I
         | already use.
         | 
         | You're kidding or trolling? Structural editing and the REPL are
         | the greatest features of Lisp. The ability to just grab any
         | expression and move it around simplifies so many things when
         | coding and refactoring. With the connected REPL you can eval
         | anything on the spot, that turns the entire experience of
         | coding into a video game -- you don't need to wait for linter,
         | linker, compiler -- you just run things. You often don't even
         | have to save anything. I suspect when you "tried various lisp
         | dialects" maybe you didn't use structural editing and the
         | connected REPL?
         | 
         | Often people confuse Lisp REPL with REPLs in other programming
         | languages, e.g. Python, where usually you have to copy-n-paste
         | chunks of code into it. Lisp's REPLs are different in the sense
         | that every step in Read-Eval-Print-Loop is different -- in
         | Lisp, you typically eval things right where you type them, by
         | sending whole expressions to the connected REPL, which could be
         | remote. We (for example) run ours in a Kubernetes cluster, that
         | allows us to experiment with pods, running queries against the
         | "real" DB tables, testing services "live".
        
       | 90s_dev wrote:
       | > You can implement custom commands and hooks to trigger. It's
       | even possible to call native Win32 APIs in your own
       | implementations. For example, to always move a Notepad window to
       | the (100, 100) coordinates on your screen(s), using the low-level
       | SetWindowPos function
       | 
       | Great job. Looks really interesting and useful. And a fun excuse
       | to write Lisp.
       | 
       | I really appreciate it when APIs give you high-level
       | functionality but keep the door open to lower-level APIs when you
       | really need them.
        
       | packetlost wrote:
       | This might be the coolest project I've seen using Janet yet!
        
       | pona-a wrote:
       | What kinds of automation are possible with having a scripting
       | language inside your WM, rather than Sway-style IPC? I heard the
       | new Windows WMs were where most pure workflow advances happen, so
       | I wonder if they can be replicated on Linux.
        
       | roxolotl wrote:
       | Tangential but I've been writing a lot of Janet recently using
       | Joy[0], web framework, to build a small web app. Would love to
       | hear what you learned about Janet from doing this work and how
       | you feel about the language afterwards.
       | 
       | The one thing I've noticed is that it seems like Janet had a
       | burst of interest 2020-2022 but it has since slowed down. Would
       | love to see it become popular again. The main reason I'm using it
       | is because I like how it's both powerful and lightweight. I'd use
       | clojure but I don't want Java. I'm tempted to also try Common
       | Lisp but so far Janet has been great.
       | 
       | [0]: https://github.com/joy-framework/joy
        
         | agentkilo wrote:
         | I think Janet is quite...liberal? It's a practical language,
         | but doesn't force a specific paradigm on you. There're "escape
         | hatches" in different levels of the language, and I like that.
         | 
         | Maybe the most "opinionated" things in Janet are the ev stuff
         | and fibers. I think they're done right though, you just need to
         | be careful with the event loop when embedding Janet.
        
           | nicce wrote:
           | How it compares with Lua?
        
             | 77pt77 wrote:
             | This one actually has real arrays (mutable and immutable)
        
             | giraffe_lady wrote:
             | Strictly better unless you need an extremely small runtime
             | rather than a very small one, or are exposing a scripting
             | API to users who will recoil from prefix notation.
        
             | behnamoh wrote:
             | If you like Janet and Lua, might as well try Fennel, which
             | was made by the creator of Janet.
        
       | ang_cire wrote:
       | Custom windows shells (I know this is just a window manager, but
       | still) in the year of our lord 2025? This takes me back to the
       | days of installing bb4win and litestep in XP. I'm a kid again!
        
         | insin wrote:
         | TIL bbLean [1] still works in Windows 11! Currently digging
         | through my archives for my old BB4Win styles repository
         | 
         | [1] https://bb4win.sourceforge.net/bblean/
        
           | 90s_dev wrote:
           | Wow, bb4win and bblean take me _way_ back. In fact, they were
           | a huge inspiration for my shells[1] feature, which are just
           | userland programs that happen to be able to manage panels
           | (windows).
           | 
           | [1] https://90s.dev/technical/architecture.html#shells
        
         | reddit_clone wrote:
         | >litestep
         | 
         | Brings back memories !
        
         | piskov wrote:
         | Oh shit yes: Rainlendar
        
         | scbrg wrote:
         | flashback, 2001. I'm 25, sitting in the office with litestep
         | installed (which honestly was the only alternative to Linux or
         | resignation). My five years younger colleague steps up to my
         | desk and says "hey, cool desktop!"
         | 
         | I start explaining, very carefully, like I'm talking to a
         | child, that this is an alternative shell, which replaces the
         | standard Windows Explorer _et cetera, und so weiter..._ it 's
         | very complicated you know...
         | 
         | Guy says, "cool... hey, why don't you check out this URL?". I
         | do. It's the litestep contributor page. His nick is on it. Near
         | the top.
         | 
         | Ow.
        
           | leviathan wrote:
           | First part of your story reminded me of when I once trolled a
           | non-tech savvy friend by running Windows in a VM on Linux,
           | and told him "have you ever seen what's behind windows?" then
           | I exited full screen to reveal a desktop full of terminals
           | running the matrix digital rain.
        
         | philsnow wrote:
         | Sloop manager for replacing progman.exe in windows 3.1, for
         | me..
        
       | aus10d wrote:
       | Janet looks really neat. And this project seems really cool.
       | Windows DESPERATELY needs a more powerful built-in manager. It's
       | ridiculous to use the mouse all the time.
        
         | Rasthor wrote:
         | One of the later PowerToys updates makes the first few steps in
         | the right direction with "fancy zones". It's not strictly
         | native windows, but still developed by Microsoft and adds
         | keyboard shortcuts for all its utilities
        
           | TeMPOraL wrote:
           | PowerToys seems to be making two step forward, one step
           | backwards, and then makes a leap in a random off-axis
           | direction. Every time an update comes, I feel both joy and
           | worry - I expect to see some new cool thing (and possibly
           | even useful to me), but I also worry about bloat and random
           | performance degradations. I haven't bothered with measuring
           | and quantifying it properly, but I do feel PowerToys got
           | heavier and slower over the last 2 years.
           | 
           | Ironically, 90% of use I get from them is remapping Caps Lock
           | to CTRL. Which I historically did with AutoHotkey, which was
           | _much_ lighter, but then there 's the 10% of the time I need
           | something else from PowerToys...
        
             | nemomarx wrote:
             | Even lighter than autohotkey is remapping on the hardware
             | of the keyboard. There's a lot of open source firmware
             | options for that now in the custom scene
        
             | layer8 wrote:
             | The even simpler solution to remapping Caps Lock is to use
             | SharpKeys, which applies registry settings to make use of
             | Windows' built-in remapping functionality.
        
         | behnamoh wrote:
         | > Windows DESPERATELY needs a more powerful built-in manager.
         | It's ridiculous to use the mouse all the time.
         | 
         | And yet, I find Windows window management far more advanced
         | than macOS. It's ridiculous that up until recently, macOS
         | didn't even have basic max-size functionality w/o reaching for
         | 3rd party apps.
        
         | jazzyjackson wrote:
         | I never use the mouse to move windows around, windows key +
         | arrows key meets my needs fine even multi-monitor, breaks the
         | screen up into halves and quarters. Alt-tab to change focus.
        
       | MisterKent wrote:
       | How does it compare to komorebi? I've been using it for about 5
       | months with great success. I'm a Hyprland user when I'm on my
       | personal machine, but for windows Komorebi has let me keep my
       | muscle memory and workflow largely intact.
        
         | agentkilo wrote:
         | I think these are the most obvious differences between the two:
         | 
         | * By default, Komorebi uses dynamic tiling, while Jwno uses
         | manual tiling.
         | 
         | * Komorebi has workspaces, Jwno works with Windows native
         | virtual desktops instead.
         | 
         | * Komorebi uses IPC and native system command line to send
         | commands, while Jwno usually operates all by itself.
         | 
         | There are definitely other details that are important to you,
         | but these are the things that immediately came to my mind. I
         | don't run Hyprland so can't really comment on that.
        
       | iLemming wrote:
       | Whoa, very cool. I love WMs, I love Lisp, and I hate Windows.
       | This seems to be a perfect "medicine" for my frustration with it.
        
       | alpb wrote:
       | It's not a tiling manager but slightly related: I replicated
       | Spectacle/Rectangle (macOS apps) on Windows a while ago to snap
       | windows to edges/corners/two-thirds/one-thirds etc a while back.
       | If you're interested:
       | https://github.com/ahmetb/RectangleWin/blob/main/README.md
        
         | videogreg93 wrote:
         | I love Rectangle, will definetly check this out!
        
       | Pfeil wrote:
       | I always disliked the chaos that happens quickly with application
       | windows, and loved the idea of tiling. But none of them really
       | worked for me practically until I found PaperWM around a year ago
       | or so (gnome extension). It has few core shortcuts and feels more
       | natural. Like you would really arrange applications directly on
       | your desk. It does not limit itself by your screen width and has
       | the nice default that a new window appears to the right of the
       | current window (configurable). You seldomly have the need to re-
       | arrange windows, because the default just fits 99% of all cases.
       | In addition, you still have the comfort of gnome. No hacky config
       | files just to get wifi working or so. For work we have OSX, and I
       | am really missing it there (I am using rectangle there instead).
       | https://github.com/paperwm/PaperWM?tab=readme-ov-file#usage
        
         | bsnnkv wrote:
         | Jwno can do this!
         | https://agentkilo.itch.io/jwno/devlog/871672/scroll-jwno-scr...
        
       | TeMPOraL wrote:
       | Long-time StumpWM user, before I switched back to Windows a few
       | years ago. This is super-exciting to see, and I'm going to take
       | it for a spin. It might just address my major frustrations with
       | arranging windows and switching between them; my monitor seems
       | just the right shape/resolution for the standard Windows splits
       | to be suboptimal.
       | 
       | (Browsers, in particular, I use full-screen less and less. That
       | annoying trend of squeezing everything into short lines "because
       | readability" is just wasting too much screen space; zooming in
       | makes everything too big, and I'm getting tired of writing
       | userstyles or userscript to fix it for every other page I open,
       | so I'm back to keeping 2 or 3 columns of windows running.)
       | 
       | Also, any excuse to use more Lisp is good in my book. Based on
       | the screenshots, it looks stellar; if it works half as well as it
       | comes across, I'll switch over instantly.
        
       | entropie wrote:
       | I recently tried hyprland after using xmonad for like 10+ years
       | and wondered about the decision to bind workspaces to displays. I
       | didnt like that. How does Jwno handle multiple monitors? I have
       | looked at the docs and didnt see it mention anywhere.
        
       ___________________________________________________________________
       (page generated 2025-05-20 23:00 UTC)