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 [email protected] 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 🫠
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.
I’ve definitely found tmux to have alleviated much of the need for tiling, but I like being able to open a browser and have it instantly split screen itself with my terminal
Having multiple workspaces is also good for the way my brain works in that I can have a number of things on the go and flick between them as the dopamine dictates
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.
But it’s manjaro
So what? For newbies it isn’t as bad rant Youtubers tend to claim, but yeah I guess the problems are real. However, my brother has daily driven Manjaro KDE for 4 years and hasn’t have bigger or more issues what you would have with Ubuntu.
I also recommended to try it out, not to daily drive it. Manjaro’s Sway configuration is much more fine-tuned than in the Fedora Sway.
In the spirit of the last guy’s response but letting you tackle one thing at a time, I recommend sxhkd to manage your keyboard shortcuts. It’s more intuitive than using the config of whatever twm you’re using, and it’s portable to basically any DE/distro combination. Something like i3 or even vim/vifm/vimium will have a base set of shortcuts you can borrow to see what you might need, then unused keys or combos can be used for launching programs like a boss.
-
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.
Here is an alternative Piped link(s):
My Linux For Work’s Hyprland setup
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I’m open-source; check me out at GitHub.
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; }
Is it possible to install hyprland side by side with GNOME so that I can choose in the login phase which I want to use? (Arch)
In the documentation, Hyprland states login managers are not officially supported. However, I’ve always launch it from the
SDDM
login manager and it has worked flawlessly. I still have KDE installed and occasionally check it out, no issues.I can’t comment on other login managers but SDDM works perfectly.
I can confirm that Hyprland also works from GDM
Thanks a lot for your helpful comment! Looks very clean!
-
the i3/sway scratchpad feature is handy. extra esp at beginner stage.
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
}
Interesting topic, this was also relevant to me some years ago when I started dabbling in twm, esp. i3wm in that time. To this day I am using i3 because its “easy” to set up for me and I started using a repository on codeberg.org for version control of my dotfiles (https://www.chezmoi.io/).
I am also torn on the subject of using twm nowadays, at work I am using i3, but at home I am still in the woes of a fully fledged KDE. I love to work on the terminal and prefer most applications to be cli based instead of having a full gui. But recently I finally took the plunge on trying a multiplexer (https://zellij.dev/) which actually makes me think, twm are not really that necessary once you start using a terminal multiplexer.
Because what you will notice is that it doesn’t make a lot of sense to tile ALL of your windows all the time, mostly its for cli applications, which is handled by the multiplexer in a perfectly fine way. Also when it comes to eye candy…with twm you will mostly never see your wallpaper, apart from some artificially created layouts which you can post on various *unixporn sites.
While you want a lot of windows as fullscreen, depending on your screen size. (most videos, browser etc.) So maybe you don’t really need a twm and can instead work with any lightweight window manager, the beauty of going non-fully-DE is that you can mix and match all your favorite programs however you like! Take a look at and check out some of those git pages maybe you find something which suits more to your needs: https://wiki.archlinux.org/title/Wayland#Tiling
Idk I like to lean into the tiling but you also need WORKSPACES (or tags, since I’m a dwm guy). You can configure which specific programs don’t need to be filed and float them which is the method I prefer.
BUT.
You’re right, it is nice to separate functionality. I like sxhkd for consistent hot keys across distros (I’m mostly mouseless), tmux as a multiplexer, and related unrelated I think at OPs stage picking an editor is going to be important.
for global search i would recommend rofi-wayland !
overall, my best advice is to steal, mix n match others configs (make sure to keep track and source them tho !) and find what u like best, if ur only starting dont try and do everything from scratch !!
if u want a notification system, i use dunst :3
Thanks!
Just my experience as I started from a similar background. Some weeks ago I had the urge to try TWM myself for the first time. Long time DE user, mostly Ubuntu and switched to fedora some weeks prior. The way I did it was to install sway on top of my fedora installation (with gnome). This way I could and still can choose which session to start at login. And it gave me the opportunity to work out some things using gnome until I grasped what is going on and needed in sway. Over time I was able to build up my sway settings/apps that now I would feel relatively safe use it without a DE installed parallel. Next fresh install I will probably skip the DE and just use a TWM.
I’ll keep my answer focused on KDE Connect as I no longer use a TWM. You can most definitely use KDE Connect in non-Plasma environments. For non-Plasma (and non-Gnome * ) environments you can just install the
kdeconnectd
package. Then, to start the KDE Connect daemon manually, execute/usr/lib/kdeconnectd
. You can schedule this to autostart as a systemd unit, or in the config for your TWM (I know in sway/i3 you could start it, I’m assuming it is similar for many other options)If you use a firewall, you need to open UDP and TCP ports 1714 through 1764. If you use
firewalld
specifically, there’s an option to enable KDE Connect rather than manually specifying it. This also let’s you have it only work on private networks and not public if you so chose.See Arch wiki for more details
*For gnome I would recommend using gs-connect even if you have a tiling extension
£ KDE-Connect: does that work on TWMs? Is there a good implementation? Can I use GSConnect elsewhere too?
Swaybg works pretty well for me. I just configured it load ~/wallpaper.jpg and have never touched it since (if I want to change I just swap out the bg file)
Waybar is awesome, being able to use CSS for it is great and it’s pretty easy to make your own modules for it if you know your way around a shell script
As far as I’m aware for clipboard management I only installed wl-copy and wl-paste, though that’s because I use them in scripts and some software depends on them
Search tool I’m using rofi but might switch soon because a hyprland update broke the theme I was using
For most of the tiling WMs out there they are by nature very technical because the only people willing to completely change the way they use their computer are people who are already very comfortable with them
That said, I think there are all in one tilers out there that do a lot for you by default, and I believe you can install a tiling WM over KDE as well and just use its stuff
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 was messing around with sway for a while and started with this, which I found easy to grasp and very convenient.
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 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.