Direct Win32 API, Weird-Shaped Windows, and Why They Mostly Disappeared
Posted by nccwarp9@reddit | programming | View on Reddit | 168 comments
Posted by nccwarp9@reddit | programming | View on Reddit | 168 comments
Longjumping_Feed3270@reddit
I hate that everything is electron nowadays and yes - memory efficiency seems to be a lost art.
But fuck me, I'm glad these weird shaped abominations are gone.
stumblinbear@reddit
At my work, we've been rewriting our electron app in Flutter
2GB peak memory usage... Down to 200MB. Idle on electron is around 7-800, and... 50MB on flutter
Why don't more people just use Flutter
Most_Engineering_380@reddit
Native apps are so much better. Avalonia with c# is great for that too
GregTheMad@reddit
Nah, fuck avalonia. I'm not paying for a UI framework, especially not one that takes 50mb and 20dlls for a simple hello world program
wpm@reddit
They don't teach Flutter at the dev boot camps.
gimpwiz@reddit
Are dev boot camps still in business?
GregTheMad@reddit
Sadly yes, at my job they're an immediate rejection of an application.
Programmdude@reddit
Now, going from react native to flutter has been a great move. Flutter has some great features, and is (well, dart) much more like a real programming language. React native was simply a terrible experience all around, whereas for the most part, flutter has just worked.
But it's not all roses, the issues above are ones we've personally experienced moving to flutter. Is it worth the tradeoff? I think so. But there are definitely some pain points.
stumblinbear@reddit
Embedded browsers? You mean webviews? We use those to display ads. They work fine, though we had to tweak the plugin for our specific case
I'm not against opinionated formatting, though I do wish it split things to multiple lines more often when doing functional things. It's fine overall
bphilly_cheesesteak@reddit
I use this package for embedded browser on macOS, Windows, and Android: https://pub.dev/packages/flutter_inappwebview
buck_silver@reddit
For a hot minute there flutter looked like it might be dead on arrival. People were rightfully concerned to get in bed with a Google project that may get axed at the drop of a hat again. Flutter is really finding itself though. I know multiple people choosing it for new projects, and they only have good things to say about it.
lotgd-archivist@reddit
It would even be a start if frontend devs (web or electron) would be more mindful of how much memory they make the browser allocate.
I have a project using server-side rendering with minimal additional JS. Firefox reports 2.58mb of allocated memory on the initial page.
Another project I help maintain has a localhost webUI (since we run a webserver anyway) and that sadly needs to be highly dynamic so it's a single-page application. 7 mb on the most complicated view.
https://discord.com/channels/@me-> 200mb.FWitU@reddit
Yeah Claude should make this better. Prototype on web and finalize on nativr
Dwedit@reddit
I'm one of the few guys who still writes Win32 code. My way of doing things is to wait until it's actually necessary before you bring in the big dependencies. I even exclude the CRT unless I need it.
BujuArena@reddit
Instantly recognized your name. Did you make the Dragon Warrior randomizer?
Dwedit@reddit
No, I didn't make the Dragon Warrior Randomizer, that was McGrew. But I did make a level editor for Dragon Warrior 1 way back around 1999.
For some reason I am in the credits for Dragon Warrior Randomizer, and I'm not really sure why.
MacASM@reddit
What language are you using? I wish I could use more C and WIN32. I love using D tho. Was huge fan of C#/.NET too
Sentmoraap@reddit
At the same time we get inconsistent look&feel because no one uses native widgets anymore and people don’t want a window to look like a Windows 98 settings window.
blacktrance@reddit
I want a window to look like a Windows 98 settings window.
Superbead@reddit
If they brought back the way Windows settings used to work—especially the fact that you could have multiple fucking settings ---windows--- open at once, rather than just one, I might be tempted back to W11
elsjpq@reddit
Also reduce the size of all UI elements by about 30% back to non-tablet density
Superbead@reddit
Yes. The only thing I can credit New Outlook (new) for is that it has generally done this
elsjpq@reddit
Idk, New Outlook still looks a bit sparse to me. I'm used to 16px icons, 20px buttons/menus
Superbead@reddit
I can't remember what I did to it, but I think there's a setting somewhere to make it denser. It's similar now to eg. Office '97, I can see a shitload at once. Only problem is the rest of it
elsjpq@reddit
I definitely have it on compact already and it's still too big for me, lol
Sopel97@reddit
but then no one would be buying 4k monitors
Sopel97@reddit
but then no one would be buying 4k monitors
woze@reddit
I tried a side project in WinUI3 and was frustrated by how slow it was and unresolved issues like the border flicker when resizing a window. I rewrote it in Win32 and it was blazing fast and responsive. I really enjoyed the depth of control even if it required more work to do stuff we take for granted in modern frameworks.
It's a little frustrating that more of Windows 11 wasn't written in Win32 to be more responsive.
wrosecrans@reddit
It is kind of annoying how well Win32 works. It's not designed for modern GPU acceleration. The API is made by crackheads who sold all their vowels for drugs. The headers still have weird legacy that actually dates back to Win16!
But for what it is, the implementation is excellent and the engineering is solid. You can write a whole GUI program that fits on a floppy disk and starts up in a few milliseconds on a 20 year old machine, and basically works just fine.
sweetno@reddit
These hardware-accelerated UI frameworks really don't like to admit they run in an OS window. A couple of years ago I couldn't manage Qt Quick to set window size based on the content (implicitWidth/implicitHeight) without flicker. It seemed as if you can't size things up without first displaying them.
levir@reddit
It sounds like the biggest problem is that WinUI3 is a bad framework which shouldn't have been put in an OS before being completed and optimized.
yepperoniP@reddit
Sounds a lot like Catalyst and SwiftUI vs AppKit on Mac. Over six years in and they still seem half-baked and a weirdly glitchy compared to the older AppKit.
Really frustrating to have Apple rewrite parts of the OS (like the System Settings app) and see them get laggier and buggier.
ParticularWill3243@reddit
hahaha
frankster@reddit
I don't care whether note pad uses 2MB or 50Mb of memory, but I do care strongly that it takes 1-2s to start up instead of 0.2s.
phylter99@reddit
When you have literally hundreds of programs running on your PC (most of them in the background) it's better when they take up as little as possible. When you look at the memory footprint of a clean Windows install without tuning vs a clean Linux install without tuning you'll see that the Linux system uses much less ram. It's because most Linux apps are written in faster, more memory efficient languages, which resembles how apps, like Notepad, used to be written on Windows.
Dave's Garage on YouTube talks about app optimization because he used to write some of the early components of Windows.
WoodyTheWorker@reddit
Microsoft does "engineering by metrics". You reduce system commit size by a few megabytes: good!
One result of that is so called "fast startup". Another result is that since Windows 8.1 (? maybe Windows 10) they hold the kernel driver files open for pageable sections, instead of loading those sections into the page file. This saves a few MB of pagefile space. As a result, you can't replace a driver file before reloading it, you have to disable all devices using it, then replace the driver, then reenable those devices. It's not doable for boot devices, of course.
Also, in Windows 8.1, MS decided to disable load all boot drivers not used in the current install. As a result, you cannot easily switch your boot drive to a different interface. This saves perhaps 100 ms of startup time.
NotUniqueOrSpecial@reddit
That was the case from time-eternal. It wasn't until 10 (and I want to say a later build of it) that they loosened that up.
That's exactly why XP-era backup/recovery software lived and died by its ability to perform a hardware-independent restore process (few were any good at all).
WoodyTheWorker@reddit
In Win2K+ NT kernels (PNP device architecture), drivers are installed as "kernel services"; most PNP drivers have "on demand" load type, but all possible boot drivers (and file system drivers and filters) had "boot" load type, to be loaded at "BIOS" phase.
Starting with Windows Server 2012 (Win8.1) (or WS 2016? Win 10), after first boot, all unused boot load type devices get changed to load type "disabled" (or "on demand"? don't remember by now), in a lazy attempt to save on non-paged memory use and the boot time.
This is the reason you cannot simply switch your NVME boot stick between SATA and PCIe controllers without some regedit hassle.
Before that, you could simply switch the boot device to a different supported controller without having to manually edit the registry.
cgaWolf@reddit
Dave's Garage talks about a lot of things. Which is how i end learning about cool stuff like PDP-11 :P
bluegardener@reddit
He talks about a lot of things and has some odd wild incorrect takes. Like claiming Linus has personal secret binary blobs that only he has the source code to that he puts in linux. I think he misunderstands driver blobs.
phylter99@reddit
He has a fun channel. If he's wrong once in a while I don't mind much. I don't consider him a great source of truth anyway except what he has direct experience with. If he hits an interesting subject, it's usually just enough to get me to research it more and then I validate my sources.
I'm the kind of person that will welcome sitting and listening to some older gentleman ramble on about old war stories though.
temp-acc-123951@reddit
Windows using half your ram on boot for caching is by design
phylter99@reddit
But I'm not talking about caching. I'm aware of how that works. I'm talking about all the little apps and services that live in memory and take up hundreds of MB when they probably don't need to. Every MB counts, especially when RAM costs this much.
Note that every OS has caching and that caching consumes memory.
danielcw189@reddit
for example?
Username_RANDINT@reddit
Interesting we went from "just add more ram, it's the cheapest and easiest way to make your pc faster" to this.
ShinyHappyREM@reddit
Even DOS!
^^^^when ^^^^you ^^^^load ^^^^smartdrv.exe
Sopel97@reddit
I have the same issue with the terminal, to the point that I replaced it with conhost. If it doesn't launch fast enough my first keystroke(s) don't register.
frankster@reddit
somehow the windows 11 start menu on my work machine takes so long to start it misses the first keystrokes after pressing the windows key.
One thing that microsoft got right with the start menu was that it loaded quickly and was very usable from keyboard only. Memory is hazy but I think it worked well right from windows 95 days, certainly from win xp. And they've now fucked it up so it doesn't capture the first few keystrokes.
Darrelc@reddit
Can you get away with classic shell? or openshell now rather
Sopel97@reddit
The biggest latency inducer in the start menu is the web search, which should never be enabled anyway. Might be recommendations too? Idk what exactly I have disabled but it's basically instant for me.
frankster@reddit
this is with web search already disabled :(
Sopel97@reddit
I'm on 23h2, but could also be some other weird stuff like windows defender/other AV, cortana, windows account, one drive. Who knows with windows
BeautifulCuriousLiar@reddit
after working for a while with vs code on linux, opening the powershell in visual studio on windows sure is something you note
NenAlienGeenKonijn@reddit
What do you mean, you don't like waiting 3 seconds to open a shell, which 40 year old machines could do instantly?
BeautifulCuriousLiar@reddit
i just started working with c# and i’m liking it too, but i hate windows and visual studio. the only thing i like about it atm is debugging i find is easier, at least on the project i’m working on. many years ago i dipped my toes in the linux world and i cannot go back.
Programmdude@reddit
Rider is pretty amazing, I've recently changed to it from VS (with resharper). IMO the debugging is decent, I haven't had any issues with it.
GhostPilotdev@reddit
Cold start latency is the tax you actually feel. Nobody has ever alt-tabbed to Notepad and thought "wow, 48MB, unacceptable" but everyone has rage-clicked it twice because it hung for a second.
raip@reddit
Try quake mode, then it's always running and it's instant but just hidden until you hit your quake mode hotkey. Then you get all the benefits of Terminal with none of the slow start options.
Sopel97@reddit
not what I want and the limitations are severe https://learn.microsoft.com/en-us/windows/terminal/tips-and-tricks#quake-mode
raip@reddit
Eh, I just use panes anyways, which works fine with it. One of the reasons why using conhost isn't an option for me.
You do you though.
RedEyed__@reddit
I bought MacBook M5 this month. I still can't get used to speed of opening apps, installing them, despite having high end PC with enough of RAM and fast SSD.
ThisIsMyCouchAccount@reddit
I bought a refurbed M1 recently because I knew that it was still a beast. And it is.
Pushing a 5k display and running all the crap a typical dev runs and I don't think the fans have ever even kicked on.
xylopyrography@reddit
A 5K display isn't exactly noteworthy unless you're doing intensive with it.
Most low-end CPUs with an iGPU can drive 8K60.
A mid-range dGPU can drive 4 x 8K120.
xylopyrography@reddit
You could run a Windows XP VM with 1 thread and 1 GB of RAM on a Windows 11 VM and everything will open instantly.
milkybuet@reddit
I suspect they are related issue.
RogueJello@reddit
This. Author seems too focused on optimizing the wrong things. Nobody does Win32 programming because it's super niche in a field where skills are everything.
Also when notepad was released that memory really mattered. It doesn't anymore.
cgaWolf@reddit
Arguably, however notepad as low level as it is, should only display text, without growing scope. Adding copilot is fuxking pointless, and RCE because they thought markdown support was a good idea is just bullshit.
RogueJello@reddit
Maybe? I've always felt like Notepad was about showing off some basic features in the OS. When it was introduced opening, changing, and then saving files all in a text field with copy and paste support was a big deal. On some level that's really ALL I've ever needed from a word processor, those changes alone are a huge step up from typewriters and pen and paper.
levir@reddit
I feel like the author of that looked at a problem and took exactly the wrong lesson from it. It's a performance problem that programs are built with inefficient frameworks and are slow and horrible to use. But it's not a problem that programs look more uniform and follow similar conventions, the problem is they don't work well. They don't fulfill their function.
elperroborrachotoo@reddit
The usual note: empty memory is useless memory.
Windows changed how memory use is reported (around 10 or 11).
Earlier: excludes memory used for caching → "I have 32G and Windows isn't using it" Now: includes memory used for caching → "Windows uses all my memory!"
mccoyn@reddit
Garbage collection is another issue. Many apps will delay garbage collection if they think the system isn't under memory pressure. This is because running garbage collection less often is more efficient. If you have the memory, you might as well use it. So, uncollected garbage tends to grow to fill much of the available memory.
The OS can't determine how much memory is used by uncollected garbage. It needs to do garbage collection to actually tally that up. So, uncollected garbage gets reported as memory that is in use.
cake-day-on-feb-29@reddit
The problem with this is that the apps don't (and can't) know what the user or system wants. What if I'd rather have more files cached? Or if I want to launch a resource-intensive program and decide to kill your app before, due to its memory usage?
ack_error@reddit
Windows does have a way to tell apps to reduce their memory usage (CreateMemoryResourceNotification), but it's not terribly granular -- it's just a memory high/low signal.
jcelerier@reddit
Ok but why do I have apps killed because of OOM daily on my 64gb system, with just Firefox with a few hundred tabs eating more than 40G
Sisaroth@reddit
Has nothing to with what op said. If windows is killing apps, that means it's already not using any RAM anymore for cache. It means more than 95% of your RAM is used for active apps. Windows will always prioritize RAM for apps over cache.
spacelama@reddit
Funny thing is if you go to any of the mozilla fora or bugzilla, and talk about mozilla's excessive use of RAM, people always trot out the "unused memory is wasted memory" dogma there too. And then you give them specific evidence of how it wasn't unused memory at all that firefox stole from the rest of the system, and they just say "yeah, but you don't understand how memory management works" when you wrote a bloody triply-indirected memory manager in RISC assembly from scratch in a couple of weeks 28 years ago in uni in the Assembly For Dummies 201 class because you thought the idea of using sbrk() and just leaving holes in the heap on deallocation in your bignum library was not as acceptable as everyone else was declaring it to be (which funnily enough turned out to be one of firefox's major problems about 20 years ago).
But Linux's VMM has sucked hard since about 2001 through several rewrites. Always fun watching a non-NUMA machine with 96GB of RAM thrash evicting RAM to NVME at ~100MB/s and pulling pages back in at an equal rate, while it had 20GB literally completely free and another 30GB cached, while completely hosed while attempting to run a workload with a working set of 20GB. Just as fun as it was when I tried to start up nutscrape on a laptop with 512MB of RAM back in 2001.
ElusiveGuy@reddit
I remember back around 2007-8-ish there was a lot of talk of Firefox moving to jemalloc to help reduce memory fragmentation. IIRC it did help initially but then a few years later Firefox went through its most memory-hungry/leaky phase (~3.5.x - 4.x?).
jcelerier@reddit
I'm using linux, responding to the "unused memory is wasted memory" point
ElusiveGuy@reddit
As I said in my other comment, Linux's behaviour around memory overcommit is very different (and almost the opposite!) of Windows. And it's typical to configure Linux with little to no swap, too. So when one application uses (actually touches, not just commits) large amounts of memory and never releases it, the only way to reclaim it is via OOM killer.
In a thread talking about Windows memory management, bringing up an experience in Linux without explicitly saying it's Linux is just misleading.
rtybanana@reddit
close a couple hundred of those tabs i reckon
mccoyn@reddit
Just add them to your bookmarks. If you have hundreds of tabs open, its usually because you don't want to lose them. This is what bookmarks are for!
cake-day-on-feb-29@reddit
Actually, bookmarks only store one link. Tabs keep history, and they don't really use that much space anyways, they can be unloaded.
Francis__Underwood@reddit
I'd recommend getting something like to automatically suspend most of your tabs. There are extensions where that is the only purpose, and a lot of tab manager extensions have it as an additional feature on top of other things like better vertical tabs, supertabs (basically horizontal tabs to organize your vertical tab windows into a handful of logical groups), and folders and stuff.
Essentially, there's no reason to keep all those tabs in memory so you can have Firefox cache all but the X most recent tabs, or after X minutes of inactivity in a tab, and you can set rules like "Don't suspend tabs where I'm typing something" or "Don't suspend tabs with media playing."
I have ~500 tabs open in Firefox right now because I use them more like bookmarks and it's using 2.1g of memory.
ElusiveGuy@reddit
Do you have an appropriately sized page file? Windows guarantees commit, it doesn't actually have an OOM killer like Linux. Instead, allocations get refused if you run out of commit.
A good rule of thumb is page file at least the size of RAM. That gives you plenty of free commit room even if actual usage never fills RAM.
sweetno@reddit
Since when does Windows have OOM killer?
QuestionableEthics42@reddit
Sounds like a user and firefox issue.
BedroomHistorical575@reddit
People who think this is a magical mantra that can be used to deflect any criticism of RAM usage really needs to be forced to give up their $8000 workstation for some time.
Make them do their actual work on a cheap Windows laptop for a month or two. Then have them try again, this time with an OS that is actually efficient with their RAM usage.
Maybe then they'll understand why some people complain about RAM usage on Windows.
SanityInAnarchy@reddit
Read the rest of the comment you're replying to.
If you're complaining about your RAM usage because too much of your RAM is used for cache, which can instantly be dropped when you face actual memory pressure, then you don't understand a single thing about memory management.
lonelypenguin20@reddit
it's not about cache, Windows reports cache as free
u can test it urself. Linux, by itself, can consume less than 2gb ram easily. Windows 10+ eats 4 gb. which OS leaves more RAM for the userspace programs, I wonder...
SanityInAnarchy@reddit
OP claimed 75% of 32gb of RAM. So, sure, Windows eats 4, which is more than Linux. Windows does not eat 24, unless you're miscounting cache as used, or unless something is deeply wrong with OP's specific Windows machine.
BedroomHistorical575@reddit
Nobody complains about RAM usage if they're instantly freed the moment they're needed.
Like I said, I dare you to use a full-blown Windows setup in a memory-constrained environment for an entire month and compare the experience with an OS like Linux. The memory bloat is real, it's not a made-up conspiracy.
Now that even people with cushy and overpaid SWE careers are struggling to afford their beloved 128GB RAM sticks, maybe we'll start seeing more efficient software these days.
SanityInAnarchy@reddit
People absolutely do complain about exactly that. It used to be one of the top complaints among new Linux users. Eventually, even tools like
freeandtopstarted reporting "available" as a separate number from "free" exactly to clear up this issue.The rest of your reply is a rant entirely disconnected from the comment you were replying to. You saw "empty memory is useless memory", made the exact same mistake of conflating "used" with "committed and unavailable" and ignoring cache, and assumed you were replying to a comment defending bloat. You weren't, you were replying to a comment clarifying cache.
Bloat is real, but Windows does not "fill" 24gb of RAM on boot unless either someone is misunderstanding cache, or something is very badly broken on that system in particular.
Tom2Die@reddit
To be fair, that does feel like a pretty useful thing if it doesn't break anything. I imagine it broke some shell scripts or something, but it just adds a column so it really shouldn't, right?
SanityInAnarchy@reddit
Oh, I'm not complaining about that change at all! I'd much rather more people understood how this actually works, so you don't get people misreading a comment supporting disk cache as a comment supporting bloat.
Tom2Die@reddit
I haven't used Windows in like 15 years so I can't agree or disagree (though everything I read tends to agree with your sentiment), but I think the comment you replied to was trying to point out that this is tangential to the fact that cached memory is a good thing and people are often ignorant of that.
I also have a vendetta against memory bloat though; there's absolutely nothing something like Discord could possibly be doing that should have it idle at > 1GB of RAM, for example. It's insane. If it were a leak and got there over time it'd be one thing (and still annoying, possibly more so) but idling there on a fresh start is just insane.
elperroborrachotoo@reddit
My first own programming environment was an Intel 80286, 1MiB RAM, 40MB HDD, Hercules graphics card. My oldest one, esoteric.
But "RAM use", on a modern desktop OS, is a bit more complicated than a single percentage, and it's hard to say whether more or less is better. That's all I wanted to point out.
If you want a comment on the original rant: Economics. A bit of capitalism, a bit of blogspam marketing, education, skipp, and efficient use of human resources.
It's been lamented over all decades: more abstractions, kid's can't flip a bit, software consumes resources faster than hardware grows, this simple editor is bloated (over 1.5MiB!), Moore will soon end, the sky is falling, RISC is the answer.
And yes, a lot of that is true, but it's pissing against the wind.
in 1990 we had less developers total worldwide than we now have developers who could, if they had to, fit notepad.exe into 350KiB. But they have better (paying) things to do.
🤷♂️
JC-Dude@reddit
Also, I have a 32GB system I'm typing this comment on. Got Spotify and Signal open, as well as a total of 10 Chrome tabs, one with a YouTube video playing and I'm using 35% of RAM, so IDK what the hell that guy has on his computer that takes up that much.
thesituation531@reddit
I think it's just a Windows caching thing.
I also have a 32 GB laptop, and at startup, Task Manager reports that 50% of the memory is being used. But then when I open some apps, the memory use doesn't really go up, to an extent. So I think Windows probably caches a bunch of stuff but lets it go when you actually start using the computer.
BlueGoliath@reddit
lmao of course this gets upvoted.
granadesnhorseshoes@reddit
Other way around. It reported usable but cached RAM as in-use and around Windows 7 changed it to include usable cache as free because everyone was bitching.
Checking my win11 memory usage in detail shows that the base "free ram" being reported is actually ALL cached but usable ram(ironically also 77% usage) and my committed ram is currently 19.3GB on an 16 GB machine.
That's not just a reporting thing.
rodrigocfd@reddit
Also, Win32 backwards compatibility is crazy good. Just ask Raymond Chen.
And also, add Wine to the equation, and you have a multiplatform solution.
Win32 will never die!
vytah@reddit
Win32 is the only stable Linux API.
mpyne@reddit
only stable Linux GUI API, but yes.
cjarrett@reddit
my fav. time at msft was working on win32k. Tremendous engineers.
TrueTom@reddit
Sometimes it feels like Raymond Chen is the last competent Microsoft employee.
cjarrett@reddit
Not sure if Jon Wiswall is still there-- but that man is a saint and needs to be protected.
BlueGoliath@reddit
Wine is not a stable platform.
jonte@reddit
I sometimes write utilities for work in Rust, and I usually go for winsafe for the primary Windows UI.
They start up instantly, and barely use any memory. When they do it's my fault. :)
sailing67@reddit
used to work on a legacy app that had a custom shaped window for the system tray popup. the amount of WM_NCHITTEST hacks we had to do was genuinely insane. at some point someone just wrapped it in a normal borderless window and called it a day. cant blame them honestly, maintaining that stuff was a nightmare and nobody on the team remembered why the original shape was even chosen
Paradox@reddit
Most ironic thing about this is that some of the "weirdest" looking apps of yore were things like Konfabulator, Adium themes, Dashboard widgets, and similar, all of which were basically precursors to electron apps; you wrote the widgets and themes and such in HTML, JS, and CSS, and they had some amazing shapes
NenAlienGeenKonijn@reddit
Anyone remember windowblinds? It hooked into window's native window creation methods and allowed you to have wacky skins on EVERY window.
Because this article invoked some nostalgia, I decided to google windowblinds. It still exists, but something is very noticable: Windowblinds - windows 98
Windowblinds - windows 11
The old version could get pretty crazy, able to transform windows to an extend you don't even recognize the OS anymore, even cramming all sorts of widgets and toys within the window header or footer.
In the windows 11 version on the hand, the skins look really clean and same-ish.
Dwedit@reddit
Under Windows 10, windows will initially have Windows 10-style title bars. But then you can request that the DWM disable that feature, then you have Windows Vista/7 style title bars (rounded corners at top, windows vista/7 style maximize, minimize, close buttons) Then you can ask uxtheme to disable window theming, and you get Windows 95 style windows, which also happen to have very thick resize borders.
So a tool like WindowBlinds would just disable the DWM's feature, possibly also disable uxtheme's styling, then take over drawing the window's nonclient area from there.
danielcw189@reddit
How?
Dwedit@reddit
You'd probably do it by injecting code into the other process and calling the relevant API functions.
One function is "DwmSetWindowAttribute" from Dwmapi, called with DWMWA_NCRENDERING_POLICY and DWMNCRP_DISABLED.
Another function is "SetWindowTheme" from Uxtheme, you can pass blank values in there and it will remove the theming from a window.
While this stuff might be possible to call from another process, it works more reliably if you can remove the theming right as the window is created and before it is shown, so code injection is used for best results.
danielcw189@reddit
Thank you! I was not aware of either API-topics. Time to dig, and play around
RammRras@reddit
I'd like to have windows 98 theme on my win11 machine
Suppafly@reddit
you can do some of that with openshell
BeautifulCuriousLiar@reddit
holy crap, stardock. that’s a name i hadn’t seen for a while. i didn’t know they went all the way back to win98. i remember playing around with their software in xp or vista.
RammRras@reddit
The OP comment unlocked so many great memories! Me and my friends tweaking winXP with all sort of themes 😃. I had also the windows desktop cube
nemec@reddit
There was some wild stuff with resource hacking and other DLL editing. These days I'm sure it's all locked down with integrity checks to protect from malware.
https://web.archive.org/web/20110221160002/http://customize.org/browse/screenshots/popular
Nyefan@reddit
Dang, I didn't know that stardock ever made anything but games. GalCiv and Sins of a Solar Empire are great.
centizen24@reddit
It's a cool enough name that it stands on it's own, especially in the context of sci-fi games. But Stardock was actually just the name of their first major program, a start menu replacement for Windows which made it look like you were using a Mac "dock" instead.
knightcrusader@reddit
I still use Start10 and 11. Been hard to change since Start 8 got me hooked.
GrouchyExchange2122@reddit
Probably trying to make your system look like MacOS huh? That's why I knew about star dock from the XP era
psaux_grep@reddit
Tried to make mine look and feel like Linux. MacOS wasn’t what it is today back then.
1RedOne@reddit
Remember that guy who ddosed all of Reddit using stardock? I can’t find the original thread anymore, but basically a guy was using star dock and had a configured to check for new Reddit mail.
He had something messed up with the Paul though and so instead of calling once a minute, it was calling hundreds of times per second
I forget how exactly but someone on the Reddit engineering team noticed that a single user was responsible for this humongous amount of traffic and contacted him, lol
0x564A00@reddit
What was distributed about this denial of service?
RaccoonElaborate@reddit
Is the doznis esports it's ddos, Paul
jonte@reddit
I remember avoiding windowblinds. :D
It was resource heavy and felt bloated. However I fondly remember we were able to do some uxtheme patching, and I miss the look-and-feel of Windows XP with my favorite theme. For me it was HmmXP. https://www.deviantart.com/fugacious/art/HmmXP-2-0-1-5514034
I miss the old days...
rinsa@reddit
going on deviantart for slick windows themes.. core memory unlocked
BortGreen@reddit
Winamp in title bar, not even in Linux you can do this nowadays
psaux_grep@reddit
I do remember windowblinds. But man did that shit slow down a computer. Heck even my AMD K6-II 500MHz @ 550 MHz with a 0.2V overvolting (for a total voltage of 2.6V, that would scare even the bravest overclockers today) and the FSB turned up 10% got slow when turning on all the bells and whistles in Windowblinds.
But Powertoys was awesome. Glad they made a comeback.
Someone needs to make a nostalgia device. Give me Winamp and Solitaire and IE4 on a phone sized dumb gadget with dial-up throttling of the Internet. With built-in Napster.
Or maybe not 🙈
PsychedSy@reddit
I used to hang around with some developers interested in replacement shells back in the day on irc. GeoShell specifically, but almost everyone had side projects. One guy was writing a custom shell in vb6. (Jeff, Joel, Vash, Geo - Hi! I'm still a terrible programmer, but I'm less annoying now.)
I was using start10 by stardock, then start11 until, well, I didn't make it long before switching to an arch based distro. I'm impressed stardock has kept up with their customization suite with msft doing everything they can to break their products. It was fairly straightforward to get rid of the explorer based desktop and substitute your own shell back in the day. Those settings don't even seem to exist in the same way - it was a variable in an ini file.
colei_canis@reddit
I used to use it on a windows XP machine Microsoft told me didn’t support Aero glass and all that alpha blur going on. It totally did with WindowBlinds.
Sopel97@reddit
Fix your install man. That's not normal
duckwizzle@reddit
I love when people say stuff like that. It makes me question everything else about what they say, because like you said that is about normal, and they chose to not troubleshoot it and instead just talk trash about the OS.
My work laptop currently has teams, outlook, three instances of visual studio, one instance of SQL server management studio, two rdp windows, Chrome and discord is sitting at 81% ram usage. Obviously Windows 11 is not perfect, but it is not as bad as OP says...
bread-dreams@reddit
also, a mildly unrelated point but: RAM is there to be used. who cares that it's 77% in use if your PC works fine?
duckwizzle@reddit
Agreed, I'm not worried about my usage... But OP saying Windows booting up and immediately using 77% of 32gb RAM is not normal. Something is def wrong with their machine
danielcw189@reddit
81% of what?
duckwizzle@reddit
32gb
Sairony@reddit
It depends a lot on what programs you use. Spotify is over a gb, Slack close to another gb, discord ~1.5gb, VS ~1.7gb, firefox at like 6gb, Unity which is the worst offender can eat up 16gb+ itself & just keeps on trashing the disk. Now I don't use office, but I'm willing to bet it's just as bloated & takes just as long to boot as it did 2 decades ago.
2 decades ago with ICQ, MSN, winamp, ventrilo etc on a 512mb high end comp it was just as quick if not quicker than the fairly high end machine I'm on now.
JC-Dude@reddit
I have Spotify and Discord open right now. They each take around 600-700MB of RAM. Not that apps like this should take up so much, but you're seriously exaggerating.
BrodatyBear@reddit
Discord also depends much on how many channels you have (and now every/many technical supports are made through Discord).
Mine was 4 GB yesterday, usually it's about 2 GB.
I stopped using Spotify because it just randomly bloated RAM usage. Sometimes it was fine, sometimes bad. I don't remember exact number but it has just 2 jobs to do: load song, play song. It shouldn't need above 250 MB to do that.
cake-day-on-feb-29@reddit
Ah, the joys of electron.
Sopel97@reddit
opening some small excel/word (I believe the 2024 version) document takes <1s and ~200MB of RAM for me
Arkanta@reddit
"when windows starts up" heavily implies that no program is runing.
Sairony@reddit
That's true but a lot of programs want to add them selves to auto start, but yeah, overall the large problem is that programs are just super bloated.
Choice_Yogurt147@reddit
the latest version. Just tested it and it runs fine.
Zockgone@reddit
Yeah I get the rant, the issue is win32 api sucks, no company wants to build 3 apps that all use the proprietary shit api of the OS be it windows Linux or Mac. Yes you can use QT on all of them and there are also a lot of other solutions to this, but it’s just so much slower to develop with compared to web applications, also there are a lot more frontend web devs then people who are capable of doing optimized frontend development.
I sometimes miss QT and doing stuff manually with low level system binaries but on the other hand I am happy not having to dig through documentation after documentation and stackoverflow for some weird specific issue regarding windows apis.
ShinyHappyREM@reddit
There's also the VCL / LCL, if you're in that corner of the profession.
amroamroamro@reddit
yea Borland/Embarcadero VCL + FMX and the Free Pascal equivalents are underappreciated
thebomby@reddit
Obligatory Charles Petzold book for an in depth guide to win32
ammar_sadaoui@reddit
im glad i moved from this horrible operation system
linux have many down side but still not as windows 8 and up
sweetno@reddit
There are useful parts in bare Windows APIs, but as a whole, it's mostly outdated. And I don't mean just the design, the functionality is outdated too. I worked on an MFC app last couple of months, and found this wonderful gem: a disabled Win32 control can't show a tooltip because disabled controls don't receive mouse events and so can't test mouse hover. There are workarounds, like handling this in the parent control (e.g., toolbar), but that's impractical. I'm sure there are plenty of gotchas like this.
That is to say, you can't call Win32 API good old API, it's more of a bad neglected old one.
rdtsc@reddit
Why then does newer stuff come with less functionality? User interface behavior and gestures which worked since early Windows are thrown out. Ever tried to ctrl-click scrollbars in those new fangled apps? The majority of them fail to scroll to the clicked point.
tron21net@reddit
Don't you mean Shift + Click? I just tested that it works for Firefox, Discord, and Notepad++ scrollbars.
poop_magoo@reddit
Handling the tool tip in a parent control actually sounds like a very practical solution. As far as workarounds for stuff like that go, that actually seems like a really easy to manage one.
sweetno@reddit
That's a lot of code to implement tooltips in Win32. You'd rather to encapsulate it in the control and not drag to every usage site.
poop_magoo@reddit
Certainly not ideal, but I have had to do more unsavory workarounds for seemingly small things like that.
dukey@reddit
If you use MFC you can call something crazy like EnableD2DSupport and you are setup to use modern rendering. So you can have nice anti-aliased line drawing and DPI aware windows etc. MFC is 'okay' but straight win32 programming is very cumbersome. Very easy to leak resource handles, and draw at the wrong time and all sorts of crazy stuff if you don't know what you are doing.
Ikinoki@reddit
http://www.litestep.net/
This was massive. But more awesome was for me to write my own shell in Visual Basic :) Now that was a cool exercise and a lot of fun.
Frolo_NA@reddit
the smalltalk influence is real
sacheie@reddit
The guy loves performance and system-level APIs, but hates Rust..? That's kind of a recipe for dissatisfaction, nowadays.
Also, you don't have to pay "thousands" to use Qt. The community edition is under LGPL. It has always puzzled me that Qt is not more popular on Windows.
Omnitographer@reddit
Totally unrelated, but am I right that's the NX01?
nccwarp9@reddit (OP)
Sure is, Im partial to Akira class and NX01 looks the part, maybe even cooler :)
ratherbealurker@reddit
Oh this brought back memories. I programmed win32 api guis in the late 90s and early 2000s and loved playing with non standard windows. I don’t remember it being too hard or tedious, you already had to handle a lot when using win32 api over MFC or something but it was worth it.
ReallySuperName@reddit
I'd say it's actually a skill issue, lack of vision, and because most of the designers that work at Microsoft all use Macs.
geekywarrior@reddit
The windows media skins are exactly what I thought of. Glad they brought them up