70
submitted 1 year ago* (last edited 1 year ago) by cloudwanderer@lemmy.ml to c/linux@lemmy.ml

Hello Everyone,

as you can see on my screenshot, i am using an intel based mac for years now, which i customized to my needs. However i have reached the limits of this machine in terms of customization options and would like to move to linux to test it out as a daily driver. I'm actually quite happy with mac from the pov that everything just works, however there are certain things that annoy me, but apple does not allow me to change them.

As a newbie in terms of desktop linux (i've used ubuntu roughly 12 years ago as a daily driver and am familar with headless linux), i'd like your advice.

Specifically I am looking for:

  • a minimal, fast system
  • keyboard / shortcut based - all interactions can be done from keyboard (within common sense limits)
  • all keys can be custom mapped (i have muscle memory of my custom keys for certain actions, so i'd like to keep them)
  • all can be configured from dotfiles (worse case shell scripts and ansible)
  • very low ressource consumption, snappy system with no delays.

I'd like to try NixOs due to it's unique configuration ability, however on a headless server it was a buggy pain just weeks ago (for example user passwords just vanished/changed without any external influence, not allowing access anymore), so i'm open to alternatives.

What i am looking for in advice is:

  • a minimal, configurable (file based for git) tiling window manager
  • a top status bar like you see in the screenshot that i can freely configure
  • as much terminal emulator based as possible (i honestly mostly only need a browser and the terminal, most other apps have a TUI that i can use with the keyboard, see the above requirement)
  • terminal based package management as easy as brew (maybe Nix?)
  • custom keyboard layout (I am not a native english speaker, so i mapped all non-english characters to my option keys with the english layout as the base)
  • Option to use 2 keyboards at once (come by default when using Karabiner Elements) as i combined 2 small keyboards to one to a fake split keyboard ;)

My current stack on macos is Hammerspoon for heavy customization, Karabiner Elements, yabai, kitty (and alacritty, for ssh, as kitty is bad with ssh in my personal experience), sketchybar. firefox (customized for privacy)

Any good recommendations or dotfiles? Anything i should look out for as a MacOs User?

Thanks in advance!

all 37 comments
sorted by: hot top controversial new old
[-] storm_koala@beehaw.org 12 points 1 year ago* (last edited 1 year ago)

Hello,

I advise you to select a WM based on Wayland because it now reached a sufficient maturity and Xorg can safely be remembered as historical. I personally use sway which is an implementation of i3wm for wayland. You will have an experience similar to what appears in your screenshot.

There are a lot of status bars for sway. I am using swaybar with i3status for the status_command. Don’t hesitate to check the alternatives, they are amazing.

All the configuration of sway happens in a config file and you can setup your keyboard preference inside. You can setup multiple layouts at the same time and specify which key binding to switch between them.

If you decide to give NixOS another try (which it deserves), the nixos config already has options to enable sway.

For the package manager, either stick with the one integrated in the distribution you choose (apt, pacman, dnf, …) or indeed use nix on top if you like the experience and its benefits.

And as a general advise, don’t hesitate to first try your choices in a VM installation, and take your time to check if it really suits your need.

Have fun

[-] amadeus@lemmy.zip 8 points 1 year ago

I can recommend Arch because their Wiki made it very easy for me to solve all my issues more or less on my own. Personally I am interested in trying VanillaOS 2.0 soon.

[-] amadeus@lemmy.zip 3 points 1 year ago

I don't think it holds much valuable information for you but since I switched from macOS to Linux a while ago too I am herewith sharing with you my Journey to Linux blog post from back then. ☺️

[-] cloudwanderer@lemmy.ml 2 points 1 year ago

Thanks, that was a very interesting read!

[-] richardisaguy@lemmy.world 6 points 1 year ago* (last edited 1 year ago)

Well, i can't really recommend a specific combination, but I can give you options so you can comprehend more about by researching. All the distros I will list here have dedicated editions, or ways to install different desktop environments. As of judging by your screenshot, it seems like you're somewhat of a technical user so these recommendations were made by keeping this in mind, these are not the greatest options if you want something for a newbie non-tech savy Linux user.

  • Fedora - exceptionally stable and quite fast distribution, altrought not the fastest, great software availability, if you don't find your software, or the version shipped by fedora on the repos isnt working for you, consider install it using containers, like flatpak, or distrobox.

  • Arch Linux - very tecnicial distribution, on my experience not really stable and not very usable on the longterm, but works well for a Great amount of people, it's main features are it's customizability, being able to craft your own system by deciding precisely what will compose it, and the aur(arch user repository), in it, you will find user made scripts to install all kinds software, even pathed ones.

  • EndeavourOS - Arch's youngest daughter, arch but a bit more polished, and user friendly, with it you get all the features of arch Linux, with better setuo, and more ease of install your desktop environment / window manager, at the expense of worsened customization.

  • Opensuse - not very popular, but by far the fastest distro on the list, its main edition is based on the plasma desktop environment, you may run into some issues, but if you know your way around things, you will surely get the most out of this system, just like fedora, if you don't find, or the software on the repositories isn't working for you, you can always use containers.

Desktop environments / window managers - if you don't know what these are, I recommend you do a more indeph research about them, but in resume, both are the user interfaces which run on top of your system, the difference is that desktop environments tend to be more user friendly and "complete" than window managers, while window managers tend to be more lightweight, simpler, and customizable.

  • KDE plasma environment - excellent and fast desktop environment, has a great implementation of the keyboard shortcuts, you can make anything do anything just by changing them on the settings app, the glimpse of desktop customization on Linux, it has a lot of themes available and a built in theme "store" integrated right into the desktop. Recommended if you want a great balance between customizability and convenience.

  • Sway - sway is a window manager for Linux based on the Wayland protocol, being the first of it's kind, can be heavily customized using it's configuration files, in which have a simple and comprehensive syntax, just like any other window manager, it can be configured to do pretty much anything.

  • Hyprland - I would sway hyprland is a successor to sway, it's more polished than sway with more features, has beautiful and fluid animations, I have never used hyperland myself, but for what I have seen, it's the best window manager out there.

[-] cloudwanderer@lemmy.ml 4 points 1 year ago* (last edited 1 year ago)

Thank you everyone for all your suggestions! I'll quickly try to summarize them for myself. So what you suggest is:

Operating Systems:

  • NixOs
  • Debian 12
  • ElementaryOS
  • mint
  • PopOs
  • EndevourOS
  • Fedora
  • arch
  • Opensuse
  • Novara

Tiling Window Manager:

Recomended to use something based on wayland.

  • hyprland (can be configured from file, good compatibility with nix)
  • sway (proposed with Debian, multiple suggestions, config via file as well, good for custom keybindings, already options for sway in nixos)
  • i3
  • bspwm
  • KDE Plasma
  • dwm / dwl

Status Bar:

  • swaybar (in case of using sway)
  • waybar (when using wayland)
  • eww
  • ags
  • KDE neon

Package Managers:

  • flatpack
  • brew (is this already stable enough?)
  • Nix (obvious choice if nix os chosen)
  • snap
  • (pacman if arch)
  • integrated one

Packages:

  • together with wayland alacritty or kitty
  • foot
  • Yakuake
  • suckless

At the moment I am trying to avoid anything where RedHat is involved. Not because of the recent controversy, but simply IBM is known to kill their software solutions on a whim. (although i still use ansible), so Fedora is unfortunately out (again, no judging on how great it is). I've been quite interested in EndevourOS, so that might be fun to try out. Debian for the desktop probably not right now. I'm running it on servers for stability, but for a desktop environment, i prefer having more recent packages (e.g. neovim). The "sales pitch" for Mint sounded pretty interesting as well. However i'll give NixOs a try first, simply because it was mentioned very often, same with sway.

Based on this i'll try out these combinations first:

  1. NixOs with sway and eww
  2. NixOs with hyprland and waybar
  3. NixOs with dwl and ?

If this does not satisfy, i'll look into endevourOS and mint, but that might require some Ansible I assume.

Thank you very much!

[-] wviana@lemmy.eco.br 2 points 1 year ago

Just get to know Rio that may be an alternative to Alacrity.

[-] cloudwanderer@lemmy.ml 2 points 1 year ago

It looks very interesting!

But I don't see the unique selling point of it compared to alacritty and kitty, besides web-enabled. Is there anything that it does better than these 2?

[-] dashietm@sh.itjust.works 4 points 1 year ago* (last edited 1 year ago)

I can absolutely recommend hyprland to you, tiling compositor with animations you likely know from macOS, lots of configurability and a good example of using it with nix (NixOS might be a good choice here) https://github.com/fufexan/dotfiles

Also quite a nice discord server or matrix if you have questions about it.

[-] neoney@lemmy.neoney.dev 3 points 1 year ago

I like NixOS and haven’t had any struggles with it. For my tiling I use Hyprland, as it’s Wayland and looks very nice. For a bar with amazing configuration I can recommend either https://github.com/elkowar/eww or https://github.com/aylur/ags - in the first one you configure it in a lisp-like language, the second one is configured in JS. They both allow you to pretty much write any GTK widgets for your bar, and are really powerful, but ags is newer and allows for more advanced functionality.

My favorite terminal emulator is foot - it’s simple and quick.

I wouldn’t say Nix is easy at the beginning as you have to learn a language to use it properly, but it’s definitely worth it long-term.

There shouldn’t be any issues with 2 keyboards and custom layouts on Linux. If anything you could use something like hawck to rebind the keys (system-wide) to something else.

[-] neoney@lemmy.neoney.dev 2 points 1 year ago

I run NixOS on my macbook with the stack above. If you want to you could check out my NixOS config, but I’m using a configuration framework so it’s a bit complicated. https://github.com/n3oney/nixus

See configs/vic and hosts/vic for macbook-specific configs, everything else in my NixOS config is shared between machines and I opt into it per-machine in configs/

[-] neoney@lemmy.neoney.dev 1 points 1 year ago

Also not sure what you mean by your configuration struggles. Never had that happen. Also worth mentioning, my macbook runs Full Disk Encryption which needs my Yubikey to unlock, and I also have impermanence - everything (outside of a few specified directories like ~/Downloads) gets wiped on a reboot, so that my configuration is as reproducible as it can be. I could pretty much reinstall the system and have everything be 100% the same.

[-] Atemu@lemmy.ml 3 points 1 year ago

for example user passwords just vanished/changed without any external influence, not allowing access anymore

Could you elaborate on this? It doesn't happen for me and thousands of other NixOS users. Did you create some sort of impermanence setup or anything?

[-] hallettj@beehaw.org 1 points 1 year ago

Could this have happened if users.mutableUsers was set to false? I see a warning in the manual saying in that case users and groups will be replaced on system activation.

[-] cloudwanderer@lemmy.ml 2 points 1 year ago* (last edited 1 year ago)

It might have. I've tried nixos on a mini PC meant as a home server, so most configuration is done via SSH and users don't change (much), I might have accidently activate it while trying nixos out.

Making users unable to login is a bit of an odd (side?) Effect, but maybe I'm not understanding the purpose of this option correctly. I'll stay away from it for now :D

[-] hallettj@beehaw.org 2 points 1 year ago

The NixOS ideal is that every detail of the system is configured through Nix expressions so that the system is completely reproducible. But in practice there are some details you might want to configure directly.

With users.mutableUsers = false you are in the "ideal" declarative mode where users and groups are supposed to be fully represented in configuration.nix including passwords (or hashed passwords). In this mode the Nix config overrides everything in /etc/passwd. If the Nix config doesn't specify passwords I think the default is to leave the account without a password, disabling login for that account.

With users.mutableUsers = true NixOS respects changes to user and group accounts made outside of configuration.nix. Accounts configured through Nix will be added to /etc/password if they aren't already there. But NixOS won't remove accounts, and won't modify or unset passwords. In this mode the default of leaving the password unset makes sense because you're expected to set a password by running passwd. This is the typical choice because there are security problems with putting passwords in configuration.nix.

You can set passwords in the Nix config using the password, passwordFile, hashedPassword, or initialPassword options. If mutableUsers is true these options only set the password the first time the user account is created. I checked to see if there are any options that implicitly disable mutable users, but I didn't find any.

[-] CAPSLOCKFTW@lemmy.ml 3 points 1 year ago

a minimal, configurable (file based for git) tiling window manager

I like i3, it ticks all your boxes. Made my own config in 2020 and it still works. Keep in mind that you have to design your whole desktop enviroment when you go the window manager route. bspwm might be an option as well

terminal based package management as easy as brew (maybe Nix?)

Every linux distro has it, I'm an Arch person, many people like Archs package manager pacman, so you could go with EndevourOS or if you're adventorous with vsnilla Arch.

as much terminal emulator based as possible (i honestly mostly only need a browser and the terminal, most other apps have a TUI that i can use with the keyboard, see the above requirement)

Well, what kind of software you'll run is up to you. Linux has all the TUI stuff. If you haven't already, check out vim, emacs and nnn. Don't forget to customize your shell (and choose it first, i would recommend zsh or fish).

General advice: Look into r/unixporn, most posts there have dotfiles, look for something you like an try it (with a fresh user that you can delete afterwarda maybe?)

[-] NormalC@hexbear.net 3 points 1 year ago
  • a minimal, fast system
  • keyboard / shortcut based - all interactions can be done from keyboard (within common sense limits)
  • all keys can be custom mapped (i have muscle memory of my custom keys for certain actions, so i'd like to keep them)
  • all can be configured from dotfiles (worse case shell scripts and ansible)
  • very low ressource consumption, snappy system with no delay

I'd recommend Debian 12/testing/sid with the Sway compositor. Homebrew, Nix and Guix can all be installed on top of any GNU/Linux distribution to provide containerized packages. Flatpak can be used to obtain the latest version of graphical applications as well. Terminals like alacritty and kitty are Wayland natives and Foot is widely considered to be the most minimal "default" terminal for Wayland compositors. You can use Sway's built in "swaybar" or status bars like Waybar and eww. Sway configuration is just like i3 where you can configure specific devices like keyboards and monitors from a single file.

[-] generalEdo@sh.itjust.works 1 points 1 year ago

Man, sway is kinda sexy. I messed with i3 and used it for a fee weeks before switching back to vanilla debian. Definitely going to try out sway.

[-] flashgnash@lemm.ee 3 points 1 year ago

I daily drive NixOS on a gaming PC and work laptop, works great for both and haven't encountered that password issue you mentioned

ElementaryOS, mint and pop are good starter ones and elementary looks a lot like Mac's interface

For desktop environments the ones I know well that have the top bar, GNOME has one by default but don't think it's very configurable, Pantheon looks a lot like the Mac UI and I think you can technically edit the html behind it? KDE is definitely the one people use for maximum customisability and you can create a top bar with that pretty easily

As for capabilities, most distros will do most things, they're all pretty much the same under the hood and all run the same software depending on package manager

Package managers generally come with the distro and I think that's usually the thing that makes people's minds. I've not used brew but most package managers will be something like

Snap (most distros): "snap install firefox" Apt (Ubuntu based distros): "apt-get install firefox" Pacman (arch based distros): "pacman -S firefox"

Apologies if I got any details/syntax for any of this wrong am doing this off the top of my head and am rather tired

[-] Auster@kbin.social 2 points 1 year ago

I'd suggest Linux Mint.

  • Simple UI
  • (Xfce version specifically) is very fast (within reason; it's still a modern OS)
  • It's already pretty keyboard-centric and it can be improved further if you like tinkering (my reason for dropping Windows was precisely lack of keyboard-centric controls, so if I stick to Mint, I guess it's good on that front)
  • Keys can be custom mapped, although I guess most bigger Linux systems allow that either out of the box, or through 3rd party software
  • Unsure what a "dotfile" is, so can't comment on that
  • And Mint is still slowly adding animations to its functions (to some people's dismay), and I don't feel lag when alt-tabbing around, so I guess it is snappy too
[-] backhdlp@lemmy.blahaj.zone 3 points 1 year ago

dotfiles are the hidden files and folders in your home directory like .bashrc or .config/.

[-] olafurp@lemmy.world 1 points 1 year ago

I have a very keyboard heavy setup and have used the same distro for 5 years, I might be biased. That said...

Try KDE neon, you can set up a top bar and shortcut pretty much everything. It's based on Ubuntu so you can get some familiarity.

For terminal you can look into Tmux. It's pretty cool shortcutty terminal multiplexer that you can bring with you if you ssh into a server.

Yakuake is also nice, quake style drop down terminal that I use to launch apps or run some of my bash functions.

All in all, give it a go, imo Linux has the most modern display managers, most customization and best multitasking tools.

[-] eruchitanda@lemmy.world 1 points 1 year ago

I believe Arch+i3 would answers your needs.

[-] eruchitanda@lemmy.world 1 points 1 year ago

i3 is pretty easy to configure, IMO.

Especially compared to other WMs.

[-] iloverocks@feddit.de 1 points 1 year ago

If you want to go really minimal you could use alpine Linux with dwl as a window compositor and st ans your terminal emulator

I currently run arch with kitty and hyprland but I'm thinking about switching back to Novara and arch in a distrobox or going with bedrock Linux with arch and nobara as a daily driver

[-] cloudwanderer@lemmy.ml 1 points 1 year ago

I forgot one essential tool, where I need a recommendation for: spotlight. I use it to switch quickly between applications or to folders. Keyboard shortcut, first letter of the application name and enter... I know there are solutions, but I only heard from Ubuntu, which I don't want. Anything simple and fast you can recommend?

[-] mrXYZ@mas.to 2 points 1 year ago

@cloudwanderer rofi as a window switcher, in KDE default runner has window switching.

[-] cow@lemmy.world 2 points 1 year ago

Fuzzel is also nice if you are using Wayland.

[-] Drito@sh.itjust.works 1 points 1 year ago* (last edited 1 year ago)

About the status bar I want to suggest Tint2 because it is relatively easy to setup. You can create new widgets by writing an "executor" in bash. This is how I display the window name in my Tint2 panel.

execp_command = xdotool getwindowfocus getwindowname

There are more advanced executor examples here. https://github.com/IanLeCorbeau/tint2-executors/tree/master

The other suggestions are also nice, maybe more featured, but Tint2 was just less intimidating for me.

[-] cloudwanderer@lemmy.ml 1 points 1 year ago

That looks promising, especially since my current status bar is also just a collection of shell scripts, so that might be easier to switch

[-] amadeus@lemmy.zip 1 points 1 year ago

For remapping keys I used input-remapper when I came from macOS to Linux.

[-] cloudwanderer@lemmy.ml 2 points 1 year ago

Thanks! That looks exactly like what I was looking for. I hope it works as promising as it looks :)

[-] muddybulldog@mylemmy.win 0 points 1 year ago* (last edited 1 year ago)

Don’t have a solution for everything but did want to mention that brew is as viable for Linux as it is for MacOS, except for casks. I tend to use an Ubuntu or Debian base layer and then use brew to pull in all the packages that I know I will always want later and more diverse options than what’s available in the distro, e.g. ffmpeg, Python.

[-] rfy@lemm.ee 0 points 1 year ago

You may find yourself interested in suckless software, take a look here.

Its all written and configured with C, so it should be pretty fast. And there's dwm, their dynamic tiling window manager.

I guess the distro/package manager would be whatever you want, as suckless software encourages that you build from source and maintain your version of the software.

[-] Certainity45@lemmy.ml 4 points 1 year ago

No reaspn to use xorg anymore. So therefore, dwl is much better choice.

this post was submitted on 20 Aug 2023
70 points (98.6% liked)

Linux

48332 readers
606 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS