Skip to content

KillerShell v1.2.0

Choose a tag to compare

@SteveTheKiller SteveTheKiller released this 10 Aug 19:34
· 812 commits to main since this release

1.2.0 opens archives like folders and lets you write to a .zip from inside one, adds a Storage Analyzer that draws a whole drive as a treemap, and brings the theme picker to thirteen with a full Windows 98 recreation and its own period icon set - plus a KillerShell icon pack throughout, a shortcuts card that knows the app is eight applets rather than one, and a rebuilt Performance tab. It also fixes the two drag bugs that had been chased since 1.1.4: one could corrupt the process heap and take the app down, the other left the drag icon stranded on the window.

Added

  • Archives open like folders. Double-click a .zip, .tar, .tar.gz, .tgz or .gz and you are inside it, browsing with the same rows, sorting, icons and keys as anywhere else; Up climbs back out to the folder holding it. Opening a file inside one extracts a copy and hands it to whatever normally opens it, and dragging a file out drops a copy wherever you let go. No new dependencies were added for any of this, and .rar and .7z still open in whatever you already use for them.
  • A .zip can be changed from inside it: drag or paste files and folders in, Delete an entry, F2 to rename one. A folder takes everything under it, and an empty folder dragged in still arrives. Nothing already in the archive is ever quietly overwritten - a name that is already taken stops the write and asks, with keeping both as the default and replacing as a tick box. Every change is made by building a complete new archive beside the original and swapping it in only after it has been reopened and checked, so a crash, a full disk or a cancel leaves the original file exactly as it was. Adding one file to a zip rewrites the whole zip, so the status line carries a percentage rather than going quiet. Tar, tar.gz, tgz and gz stay read-only and say which they are: rebuilding a tar from what this build can read would drop the links, devices and other members it does not model, and a lone gzip has nowhere to put a second file. Moving out of an archive is deliberately not offered - that would be an extract plus a delete-from-archive with no way to make the two one, and Explorer treats zip drag-out as a copy for the same reason.
  • A Storage Analyzer tab, on F4 (Ctrl+F4 for an elevated scan that can read folders an ordinary account cannot) and on the sidebar rail. Point it at a folder or a drive, press Scan, and every file becomes a rectangle sized by how much room it takes - the WizTree and WinDirStat way of seeing where a disk went. Double-click a folder to zoom in, and a breadcrumb climbs back out. The scan is a parallel walk that never follows junctions or symlinks, so nothing is counted twice, and folders it is not allowed to open are counted and skipped rather than stopping it. A depth control flattens the map to the folders that matter, a minimum-size control hides the noise, and colouring switches between file type and top-level folder; all three are drawing filters, so they apply instantly and never change the totals. Right-click for open in a new tab, open in Explorer, copy path, or delete - and delete only ever goes to the Recycle Bin. The footer names whatever is under the pointer with its size and share of the map, plus the drive's total and free space.
  • Seven new themes, bringing the picker to thirteen: 98SE, Ectoplasm, Decay, Mourning, Sepulchre, Delirium and Malaise. 98SE carries its own accent set, like Dark, Light and Black. All thirteen names are translated into every shipped language, except 98SE, which is a product name.
  • A KillerShell icon pack replaces the Windows shell icons throughout. Folders have their own art, and the special ones are drawn as themselves rather than as generic folders: Home, Desktop, Documents, Downloads, Pictures, Music, Videos, Favorites, Program Files and Windows, plus drives and This PC. Every tab kind has an icon too - shell, admin shell, a closed shell, text editor, Task Manager, Event Viewer, Performance and Registry Editor.
  • The 98SE theme draws a period icon set instead of the brand one, so the folders, drives, tabs and tool icons match the rest of the theme rather than sitting on it. Switching theme swaps the whole set live. The art is Chicago95 (GPL-3.0+/MIT, the same licence family as KillerShell), upscaled with nearest-neighbour so the pixels stay pixels; Resources\icons\98\ATTRIBUTION.md maps every icon to its source.

Changed

  • The shortcuts card (F1) knows the app is eight applets, not one. Every binding now carries a scope - everywhere, file browser, terminal, editor, Processes/Services, Event Viewer, Registry Editor or Storage Analyzer - and both views group by it, so a key that only exists inside one tab stops reading as though it worked everywhere. The keyboard map draws the meaning that belongs to the tab you are actually on and says which scope that is above the board; hovering a key that is local to a tab names that tab. Two chords that had to be left off the map because a keycap could only say one thing are on it now: Ctrl+Shift+C is Copy full path in the listing and Copy in a terminal, and Ctrl+Shift+A adds a search term, runs a process as administrator, or selects all in a terminal, depending on where you are.
  • The card's list and the keyboard map are generated from one table instead of two. They had drifted: the map showed bare F7 as "add a filter" long after that moved to Shift+F7, showed Ctrl+Shift+C as case-sensitive matching after that moved to Alt+C, and the list was missing Ctrl+Shift+F8 (elevated CMD) entirely. All three are right now, and Alt+C appears on the map for the first time.
  • The Performance tab is a grid of full-size cells instead of a list of small tiles beside one big graph. Every metric is live at once, each cell can be half or full width, and dragging a cell's header reorders the grid. The layout is remembered.
  • Bare F4 opens the Storage Analyzer. It used to be a third way to edit the address bar, which still answers to Ctrl+L and Alt+D.
  • Files can be dropped onto the folder tree and onto a saved place, not just onto the listing - both mean the same thing dropping on a folder does. Dropping a folder on the empty part of the places drawer still saves it as a place.
  • UI and theme tweaks throughout. Selected rows read as white on the accent colour and hovered ones as accent on a neutral wash, consistently, and menu icons rest in the plain text colour and turn accent with the row rather than sitting accent-on-accent. The Black theme draws its card and dialog borders dark again instead of ringing every dialog, card and keycap in a mid-gray box. Outline buttons are readable while hovered on every theme. The sidebar and the search panel each slide out under the window edge when closed, rather than standing still while the content wipes across the top of them. The search panel's term and filter cards no longer render their text through their own drop shadow, the performance graphs' plot wells carry the same film grain as the cells around them, and the recents dropdown draws its folder icons whole, with a remove X on every row.
  • The new icons are used everywhere one is drawn: the sidebar tree, the places list, the file listing, the tab strip, the tab overflow list and recents all resolve through the same place, so nothing can end up with a different folder icon from its neighbour.
  • The app icon is the Killer seashell.
  • A tool's rail icon lights in the accent while a tab of that kind is open anywhere in the window - Event Viewer, Processes, Performance, Registry Editor and Storage Analyzer - so the rail tells you what you already have open instead of looking the same either way. Background tabs and the second pane count; only closing the last one of a kind puts the icon out.
  • The shared KillerUI palettes are vendored into the repo instead of linked in from a sibling folder at build time. KillerShell now clones and builds on its own, the GPL source zip is complete, and the palettes stop drifting from the ones actually in use.
  • --demo covers everything the app has grown since it was written. The invented machine gained the shell folders it was missing (Favorites, Music, Recent, Searches, Videos) plus Sysinternals, the app's own install folder and a slice of AppData, and its picture folders are now full enough to fill an icon view. Its saved places are a fixed set of fifteen, one per icon in the pack, so the drawer shows the whole folder-art set at once, and demo mode neither reads nor writes the real list. There is a second browsed tab, a picture folder, where every tile is a real image. The Event Viewer's fabricated log is 36 records across Application, System and Security and every level including Critical and Verbose; Processes and Services list 37 and 25 rows with every startup type represented; and the fabricated registry is 56 keys carrying all six value types, including the policy and service branches an endpoint actually has. As before, none of it touches the real machine - no EventLogReader, no WMI, no ServiceController, no RegistryKey.
  • The invented machine's profile is C:\Users\Demo everywhere - the folder tree, the browse listings, the search results, the saved places, the icon map, the fabricated registry, the Task Manager rows and the Event Viewer records. It used to carry a real account name and a real machine name, which put one person's directory layout into a public repository and into every screenshot taken from it.

Fixed

  • Dragging a file out to another application no longer corrupts memory and takes the app down with it. The object KillerShell hands to the drag was releasing every piece of data it held by freeing the raw memory handle, which is only correct when that memory belongs to us - and during a drag that shows a drag image, Windows attaches data whose memory belongs to the shell, then re-attaches it repeatedly as the drag moves. Freeing that does not raise an error; it damages the process heap, so the crash landed later and somewhere unrelated, as a heap fault inside Windows itself rather than anything pointing back here. Releases now go through the OS routine that respects who owns what, data that cannot be safely copied is skipped rather than aliased, and every memory allocation on the drag path is checked before it is written through.
  • The drag icon no longer stays stuck on the window after dragging a file into another application. Two halves, both fixed. KillerShell tells Windows the cursor arrived whenever a drag crosses its own window, but never told it the cursor LEFT - it assumed the receiving app would take over the drag image, which Explorer does and nearly nothing else does, so dragging into Telegram or GIMP left the icon painted at the window edge where the cursor exited, until the app was closed. A real exit is now reported the moment it happens, while the child-to-child crossings WPF disguises as exits are still left alone, since reacting to those is what used to crash mid-drag. And separately, the data Windows attaches during the drag carries a reference to the shell object that owns the drag image; nothing released that data when the drag finished, so even the paths that should have cleaned up could not. Every drag now releases what the shell stored the moment it completes. Chased since 2026-08-03.
  • Opening any elevated tab no longer buries the desktop in Explorer windows. An admin window already refused to save the session, but still restored it, so it came up carrying every tab from the ordinary window - and each restored shell tab then asked for a non-elevated terminal inside an elevated window, which is answered by handing the request back out through explorer.exe. One stray Explorer window per open tab, every time. An elevated window no longer restores the session, matching its existing refusal to save one.
  • Ctrl+F8 opens an admin terminal again. The elevated window it relaunched into built its shell profile as unelevated, so the request fell through the "non-elevated shell in an elevated window" guard and was bounced straight back out to a new ordinary window through explorer.exe - meaning every press put up a UAC prompt and then spawned an extra explorer.exe and an extra KillerShell, while the admin window itself came up with no terminal in it. Same fix covers Ctrl+Shift+F8 for an admin CMD.
  • An admin shell window that fails to open its terminal no longer strips its own menubar, sidebar and tab strip, which left a file browser with no address bar and no way to tell which folder it was showing.
  • Choosing icons view in the folder picker crashed the app, and its list view showed one tall column instead of Explorer's columns. The dialog was asking for a layout that only exists inside the file pane, where a dialog can never see it.
  • Photos taken in portrait show the right way up. A phone writes a portrait shot as a landscape frame plus a tag saying which way to turn it, and nothing in WPF reads that tag, so every one of them sat on its side in the listing thumbnail, in icon view and in the details preview, while Explorer showed the same file upright. The tag is read now, and the three places that decode an image share one routine instead of carrying three copies of it.
  • Ctrl+Shift+A on a Processes row (Run as administrator) and Ctrl+Shift+C in a terminal (Copy) can no longer be taken by the window. The window watches keys on their way down to the tab, so a chord bound in both places was always decided by the window first; the two that collide are now gated on which applet has the keyboard.
  • The terminal draws the glyphs a prompt actually uses. Anything the chosen font was missing came out as a box, because the terminal resolves one typeface and draws with it directly; it now falls back per character to the bundled set and then to an installed font, with Nerd Font icons only ever resolved against a real Nerd Font so a lookalike cannot draw the wrong picture.
  • Switching to another tab and back keeps the rows you had selected, and the details strip with them. No tab stored its selection anywhere, so the return trip re-bound the results list and came up with nothing selected. Each tab now remembers the paths of its selected rows and puts them back, multi-row selections included, and a folder tab that re-lists itself on the way in still gets its selection back afterwards.
  • A shell or document tab can no longer end up wearing two stacked menu bars. Ctrl+F10 toggles the folder location row without going through a tab switch, so it never checked what kind of tab was showing and could slide that row open directly above the shell's own bar. Reachable in one keypress in any window that starts on a shell.
  • In demo mode the details pane shows a created date for a fabricated file instead of a dash.