edit: hey guys, 60+ comments, can't reply from now on, but know that I am grateful for your comments, keep the convo going. Thank you to the y'all people who gave unbiased answers and thanks also to those who told me about Waydroid
and Docker
edit: Well, now that's sobering, apparently I can do most of these things on Windows with ease too. I won't be switching back to Windows anytime soon, but it appears that my friend was right. I am getting FOMO Fear of missing out right now.
I do need these apps right now, but there are some apps on Windows for which we don't have a great replacement
- Adobe
- MS word (yeah, I don't like Libre and most of Libre Suit) it's not as good as MS suite, of c, but it's really bad.
- Games ( a big one although steam is helping bridge the gap)
- Many torrented apps, most of these are Windows specific and thus I won't have any luck installing them on Linux.
- Apparently windows is allowing their users to use some Android apps?
Torrented apps would be my biggest concern, I mean, these are Windows specific, how can I run them on Linux? Seriously, I want to know how. Can wine run most of the apps without error? I am thinking of torrenting some educational software made for Windows.
Let me list the customizations I have done with my xfce desktop and you tell me if I can do that on Windows.
I told my friend that I can't leave linux because of all the customization I have done and he said, you just don't like to accept that Windows can do that too. Yeah, because I think it can't do some of it (and I like Linux better)
But yeah, let's give the devil it's due, can I do these things on Windows?
- I have applications which launch from terminal eg:
vlc
would open vlc (no questions asked, no other stuff needed, just type vlc) - Bash scripts which updates my system (not completely, snaps and flatpaks seem to be immune to this). I am pretty sure you can't do this on Windows.
- I can basically automate most of my tasks and it has a good integration with my apps.
- I can create desktop launchers.
- Not update my system, I love to update because my updates aren't usually 4 freaking GB and the largest update I have seen has been 200-300 mbs, probably less but yeah, I was free to not update my PC if I so choose. Can you do this on Windows? And also, Linux updates fail less often, I mean, it might break your system, but the thing won't stop in the middle and say "Bye Bye, updates failed" and now you have to waste 4GB again to download the update. PS: You should always keep your apps upto date mostly for security reasons, but Linux won't force it on you and ruin your workflow.
- Create custom panel plugin.
- My understanding is that the Windows terminal sucks? I don't know why, it just looks bad.
I am sure as hell there are more but this is at the top of my mind rn, can I do this on Windows. Also, give me something that you personally do on Linux but can't do it on Windows.
- boot from a btrfs snapshot
- run docker without running a second kernel
- boot an older kernel, in case something fails
- run the system completely without a gui, to save video RAM for other tasks
- distro hopping
- use multiple desktop environments
- use your computer without a mouse
- create a directory named CON
- use old hardware painlessly
- have your system not spy on you without extra effort
- create weird stacks of software raid, volume manager, disk encryption and filesystems and then boot from it
- read the kernel developer mailing list and be hyped for new kernel features like bcachefs, which will hopefully come someday
I can declare the complete state of my systems in a config file that I store on sourcehut with git and pull down to have a fully configured system on new hardware whenever I want it.
I can use tiling window managers.
I can work with native containers easily.
I can run an operating system that is designed to be the most useful tool it can be, not the most profitable product it can be.
Getting a C/C++ compiler on Windows is a menace. To my knowledge, there are two ways to do it. Either install Visual Studio which will also install the MSVC compiler, or wrangle with MinGW to get GCC.
In the first-year CS classes I attended, the instructions were usually to either get WSL and install the
gcc
package or to connect using SSH to the engineering server (CentOS 7) which has it pre-installed.Lmao my university also uses centos 7 for their ancient-ass SSH server. Even the professors just told us to use a VM because they didn’t want to use an old version of clang anymore.
First time i saw that i went mad, why the fuck i need to download 6gb to compile a cpp module, on linux gcc is only a few mb.
Yeah gcc and mingw took ages back when I learned cpp a few years ago. This was back in high school when I barely knew what Linux was, so it never occurred to me that I could do that. Eventually gave up on setting it up in VScode and used codeblocks and spent the semester dealing with that GUI.
Cygwin is great too! You can have a fully POSIX-compliant environment on Windows, no virtualization or anything needed. You can even distribute programs to other Windows users linked to their POSIX compatibility layer library.
Wrong
My printer "just works"
On all computers and phones in my home
Soon with Plasma 6 and Wayland, you can let your Desktop crash but still keep all your Windows after the new Desktop spawned. This also means you can replace your KDE desktop with Gnome, XFCE Hyprland and some others whithout needing to logout or close applications.
Additionally you can save current states of the application with Wayland. Shit is getting so interesting right now.
Source: https://m.youtube.com/watch?si=sAlIcn5meSCDKq3K&v=jlDhpFjBWiw
- Have a really good keyboard-driven desktop environment.
- Many good options for tiling desktop environments.
- Extremely good logging, enabling you to diagnose most problems.
- package manager-first approach: I don't want to manage package installations, routine updates, and dependency resolution myself. Package managers do the work for me
- extreme customizability: I choose which kernel features are turned on or off, and compile them. For example, I can compile in PS4 controller drivers
- first class support for the terminal and terminal-driven workflow
- Enhanced security system: being able to sandbox apps easily, for example.
- Enhanced transparency into the system: can easily get into the weeds of seeing why my Internet is not working.
With logging, one thing I deal with at an MSP is BSODs. Maybe I'm just not experienced enough, but it feels like the event logs in Windows only help if it's something obvious like a poorly written or buggy application. If it's a driver issue they just are near useless. I usually end up downloading WinDbg (which has such an archaic UI on Windows 11) and read the minidumps, and it's like a 75% chance it's helpful.
In the meantime on *nix, yeah there's literally logs for just about everything if you look in the right places.
-
sudo dd if=never_gonna_give_you_up.mp3 of=/dev/sda
-
Say "It's a UNIX system! I know this."
-
Make your capslock LED blink along with network activity using a built-in kernel driver
-
Fix bugs yourself
-
Client or server?
The client should be available out of the box. The server should be available as a feature that you can toggle on.
Easily add libraries to my C and C++ Projects without f'cking around in visual studio
I didn't realise this was hard. It's been a hot minute since I added a library, but I'm pretty sure I just clicked the libraries tab, typed the library name into the search bar, and clicked add to project.
It's more effort than installing the library and appending -llibname or adding it in Meson. The best way on Windows I found was just to build with MSYS2
unlink
Specifically the operation of removing a file from a path without requiring the file to be unused. Open references to the file can still exist by processes.
- adjust the drift speed of a thinkpad trackpoint
- stream audio from one computer to another one (or a phone) with ease (thanks pulseaudio)
btw 1 is literally impossible, there's no gui driver setting, there's no regedit switch, no nothing. on linux you just need to write to this file /sys/devices/platform/i8042/serio1/serio2/drift_time