I decided to dive heads first into window managers and need your input for your guidance. I’m absolutely not a Linux-pro. I basically never use the terminal, just started using Github, and only used Gnome (+ KDE for 1/8th the time) for now.
I already informed myself in the last months a bit in what mess I will jump into, but that didn’t prepare me at all… Or at least not as much as I would have liked.
I find it a bit hard to get content for this topic. For Gnome or KDE for example exist trillions of videos and guides, and all TWM-content is only from and for hardcore enthusiasts who are already neck deep into that topic for decades.
One thing I already noticed is that everything is very technical. Everything is in a text file and accessed via terminal. I like that, but it’s just different.
Also, there’s no way to just learn one thing, no. You have to work yourself into many tools all at once, which is super frightening, but interesting.
First off all, I need your choice of packages to make it a fully functional desktop.
Right now, I use Niri, for now in a VM, which comes with a few basic things out of the box, like portals, and additional stuff, like some packages from Sway.
But basically everything else, like bars, decoration, and more, is not preinstalled.
When you use it the first time, it’s very barebones and no eye candy by default.
I would like to hear what “essential” stuff, and what “Because I like it”-stuff you suggest.
Maybe differentiate it with “I personally use it” and “You and everyone else should use that, it should be a default.”
Personally, I would like to have:
^(£ = nice to have; ¥ = basic functionality)
- ¥ A bar, like
waybar
- £
KDE-Connect
: does that work on TWMs? Is there a good implementation? Can I use GSConnect elsewhere too? - ¥ A good global search tool like KRunner or the one from Gnome
- ¥ Clipboard manager
- £ Wallpaper switcher
- £ Eye candy in general, e.g. dotfiles (those are the settings for each element, like the bar, right?)
- More things will be added later :)
Also, do you have any tips for a total noob in that topic?
Any things you regretted when you started and now wish others to avoid?
General usage tips for someone who only used full fletched DEs until now?
And, most importantly, do you have any resources where I can read/ watch more into for the future?
Sure, the readme.md
on the projects’ page is the best information for that specifically, especially technical stuff, but I don’t know where to get more general information, like discussions, comparisons, and more. The only example I can think of is !unixporn@lemmy.ml for inspiration, but not much more.
Do you have any blogs or threads you can recommend?
Thanks in advance for your help!
I plan to post a “My Linux week”-report very soon, since there has been a lot happening in the last days. I literally just “discovered” Github for example 🫠
TWMs can give you an extremely customized setup and potentially increase the speed of your workflow once you get into the groove of using them.
A couple suggestions:
-
Get familiar with the command line if you aren’t already. Know how to adjust volume settings, connect to local wifi, etc. All from command line tools. You can of course use GUI tools that do the same, but knowing how to launch essential necessities from the CLI comes in handy if something in your configs break.
-
Create keyboard shortcuts for your most commonly used applications. The workflows of TWMs are usually similar to Vim in that mouse use is discouraged. On that note:
-
Consider purchasing an Ortholinear Keyboard if you can afford one. This was a gamechanger for me. As I no longer had to reach across an 80 key keyboard to reach for certain keys. Every key instead is solely a matter of moving my fingertips instead. A good beginner one is the Preonic, or the Planck.
-
Install and learn to use the Vimium browser extension. I’ll not try and convert you to using Vim, but Vimium allows easy browsing of the web without use of the mouse (or excessively tabbing through a web page’s links). This comes in handy when using a TWM. Obviously this works incredibly well with Vim/Neovim as well, but again, that’s for you to decide.
-
Install an application launcher. I personally like dmenu, but rofi, wofi, etc. all work just as well as the others for the most part. They especially become useful when you start scripting custom features for them. Eventually you’ll want to run an application neither from a terminal nor a keyboard shortcut. An application launcher is a must when working with a TWM.
-
I recommend using a window swallower for applications where you have a “useless terminal output” window. I have used devour and gulp on X11. I have yet to find one that works on Wayland (if anyone knows of any, please let me know). This is particularly nice when viewing videos using mpv.
Obviously this is all my humble opinion, but I have a love of Tiling Window Managers and this is what has worked for me. Lastly, I do apologize for no recommendations on bars, I simply don’t use one, and instead rely on a constantly running btop for system monitoring. So can’t speak to that subject.
Thank you a lot for that helpful and elaborate answer!
Try Manjaro Sway. It is preconfigured and has many superior features built-in. The wallpaper contains the keybinds. When you learn to use that preconfigured Sway, you can try to build your own setup in a virtual machine and when you’re satisfied, take the dotfiles into a usb stick or make the vm guest as your real Linux install.
-
This might sound a bit heretical, but you could carefully pick and match a variety of software and configuration to your individual needs, turning your tiling wm into a fully functional desktop environment, or you could just install a tiling wm into an existing desktop environment and get something useful with like ten percent of the work.
I know that I have done the former multiple times, only to fall back to existing desktop environments again because it’s just a lot less work and often works better, since you don’t have to take care of getting things like screen sharing or media buttons to function.
Especially LXQt and Xfce make it very easy to run a tiling window manager, but you can also find extensions/plugins for KDE or Gnome to make them tile. I’m personally running Gnome with the Pop Shell extension right nowI used to be a tiling wm arch purist, even worked on a tiling wm called Awesome. Until one day my boss pointed out that all any dev wants is a terminal with splits and a full screen web browser. It was this moment I became enlightened
Funny, I don’t use splits, and I never full screen my web browser.
A bar, like waybar
Why not waybar? 😆
If you want to go all in, check out Eww - it’s a lovely over-engineered and super customizable widgets framework that you can use to build a fully custom desktop bar, too. (and needs a lot of more work than waybar to initially set up)
Wallpaper switcher
Depending on your compositor there already might be something implemented that handles wallpaper switching. Maybe check out the super simple wbg application, or have a look at swww if you want
a bita lottons of more features.General usage tips for someone who only used full fletched DEs until now?
If you’re on Hyprland or interested in using it, maybe check out My Linux For Work’s Hyprland setup if you want something ready to use.
I second using a preconfig for Hyprland if you want to have something fancy and usable out of the box. You can build on top of that.
From my personal experience, Tiling WM managers are a lot of work to setup. It’s not difficult to configure them, but they just come with REALLY barebones and honestly unusable defaults. There’s a lot to configure, which means a lot of documentation to learn. It doesn’t “just works”, you have to spend several hours to find out what works for you and figure how to make it work. That said, I had never tried a tiling WM before and managed to make it work just fine. It’s not hard, it’s just work.
The easiest and fastest way to do this is start with someone else’s configuration. I started with Zaney’s dotfiles as they provided some good and USABLE defaults.
Packages that I’m using:
-
Hyprland - my WM of choice, mostly because it’s pretty and very easy to configure
-
Waybar - You mentioned “like waybar”, I’m not sure you have anything against it or not. I really like waybar because configuration is a basic json file and styling is a basic CSS file. It’s very easy to work with, very easy to create your own customization. A few waybar “modules” that I recommend
-
nm_applet - A “system tray” network applet which integrates very easily and nicely to waybar. It allows you to configure your wi-fi/network without the command line.
-
swaync - Hyprland does not have a notification system, you need to install one.
swaync
is very nice and integrates perfectly into waybar
-
-
For a KRunner like tool, I use Tofi. Zaney recommended it, I don’t know many alternatives. Like many of these applications, the default aesthetics are really bad. Tofi in particular has atrocious defaults. Absolutely awful. The software itself runs quite well, it’s fast and can have a lot more useful applications than just running tools. Not sure why they don’t have a decent theme out of the box, it’s not that hard.
-
I have wl-clipboard installed. Not really a clipboard manager but sometimes I have troubles where some xwayland apps don’t have access to my clipboard. It’s weird.
wl-paste | xclip -selection clipboard
solves it. -
For managing wallpapers I use swww. I don’t look at my wallpaper all that much, so I don’t have anything too fancy. I don’t change them often, this tool is more than enough for me. An overkill for my use-case.
-
I suggest you use nerd-fonts, whatever one you like. Personally I really like the JetBrains Mono Nerd Font.
My system:
My waybar dotfiles. You can create/edit these files with whatever text editor you like, you don’t need the terminal. Please note that for some reason Lemmy screws up the “&” when pasting code… Please replace all “
&
” with “&”.~/.config/waybar/config
(note: removecustom/gpu-util
if you don’t have a nvidia video card, or change the command to whatever is the AMD equivalent){ "layer": "top", "position": "top", "modules-left": [ "hyprland/workspaces" ], "modules-center": [ "hyprland/window" ], "modules-right": [ "cpu", "custom/gpu-util", "network#wifi", "pulseaudio", "clock", "tray", "custom/notification" ], "hyprland/workspaces": { "format": "{id}", "on-click": "activate", "sort-by": "number", "persistent-workspaces": { "*": 3 }, "all-outputs": false }, "clock": { "format": "{:<span></span> %I:%M %p, %a %d}", "format-alt": "{:📅 %B %d, %Y}", "actions": { "on-click": "mode" }, "tooltip": false }, "cpu": { "interval": 5, "format": "<span></span> {usage:2}%", "tooltip": false }, "custom/gpu-util": { "exec": "echo $(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits)", "format": "<span></span> {}%", "interval": 5, "tooltip": false }, "network#wifi": { "interval": 1, "interface": "wlan0", "format-icons": [ "", "", "", "", "" ], "format-wifi": "<span>{icon}</span> {signalStrength}%", "format-ethernet": "", "format-disconnected": "<span> </span>", "tooltip": true, "tooltip-format-wifi": "<span>{icon}</span> {essid} ({signalStrength}%)" }, "tray": { "spacing": 12 }, "pulseaudio": { "format": "<span>{icon}</span> {volume}% {format_source}", "format-bluetooth": "<span>{icon}</span> {volume}% {format_source}", "format-bluetooth-muted": "<span></span> {format_source}", "format-muted": "<span></span> {format_source}", "format-source": "<span></span> {volume}%", "format-source-muted": "<span></span>", "format-icons": { "headphone": "", "phone": "", "portable": "", "default": [ "", "", "" ] }, "on-click": "pavucontrol", "input": true }, "custom/notification": { "tooltip": false, "format": "{icon} {}", "format-icons": { "notification": "<span></span><span><sup></sup></span>", "none": "", "dnd-notification": "<span></span><span><sup></sup></span>", "dnd-none": "", "inhibited-notification": "<span></span><span><sup></sup></span>", "inhibited-none": "", "dnd-inhibited-notification": "<span></span><span><sup></sup></span>", "dnd-inhibited-none": "" }, "return-type": "json", "exec-if": "which swaync-client", "exec": "swaync-client -swb", "on-click": "sleep 0.1 && swaync-client -t -sw", "escape": true }, "hyprland/window": { "separate-outputs": true, "max-length": 100 } }
~/.config/waybar/style.css
/** * Global Colors */ @define-color bg #434C5E; @define-color bg_lighter #546484; @define-color fg #D8DEE9; @define-color red_warn #BF616A; /** * Global style */ * { font-size: 14px; font-family: JetBrains Mono Nerd Font, Font Awesome, sans-serif; font-weight: bold; border-radius: 5px; color: @fg; border: 0px; } /** * Bar */ #waybar { background-color: rgba(46, 52, 64, 0.6); border-radius: 0; } /** * Default module styles */ #window, #custom-packages, #memory, #clock, #custom-gpu-util, #cpu, #gpu-util #disk, #battery, #network, #tray, #pulseaudio, #custom-notification { background: @bg; margin: 5px; padding: 2px 10px; } /** * WORKSPACES module specific style */ #workspaces { background: @bg; margin: 5px 3px 5px 12px; padding: 0px 2px; font-style: normal; } #workspaces button { padding: 0px 8px; margin: 4px; background-color: @bg_lighter; opacity: 0.7; transition: all 0.3s ease-in-out; } #workspaces button.active { background: @red_warn; min-width: 40px; transition: all 0.3s ease-in-out; opacity: 1.0; } #workspaces button:hover { background: @red_warn; opacity: 1.0; } /** * Tooltip style */ tooltip { background: @bg; border: 1px solid @bg_lighter; opacity: 0.9; } tooltip label { color: @fg; }
Thanks a lot for your helpful comment! Looks very clean!
-
waybar is good
scrcpy for android connectivity; syncthing to get files to and fro android (and any other linux system)
clipman for clipboard manager
wallpaper - whatever for? with a TWM you rarely see the background
emacs - because it’s life (I jest)
scrcpy is wonderful. I have some reading apps on my phone but at home I usually use my laptop with scrcpy to read.
I got this in my .custom_bash.sh:
#Connect to phone over Wifi and view phone screen.
#Remember to set static DHCP for the phone MAC.
#And to use the same one in the adb connect line.
function phoneconnect(){
sudo adb start-server
adb tcpip 2233
adb connect 192.168.18.15:2233
scrcpy
}
the i3/sway scratchpad feature is handy. extra esp at beginner stage.
deleted by creator
Personally I use xmonad with xfce in no-desktop mode. And I configure almost nothing.
Xfce gives me multi monitor setup/positioning, a shutdown dialog, and other niceties like mouse config. I have dmenu for starting GUI programs. Only thing that bothers me is nextcloud sync demands a taskbar in which to put its icon. Since there isn’t one, I have to cope with its login BS each time I boot up.
For pretty much anything else I go to the terminal. What time is it? type ‘date’ and press enter. Wireless? ‘sudo nmtui’. Etc. I started doing this as a way to brush up on terminal knowledge, and now I see no reason to change.
Some thoughts, never used a TWM
- I would love to try, but never got used to workspaces and on a 14in laptop you never tile more than once horizontally, everything else is unusable with apps that have menus etc.
- also forced tiling breaks many apps that open in their perfect size. A mix between tiling and floating is needed.
- learning a nice minimal UI editor is key, I am still using Kate and suppose I should switch
- there are really little Terminals with tabs outside of DEs. Alacritty is damn fast but will never get tabs. Using tmux is strange and feels overcomplicated for that, also has no tab bar.
- I prefer many KDE apps, use all GNOME apps as Flatpaks, but Dolphin & Kate would pull in tons of dependencies. TWM users have shitty file managers in my experience, pcmanfm-qt was the second best after Dolphin but also not really great.
- you need app systray icons, and I would also not want to live without the basic KDE systray features like volume, bluetooth, wifi. Those will just have way less features on TWMs I think.
Fedora has some Hyprland packages packaged, many more in a COPR. There is [github.com/secureblue/secureblue](secureblue with some TWMs) or the regular base github.com/wayblueorg/wayblue which has River, Hyprland, Sway and Wayfire images.
Here people can work together to create a good experience out of the box.
Regular Fedora Sway too of course, but my experience with it was very broken, and aestetically bad.
Thanks for your comment!
I would love to try, but never got used to workspaces and on a 14in laptop you never tile more than once horizontally, everything else is unusable with apps that have menus etc.
Same for me. It’s supposed to be on my ultra wide screen desktop PC, on my laptop I will stay on Gnome due to the clutter free UI and the ability to change workspaces. On the other hand, you switch workspaces with keyboard shortcuts and then utilize the small screen estate better.
^but those glorious gestures on Gnome tho…A mix between tiling and floating is needed.
There’s a mockup/ plans somewhere for Gnome for dynamic tiling. The apps then tile and arrange themselves on their prefered sizes. That’s a reason why most core apps in Libadwaita need dynamic sidebars and stuff like that, that’s their preparation :)
I prefer many KDE apps, use all GNOME apps as Flatpaks, but Dolphin & Kate would pull in tons of dependencies.
I’m a bit torn apart. Dolphin for example feels more powerful, but I usually don’t need this much functionality and prefer simplicity. But, at least for my desktop PC, where I edit photos for example, and do more stuff in general, those previews of RAW images or plugins with installed apps are just god send. You can use Distrobox for that use case tho, here’s a link to a post I made a while ago: https://feddit.de/post/8018330
You can install Dolphin for example in that container, but keep your host minimal.you need app systray icons, and I would also not want to live without the basic KDE systray features like volume, bluetooth, wifi. Those will just have way less features on TWMs I think.
You can still get very powerful setups on TWMs. There are a dozen of bars with all features you need.
Fedora has some Hyprland packages packaged, many more in a COPR. There is [github.com/secureblue/secureblue](secureblue with some TWMs) or the regular base github.com/wayblueorg/wayblue which has River, Hyprland, Sway and Wayfire images. Here people can work together to create a good experience out of the box.
I am already trying to incorporate my setup with Niri (the TWM) into said uBlue images to provide a fully functional TWM-DE. I’m just currently learning how to do that, and my past tries have failed for now in the last days. But I’m onto it.
Tbh I dont think Distrobox is a senseful way to run GUI apps. It works well as a workaround (firefox, qgis, rstudio, even the Ubuntu PPA VLC) but its slow and bloated.
Mixing GNOME and KDE is a bad idea, no idea what iconset many TWMs use though.
Cosmic by System76 is a tiling-optimized GNOME desktop. And they also have Epoch, which is very pre alpha but will be even better
I use dmenu for global search and Nitrogen for wallpaper. In some WM you don’t need additional programs for those two things so I recommend you to first check that for WM you use.
For general tips I recommend looking at configs of other people.
Rofi is a good alternative to dmenu as well.
i keep returning to BSPWM. Every now and then i try out Gnome or Cinnamon, but always find myself returning to my tiling BSPWM setup.
The only thing i miss from time to time is an actual alt-tab window switcher that you have in more ordinary window managers.
There is some kind of like alternatives, but i haven’t found anything that actual can fully replace it
Personally, I use tiling from within KDE, via this: https://zeroxoneafour.github.io/polonium/
It can be buggy and it’s definitely not as fun as dicking around with minimalistic window managers, but well, it is an easier option for a full-fledged desktop with tiling.
There’s also some options like that for GNOME, for example PaperWM, but I’m not really informed, if that’s still the best choice. PaperWM itself is certainly non-traditional in how its tiling workflow works…
I already tried Polonium and didn’t like it. It really feels messy.
Forge/ PopShell are a bit better, but you still notice Mutter struggling with the extensions.
Same with PaperWM. Hence why I want to use Niri, which is pretty much PaperWM, but standalone.
deleted by creator
You mean Git SCM/VCS? GitHub is a Microsoft-owned software forge. True that it has a lot of software hosted, but personally, I think they’re scummy. There’s are other alternatives, like Codeberg and GitLab. It shouldn’t matter what forge you’re using realistically, but ideologically, if you’re a copy-left hardliner, you might want to avoid them.
Yeah, correct. I know that Github isn’t perfect due to MSs’ ownership, but for now, it’s the biggest. I also have a codeberg account, but I haven’t used it yet.
I try to make a custom uBlue-image (immutable Fedora spin project), and for that, Github is the official method.
But I will look around if Codeberg or other Git platforms work too at the moment.
Does Codeberg also have an automatic building system/ Github actions?You don’t really need to use a tiling window.
Sure I don’t need to, but I want to try it.
I am a huge Gnome fan and wanted to try a WM for a longer time now. Now, Niri has released, and I couldn’t find an already made image yet, so I decided to do it myself. For me, a big part is the learning experience. I finally have enough time for that now and to invest some of it for that project :)