The Linux Thread - The Autist's OS of Choice

  • 🐕 I am attempting to get the site runnning as fast as possible. If you are experiencing slow page load times, please report it.
Don't expect to be going back to Windows again ever then. Because it's only downhill from here.
Don't worry, I am aware. One look at the Windows 11 trailer was enough for me to never look back at Windows. Doing stuff on it at my workplace is no fun and makes me glad I switched early.
Thankfully my needs are met nicely with Linux (especially the fantastic KDE tools) and honestly its better then modern Windows, it is the right tool for the job for me. I'm still not a huge fan of Unix stuff but I am also aware that I used Windows for much longer then I have used Linux for, so I am probably still more used to Windows. Although I find Windows harder and harder to use by the year at this point.
 
Don't worry, I am aware. One look at the Windows 11 trailer was enough for me to never look back at Windows. Doing stuff on it at my workplace is no fun and makes me glad I switched early.
Thankfully my needs are met nicely with Linux (especially the fantastic KDE tools) and honestly its better then modern Windows, it is the right tool for the job for me. I'm still not a huge fan of Unix stuff but I am also aware that I used Windows for much longer then I have used Linux for, so I am probably still more used to Windows. Although I find Windows harder and harder to use by the year at this point.
I get you don't want to learn about things you think are unnecessary. But learning how the underlying stuff works. I'm not even talking about writing bash scripts, or moving to a window manager. Just learning the basics of how unix, specifically linux does things. Makes using it a lot easier. There really isn't much I can think of, where that wouldn't end up being a pretty big benefit at some point. And make linux a more effective tool.

i know just learning things like the xdg directory specification, and what the directories are generally for makes finding things on the system a lot easier, and actually makes a lot more sense than how things are done on windows. Especially when you know that on linux, everything is a file. Being able to use some kind of terminal editor, and do basic things like move between directories, copy move, and delete files. if for some reason you can't get into a gui, to avoid having to just reinstall your system if something goes wrong.
 
  • Like
Reactions: YoRHa No. 2 Type B
These days, there's no real reason not to use NM, even if you don't need all its functionality, like on a Desktop solely using Ethernet. Its basically expected at this point as a Linux standard (which is a good thing). Other stuff still exists but configuring networking manually was something I never want to do again after doing it on BSD systems.
On a desktop I will just have interfaces.d set up to do the normal thing- bring up the ethernet interface with DHCP, which then just launches dhclient to pull down a (coincidentally static) address for the LAN. No need for NM. I don't bother to get rid of NM. But everything just works without thinking which is nice.
 
I get you don't want to learn about things you think are unnecessary. But learning how the underlying stuff works. I'm not even talking about writing bash scripts, or moving to a window manager. Just learning the basics of how unix, specifically linux does things. Makes using it a lot easier. There really isn't much I can think of, where that wouldn't end up being a pretty big benefit at some point. And make linux a more effective tool.
I've already been through a Gentoo + bspwm optimisation phase, which really did help a lot to get me to understand some basic Unix/Linux concepts. Probably a lot further then most are willing to go. But these days I just want something practical, so a vanilla KDE setup (funnily enough its set up just like Windows) is the best for me.
A lot of stuff that took me a while to grasp include stuff like "everything is a file", but I have mostly gotten used to it since switching full time in 2021. I am quite a bit more efficient on Linux these days then Windows.
Being able to use some kind of terminal editor
Funnily enough, learning the terminal on Linux actually helped me out a lot on Windows, as I was actually able to use a bit of PowerShell (which is lovely to use aside from the weird syntax) to make my life easier.
 
didn't even notice, but I'm not constantly changing loads of packages.
it's like the booting times meme, if it takes longer it just means I can enjoy my coffee more ¯\_(ツ)_/¯
Maybe it's a huge problem for me only now because currently I keep setting up and knocking down my SUSE installs to properly figure out how they work.
 
Last edited:
I would still use Windows, but Microsoft has shit it up so much that Linux is the best choice for me at this point.
Yeah it's a travesty really. I daily Win10 and I have Win11 on my laptop and they don't get in my way, at all. Thing is, when I start off fresh, I need to go through multiple hoops to trim down all the annoying and unnecessary bullshit Microsoft puts on top of what's still a solid NT base. Disable mouse acceleration, run WinUtil, run WinAero Tweaker, do some extra manual tweaking like disabling animations, setting Registry tweaks, installing software like Windhawk and so on. I had to do a bit of extra work on Win11 as well due to them fucking up the taskbar and adding the new shitty right click menu, after that I basically got fancier Win10.

I forgot how nice Windows used to be OOTB until I installed Win7 on my old PC recently for a test. And the only reason I still put up with this shit is because all of the software that I rely on is Windows based and unfucking 10/11 takes me less effort than trying to fully move to Linux.

Say what you want about Ballmer, but under his tenure we got both Windows XP and Windows 7. Windows 10 and 11 are all the result of Satya Nadella.
Funnily enough, learning the terminal on Linux actually helped me out a lot on Windows, as I was actually able to use a bit of PowerShell (which is lovely to use aside from the weird syntax) to make my life easier.
IMO PowerShell is great and Bash purists hate it because it's Microsoft. It's object oriented scripting is actually very neat once you get the hang of the basic aspects. Thing is, you don't want to use PS as a shell to send one-liners from memory, you want to use it as a scripting language first and foremost. That's when it's at it's best and it's Verb-Noun ceases to be an issue.

For example, a small excerpt of my profile.ps1: Get-NetIPAddress -InterfaceIndex (Get-NetAdapter -Physical | % ifIndex) | ? AddressFamily -eq "IPv4" | % IPAddress

This is meant to pull the local IPv4 address of the network interface. Sure, Bash purists will scoff that it's oh so long therefore bad, but it's actually very fast and it will always pull the IPv4 address of your physical net adapter, where you'll most likely only have one of that'll have an IPv4 address, and no formatting change can break the RegEx that pulls it because there are no hacky RegEx pulls. PS pulls all the necessary data as an object on which you then operate and this practically never changes, you can reuse this code on other machines.

I also used PowerShell to rewrite my yt-dlp CLI menu so that I can add, edit and remove menus/positions from a JSON file instead of having to do hacky manual Batch edits. I don't have to touch the script to edit the menus, I just edit the separate JSON file and it just works, the script parses the entry names and commands from it, sends them to yt-dlp and I can quickyl download something with a few keystrokes. The underlying code is a bit of a mess as I left it half-finished during a rewrite but it works and it's really neat. Couldn't be able to do the same with Batch or Bash.

Good news is that with the release of PowerShell 7 it's now multi-platform, so you can write scripts in PowerShell on Linux as well. I like PowerShell. PowerShell's nice. Just because the code is long doesn't mean it's not performant. But I guess being able to crash your system with thirteen characters makes Bash superior since Linux users don't enjoy having working systems.
 
I used to like PowerShell, the object stuff is nice but it's so wordy, and ultimately shell scripts have done well with passing around and manipulating bits of strings for a long time.

For Windows I'd rather set up msys2 and add some special cases for normal shell scripts I use elsewhere.

BTW I know writing shell can be painful but it's a pretty good use case for just having ChatGPT write the whole thing for you. Generally there's limited scope so the LLM tends to not fuck up the result much.

Typically I have some common operation like an ffmpeg command (which LLMs are also really good at putting together) that involves an ugly one liner and I have ChatGPT dress that into a shell script with inputs handled sanely and operating on multiple input files via wildcards done properly.

For example:
Couldn't be able to do the same with Batch or Bash.
prompt
> show an example of parsing a json config file in bash shell script, use the results to put together an interactive menu that passes into yt-dlp

Output:
Here's a complete example of how to parse a JSON config file in a Bash script using jq, then use the parsed values to build an interactive menu for downloading videos with yt-dlp.

Example config.json
JSON:
{
  "presets": [
    {
      "name": "Best Audio",
      "options": ["-f", "bestaudio", "--extract-audio", "--audio-format", "mp3"]
    },
    {
      "name": "Best Video",
      "options": ["-f", "best"]
    },
    {
      "name": "Custom Format",
      "options": ["-f", "bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4"]
    }
  ]
}

Bash Script: yt-menu.sh
Bash:
#!/bin/bash

CONFIG_FILE="config.json"

# Check for jq
if ! command -v jq &>/dev/null; then
  echo "jq is required. Please install it first."
  exit 1
fi

# Check for yt-dlp
if ! command -v yt-dlp &>/dev/null; then
  echo "yt-dlp is required. Please install it first."
  exit 1
fi

# Load preset names into a menu
preset_names=($(jq -r '.presets[].name' "$CONFIG_FILE"))

echo "Choose a preset:"
select preset in "${preset_names[@]}"; do
  if [[ -n "$preset" ]]; then
    break
  else
    echo "Invalid choice, try again."
  fi
done

# Extract options for selected preset
index=$(jq --arg name "$preset" '.presets | map(.name) | index($name)' "$CONFIG_FILE")
options=($(jq -r ".presets[$index].options[]" "$CONFIG_FILE"))

# Prompt for URL
read -p "Enter the URL to download: " url

# Combine command and run
echo "Running: yt-dlp ${options[*]} \"$url\""
yt-dlp "${options[@]}" "$url"

Usage
Bash:
chmod +x yt-menu.sh
./yt-menu.sh

You'll see something like:
Bash:
Choose a preset:
1) Best Audio
2) Best Video
3) Custom Format
#? 1
Enter the URL to download: https://www.youtube.com/watch?v=dQw4w9WgXcQ
Running: yt-dlp -f bestaudio --extract-audio --audio-format mp3 "https://www.youtube.com/watch?v=dQw4w9WgXcQ"



I didn't even know off the top of my head that jq was an option or that it would be that easy to parse out json with it. Also I didn't run this and have no idea if it works but probably.
 
So, an external dependency. PowerShell relies on it's own methods so you won't run into issues that a script won't work on another machine because it misses a dependency that you'd then have to install just for the script to work. This is why PowerShell is very handy for sysadmins as they can write a single script, run it on any machine and it will behave the same way as long as it has PowerShell 7, which is a single dependency. Also, my menu is nested and relies on a single JSON for all positions, but I can use an LLM too so don't bother. And stop using this video link, I recognize that ID instantly.

Personally, I've been trying to rely on as little dependencies as possible whenever I do something. The Unix philosophy is outdated. It made sense back in the 70's when computers were simple so a handful of separate dependencies working together was a good design, but nowadays they're so complex that a single dependency doing multiple things well enough is the better choice.
 
"Do one thing and do it well" is never going to be outdated as a principle, no matter how many jack-of-all-trades tools exist.
The "do it well" part is the problem. And didn't an entire development system implode because a developer pulled a program for left aligning text because he was forced to pull an app because kik wanted the name?
 
The "do it well" part is the problem. And didn't an entire development system implode because a developer pulled a program for left aligning text because he was forced to pull an app because kik wanted the name?
That was an npm lib. npm being shit is not an argument.
 
"Do one thing and do it well" is never going to be outdated as a principle, no matter how many jack-of-all-trades tools exist.
And "keep it simple stupid" will always be the superior principle. Needing multiple unrelated packages to accomplish the same task a single package can do is the antithesis of the KISS principle.
npm being shit is not an argument
And xz is not an argument because...?
 
I forgot how nice Windows used to be OOTB until I installed Win7 on my old PC recently for a test.

Say what you want about Ballmer, but under his tenure we got both Windows XP and Windows 7. Windows 10 and 11 are all the result of Satya Nadella.
Indeed. I used to run Windows 7, and had a Zune! *sigh*
 
Good news is that with the release of PowerShell 7 it's now multi-platform, so you can write scripts in PowerShell on Linux as well. I like PowerShell. PowerShell's nice. Just because the code is long doesn't mean it's not performant. But I guess being able to crash your system with thirteen characters makes Bash superior since Linux users don't enjoy having working systems.

I love PowerShell as well but God damn did Microsoft fuck it up with their stupid migration from 5.1 to 7+ and almost pulled a Python 2 to Python 3 fiasco in the process. Worse yet, is how in M365/Azure they are pushing you to move away from PowerShell to use their gay Graph API calls instead.

I swear, Microsoft has a good thing going and they can't help but fuck it up at times.
 
The Unix philosophy is outdated
It doesn't have to be, but I would rather a huge monolithic program that does 1000 things that sucks vs 1000 programs that do one thing but all suck (such is the case on 100% of modern Unix systems). Especially with how bad programmers seem to be compared to the time around Unix's conception.
I wish the 2 choices for OS's these days weren't:
-A fantastic OS ruined by a terrible company (Windows NT)
-An outdated piece of shit that is only popular because "open source" or some meme (Unix/Unix Likes)
 
Ok this is weird. I am a thrift store keyboard/joystick/wifi device aficianado. I collect routers and install openwrt on them etc.

My current gaming keyboard I have had for about a month. But I had either an emf or driver issue with the mobo and it was restarting usb related services. And I found this;

pr 21 17:08:17 nobara-pc audit: BPF prog-id=90 op=UNLOAD
Apr 21 17:08:18 nobara-pc kernel: usb 1-12: new full-speed USB device number 8 using xhci_hcd
Apr 21 17:08:18 nobara-pc kernel: usb 1-12: New USB device found, idVendor=0c45, idProduct=6510, bcdDevice= 1.00
Apr 21 17:08:18 nobara-pc kernel: usb 1-12: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Apr 21 17:08:18 nobara-pc kernel: usb 1-12: Product: USB DEVICE
Apr 21 17:08:18 nobara-pc kernel: usb 1-12: Manufacturer: SONiX
Apr 21 17:08:18 nobara-pc kernel: input: SONiX USB DEVICE as /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:10:00.0/usb1/1-12/1-12:1.0/0003:0C45:6510.0008/input/input27
Apr 21 17:08:18 nobara-pc kernel: hid-generic 0003:0C45:6510.0008: input,hidraw3: USB HID v1.11 Keyboard [SONiX USB DEVICE] on usb-0000:10:00.0-12/input0
Apr 21 17:08:18 nobara-pc kernel: input: SONiX USB DEVICE Keyboard as /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:10:00.0/usb1/1-12/1-12:1.1/0003:0C45:6510.0009/input/input28
Apr 21 17:08:18 nobara-pc kernel: input: SONiX USB DEVICE Wireless Radio Control as /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:10:00.0/usb1/1-12/1-12:1.1/0003:0C45:6510.0009/input/input29
Apr 21 17:08:18 nobara-pc kernel: input: SONiX USB DEVICE as /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:10:00.0/usb1/1-12/1-12:1.1/0003:0C45:6510.0009/input/input30
Apr 21 17:08:18 nobara-pc kernel: hid-generic 0003:0C45:6510.0009: input,hiddev98,hidraw4: USB HID v1.11 Keyboard [SONiX USB DEVICE] on usb-0000:10:00.0-12/input1
Apr 21 17:08:18 nobara-pc mtp-probe[5453]: checking bus 1, device 8: "/sys/devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:10:00.0/usb1/1-12"
Apr 21 17:08:18 nobara-pc mtp-probe[5453]: bus: 1, device: 8 was not an MTP device
Apr 21 17:08:18 nobara-pc systemd-logind[1319]: Watching system buttons on /dev/input/event6 (SONiX USB DEVICE Keyboard)
Apr 21 17:08:18 nobara-pc systemd-logind[1319]: Watching system buttons on /dev/input/event5 (SONiX USB DEVICE)
Apr 21 17:08:18 nobara-pc mtp-probe[5484]: checking bus 1, device 8: "/sys/devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:10:00.0/usb1/1-12"
Apr 21 17:08:18 nobara-pc mtp-probe[5484]: bus: 1, device: 8 was not an MTP device


Note the following;

Wireless Radio Control as /devi

...

So what's up with that? It's a really heavy keyboard. The brand on the label is Ombar ' Ombar blue switch keyboard'

The most likely thing is the PCI device registry has a duplicate entry and this is wrong. There is no radial button or anything like a volume control. It's wired, so no need for radio. Unless maybe it is supposed to come with a wireless mouse?
 
“unix philosophy” is philosophy for which unix is entirely unsuited for as it’s ability to compose functions(programs are just functions but retarded) is utter garbage due to it relying on text. Want to process any structure more complex than a list? Forget it. Want to have guarantees that list of numbers that you have sent to another program will be treated in appropriate manner to their type? impossible! Want to have non linear dara flow? Gl fucking with pipes. In order for such philosophy to be applicable there needs to be standardized protocol for passing and describing data ie type system(preferably at least as power-full as haskells) and come kind of function composition be it pipes, channels, map, reduce etc. It is not coincidental that no serious program follows it, choosing instead to rely on language dependent libraries.
 
Back