The Windows OS Thread - Formerly THE OS for gamers and normies, now sadly ruined by Pajeets

  • 🐕 I am attempting to get the site runnning as fast as possible. If you are experiencing slow page load times, please report it.
Guess who's learning something that should've been common knowledge long ago.
Find-WinGetPackage Microsoft.VCRedist. | ? ID -Match "(\.x86|x64)$" | Install-WinGetPackage
Thanks to PowerShell, winget and the winget module, you can install all VC redistributables with a single one-liner. You just pipe three commands together and it just works.

I really need to write a fresh install setup PowerShell script at some point, it really is powerful as shit once you wrap your head around it's object oriented structure. Get a list of all the essential software that I usually install on a fresh system, do any extra little tweaks and be done with it. Spend a little bit of time whipping one up, reuse it to save more time in the long run.

I've been using Win11 for a while now as it came pre-installed on my laptop, and after applying my usual tweaks, and just a few more Win11 specific ones like installing StartAllBack, I now have a good point of reference towards how bad Win11 actually is. It's just a bit more annoying than 10.

However, credit where credit's due, Win11 did some things right.
The Pajeets have unfucked a lot of 8/10's tablet oriented UI designs and made them more civilized. For example, the Settings app with it's WinUI3 look is now structured in a humane way instead of using some tablet tiles. Categories laid out on a list on the left, it's contents shown on the right. This is a very positive change, I like the new Settings a lot. The responsiveness of WinUI3 is another story but Microsoft's UI/UX designers had their head in the right place when they came up with it. I also prefer the new rounded gradient look over the Metro flatness, fight me. There needs to be a bigger push for gradients to come back in UI design.

The quick settings menu got separated from the notifications area, and both are pop-ups now. While I'm not a huge fan of joining the calendar with the notification area due to limited vertical space, at least on 150% scaling it's an issue, the new quick settings menu mimics smartphone shade quick settings, and that's a good thing, especially on a laptop. WiFi, cellular, Bluetooth, audio, screen brightness, battery, all in one compact spot. It's great, one of the best UI changes Win11 has made with it's attempt to refresh Win10's 2015 tablet leftovers.

That is not to say there are regressions. The taskbar and context menu have been beaten to death, so here are some of my own pet peeves based on my personal on-hands experience.

The removal of the pre-defined default programs for media viewing, web browsing et cetera. It was a good thing. You select your browser, it automatically associates it with all file types you'd care for it to support. Same with the image viewer, video player, audio player, mail client and so on. Now you basically have to set every file extension by yourself as Microsoft has removed this feature for no good reason. Unless they've buried it in there somewhere in a way where even I can't find it.

This one is very specific. If you have more than one keyboard layouts, Win+Spacebar will switch between them, and it will show a small pop-up telling you which layouts you're switching between. While the layout switch itself is still instantaneous in Win11, for some reason this pop-up now has a delay before it shows up while on 10 it was instant. A very small, but noticeable regression, and it's really odd given the fact that this pop-up is very snappy when invoked from the taskbar. It's impressive that the Jeets also half-ass fucking things up as well.

I'm yet to daily drive 11 on my desktop to have a proper perspective of how much worse it's performance is when it's not being restricted by a dynamically downclocking mobile AMD chip with a power saving plan active, so I'm not really gonna comment on that too much. Needless to say my laptop work so far hasn't been causing me issues and the battery life wouldn't be overly impressive no matter the OS since it's all x86 by the end of the day.

I'm sure there's a dozen of other issues that everyone using 11 is complaining about that I don't face as I tend to replace most of Microsoft's front facing parts with my own that work better for me, but from my personal perspective, Windows 11 is very much manageable. Though it is my perspective and I'm a fucking NT wizard at this point so this opinion is about as valuable to most like the opinion of a Gentoo user that managing Linux is piss easy.
 
Guess who's learning something that should've been common knowledge long ago.
Find-WinGetPackage Microsoft.VCRedist. | ? ID -Match "(\.x86|x64)$" | Install-WinGetPackage
Thanks to PowerShell, winget and the winget module, you can install all VC redistributables with a single one-liner. You just pipe three commands together and it just works.
A minor gotcha with Powershell is that for some unfathomable reason the default version of Powershell on W11 seems to not be 7.x. At least on mine it wasn't. Recent install as well. I was writing a multi-threaded Powershell script (yes, it can do multi-threading) and couldn't work out why it wouldn't work until finally I $PSVersionTable.PSVersion'd and found my environment was version 5. A quick WinGet install later and I could once again ForEach-Object -Parallel happily.

Just caught me off guard because 7 has been out for a few years now and it's easy not to notice but there's some nice stuff in v7.x

I really need to write a fresh install setup PowerShell script at some point, it really is powerful as shit once you wrap your head around it's object oriented structure. Get a list of all the essential software that I usually install on a fresh system, do any extra little tweaks and be done with it. Spend a little bit of time whipping one up, reuse it to save more time in the long run.
The object pipelining in Powershell is a great strength. It's something more suited to the Windows environment than *nix because Windows exposes every part of itself as objects whereas SystemD not withstanding, *nix not so much. So on Linux you get all that horrible text mangling as you glue disparate utilities together with awk etc. But even that aside, Powershell is vastly superior to Bash in so many ways.

If you want a fun trashfire, there was the time someone in the Linux thread said that Linux was superior because it had scripting and Windows didn't, so they could do things on Linux they couldn't on Windows. I naively and sincerely thought people would be interested in a comparison of Bash and Powershell in the Linux thread. It begins here
https://kiwifarms.net/threads/the-linux-thread.62944/page-306#post-17970662 and gets worse. I have people repeatedly offer "simpler" versions of the same task in Bash which don't actually work and in some cases I have to actually correct my critics' own Bash counter-examples so they work.

You don't even want to get started on Windows ACLs vs Linux.
 
Last edited:
I naively and sincerely thought people would be interested in a comparison of Bash and Powershell in the Linux thread.
Not to beat a dead horse but personally when bash isn't enough I just write Ruby scripts. This is after I got very into PS conceptually back when it was new, and the same bash&ruby scripts work with minimal tweaks on Windows (I use msys2).

It's not that I think PS is bad, it's just the niche where shell scripting's simplicity is not desirable but a full programming language is also not wanted seems very small to me, and mostly leans towards sysadmin or windows core mangling type tasks. Ruby is very pleasant to work with and makes calling down to system commands dead simple.

Bash is downright annoying for complicated tasks, but there is a class of tasks which would be difficult & verbose in any other language that it makes very easy to deal with.
 
  • Like
Reactions: Moist Boys
Not to beat a dead horse but personally when bash isn't enough I just write Ruby scripts. This is after I got very into PS conceptually back when it was new, and the same bash&ruby scripts work with minimal tweaks on Windows (I use msys2).
I've been using Bash for a very long time so I still typically use it when I'm on Linux but for me when it's not suitable I do the same as you but with Python. I've never used Ruby outside of looking stuff up for it in discussions. Any particular reason you favour Ruby? Or is it just the ease of porting between the two and interaction with msys2 (not used it).

It's not that I think PS is bad, it's just the niche where shell scripting's simplicity is not desirable but a full programming language is also not wanted seems very small to me, and mostly leans towards sysadmin or windows core mangling type tasks. Ruby is very pleasant to work with and makes calling down to system commands dead simple.
Well, I'm not disagreeing. But I think the niche is an important one. And my point is that Powershell can cover a wider niche than most (I'm comparing to Bash not Ruby though - Ruby might be as capable for all I know). When I say wider than most I say that because Powershell has a lot of things that most older scripting languages do not. I'll give an example. The other week I wanted to fire off a task in a multi-threaded way. I could do that in Powershell. I could also do it in Python (slightly more clunkily, honestly). I couldn't do it in Bash (again, I don't know about Ruby).

The niche for scripting that you talk about is when you want to orchestrate tasks more so than perform them. If I want to convert a video between two formats, I write a program to do that in a programming language. If I want to orchestrate the conversion of many videos between two formats, I will probably do that with a script. Manage updates on an array of remote systems, deploy configurations for software, gather information on a directory structure. Anything where the performance bottleneck is the task itself rather than managing the task, I use scripts and they in turn use the actual programs.

Powershell is excellent for that because the object pipelining lets me associate tasks in ways I couldn't with Bash's text-mangling, I can do multi-threading in a shockingly easy way and it has things like Exception Handling which people think of as being more of a programming language thing but are actually very helpful in scripting.

Again, none of this to dispute with you about Ruby which I confess I've never used beyond looking at it. But I'm a big fan of Powershell. I'm finding it more and more useful, these days.

Love me Windows.
Love me Powershell,
Hate Microsoft. Simple as.



Bash is downright annoying for complicated tasks, but there is a class of tasks which would be difficult & verbose in any other language that it makes very easy to deal with.
You mean a class of tasks outside of scripting languages in general or that specifically Bash is more suited for than other scripting languages?
 
Last edited:
Any particular reason you favour Ruby?

Python is fine I guess but Ruby was originally intended as a scripting language and became a more general purpose language over time. There's things like ARGV being a global object rather than needing to parse args manually. It also makes it easier to parse out text files, less boilerplate for that, and the blocks pattern feels a lot more natural than lambdas for adding quick filters or whatever.
You mean a class of tasks outside of scripting languages in general or that specifically Bash is more suited for than other scripting languages?
Just as an example this is a script I wrote a little while ago to rename files of a certain pattern:

Code:
find . -type f | grep -E '[A-Z0-9]+-[0-9]+[A-Z]+-[0-9]+' | while read -r file; do
    new_file=$(echo "$file" | sed -r 's/([A-Z]+-[0-9]+)([A-Z]+-[0-9]+)/[\1][\2]/')
    mv -n "$file" "$new_file"
done

It's terse but doing it in other languages feels a lot more complicated.
 
Python is fine I guess but Ruby was originally intended as a scripting language and became a more general purpose language over time. There's things like ARGV being a global object rather than needing to parse args manually. It also makes it easier to parse out text files, less boilerplate for that, and the blocks pattern feels a lot more natural than lambdas for adding quick filters or whatever.
Interesting. I hear you about the Python. I only break it out in more extreme cases because it feels a little overkill for most scripting I would do but maybe I would feel differently about Ruby. Sounds as though it might have less of that roadbump I feel when transitioning from scripting with Bash to using Python. Best way I could describe the feeling.

Just as an example this is a script I wrote a little while ago to rename files of a certain pattern:

Code:
find . -type f | grep -E '[A-Z0-9]+-[0-9]+[A-Z]+-[0-9]+' | while read -r file; do
    new_file=$(echo "$file" | sed -r 's/([A-Z]+-[0-9]+)([A-Z]+-[0-9]+)/[\1][\2]/')
    mv -n "$file" "$new_file"
done

It's terse but doing it in other languages feels a lot more complicated.
I'm kind of curious as to what on Earth you are doing that requires that change. I don't recognise it as any kind of file name pattern I know.

That last comment of yours makes me itch to produce the Powershell equivalent but I know you already know Powershell and I also don't want poor @teriyakiburns to wear out his Disagree button every time I compare Bash with Powershell so perhaps I should restrain myself. :D

EDIT: I couldn't restrain myself. I'm sorry, I enjoy this sort of stuff too much. I think the equivalent to your Bash one is as follows, please correct me if I misread anything.

Code:
Get-ChildItem -Attributes !Directory . | 
   Where-Object { $_.Name -match '^[0-9A-Z]+-[0-9]+[A-Z]+-[0-9]+'} | 
   Rename-Item -NewName { $_.Name -replace '([A-Z]+-[0-9]+)([A-Z]+-[0-9]+)', '[$1][$2]' }
 
Last edited:
My biggest objection to shell scripting is that nobody can ever seem to PICK A SHELL and they're all mutually incompatible just enough of the time for it to matter.
 
My biggest objection to shell scripting is that nobody can ever seem to PICK A SHELL and they're all mutually incompatible just enough of the time for it to matter.
You can write directly to the POSIX standard and it will work across all shells.

Personally I prefer to just only use bash, don't care that it's dated.
 
  • Like
Reactions: Nitro!
My biggest objection to shell scripting is that nobody can ever seem to PICK A SHELL and they're all mutually incompatible just enough of the time for it to matter.
Just target /bin/sh and you're good. If it's not POSIX-compliant on someone's system, it's their problem. Or bash, because it's ubiquitous and if someone uses something else, they might as well deal with porting.
Honestly, I've never randomly encountered any scripts that weren't either of these, unless it's something shell-specific, in which case, duh.
 
  • Like
Reactions: Samuel Fuller
Just target /bin/sh and you're good. If it's not POSIX-compliant on someone's system, it's their problem. Or bash, because it's ubiquitous and if someone uses something else, they might as well deal with porting.
Honestly, I've never randomly encountered any scripts that weren't either of these, unless it's something shell-specific, in which case, duh.
You've never had the misfortune of encountering zsh on a Mac environment then. Someone's bright idea to further complicate things improve on Bash.

But yeah, in general I just encounter Bash or Powershell. Some Docker container environments are non-Bash for size. And I can't remember the last time I encountered ksh in the wild. I'm probably showing my age just mentioning it.

My biggest objection to shell scripting is that nobody can ever seem to PICK A SHELL and they're all mutually incompatible just enough of the time for it to matter.
That's partly a factor of different environments. Might as well use the example to hand, here's @Baraka Obama 's Bash script and here's a version I just wrote in Powershell (fairly sure it does the same but Baraka correct me if I've misread his script).

Code:
find . -type f | grep -E '[A-Z0-9]+-[0-9]+[A-Z]+-[0-9]+' | while read -r file; do
    new_file=$(echo "$file" | sed -r 's/([A-Z]+-[0-9]+)([A-Z]+-[0-9]+)/[\1][\2]/')
    mv -n "$file" "$new_file"
done

Code:
Get-ChildItem -Attributes !Directory . |
   Where-Object { $_.Name -match '^[0-9A-Z]+-[0-9]+[A-Z]+-[0-9]+'} |
   Rename-Item -NewName { $_.Name -replace '([A-Z]+-[0-9]+)([A-Z]+-[0-9]+)', '[$1][$2]' }

The difference isn't simply one of syntax and people not being able to pick a shell. They reflect their different environments and work in fundamentally different ways. The Bash one you can see is retrieving text output from one executable, storing it in its own variables as it reads the output line by line and then passing that text on as input to further commands. The Powershell one is forwarding objects. And arrays of objects. That's why Where-Object can operate on the name property of the passed in file objects without the preceding command having to specify that as part of its output. You could base it on any property of the file such as lastUpdated, path, hidden or readonly status, whatever. Whereas with the textual approach the preceding command needs awareness of how its output will be used to ensure that the required information is included in the text output sent down the pipe.

Windows is a lot more object based than *nix so a different fundamental approach is appropriate.

On the Bash side, I well respect that people would want to come up with something else but it is still widely embedded in the ecosystem in uncountable ways. Shifting to some sort of replacement (like Ruby becoming the standard) is going to take forever.
 
But yeah, in general I just encounter Bash or Powershell. Some Docker container environments are non-Bash for size. And I can't remember the last time I encountered ksh in the wild. I'm probably showing my age just mentioning it.
Speak for yourself, I have just recently been dealing with people writing new ksh scripts and finding out they're incompatible with csh. Solution: just have the ksh script spawn a new csh shell to run the rest of the script! :sighduck:
You can write everything to the POSIX subset or to Bash (or port everything to one shell and stick with it), but nobody does. So I want to take everyone's toys away.

Powershell I have no problem with, it's cool.
 
  • Horrifying
Reactions: Overly Serious
It's really weird booting Windows IoT and seeing that it has almost nothing installed
It was the greatest breath of fresh air I've experienced. On a regular Windows install, I would have to deal with a shit ton of crap flying straight into my face and getting in the way on the first bootup.
What's even weirder is installing Windows 7 and realizing how good Windows used to be compared to now.
Agreed. I actually reinstalled it recently before doing an install of Windows 10 and the experience was very clean. When the setup was complete, I was dropped straight into the desktop without any useless bullshit bugging me.
 
What's even weirder is installing Windows 7 and realizing how good Windows used to be compared to now.
honestly I'd love to stay with Windows 7, but everything is dropping support for it and it's slowly becoming more and more of a hassle to use. I use Linux Mint as my main OS and it's the closest thing to Windows 7 that actually supports the latest software.

I'm only running Windows because I may or may not give this laptop to my mom and I wanted it prepared.
 
I don't get people that use the preinstalled Windows programs instead of installing third party shit like everyone used to back in the day. Thunderbird/Betterbird > Outlook, IrfanView/XnView > Photos, VLC/MPC-HC/foobar2000 > WMP, Notepad++ > Notepad, any other browser > Edge, 7-zip > Explorer's archive handling, Ditto > Explorer's cliboard history, ShareX > Snipping Tool, Total Commander > Explorer, the list goes on.

If people bothered to use good alternatives that existed for decades instead of settling for the crap that comes preinstalled with Windows they'd have way less complaints about it.
>b-but only loonixtroons do that winblows is meant to just werk out of the box
People installed third party software on Windows back when Torvalds was still fucking around in his dorm room, and even before he decided to write a Unix clone when everyone used MS-DOS. Anyone who thinks installing third party software on Windows is wrong because first party software should be good is retarded, no matter if you're a Winjeet or a Troonix fanboy.

So don't be a retard and install software that works for you the best. That's the entire point of an operating system, it's meant to run software that works for you and lets you do your work well.
 
Thunderbird/Betterbird > Outlook, IrfanView/XnView > Photos, VLC/MPC-HC/foobar2000 > WMP, Notepad++ > Notepad, any other browser > Edge, 7-zip > Explorer's archive handling, Ditto > Explorer's cliboard history, ShareX > Snipping Tool, Total Commander > Explorer, the list goes on.
Because the Microsoft options are, or at least used to be, good enough, and it's not worth the effort to go find a replacement for something that isn't a pain point. And until New Outlook, Outlook was way better than Thunderbird. I hate everything about Thunderbird. Without exaggeration, there is not a single thing this program does that I like, and I use it every day. I used Outlook before the pajeets broke it and overwhelmingly prefer it.
 
Back