37 ms·
Files UWP: An enthusiast’s take on what Windows File Explorer explorer should be
- finchisko 7y agoI like it.
- DiabloD3 7y agoThe only thing I've ever wanted from Explorer is... being able to see how big a directory is in the file size column.
- culot 7y agoThat's one of my favorite Directory Opus features. Especially since you can make it on demand, in case you don't want to always have directory sizes calculated while browsing.
- potentialverand 7y agoIf you open the properties of a folder, you can see how long it can take to calculate the size of a folder. This is a feature I've never really needed - what is your scenario for needing this at a glance? When I'm chasing large files that need deleting due to free space pressure I typically use something like the following https://windirstat.net/ https://windirstat.net/
- Causality1 7y agoI don't see why the size of the folder couldn't be written to the folder's metadata every time the folder contents are modified.
- ken 7y agoIt certainly can. Apple does this in APFS. They call it "fast directory sizing": https://arstechnica.com/gadgets/2017/09/macos-10-13-high-sierra-the-ars-technica-review/6/ https://arstechnica.com/gadgets/2017/09/macos-10-13-high-sie...
- kilburn 7y agoApple said they would be doing this. For some reason it doesn't seem they actually did it [1]. [1] https://eclecticlight.co/2019/02/06/how-big-is-that-folder-what-happened-to-apfs-fast-directory-sizing/ https://eclecticlight.co/2019/02/06/how-big-is-that-folder-w...
- deleted 7y ago[deleted]
- ComputerGuru 7y agoBecause it's recursive. It means a file nested a few hundred folders down needs to update each and every parent. And what about hard linked files? Directory junction points? Drives mounted as folders? It would be insane to think the performance would be acceptable.
- hexomancer 7y agoFirst of all, most files are nowhere near 10 levels deep, let alone hundreds of levels. Second, we don't have to do a naive update every single time a file is changed. We can amortize the cost by updating the parent folder sizes only when the file size is changed by a significant amount since last update (say, 10%). And we can do this process recursively is the parent directories. This was it only takes O(1) time to update folder metadata for each file operation and all the metadata are accurate within 10%. Also I don't see how drives and hard linked files are any different than regular files in this context.
- kilburn 7y ago> most files are nowhere near 10 levels deep, let alone hundreds of levels. Filesystem (and low-level in general) stuff must consider worst cases. There is a lot of software out there doing weird things. For instance, npm created a very deep folder hierarchy for a long time (so deep it messed up some path length restrictions in fact). One way or another the worst case is going to be hit. And then what? The entire computer grinds to a halt? How is the user supposed to discover why? > We can amortize the cost by updating the parent folder sizes only when the file size is changed by a significant amount since last update (say, 10%). So you have a log file inside a folder. Because it just keeps growing line by line then the folder's size is never updated. Now you have many Gb's of log file in that folder, and the folder says it is using "4Kbytes". Moreover, this propagates upwards the filesystem. In the end, your root drive has a "folder size" of X but its actual usage is Y >> X. How is that not going to confuse everyone? Put in another way, who is going to trust the X number ever? Why would you pay all that accounting penalty for every write to every file to end up with a half-asset broken-by-design feature? > Also I don't see how drives and hard linked files are any different than regular files in this context. They are different in that they exist in multiple folders at the same time (so they would trigger multiple size-updating branches).
- jmgao 7y agoBecause if you do that, you have to walk up the entire directory tree on every file operation.
- userbinator 7y agoyou can see how long it can take to calculate the size of a folder On older Windows (95, 98, XP) I've never had it take an unacceptably long time, and that was with a regular HDD. With an SSD and the large file caches which are possible with today's machines with lots of RAM, it should be even faster. Besides, it's not as if the operation needs to be synchronous; the sizes can be calculated and displayed when they're ready. Having an option to show them would be useful, and those who don't need it/don't like the extra disk activity could leave it off.
- Bjartr 7y agoOlder versions of Windows used the FAT filesystem rather than the current NTFS filesystem. FAT happened to get you directory size "for free" due to how it works under the hood, whereas NTFS does not (but it's faster at other things as a result). For much more detail check out this[1] post on The Old New Thing blog by Raymond Chen. [1] http://blogs.msdn.com/b/oldnewthing/archive/2011/12/26/10251026.aspx http://blogs.msdn.com/b/oldnewthing/archive/2011/12/26/10251...
- Sharlin 7y agoIt is absolutely hideously slow on NTFS to compute the size of a directory that (recursively or not) contains thousands of files. Indeed, it is absolutely hideously slow on NTFS to do just about anything that needs to touch thousands of files at a time.
- kalleboo 7y agoThe Mac has been able to do this since what, System 7.5 in 1995? Yeah it can take a while to calculate but on a modern SSD it's not a problem. If you don't like the performance hit it's an option that defaults to off.
- adzm 7y agoNote that if you parse the MFT itself you can calculate this info for the entire drive in the time explorer can calculate it for a single folder. I know there is some overhead with the official api of course and it needs to support other filesystems but we really needed a way to iterate directories faster just to gather this kind of info. There are several disk space utilization / treesize apps and file search apps that take advantage of the speed you get by bypassing the API.
- Tempest1981 7y agoThe Wiztree app is a great example of the benefit -- 3 seconds to view the entire drive. Although reading the MFT requires elevation. https://antibody-software.com/web/software/software/wiztree-finds-the-files-and-folders-using-the-most-disk-space-on-your-hard-drive/ https://antibody-software.com/web/software/software/wiztree-...
- mqus 7y agoSince Windows 98, we used Idoswin (https://www.idoswin.de/ https://www.idoswin.de/) which always calculated directory sizes in the background. It showed the sizes of directories it already calculated and made the field empty for every folder where the size was not ready yet. Usually the small directories are ready first and only the big (>1gb and many files) take a few seconds. This is done in the background and therefore doesn't disrupt your workflow at all. Another method would be to make it midnight-commander style: add a button which will calculate & display the sizes of the directories. So the time to calculate it is not really an issue. Use-cases are exactly cleaning up space and roughly calculating backup sizes/sizes of folders I want to copy at a single glance. You could also ask: why do we need to display the size of files in the explorer. The reasons are roughly the same.
- NikkiA 7y agoI use xyplorer, which has a toggle feature for always displaying the folder sizes, and a keyboard shortcut (shift-F5) to display them for the current folder until changed. This combination seems to work just fine, I don't usually need folder sizes, so I keep the toggle off, and just hit shift-F5 if I really need to see them.
- MH15 7y agoThis is an amazing design exercise, but the thing about Win10 that really pushes my buttons is the Control Panel/Settings conundrum. Each version it seems another feature gets added into the real settings app but still needing to open an old-themed dialog to change mouse settings of all things seems odd. It's not like mouse settings are an obscure feature. I'm not sure why a higher emphasis on cohesiveness isn't noted.
- michrassena 7y agoI think the settings app is just a poor imitation of the Mac preferences panel. Preferences panel gives the appearance of the major settings, all in one place. You can only have one module, like network, or printers, selected at one time. Settings app tries to do something similar, but for some reason this is more frustrating on Windows than MacOS. About the only thing I use the settings app for are Windows updates. Everything else, I start from the run menu if I know the command or launch from the control panel. Because invariably the legacy control panel applet exposes features I need, and the settings app is rudimentary. Microsoft should be embarrassed at this mess. I suppose they'll eventually almost complete the settings app before moving onto something they consider better. I don't know what's necessary to fix it, and likely it's far more involved that I can imagine, but Microsoft has resources at their disposal that would be the envy of all but the largest companies. Rather than rolling this out piecemeal, over the course of however many years, they could have just gotten it right all at once. What we have now is just sloppy, a beta-quality looking mishmash. It reminds me of the old days of Linux on the desktop with various apps running different gui toolkits. I'm sure this situation exists for justifiable reasons, but I don't have to like the end result even when fixing it is difficult and expensive.
- tonyedgecombe 7y agoMy fear with all this is we will end up where we started. The same settings but with extra whitespace so you can nominally use it on a tablet. Microsoft have never been able to show the restraint that Apple have when it comes to this stuff.
- oblio 7y ago
- kijin 7y agoThe low-contrast sidebar and flat colors sure look like they belong in Windows 10. But what about the features? The README doesn't mention any features. If anything, a flat-looking screenshot these days makes me instantly suspect that the product might be lacking in features.
- chr1 7y agoThe missing up button is a bad sign.
- jchw 7y agoI thought for a moment Microsoft had uploaded some new Windows Explorer source code and got excited... I guess that tells you how different an era we live in. It wouldn’t be a huge leap. The screenshots look nice, though. I can’t say I am really a huge fan of UWP UIs on desktop... but this looks alright.
- userbinator 7y agoI thought so too, given that MS has already released the source of the original File Manager: https://github.com/microsoft/winfile https://github.com/microsoft/winfile ...and it compiles to a nice small and fast ~300KB executable, in contrast to their open-sourced and significantly less efficient UWP calculator: https://github.com/microsoft/calculator https://github.com/microsoft/calculator I believe the old leaked Win2k source has much of the explorer.exe source, if you're really curious.
- jchw 7y agoAs awesome as the Win2k source leak probably is from an educational standpoint, I don’t want to taint myself with illegal source code. I hope they eventually decide to open source more things, even if it was just older things.
- pawjs 7y agoTaint yourself with illegal source code? What does that even mean?
- userbinator 7y agoIt's funny to see the gradient in the title bar, contrasting with the bland borderless-sea-of-whiteness of the rest of the UI. > FilesUwp.Package_0.5.0.0_x64.zip 54.4 MB Nearly 55MB, compressed, for something that attempts to mimic some of the functionality of the regular explorer.exe, is quite frankly ridiculous. I don't have a system to check right now, but I believe even latest Windows 10 has an explorer.exe < 5MB (uncompressed), and it certainly seems to have a lot more functionality than this one. A peek at the code gives a hint as to why... the first file I look at is this https://github.com/duke7553/files-uwp/blob/master/Files%20UWP/Filesystem/ItemViewModel.cs https://github.com/duke7553/files-uwp/blob/master/Files%20UW... and the first thing I see is not exactly confidence-inspiring: if(tabInstance.AlwaysPresentCommands.isEnabled == true) { tabInstance.AlwaysPresentCommands.isEnabled = true; } else { tabInstance.AlwaysPresentCommands.isEnabled = false; } ...WTF. It seems that everything "UWP" I come across follows the same trend: a lot of code, a lot of resource consumption, some flashy "modern" UI, yet very little in the way of actual functionality.
- kilpikaarna 7y agoI'd suspect the executable size has more to do with bundled libraries rather than the author having written multiple megabytes worth of if statements...
- kumarharsh 7y agoYou're just talking about 'explorer.exe' being 5 mb? You're discounting the numerous DLLs which the explorer uses, or even other shared resources which are used system-wide. And 55 MB for a native app is paltry. Even the 'Google' app on Android is 285 MB, the Gallery app of OnePlus is 70 MB.
- negativegate 7y agoThe bundle also seems to include dependencies for multiple architectures and PDBs for debugging. Files.dll which would contain most of the application is ~18MB. And since it does not seem to be a managed dll, it has probably been AOT compiled and likely contains the original bytecode in addition to the native machine code.
- EpicBlackCrayon 7y agoInteresting note, the author of this project is still in high school.
- userbinator 7y agoStarting early is good, but I think he may have gotten sucked into the UWP hype: https://news.ycombinator.com/item?id=19873198 https://news.ycombinator.com/item?id=19873198 https://news.ycombinator.com/item?id=19883351 https://news.ycombinator.com/item?id=19883351 If the author is reading this, here's some advice for you: I encourage you to start learning pure Win32 and enjoy the benefits of extreme compatibility (you can create a single .exe that works on anything starting from Windows 95, depending on the exact set of features you want) as well as highly efficient native code. It's what made Microsoft and the Windows platform great in the first place, and it will continue to be the "real Windows API" that has lasted through all the other churning trends. I started with Win16 (and before that was DOS, so not much to speak of in the way of UI), moved to Win32, and basically stayed there while ignoring all the other newer and more short-lived stuff that came and went.
- duke7553 7y agoThanks for addressing me with this recommendation. As you may have guessed, I'm the developer of Files UWP. I really have a great deal of respect for those who take the time to learn the guts of the Windows API which simultaneously teaches one how Windows itself works. I won't deny it. There is certainly something pretty great to learning a subsystem written under Gates himself. Further, there have been many instances where I've grown quite tired of the limitations surrounding UWP. Just this evening, I discovered we simply can't check the maximized/minimized state of the app windows. While this limitation probably dates back to Win 8, this functionality is taken for granted by Win32 devs. Don't get me started on how slow some of the Windows.Storage APIs are compared to that of Win32. Because of these reasons, I'll kindly admit to you guys that a file explorer application probably SHOULD be written using completely-native Windows APIs. I can't deny the UX improvements brought by Fluent Design to controls have been great, but I'm NOT blinded by my own ignorance. UWP (in it's current state) is not ready for adoption. In fact, I started work on Files last year with no real knowledge of what an API was. (My knowledge of programming concepts has come a long way since then) Come February 2019, I posted the project to Reddit with the intention of abandoning it, but I was blown away by the overwhelmingly-positive community feedback to the point where I continued work on the project. I almost feel obligated to, at the very least, maintain it.
- jstewartmobile 7y agoMy note to the author would be, "Why do free work for Microsoft?" They're the lesser satan (for now anyway), but they're still satan.
- kaetemi 7y agoUgh, no. So much whitespace.
- kristiandupont 7y agoExplorer/Finder/File Manager is one type of app I wish someone would make a nice Electron version of. It's more or less the last piece of platform-specific software I use. I currently switch back and forth from MacOS and Windows and I dislike what both have to offer. I used to be ok with Explorer but somewhere around Windows 8 they "improved" it in several ways that made it alien to me. I hate Finder, the fact that there is no simple way to copy the current path is just completely beyond me, and the fact that enter means rename will never make sense to me either. I know that there are a number of cross-platform "commander" apps that I could use but though I was addicted to the original (Norton Commander), I don't much care for that paradigm anymore. Does anyone know of other good alternatives?
- deleted 7y ago[deleted]
- dfkljsdlfkj 7y agoopt cmd c will copy the current path or selected file/dir to the clipboard iirc enter is rename because it came from a time when it was viewed as own self-contained app that did one thing - organized files on your profile and floppy.
- majkinetor 7y agoNone that I could found in a huge time. Finally, I did this: - ranger / sunflower on *nix - total commander on win Sunflower is cross-platform and IMO great, if only it continues to be developed: http://sunflower-fm.org/ http://sunflower-fm.org/
- aasasd 7y agoIn a file manager, integration with the system is important, which means that a dozen or two integration features should be implemented for each platform, aside from the internal differences in working with files. And that Electron is likely out. In addition, a file manager is pretty much a productivity app, so it has to be muscle-memory-level fast. For desktop software recommendations in established genres, AlternativeTo is a good source: https://alternativeto.net/software/windows-explorer/ https://alternativeto.net/software/windows-explorer/ But alas, there doesn't seem to be anything cross-platform of this sort there. Double Commander enjoys popularity and is cross-platform, but dunno how it feels on Windows. On Mac, it's decent though hasn't got much in the aforementioned integration department.
- alkonaut 7y agoDoes it do away with the flaws of explorer or is it just a new UI? For example: if I delete a huge local folder it cannot take longer than rd /q /s. Currently explorer will just grind to a halt if you remove more than 100k files - and you don’t even need node to end up in that situation.
- jimnotgym 7y agoNice hobby project, but Windows Explorer is fine. This is unlikely to end up on my image server.
- deleted 7y ago[deleted]
- Kirth 7y agoThe ability to explore isn't just Explorer's namesake but what makes is a good tool. Orienting yourself in Explorer is largely done through the tree on the side... which is missing in this rewrite? What an affront to computing modern UI design is.
- bufferoverflow 7y agoAfter decades of OS development, I still prefer to use FAR Manager (similar to Norton Commander / Total Commander / Midnight Commander). There's nothing better and faster than a two-panel system with a super-fast built-in editor / viewer.
- bruhmoment 7y agoWhy do Windoze users have a fetish for Universal/Modern UI? Wastes half the damn screen with enormously oversized buttons and elements. A computer is a device you use a mouse and keyboard with, don't try WI dows 8(.x)-style bullshit lol if you REALLY want those batshit insanely huge buttons for your tablet or something , just have separate touch-friendly version (like Office 2013 had a touch/kbd+m switchable version)
- bloopernova 7y agoI just wish Windows 10 explorer had a columns mode like OS X's Finder. There are a few replacements, but none of them work quite right in my experience.
- whywhywhywhy 7y agoReally hoping, but also expecting MS is doing this too internally right now, it's the only pain point left for me on Windows. Great to see how this sort of thing could feel.
- IceDane 7y agoThis seems to extremely similar to the normal explorer except for some style changes. How is this an improvement? This seems pretty pointlessly.