Jeena's Hyprland Demo

(tube.jeena.net)

55 points | by jeena 4 days ago

6 comments

  • ilvez 1 day ago
    I'm still waiting for killer demo for switching from x.org/i3 to wayland/whatever next tiling. At least there are options now in Wayland other than sway, but hyprland currently is not motivating enough when demos mostly focus on eyecandy. Transitions especially are excess.

    That being said I'm glad that Hyprland exists and shows people that there is power in minimalism. Fluxbox was my first love..

    • tincholio 11 minutes ago
      I have been having some issues with X/i3 (using i3 as a WM for Plasma), mostly with multiple screen setups (windows getting all screwy when connecting/disconnecting, lots of flickering, etc.), and also with my trackpoint's middle button scrolling randomly going away, and needing to use xinput incantations to fix it. I tried Hyprland with QuickShell, and after some QS-related pains, I just dropped to plain Hyprland. It's been working quite nicely so far. There was a lot of trial and error, and there's still some bits that could use improvement, but overall things just work nicely. The main sticking point for me now is that the screen-sharing and using Flameshot is a bit convoluted, and that the workspaces configuration does not support multiple external monitors (as in, the one in my office, and the one home, it needs some resetting each time I change those, or at least I haven't found the way to configure it properly as I had on i3).

      So far, it has been a moderately positive change.

    • chrismorgan 1 day ago
      I used i3 previously (2013–2016), and after a few years back on Windows (2016–2021), decided to try Sway on my current laptop (mid-2021), which happens to have a 1.5× panel.

      Not everything has always been smooth, but at some point when I was needing to do screen sharing via Zoom I had to switch back to i3, and the comparison was more stark than I remembered.

      On i3:

      Tearing (graphical glitches) is terrible, especially if you’re doing screen sharing. I can’t use my XF86AudioMicMute key because its keycode is 256 and X only supports 8-bit codes. The touchpad doesn’t work well. Scaling stuff is a total mess, a mess that you can mostly get to work, but you’ll need to set four different environment variables and run a gsettings daemon and set these three properties and add this file to this location and that one to that and modify your Chromium flags and I probably even forgot a couple of steps.

      On Wayland:

      Tearing is solved. I had to modify the keymap to get XF86AudioMicMute¹, which I suspect was because of X compatibility, but then it works. The touchpad works very well, gestures, scroll rates and all. Scaling is robust and automatic, if you have an integer scaling factor or are willing to settle for render-at-next-integer-and-downsample, which is a bad technique but good enough for Apple; and compositors now support proper fractional scaling, and apps are more commonly implementing it (though I’m distressed it took so long). Firefox Nightly has just this week finally fixed the last problem that I’ve noticed, and I hope they’ll default-enable Wayland fractional scaling and Wayland soon.

      The only thing I feel Sway’s behind in now is its lack of per-window screen sharing. Other than that, it’s very solidly better than i3 in every way: in convenience (things work better out of the box), in robustness (features that exist don’t have issues) and in features.

      —⁂—

      ¹ Ran `xkbcomp $DISPLAY keymap.xkb`, then modified that file by changing `maximum = 255;` to `maximum = 256;`, and adding in appropriate places `<I256> = 256;` and `key <I256> { [ XF86AudioMicMute ] };`. Then, in ~/.config/sway/config, `input * xkb_file "~/.config/sway/keymap.xkb"` or similar.

      • mid-kid 23 hours ago
        > Tearing (graphical glitches) is terrible, especially if you’re doing screen sharing.

        Download and run "picom" (its default configuration is good), or any other compositor. This is the way to get graphical acceleration for regular windows on X11, and fix tearing.

        > Scaling stuff is a total mess, a mess that you can mostly get to work, but you’ll need to set four different environment variables and run a gsettings daemon and set these three properties and add this file to this location and that one to that and modify your Chromium flags and I probably even forgot a couple of steps.

        I just modify ~/.Xresources with the "Xft.dpi: 120" for 1.25x scaling. All apps I care about pick this value to scale the UI with (chrome, firefox, telegram, Qt as a whole, etc). Notable exceptions being java apps.

        See: https://wiki.archlinux.org/title/HiDPI#X_Resources https://wiki.archlinux.org/title/Xorg#Setting_DPI_manually

      • arghwhat 1 day ago
        > The only thing I feel Sway’s behind in now is its lack of per-window screen sharing.

        That's available in sway/wlroots master with xdg-desktop-portal-wlr master. Will be in next release.

    • boomskats 1 day ago
      Give Niri a few days of your time. It's exactly what you're looking for.
    • gorgoiler 1 day ago
      I moved from i3 to sway — an i3 clone built as a Wayland compositor — specifically to banish screen tearing from my experience.

      Wayland’s architecture makes tearing inherently less likely not the least reason being that the compositor synchronizes all drawing with the display rate. X11 is much more of a free for all.

    • dghf 1 day ago
      For me, it was getting a laptop with a high DPI screen, and the frustrations in getting X to play nicely with that.

      There were annoyances when I realised I could no longer use certain workhorses (e.g. feh), but usually a bit of digging turned up a drop-in replacement (e.g. imv).

    • rufugee 1 day ago
      Check out https://github.com/outfoxxed/hy3. I use it for i3 capabilities on top of Hypr. It's AWESOME.
    • mif 1 day ago
      Mine, too. And conky. And how I loved those configurable shortcuts…
    • kahnclusions 1 day ago
      If you use i3, you can switch to Sway.
    • binary132 17 hours ago
      I mean, I got into Linux as a teenager in the first place because of cool compositor bling…
  • marginalia_nu 1 day ago
    Hyprland is great.

    I switched to it beginning of this year and haven't looked back. Initially I ran JaKoolIt's dotfiles which had a bit too many anime waifus, then some custom dotfiles I made myself, and finally Omarchy which really checks all the boxes for me.

    My single gripe I have with it is multi-monitor behavior is pretty bizarre, as workspaces are a per-monitor deal.

    My other complaint was with how it dealt with ultrawide monitors, but I managed to get a PR in that fixed that and let you configure an aspect ratio for windows that are the only window on screen so that they aren't always stretched a kilometer wide.

    • marginalia_nu 1 day ago
      Actually, typing this out led me to find a fix for the multiscreen workspace issue I was having. Basically the solution is to first assign the workspaces to monitors, and then bind the hotkeys to switch both workspaces at once, with the final binding being the one you land at.

      If someone wants to steal my homework, this is what I did

        # use `hyprctl monitors` to get your monitors' names, replace DP-3 and HDMI-A-1 as appropriate
      
        workspace = 1, monitor:DP-3, default:true
        workspace = 2, monitor:HDMI-A-1, default:true
        workspace = 3, monitor:DP-3
        workspace = 4, monitor:HDMI-A-1
        workspace = 5, monitor:DP-3
        workspace = 6, monitor:HDMI-A-1
        workspace = 7, monitor:DP-3
        workspace = 8, monitor:HDMI-A-1
      
        unbind = SUPER, code:10
        unbind = SUPER, code:11
        unbind = SUPER, code:12
        unbind = SUPER, code:13
        unbind = SUPER, code:14
        unbind = SUPER, code:15
        unbind = SUPER, code:16
        unbind = SUPER, code:17
      
        bindd = SUPER, code:10, Switch to workspace 1, workspace, 2
        bindd = SUPER, code:10, Switch to workspace 1, workspace, 1
        bindd = SUPER, code:11, Switch to workspace 2, workspace, 1
        bindd = SUPER, code:11, Switch to workspace 2, workspace, 2
        bindd = SUPER, code:12, Switch to workspace 3, workspace, 4
        bindd = SUPER, code:12, Switch to workspace 3, workspace, 3
        bindd = SUPER, code:13, Switch to workspace 4, workspace, 3
        bindd = SUPER, code:13, Switch to workspace 4, workspace, 4
        bindd = SUPER, code:14, Switch to workspace 5, workspace, 6
        bindd = SUPER, code:14, Switch to workspace 5, workspace, 5
        bindd = SUPER, code:15, Switch to workspace 6, workspace, 5
        bindd = SUPER, code:15, Switch to workspace 6, workspace, 6
        bindd = SUPER, code:16, Switch to workspace 7, workspace, 8
        bindd = SUPER, code:16, Switch to workspace 7, workspace, 7
        bindd = SUPER, code:17, Switch to workspace 8, workspace, 7
        bindd = SUPER, code:17, Switch to workspace 8, workspace, 8
      • tincholio 6 minutes ago
        I've been experimenting with this (it's in Babashka, which is for scripting Clojure, but you can do it with just bash, if your bash-fu is stronger than mine :D ):

            #!/bin/env bb
            
            (ns switch
              (:require [clojure.java.shell :as sh]
                        [babashka.process :refer [pipeline pb shell process]]
                        [clojure.string :as str]))
            
            (def workspace-ids
              (-> (pipeline (pb "hyprctl workspaces")
                            (pb "grep 'workspace ID'")
                            (pb "awk '{print $3}'"))
                  last
                  :out
                  slurp
                  (str/split #"\n")
                  (->> (reduce (fn[acc e]
                                 (try (let [ee (Integer/parseInt e)]
                                        (conj acc ee))
                                      (catch Exception e acc))) [])
                       (filter #(and (pos? %)
                                     (not= 10 %))))))
            
            
            
            (doseq [w workspace-ids]
              (-> (process (str "hyprctl dispatch moveworkspacetomonitor " w " 1"))
                  deref
                  :exit
                  println))
            
            (process "hyprctl dispatch workspace 8")
        
        
        It basically just moves all workspaces with positive IDs (so not the special workspace) to the external monitor, which seems to have a consistent ID of 1.
      • evertedsphere 1 day ago
        the ideal solution takes into account which screen you were on and leaves you on it

        i used to have a setup like this on i3, using i3-msg to query the state

  • christophilus 1 day ago
    Hyprland has become pretty popular, maybe in part due to DHH promoting it a bit. But in my opinion, Niri is where it's at. If you're into this sort of thing and haven't tried Niri, I'd highly recommend it. The scrolling approach to window management is incredibly nice for my workflow.
    • bashtoni 1 day ago
      One thing I love about Hyprland (and Sway, which I was using before it) is the ability to have a key-combination which takes me straight to where I want.

      Is this possible on Niri, where the virtual desktop expands infinitely?

      • gorgoiler 1 day ago
        Not OP, but my take on this from using i3/sway for years was realizing that I often had two kinds of windows open.

        Important long lived ones would be on workspaces where I could jump to them by number. I would have sound mixer and music on 1, mail and instant messaging on 2, browser on 3, then dev stuff or admin tasks etc on 4+. These would stretch horizontally, of course.

        What I found was the “+” in “4+” could often be quite a lot of windows. I might have to reference some PDF in order to fill out a form in another PDF, and open a new browser window to manage some other reference document, and screenshots for the final draft, and terminals for taking temporary notes, maybe an image editor to trim screenshots, etc.*

        With niri, I still have the “1234” layout but these are now rows with keyboard shortcuts. The ad hoc windows that get pushed onto and popped off my mental context stack grow rightwards… as a stack!

        For me, niri’s brilliance is giving me those two axes. Known topics with keyboard navigation on the vertical axis. Ad-hoc tasks within each topic on a push/pop context stack on the horizontal axis.

        *Ironically, these multi-window tasks were always the most mundane! Form filling for a mortgage application, say, or managing a report review for multiple authors. Software engineering — one of the more complicated things one can do on a computer, is all very neatly contained inside an IDE / tmux+vim+sh.

        • bashtoni 12 hours ago
          OK, this sounds interesting enough for me to give it a try. I actually think the two axis approach would work well for the way I work.
      • yencabulator 19 hours ago
        Niri has workspaces. By default they're dynamic and removed when left empty, but you can name them (in config or on the fly) and they become permanent. My current workspaces are

          1: notes
          2: browser
          3: code
          4: mail
          5 onward: dynamic or named on the fly
      • chills 1 day ago
        In addition to sibling commenter, niri exposes everything over an IPC accessible via its cli (or a socket), so if you wanted, say, a keybind to switch to your terminal, no matter where it is, you could bind it to this:

          niri msg action focus-window --id $(niri msg --json windows | jq '.[] | select(.app_id=="foot") | .id')
        • boomskats 1 day ago
          Nice! I have a jq/ipc based abomination of a run-or-raise equivalent that works spectacularly well, including cycling windows in order. I keep saying I'll stick it in a repo.
    • 3836293648 1 day ago
      Having tried Niri, it's probising but very much not ready for primetime yet. And extremely miserable to use without a trackpad, as opposed to all other tiling WMs that are keyboard first.
      • mmgutz 1 day ago
        As someone who spends most of his time in nvim and TUIs (yazi, lazydocker, termusic, tmux in ssh ...), Niri is as keyboard centric as you want. Mine is configured to use vim keys.
      • christophilus 22 hours ago
        I’ve used it daily without a trackpad for months now. So, I don’t k on what you’re talking about.
      • kuuchuu 1 day ago
        It has felt very "keyboard first" for me. The hotkeys are very customizable.
    • likeclockwork 1 day ago
      Agreed. I don't find automatic tiling that useful in general because you don't really get strong layout control but I also never found say i3 or manual tiling that useful on a small laptop screen. (It's pretty nice on a large screen or ultrawide, though)

      However Niri works fantastically in both use cases because it gives me what I really want: Resizable, rearrangeable columns of windows, as many as I need for the current task and a way to quickly rearrange and spatially navigate so that I can see exactly what I need to see.

    • weikju 1 day ago
      I second this. I first got exposed to this concept via the gnome extension, PaperWM. Now using Niri as well.
      • no_carrier 1 day ago
        Niri looks promising to me. After I discovered PaperWM I moved on to Material Shell, which was still the best workflow I've come across to date. It was basically gnome with a 2d grid: you could scroll workspaces left and right and then again on the vertical axis. The author sort of abandoned it (it was a Gnome extension) in order to go all in on their own desktop environment with the same concept. I'm guessing that'll take a while to get off the ground.
    • jeena 1 day ago
      It looks similar with the difference of scrolling. Kind of interesting, and you still can have stacks of windows. But how does it decide on how wide a window should be?
      • bayesianbot 1 day ago
        Usually you'd have some predefined widths, like 33%, 50% and 67%, and use a shortcut to cycle between them. And you can define window rules to start some applications with different width than your default.

        edit: and as fellow niri user, I recommend people try it. I think it's one of the easiest tiling WMs to get into, it feels very natural within minutes.

    • TiredOfLife 1 day ago
      The horizontal scrolling was the only thing i HATED about Windows 8. It's nauseating
  • neebz 1 day ago
    Looks super interesting. Has anyone here tried a keyboard-first tiling window manager on macOS? Any recommendations?
    • sgt 1 day ago
      Can anyone explain why tiling managers are useful? Seems like a waste of space to me. I prefer having my various windows all over the place and just alt-tabbing between (or using other means of opening the right app). I highly prefer having the app I am working on to be in the center of the screen, so that is what makes sense for me.
      • Jotalea 2 hours ago
        >Seems like a waste of space

        It's quite the opposite.

        My laptop has a small 11.1'' screen, so using a traditional desktop with smaller windows is not practical for me. Plus, not having the windows overlap with each other by default gives a more structured workflow.

        unrelated to the comment: I wrote this answer 3 times, but the damn process killer on Android kept deleting it so I had to re-write it each time. if I sound mad, it is because I am.

      • vidarh 1 day ago
        They're useful to let you not have to think about positioning windows with precision.

        If that doesn't feel useful to you, then maybe a tiling wm isn't right for you. That's entirely fine.

        My wm has an "escape" in that I can define floating desktops, and by default I have one, mostly used for file management, because there are things where I agree it's better to have floating/overlapping windows.

        It doesn't really matter if it's a "waste of space" - I have two large monitors, and 10 virtual desktops to spread windows between (I'd add more, but I haven't felt the need). To the point where my setup, by default, centers the window with large margins when I have just one window open on a screen because it's more comfortable (and I'm just one keypress away from fullscreening the app anyway).

        Most of the time I use tiling because I like not having to care about the layout beyond those defaults.

        But I can also configure specific layouts. E.g. I have desktop dedicated to my todo list, a list of done items, and notes, and it has a fixed layout that ensures those windows are always in the same placement, on the same desktop.

        • sgt 22 hours ago
          Maybe it's also due to differences in personality. I like to focus on one or two things at a time. And on second though, my argument about wasting space probably doesn't make sense. Perhaps I'm thinking more about "information overload".

          In my day to day I have a couple terminals (each with 4-5 tabs, some are running screen sessions), two browsers (with max 3-4 tabs open), music player, at least 2-3 IDE's open (JetBrains), Notes, mail client, Slack. This is across two monitors.

      • jamiejquinn 1 day ago
        If you've tried it and it doesn't fit, that seems fine, it's all just personal workflow.

        For me it's pure speed at getting to where I need to go. My notes live on workspace 1, my main workspace on 2 and browser on 3, so I'm just a single key combination away from most of what I need. Can still alt+tab if I like.

    • cadamsdotcom 1 day ago
      Give Rectangle a go. I’ve used it for years and love it.

      Thirds, quarters, sixths. Move windows to the next screen. Increase and decrease size.. so many nice things you can do with just the keyboard.

      Its keyboard shortcuts are so deeply in my brain I could rattle them off while operating heavy machinery :)

    • astr0n0mer 1 day ago
      Check out AeroSpace (https://github.com/nikitabobko/AeroSpace). I've been a happy user for the last 8 months or so.
      • Jnr 18 hours ago
        As a "Linux at home - macOS at work" user, I can't stand Window management on macOS. It is so inefficient and hard to manage.

        AeroSpace tiling window manager finally changed my work day from constant struggle to only occasional struggle with macOS. I use it with sketchybar which is not yet perfect, but it could become quite good and performant with some work on it.

        I currently use Gnome on Linux, not a tiling window manager, and I would gladly go with Hyprland, but about a year ago while I was trying it out, it crashed quite a few times so it clearly was not ready for production use back then. Will give it a shot again.

      • jnsaff2 1 day ago
        +1 for AeroSpace. I have been i3/sway user for about a decade and was really missing similar experience on Mac. All the previous ones came with gotchas or were nowhere near the usability of i3/sway.

        AeroSpace is almost there, it has a few quirks and annoyances and is missing some features but it's close enough that it's now my daily driver for client work requiring being on a Mac.

        Highly recommended and hopefully it continues to evolve. Also hoping that the churn in macOS is not going to kill it for some unexpected reason.

        As far as Hyprland, I tried it and when I got to a setup that I felt comfortable I realized that I had basically replicated my Sway setup with no added benefits so I just switched back to Sway. I'm not much into ricing anyway. I mostly want the chrome to stay out of my way.

        That said, for people unfamiliar with i3/Sway, Hyprland could be a great way of getting into tiling so I'm definitely rooting for them!

  • rufugee 1 day ago
    As a long-time Linux full time user, I begrudgingly switched to a mac for company reasons around a decade ago. I've lost a little bit of light in my life ever since, and was constantly fighting macOS to just let me work the way I want to.

    I've switched back full time to Omarchy, and couldn't be happier. I'll likely eventually land back on NixOS with hyprland and my custom configs, but for now, Omarchy is wonderful.

    DHH is just the salesman a Linux distro like this needs, and the combination of smart decisions (most menu'd commands just call out to shell scripts behind the scenes) and text-based config make Omarchy a techie's dream.

    Add something like claude code in your ~/.config directory and you have almost instant and infinite ability to customize.

    It's so much fun.

    For any former i3 users, I've found https://github.com/outfoxxed/hy3 to be a very acceptable replacement.

  • cheema33 1 day ago
    Slightly off-topic rant: Demos with apps/terminals that use translucent backgrounds befuddle me. In this demo at one point he is showing some code that is syntax highlighted. Some text is grey with background that is also grey/white. Good luck reading that!

    Why do people do this?

    • jeena 1 day ago
      I'm demoing my own system, this is how I set it up and this is how I use it and the transparency is a integral part of the esthetic.

      Having said that, I guess the compression of the video makes it less sharp and contrasty as it is in real life. But all code is shared in the original with a link in the description if someone really wants to dig deeper into it.

      • indy 1 day ago
        Thank you for posting the video and making your config public.

        As a recent hyprland user it's really useful being able to pick out the features I like and incorporating them into my setup.

    • mynegation 23 hours ago
      For the same reason people dress differently: it looks cool, futuristic, makes it more individual, and makes it feel good to use their own system. I am with you on this preference: transparency is distracting to me, but I see the appeal - I ran transparent terminals 20 years ago.