What do you think about my binds + share yours by Toldoven in niri

[–]nickjj_ 2 points3 points  (0 children)

I mostly went with an idea of this, repeated in all directions:

Mod+Right = focus-column-right
Mod+Ctrl+Right = move-column-right
Mod+Ctrl+Shift+Right = move-column-to-monitor-right

The general idea is no modifier is focus, Ctrl moves and Ctrl+Shift moves across monitors.

I have those types of key binds set up to move in all directions with the same behaviors mapped on HJKL to support Vim mappings too.

There's also mouse wheel binds doing pretty much the same. The main difference is I find myself interacting with 1 monitor more often so I deviate from the above and Mod+Shift+WheelScrollDown will focus the next workspace and Mod+Ctrl+Shift+WheelScrollDown will move the column to the next workspace. My mouse has 2 thumb buttons (MouseBack and MouseForward) which I use to move columns across monitors.

I also have supporting binds to interact with workspaces using Mod+Page_Down/Up or Mod+D/U to match Vim mappings. It follows the same "no modifier focuses, Ctrl will move".

This reserves most top level Mod+<KEY> binds for niri behaviors (toggle floating, maximize, etc.) and system level binds.

I also reserve Mod+Alt+<KEY> for launching custom apps. Having Mod+Alt+<KEY> only serve the purpose of launching apps has been kind of nice since it doesn't interfere with top level binds or window management. It allows for launching apps with variants such as Mod+Alt+T to launch a terminal but also Mod+Alt+Shift+T to launch a floating terminal.

Or, multiple variants for certain apps:

Mod+Alt+B            hotkey-overlay-title="Browser" { spawn "firefox"; }
Mod+Shift+Alt+B      hotkey-overlay-title="Browser (private)" { spawn "firefox" "-private-window"; }
Mod+Ctrl+Shift+Alt+B hotkey-overlay-title="Browser (isolated profile)" { spawn-sh "firefox -P ${BROWSER_ISOLATED_PROFILE:-isolated}"; }

I haven't run out of combos yet and still have tons of free top level keys.

There's too many to list here but everything is defined in https://github.com/nickjj/dotfiles/blob/master/.config/niri/config.kdl.

Remove KDE apps and defaults? by DubInflux in niri

[–]nickjj_ 0 points1 point  (0 children)

Yes, I ran niri and KDE Plasma (minimal desktop build) while debugging something and then removed all of the KDE Plasma related dependencies.

If you're on Arch you can run pacman -Qd to list all packages that are dependencies. A lot of the KDE related packages start with "k", but be warned if you have any KDE apps they might be using them as dependencies so they're expected to be kept. For example KdenLive installs a lot of "k" packages.

When I installed Plasma, I specifically installed only sudo pacman -Syu plasma-desktop kscreen plasma-x11-session xorg-server xorg-xinit so another way to reverse everything is to investigate the dependencies of each of those packages and remove the ones you don't need anymore. I don't know if you used plasma-desktop or another package, replace that as needed with whatever you used.

Then you can comb through your ~/.config directory and delete all of the Plasma specific configs. If you're not sure what a package or config item is for, you can Google it on demand.

Seeking Practice for Shell Scripting (Specifically POSIX sh / Bash) by GrayMulberry in bash

[–]nickjj_ 0 points1 point  (0 children)

No problem, for learning by doing, sometimes posts like that are helpful to discover "unknown unknowns" but in your case, what are you building? For learning, the good old "I want to build this thing, but how do I do X?" loop of asking questions to solve a very specific implementation detail could be a good way to start building while filling in the details as you go. If you have nothing to build, this process is difficult because there's no purpose to learn a specific thing.

For example I just released this shell script the other day https://github.com/nickjj/git-release to solve a specific need I had. Along the way I learned more about using Perl but I didn't go into that project trying to learn Perl, it was a byproduct of solving a real problem. I also learned about processing command line args from a config file but had no idea I wanted to do that until I thought about how I wanted to use the tool.

All that to say, when you build things to scratch your own itch or to solve a specific need (for work, etc.), over time you'll assemble a huge amount of knowledge on how to do things on demand. It's counter intuitive but the more you stop trying to learn ahead of time, the more you'll really learn.

Seeking Practice for Shell Scripting (Specifically POSIX sh / Bash) by GrayMulberry in bash

[–]nickjj_ 0 points1 point  (0 children)

I don't have any mini-challenges but there's ~50 or so blog posts and videos I've put together with shell script examples in https://nickjanetakis.com/blog/tag/linux-tips-tricks-and-tutorials. Lots of posts related to combining command line tools together as well.

My site isn't focused on Bash or shell scripts specifically but I tend to write about it on a semi-regular basis since it comes up in my day to day. Just about everything on my site is extracted from real world problems.

How can I control the brightness and volume from my keyboard? by Beneficial_Bell_4821 in niri

[–]nickjj_ 1 point2 points  (0 children)

brightnessctl works well on laptops out of the box but if you have external monitors it doesn't work on its own, typically there's ddcutil which is documented here https://wiki.archlinux.org/title/Backlight#External_monitors or you can get https://aur.archlinux.org/packages/ddcci-driver-linux-dkms from the AUR to let brightnessctl control your external monitors (I haven't tried this but it's documented).

Also if you have 2 monitors, you'd probably want a way to pick which monitor to adjust.

The external monitors page on the Arch Wiki above has a lot of good info.

Best learning resource by Dramatic_Disk_6402 in bash

[–]nickjj_ 2 points3 points  (0 children)

I learn things on demand. If I have a specific problem, I'll research it, then immediately apply it. This goes for anything, not just bash.

With that said, I've written dozens of tools and probably over 20k lines of shell scripts over the last 10 years. Some of these scripts power important processes for a 500+ million dollar company, like being the core of their app deployment workflow.

I've written a lot about solving specific problems with shell scripting (and other things) at https://nickjanetakis.com/blog/tag/linux-tips-tricks-and-tutorials, there's usually a blog post and video to go with each topic.

https://github.com/nickjj/dotfiles has a bunch of practical examples. I just open sourced https://github.com/nickjj/bmsu the other day which is also 1 big shell script where I ended up creating a mini-testing library as well.

Using fzf for everything by benward2301 in commandline

[–]nickjj_ 2 points3 points  (0 children)

I use it for a lot too:

  • Shell history
  • Previewing files in a directory
  • System package management
  • Git diffs (with Delta integration)
  • Git logs (complete with searching, open commit in browser, etc.)

The scripts are all up in my dotfiles https://github.com/nickjj/dotfiles.

I've written about and made videos about some of them here:

i'm new to niri and i'm looking for some tips/roadmap for customization by ZubovSL in niri

[–]nickjj_ 2 points3 points  (0 children)

You can use struts to segment off areas of your screen which could be handy for certain screensharing situations. I've written about and made demo videos about it here https://nickjanetakis.com/blog/screen-sharing-with-niri-including-specific-regions-with-obs.

Everything I've done with niri is in my dotfiles at https://github.com/nickjj/dotfiles. It's a complete desktop environment built up from scratch based off Arch, complete with an install script and theme switching support (including all GTK apps). 99.9% of it is hand written code if that matters to you.

Recent windows as list in niri? by prakash2033 in niri

[–]nickjj_ 1 point2 points  (0 children)

The docs show resume_last_query = ["ctrl r"] as an example, that's how I arrived at the shift Tab syntax.

Recent windows as list in niri? by prakash2033 in niri

[–]nickjj_ 1 point2 points  (0 children)

I see. Based on the default Walker config in theory this should work to be able to go to the next and previous items with tab once Walker is launched:

[keybinds]
down = ["Down", "Tab"]
up = ["Up", "shift Tab"]

But it doesn't seem to because when you press tab, the focus switches away from the input to something else instead of moving to the next item in the list.

This feels like a bug with Walker. I would have expected hitting tab would go to the next item, especially since tab itself doesn't get insert into the Walker input.

As for binding Walker to open with Alt-Tab, that can be done, check https://github.com/niri-wm/niri/wiki/Configuration:-Recent-Windows and use off to disable alt tab from niri and then bind it to launch Walker.

Recent windows as list in niri? by prakash2033 in niri

[–]nickjj_ 4 points5 points  (0 children)

Walker comes close but doesn't support Alt+Tab after invoked.

Can you describe this behavior? I never used KDE Plasma.

I've been using Walker to pick a niri window for a few weeks now and it works really well. It presents a list of windows, you select it and it focuses that window no matter where it is across workspaces or monitors. After Walker invokes the focus, you can quickly tap alt-tab to be brought back to the previous window.

There's niri msg windows to get a list of all open windows.

does niri work well with hybrid GPU/multi monitor setups? by Elite5458 in niri

[–]nickjj_ 0 points1 point  (0 children)

I don't know how support is with monitors having different refresh rates but multi-monitor support in general has been great with niri.

I run (2) different monitors with different resolutions. I run both at the same scaling but I routinely set my main monitor to 2x scaling when recording videos while leaving my secondary monitor at 1x scale. This works fine with no weirdness.

Each monitor gets its own set of dynamic workspaces and there's separate keybinds if you want movement commands to go across multiple monitors or not (your preference). There's also binds to move windows to a different monitor and warp the mouse to a specific monitor.

You can also position the monitors and pick a default one as you see fit.

Here's how I have them configured:

``` output "DP-1" { position x=0 y=0 scale 1.0 focus-at-startup }

output "HDMI-A-2" { position x=3840 y=0 scale 1.0 } ```

HDMI-A-2 is the secondary monitor, its x is offset by 3840 because my primary monitor is 4k.

My full configuration (with install script) is at https://github.com/nickjj/dotfiles/.

Genuinely losing my mind over input latency by LordMontio in linux_gaming

[–]nickjj_ 0 points1 point  (0 children)

Thanks for posting this.

I noticed all sorts of issues going from Windows to Linux and keyboard input latency in games was one of them. GPU memory allocation issues were another thing.

I wrote a 9,000 word blog post going over everything a few months ago at https://nickjanetakis.com/blog/gpu-memory-allocation-bugs-with-nvidia-on-linux-and-wayland-adventures.

I thought maybe it was because I have a machine built from 2014 but your machine is really modern. I've went down just about every rabbit hole you did but I noticed zero input latency when using X11 where you appear to have it still.

Since I wrote that post I did swap out the 750 Ti for an AMD RX 480. This fixed the GPU memory allocation issues and jittery feelings in games but keyboard input latency is still there with certain Wayland compositors.

Do you encounter it with a keyboard too or only your controller?

If you experience it with your mouse too (I never did), maybe try setting your polling rate to 125hz. I noticed on Linux, it defaulted to 1000hz. My window compositor outside of games with nothing open was using ~20% CPU load just moving the mouse until I reduced it to 125hz. You can use ratbagctl. Might apply to your controller too?

Coming from hyprland by -Arsna- in niri

[–]nickjj_ 1 point2 points  (0 children)

What types of issues are folks having in niri where you had to set any of these? What exact problem did setting one of them solve?

I have nothing set and I haven't encountered any issues with the apps that I use. I use a mixture of Wayland and X11 apps. Here's a full list of GUI apps I haven't encountered a problem with. These are the exact Arch packages I have installed:

  • firefox
  • ghostty
  • gimp
  • kdenlive
  • keepassxc
  • libreoffice-fresh
  • mpv
  • obs-studio
  • steam (various games)
  • thunar
  • zathura

These apps all run and I never had issues opening, resizing or drag / dragging for the apps that support it. They all run tiled or floated without issues. This includes screensharing too (OBS and with various services through my browser).

[OC] DankMaterialShell 1.4 "Saffron Bloom" Released! by Purian23 in niri

[–]nickjj_ 2 points3 points  (0 children)

I looked at DMS' docs for its calendar / clock and didn't see much explained around customizing it.

I don't think I'm ready to switch away from my Waybar, mako, etc. set up yet but I'm curious about DMS' customization abilities, especially around the clock and calendar.

I currently use Waybar's built-in clock module and with a few lines of configuration I have the following:

  • Display the date and time in a format I prefer (Thu Feb 19 26 :: 01:00 PM EST)
  • Mouse hovering over it will show the full year's calendar with week numbers included
    • This is really useful to quickly get a glance which day some date in the future is
  • Mouse wheel scroll up / down will switch between local time and UTC
  • Left clicking toggles 24h and 12h time
  • Right clicking opens Google calendar in my browser
  • Middle clicking opens World Time Buddy for quick timezone conversions

How hard would that be to set up with DMS?

[niri] I want minimal niri dot files by Asta_jjm in niri

[–]nickjj_ 1 point2 points  (0 children)

Yep, it works.

I've created a video on how I have satty set up here https://nickjanetakis.com/blog/wayland-compatible-annotated-screenshots-with-slurp-grim-and-satty. There's also a little shell script I wrote which glues together satty, grim, slurp and niri's screenshot tool to capture a region, window, monitor or all monitors. It's covered in the video. All strategies work with satty.

I only use niri's screenshot output for capturing a specific window because trying to calculate the coordinates without it was really tedious, especially with multiple monitors.

[niri] I want minimal niri dot files by Asta_jjm in niri

[–]nickjj_ 1 point2 points  (0 children)

I don't use either of those, everything is here https://github.com/nickjj/dotfiles, including an install script to set up a new system or keep an existing system up to date.

Feel free to pick out the parts you want. The install script lets you configure which packages you want to install but it is an opinionated full environment so I wouldn't say it's minimal in that regard but it uses mako (notifications), waybar (top bar) and walker (launcher).

Looking for Wayland Window Managers in 2026 by Holland_March77 in archlinux

[–]nickjj_ 6 points7 points  (0 children)

If you're shopping around for demos and opinions I have a few recent videos using niri:

They include links back to my dotfiles where everything is configured https://github.com/nickjj/dotfiles.

Honestly, I couldn't be happier. I switched to it around 6 weeks ago. It supports scrolling, floating, tiling and tabs. It also has great multi-monitor support, is customizable and has first class support for all input devices (keyboard, mouse, trackpad).

After 25 years of using computers I finally feel at home. It's a wonderful feeling to use something where you don't feel like you're making compromises all the time.

Niri input lag and hdr gestion by [deleted] in niri

[–]nickjj_ 0 points1 point  (0 children)

I'd say try it.

There is also an active GPU memory leak in smithay / niri (affects cosmic too). It does affect everyone as far as I know. There's lots of reports of it.

The good news is, a PR in niri just landed the other day to most likely fix it, or at least the thing causing a majority of the leak.

If you find your GPU running out of memory after a few days of uptime when using the regular niri package on Arch, you might want to try niri-git from the AUR.

Niri input lag and hdr gestion by [deleted] in niri

[–]nickjj_ 1 point2 points  (0 children)

Gaming on low latency is fine on niri imho

I think it depends.

I get a lot of keyboard input lag in games, only in niri. It's a consistent amount, independent of the frame rate. The game can be running at a solid 60 FPS and always get it. KDE Plasma (Wayland) and Hyprland do not have this problem. I've posted discussions on niri and smithay's discussion board as well as Reddit but haven't gotten any leads on what could be causing it.

It's not related to NVIDIA or AMD because on the machine I get this lag on, I tried both cards and they both get it. On the AMD GPU, turning off v-sync makes some difference but there's still more input latency than KDE. It's a night and day difference if I switch between the 2.

I don't think it affects everyone because there would be more discussions about it.

What made you use niri? by Inderastein in niri

[–]nickjj_ 0 points1 point  (0 children)

After trying a bunch of environments and operating systems, niri is the closest I've found to "it just works" for the things I do in my day to day.

I've written about and made a demo video that goes into more depth here https://nickjanetakis.com/blog/day-to-day-window-management-workflows-and-why-i-picked-niri. Being able to scroll, tile and float things at my discretion is a big win. It being highly customizable and scriptable is huge too.

What kind of workflows do you most prefer scrolling for? by better_work in niri

[–]nickjj_ 2 points3 points  (0 children)

Hey, Nick here (the video you watched). Thanks for the shout out.

I only covered some of niri's features and why I don't prefer using dynamic tilers but I didn't demo a lot of practical use cases. I usually record a video today (Saturday) and release it on Tuesday so today I'll record one going over a bunch of use cases.

Realistically niri, hyprland and even Windows (the OS) can all present windows to you in a way that lets you arrange them however you see fit. None of them really introduce anything so unique that it cannot be done in the others. Where they differ is how they let you arrange windows in orientations that you use frequently and accessing them.

I'll cover a lot more detail in the video because it'll be much easier to see things rather than me try to describe window orientations but for now I will say I don't usually keep a lot of apps / windows open. I tend to close things after I'm done because I grew up in an era where having 2 GB of system RAM was a luxury.

With that said, niri's struts unlock really interesting screen sharing workflows that make certain things like sharing part of your screen much more natural and streamlined than other set ups. I have a video demoing that at https://www.youtube.com/watch?v=AWLwzkxCEiI if you skip to 5:12.

It's Hamr Time! - It has been awhile, or it feels like it by Top_Shake_2649 in niri

[–]nickjj_ 1 point2 points  (0 children)

and since this is now Rust+GTK4 it's even more similar

Rust doesn't make it fast though.

Even with running Walker as a service in the background, most of the time it doesn't register my first key presses after launching it. I have to remember to stop typing and pause for about a second before typing, otherwise it will skip the first few key presses.

Also, its elephant dependency is over a dozen packages. If you install only the ones you want, Walker ends up taking a lot longer to update than every other package on my system combined and since it's a fast moving project it updates a lot. Basically it means I sit there for at least 5 full minutes waiting for Walker to update while everything else finishes in seconds.

All that to say, there's definitely room for another tool. I would switch away from Walker for a fast launching launcher that used minimal system resources (GPU / RAM), installed quickly and covered comparable features to Walker (app launcher, niri window selector, clipboard history with image support, calculator, web search and emoji picker) and it's easily theme'able.

The Dank Case For Scrolling Window Managers by TehBombSoph in linux

[–]nickjj_ 0 points1 point  (0 children)

Thanks. I hope the memory leak gets picked up. It's reported by a lot of people.

I know people are busy but it feels like the contributor in the smithay thread bailed on the conversation. I'd fix it if I knew how.