[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  : 278 points
       Date   : 2025-05-20 15:08 UTC (1 days 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 :)
        
           | I_complete_me wrote:
           | This means something to me that one dev recognizes another
           | and gives them kudos. I applaud this positive behaviour.
           | You'd never get that from the AI monsters. But of course, now
           | you probably will. Sorry, everyone.
        
       | 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.
        
               | TeMPOraL wrote:
               | Yeah, it's mind-blowing when it clicks, and makes the
               | whole "exceptions vs. return types" discussion look like
               | a quarrel of 3yos in a sand box. Error handling in other
               | languages/runtimes just doesn't feel sufficient from now
               | on.
               | 
               | This is, of course, just a part of a larger whole - the
               | fact that your Common Lisp program ships with a compiler
               | it can access _and_ effectively always runs in an edit-
               | and-go debugger. Embracing this fact fully leads to a
               | different workflow of software development.
               | 
               | Having done a bit of that, I found plenty of drawbacks of
               | this approach, too - mostly various consequences of
               | breaking the assumption that code that a program is
               | running is the same as the code it was compiled from or
               | that it started with. The aspect that annoyed me the most
               | day-to-day was, basically, that whenever I fixed
               | something on the fly through conditions and restarts and
               | eval-ing code in a REPL, I never had a _nice_ way to go
               | back to that solution and port it to code. It was too
               | easy to forget about a quick fix you did without
               | thinking.
               | 
               | I now realized this should be easily fixable with
               | external tooling - i.e. in Emacs/SLIME. What I think they
               | need is a better way of keeping an _audit trail_.
               | Capturing and persisting as much of the transient
               | interactions you did as possible, letting you revisit
               | them after and easily transfer into code or tests.
        
               | behnamoh wrote:
               | > I now realized this should be easily fixable with
               | external tooling - i.e. in Emacs/SLIME. What I think they
               | need is a better way of keeping an audit trail. Capturing
               | and persisting as much of the transient interactions you
               | did as possible, letting you revisit them after and
               | easily transfer into code or tests.
               | 
               | To some extent, undotree on neovim allows this because it
               | offers a drastically different view on what "undo" means.
               | But I agree with you, the lack of a git-like system is
               | annoying. I even think this might be THE reason CL didn't
               | catch on--companies want to keep track of things (hence
               | all the dashboards and ticketing systems...).
        
               | TeMPOraL wrote:
               | That's the _other_ thing. Version control is tricky with
               | image-based systems. I won 't say impossible, I never
               | looked deeply into what Smalltalk/Pharo folks are doing,
               | but since between playing with Pharo and Glamorous
               | Toolkit I saw Git being integrated first-class into one
               | of them, I imagine someone has some idea how to deal with
               | the problem.
               | 
               | What I meant though isn't collaborative/historical
               | tracking, I meant day-to-day ergonomics; closer to
               | "drastically different view on what 'undo' means", except
               | it doesn't even have to be 'undo' - I don't need the
               | ability to rollback every single thing; I just want to
               | know whatever the hell I actually did an hour ago when I
               | quickly SET-VALUE and IGNOREd my way through a few random
               | condition popups and evaluated some code in between.
               | Being careful and keeping track of this as I go slows me
               | down and is kind of the opposite of REPL-driven
               | interactive development ideas; nah, I should be able to
               | go fast now, and later be able to review all the random
               | surgery I did on a live image.
               | 
               | EDIT:
               | 
               | > _undotree on neovim allows this because it offers a
               | drastically different view on what "undo" means_
               | 
               | As I understand it, this "different view" is treating
               | undo history as a tree? If so, I know this from Emacs via
               | similarly named `undo-tree' package. But honestly, the
               | moment I saw this I thought this is brain-dead stupid
               | most obvious way of treating undos. It's very unfortunate
               | that almost no software embraces this approach, instead
               | opting for a linear history that gets trimmed the moment
               | you undo a few steps and make a change.
               | 
               | If you want to see a truly _different_ view of undo,
               | check out what Emacs does by default. I don 't even
               | understand it fully, but best I can tell after studying
               | the explainer in undo-tree's documentation, is that Emacs
               | is using a linear history like everyone else, but instead
               | of moving back through the history and discarding "the
               | future" when you branch out, `undo' itself is an undoable
               | operation that gets appended to undo history, so when you
               | type some things, undo it, type something else, and keep
               | pressing undo, you'll erase the last text, then "undo the
               | undo" and end up with the first thing you typed...
        
               | igouy wrote:
               | > Version control is tricky with image-based systems
               | 
               | Back in the day:
               | 
               | "ENVY/Manager augments this model by providing
               | configuration management and version control facilities.
               | All code is stored in a central database rather than in
               | files associated with a particular image. Developers are
               | continuously connected to this database; therefore
               | changes are immediately visible to all developers."
               | 
               | https://www.google.com/books/edition/Mastering_ENVY_Devel
               | ope...
               | 
               | These days:
               | 
               | "Package files are simple text files, encoded for latin
               | alphabet (ISO 8859-15) and handled without problems by
               | GitHub. Cuis-Smalltalk uses the LF (ascii code 10)
               | newline convention, as preferred in GitHub. This allows
               | Git/GitHub to diff versions, and merge branches."
               | 
               | https://drcuis.github.io/TheCuisBook/Daily-Workflow.html
        
               | sph wrote:
               | > Yeah, it's mind-blowing when it clicks, and makes the
               | whole "exceptions vs. return types" discussion look like
               | a quarrel of 3yos in a sand box. Error handling in other
               | languages/runtimes just doesn't feel sufficient from now
               | on.
               | 
               | I am still waiting for a non-Lisp language with a half-
               | decent restart system. Even compiled languages should be
               | able to implement it (except dealing with a possible
               | allocation failure when saving the register context to
               | return to)
        
               | jwmcq wrote:
               | If we're still calling Guile a Scheme (I'm out of the
               | loop) then I don't know, it gets really bloody close. Not
               | so much in image-based development (that I've usually
               | found less good than a decent packaging system because
               | the contents of my files on disk is usually more
               | tractable than the contents of my image), but its object
               | system and error handling are definitely up there close
               | to CL.
               | 
               | I mean, Common Lisp is still the gold-standard for me,
               | but reading about Hoot recently really made me want to
               | check Guile out a bit more (CL does not have much in the
               | way of lovely WASM stories right now) and, honestly, I
               | was super impressed. I think if the interactive
               | experience of developing in Hoot in the browser matched
               | the interactive experience of developing in native Guile,
               | I'd be a pretty happy convert.
        
               | sph wrote:
               | Guile is certainly my favourite Scheme for standalone
               | use.
        
         | qingcharles wrote:
         | This is a fantastic replacement for Windows Explorer which is
         | about 10X faster/lighter:
         | 
         | https://filepilot.tech/
         | 
         | (it's beta so it has a few little annoyances still)
        
           | tveyben wrote:
           | For files - nothing beats TotalCommander for me.
           | 
           | As mentioned earlier in the thread, keyboard shortcuts are
           | built-in, not missing or bolted on later...!
        
       | 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.
        
             | agentkilo wrote:
             | TBH I dived right in when I decided I should build
             | something with Janet, and didn't really consider any
             | alternatives. Now you mentioned it, I think Janet's
             | simplicity and conciseness played a large part in
             | attracting me to it, comparing to Common Lisp at least.
        
             | netbioserror wrote:
             | Janet being a tiny embeddable runtime similar to Lua
             | probably makes it perfect for a use-case like this. You
             | have a full language, standard library, and interpreter in
             | ~1 MB, along with the ability to bundle the runtime with
             | your scripts into one binary. That's worth a lot.
        
           | postdoc74 wrote:
           | I am not familiar with Janet but have been a long time lisp
           | developer. Could you perhaps add a few lines to the readme
           | explaining how the build process for jwno works? Would love
           | to give it a try, understand how it works and hack around :)
        
         | 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.
        
               | nicce wrote:
               | I have read about Fennel many times and considered on
               | trying it - I didn't know that they have the same author!
        
       | 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..
        
         | wredcoll wrote:
         | Is it just me or did not a single one of those "l33t haxker
         | shells" ever produceable a single ui innovation that lasted?
         | 
         | I mean, I remember there being a whole ton of wildly customized
         | windows shells with menus and floating terminals and so on, but
         | not a single thing stuck around?
        
           | II2II wrote:
           | I'm not sure about the Windows scene, since I only toyed
           | around with one or two shells nearly twenty years ago, but
           | the motivations for creating windows managers in Unix varied.
           | Quite often they were about the appearance, customization,
           | ease of customization, lack of customization, or low resource
           | usage. I suspect that most of them were made for the learning
           | experience or simply as a form of self-expression. They were
           | never really about innovation. When there was innovation, it
           | was usually in the form of small things like how we size and
           | position windows (e.g. think about how it is possible to tile
           | windows in Windows these days).
           | 
           | Besides, the term innovation is used far too much with
           | respect to software, in the sense that a lot of stuff can be
           | traced back much further than the so-called innovators will
           | suggest. Many ideas have deep roots, but it took several
           | (often independent) attempts until the technology or its
           | users were ready for it.
        
           | Fnoord wrote:
           | Well, I installed Litestep as default shell on a 80486 laptop
           | with Windows (I think it was Windows 98 SE, debloated). It
           | replaced explorer.exe and performed better, IIRC I had more
           | RAM free. I gave the machine away eventually, and they
           | probably ran Linux on it. But because the machine was for my
           | mother, it had to be able to run MSIE.
        
       | 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
        
               | whywhywhywhy wrote:
               | Yeah I found all the software based remapping to be a bit
               | janky on Windows, ended up just doing it in the keyboard
               | firmware instead to move my ctrl keys beside the
               | spacebar.
        
             | 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.
        
               | TeMPOraL wrote:
               | TIL: SharpKeys
               | 
               | TIL: Windows has a built-in remapping functionality
               | 
               | TIL: That functionality is controlled by registry,
               | meaning I wouldn't even need a tool in the first place
               | (I've learned to write REG files as a kid).
               | 
               | Thanks!
        
         | 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...
        
           | Pfeil wrote:
           | Neat! This looks pretty close, at least for the base
           | principle. If I had a windows machine I would definitely give
           | it a try.
        
           | agentkilo wrote:
           | Thanks for posting the link!
           | 
           | It's a quick-and-dirty PoC with lots of caveats and
           | limitations though. E.g. it works only for a single monitor.
           | I don't think we can clip windows to a "view port" on Windows
           | (the OS), so this may never be as nice as PaperWM, Niri etc.
        
         | modzu wrote:
         | scrolling window management is a new paradigm for me - really
         | liking paper so far, thanks for sharing! (for what its worth,
         | traditionally my approach has been fixed window positions for
         | all applications, and enough screen real estate to support
         | that. but that doesnt work in wayland with any mainstream
         | compositor afaik)
        
       | 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.
        
         | agentkilo wrote:
         | A fellow StumpWM user!
         | 
         | My StumpWM is heavily customized though, and I mostly modeled
         | Jwno's behavior after my own config, so it may not be what you
         | expected at all.
         | 
         | But that's one of the reasons I like Lisp and things built in
         | Lisp: They are so flexible, you can sometimes build something
         | based on the original thing, while it feels completely
         | different from the original.
         | 
         | > my monitor seems just the right shape/resolution for the
         | standard Windows splits to be suboptimal
         | 
         | Do you use an ultra-wide? In that case, Jwno has no OOTB ultra-
         | wide support, but there's a section for adjusting it in the
         | cookbook[1].
         | 
         | [1]: https://agent-kilo.github.io/jwno/cookbook/adjust-top-
         | level-...
        
           | TeMPOraL wrote:
           | > _Do you use an ultra-wide? In that case, Jwno has no OOTB
           | ultra-wide support_
           | 
           | Actually no, I'm using two regular, 16:19, 2560x1440 screens.
           | It's more that my understanding of readability does not agree
           | with what designers think, and when I split the screen in
           | half, many pages end up with text a little too small for my
           | comfort, and if zoom in to compensate, the lines get slightly
           | too short or horizontal scrollbar appears.
           | 
           | (I'd guess it's probably my somewhat strong myopia glasses
           | that are getting me "out of alignment" from average user when
           | it comes to text size and line length preferences.)
           | 
           | > _but there 's a section for adjusting it in the
           | cookbook[1]._
           | 
           | Lovely!
           | 
           | FWIW, I took it for a spin briefly (only briefly - had work
           | to finish, but I plan on getting back to it) and I was
           | pleasantly surprised by how good it is, and how well it
           | handles Windows quirks. It feels nicer than StumpWM did back
           | when I used it. The only thing that didn't work well was VLC
           | - it does something weird with recreating its window when
           | switching between videos, and in the process, it "breaks out
           | of confinement" and ends up returning to original size and
           | position it had before Jwno took custody of it.
        
       | 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.
        
         | agentkilo wrote:
         | Sorry for the confusion. Multi-monitor support is only briefly
         | mentioned in the docs[1] and the interactive tutorial[2].
         | 
         | Jwno's internal data structure has these levels (higher-level
         | comes first):
         | 
         | Root - Virtual Desktops - Monitors - Normal Frames - Windows
         | 
         | So monitors are part of a virtual desktop, and every virtual
         | desktop has the same layout that reflects your physical monitor
         | arrangement. When you switch virtual desktops, all monitors
         | switch to the new desktop at the same time.
         | 
         | [1]:https://agent-kilo.github.io/jwno/frame-tree/frame-
         | nodes.htm...
         | 
         | [2]: https://github.com/agent-
         | kilo/jwno/blob/master/example/tutor...
        
       | avindrag wrote:
       | That UI hinting feature is killer. Is something similar available
       | outside of this repo?
        
         | accrual wrote:
         | I agree, it's impressive. It brings me back to early Windows
         | when keyboard control was a first class citizen in the UI, and
         | most functions had dedicated alt key combos per dialog.
        
       | jackemerson wrote:
       | Looks very good! This one is what I need
        
       | wodenokoto wrote:
       | What resource did you use to learn Janet? And did you already
       | know lisp before? Comming from Python and php I found the "Janet
       | for mortals" very difficult. It expected me to know what closures
       | and macros are.
        
         | harryvederci wrote:
         | I'm not the one you asked, but maybe this is helpful:
         | 
         | I learnt Janet after learning Clojure, and it all felt very
         | natural. So a possible approach is to grab a beginner Clojure
         | book/tutorial first, run some of the examples, and then see how
         | far you get with Janet.
         | 
         | Not everything is the same, but you'll find that out along the
         | way, and the people in the Janet Zulip chat are always super
         | helpful.
         | 
         | Also check out https://janetdocs.com for some examples.
        
       | once_inc wrote:
       | My experiences with tiling window managers is that they struggle
       | in judging a modal screen like a confirmation box or
       | detachable/dockable mini-containers like the interface of certain
       | programs like GIMP. Considering those as new tile-able windows
       | tends to be a hinderance instead of increasing productivity.
        
         | roflmaostc wrote:
         | I use AwesomeWM on Linux since over ten years.
         | 
         | For example, GIMP works without any issues. And the
         | productivity boost is tremendous, for me it's very hard to work
         | on anything else. I barely encounter programs where it does
         | more harm than use.
         | 
         | Especially having multiple desktops with different names allow
         | me to localize windows so much quicker than looking through a
         | dozens of terminals manually.
         | 
         | Right now, I do have: 1 mail, 2 web, 3 gimp, 4 chat, 5 notes, 6
         | terminal, 7 ssh cluster
        
         | 3036e4 wrote:
         | They do struggle with that, or rather some developers struggle
         | with not making assumptions about the way a user's window
         | manager is laying out their windows?
         | 
         | I use StumpWM, and for the few applications that this becomes a
         | real problem it is possible to run those in a floating windows
         | group that works just like a minimalistic non-tiling window
         | manager. I think this is a common features of tiling window
         | managers.
        
       | weeb wrote:
       | This looks to have great potential for accessibility! I work with
       | individuals who use eye gaze input, where a significant part of
       | the screen is taken up by an on-screen keyboard (including
       | various shortcut/macro keys as well as for typing). Having tiling
       | options that fit within a smaller part of the screen (e.g. still
       | allow side by side or top/bottom split, but in a smaller total
       | region) would be great. Particularly as Windows 11 has broken
       | vertical docking of appbars.
       | 
       | The UI hints also look promising, but I can't get them working.
       | Using example-config.janet I tried pressing RAlt or RAlt+K and I
       | get the UI hint shortcuts list coming up, but none of them seem
       | to do anything, except in Notepad where I sometimes get the
       | standard UI hints (that always come up here with a long press of
       | left alt)
       | 
       | Fwiw, as a newbie I found it a bit intimidating/off-putting that
       | it doesn't work out the box without choosing a config file.
       | That's quite a lot of extra cognitive effort and link-clicking
       | before you can try it out. And I'm left quite unsure what I'm
       | missing out on. Am I able to access the different documented
       | features with the config file I have? It's not clear.
        
         | agentkilo wrote:
         | > Having tiling options that fit within a smaller part of the
         | screen (e.g. still allow side by side or top/bottom split, but
         | in a smaller total region) would be great.
         | 
         | Do you mean reserving screen space for the on-screen keyboard?
         | If that's the case, you can try to "transform" the top-level
         | frame (a frame that tracks a monitor's screen area), either in
         | the REPL or in your config: https://agent-
         | kilo.github.io/jwno/cookbook/adjust-top-level-...
         | 
         | > Using example-config.janet I tried pressing RAlt or RAlt+K
         | and I get the UI hint shortcuts list coming up, but none of
         | them seem to do anything
         | 
         | Can you please file a bug report and attach relevant logs? You
         | can write logs to a file by starting Jwno like this:
         | 
         | jwno.exe --log-file C:\jwno.log --log-level debug --no-console
         | your-config.janet
         | 
         | There should be some interesting logs when you press one of the
         | UI hint shortcuts.
         | 
         | > Fwiw, as a newbie I found it a bit intimidating/off-putting
         | that it doesn't work out the box without choosing a config
         | file. That's quite a lot of extra cognitive effort and link-
         | clicking before you can try it out.
         | 
         | I totally understand. But I chose to _not_ include a default
         | config in the executable, because I thought a window manager is
         | a... personal thing. It should evolve with your habits and
         | workflows, so the default config will most likely get changed
         | to something dramatically different anyway. I can be wrong
         | though.
        
           | weeb wrote:
           | Yes! transforming the top level frame sounds like the way to
           | go.
           | 
           | I ran jwno with example-config and pressed RAlt and RAlt+K a
           | few times, each time trying one of the onscreen shortcut keys
           | (b, c, d, etc). Log at the bottom of this comment. At the end
           | of the process I was left in a state where pressing Space
           | triggered a context menu in my title bar, and I couldn't type
           | space in the app (e.g. in Notepad or Terminal) which I think
           | is due to one of the Alts ending up being held down? It
           | persisted after leaving Jwno
           | 
           | Log: https://ctxt.io/2/AAB4W5O7Fg
        
             | agentkilo wrote:
             | Thanks! I created a tracking issue here:
             | https://github.com/agent-kilo/jwno/issues/12
             | 
             | Meanwhile you can try to change leading `RAlt` to something
             | else, like `Win + H`, and see if it works. There may be a
             | bug that gets triggered when only modifier keys are mapped.
        
             | agentkilo wrote:
             | It seems your right alt key is actually the AltGr key. I
             | didn't explicitly support AltGr in Jwno, so it freaked out.
             | 
             | Sorry for the confusion. I think switching to another
             | leader key, such as LAlt or RCtrl, should fix the issue.
        
               | weeb wrote:
               | Thanks, that's it. I really like 'gradually walk the UI
               | tree', though I'm struggling a bit with the thing I want
               | being obscured by the label (and me not remembering what
               | was there). An offset would be nice, though I'm sure it's
               | not easy to define a heuristic that works in all places.
               | 
               | The first thing I tried was in my browser, I asked for
               | all the buttons and it labelled the 'x' to close each
               | tab, but where the labels were laid out it just looked
               | like an inviting right-aligned label on the clickable
               | tabs themselves. Lost a few tabs before I realised,
               | because you also don't see any feedback on the click
               | since any UI feedback is hidden by the label. Hmm. Food
               | for thought.
        
       | xtiansimon wrote:
       | Does your project have any influence on Windows focus stealing?
        
       | -__---____-ZXyw wrote:
       | So amazing. I might have to use Windows soon, against my will,
       | and this could sweeten the deal for me considerably!
        
       ___________________________________________________________________
       (page generated 2025-05-21 23:02 UTC)