├── .gitignore ├── Setup Version ├── Canary │ └── shell-canary.v1.9.17.zip ├── Experimental │ ├── shell.v1.9.18.dll │ └── shell.v1.9.20.dll └── Stable │ └── setup.v1.9.15.exe ├── dev.develop ├── app.sandbox.md ├── app.sandbox.nss └── app.sandbox.png ├── dev.helpers ├── nss.icons.segoe.nss ├── nss.icons.win.md ├── nss.icons.win.nss ├── nss.icons.win.png ├── nss.meta.1.png ├── nss.meta.2.png ├── nss.meta.md ├── nss.meta.nss ├── nss.paths.1.png ├── nss.paths.2.png ├── nss.paths.3.png ├── nss.paths.md └── nss.paths.nss ├── docs ├── VSCode-item.png ├── VSCode-menu.png ├── index.html ├── meta.data.xls └── meta.list.md ├── ex1.system ├── all.autorename.md ├── all.autorename.nss ├── all.autorename.png ├── all.clipboard.save.md ├── all.clipboard.save.nss ├── all.clipboard.save.png ├── all.keyboard.shortcuts.1.png ├── all.keyboard.shortcuts.2.png ├── all.keyboard.shortcuts.3.png ├── all.keyboard.shortcuts.4.png ├── all.keyboard.shortcuts.5.png ├── all.keyboard.shortcuts.md ├── all.keyboard.shortcuts.nss ├── all.openwith.md ├── all.openwith.minimal.ml.nss ├── all.openwith.minimal.ml.png ├── all.openwith.simple.nss ├── all.openwith.simple.png ├── all.sendto.md ├── all.sendto.nss ├── all.sendto.png ├── app.mozilla.nss └── ext.msi.nss ├── ex2.user.cloud.share ├── cloud.aio.nss ├── cloud.aio.png ├── cloud.dropbox.basic.ml.nss ├── cloud.dropbox.basic.png ├── cloud.dropbox.enhanced.nss ├── cloud.dropbox.enhanced.png ├── cloud.dropbox.md ├── cloud.dropbox.remove.nss ├── cloud.google.md ├── cloud.google.nss ├── cloud.odrive.md ├── cloud.odrive.nss ├── cloud.onedrive.md ├── cloud.onedrive.nss └── cloud.onedrive.png ├── ex3.archiver ├── app.NanaZup.nss ├── app.SevenZip.1.png ├── app.SevenZip.2.png ├── app.SevenZip.3.png ├── app.SevenZip.4.png ├── app.SevenZip.5.png ├── app.SevenZip.6.png ├── app.SevenZip.md ├── app.SevenZip.nss ├── app.UniExtract.md ├── app.UniExtract.nss ├── app.UniExtract.png ├── app.WinRAR.1.png ├── app.WinRAR.2.png ├── app.WinRAR.3.png ├── app.WinRAR.md ├── app.WinRAR.nss ├── app.WinRAR.portable.nss ├── sys.compress.extract.1.png ├── sys.compress.extract.2.png ├── sys.compress.extract.md ├── sys.compress.extract.nss ├── sys.compress.ps.1.png ├── sys.compress.ps.2.png ├── sys.compress.ps.md └── sys.compress.ps.nss ├── ex3.multifunction ├── all.copy.hash.cmd.1.png ├── all.copy.hash.cmd.2.png ├── all.copy.hash.cmd.md ├── all.copy.hash.cmd.nss ├── all.copy.hash.cmd.png ├── all.copy.hash.ps.1.png ├── all.copy.hash.ps.2.png ├── all.copy.hash.ps.md ├── all.copy.hash.ps.nss ├── all.copy.hash.ps.png ├── all.copy.list.cp.1.png ├── all.copy.list.cp.md ├── all.copy.list.cp.nss ├── all.copy.list.cp.png ├── all.copy.list.ns.1.png ├── all.copy.list.ns.md ├── all.copy.list.ns.nss ├── all.copy.list.ns.png ├── all.copy.path.all.1.png ├── all.copy.path.all.2.png ├── all.copy.path.all.3.png ├── all.copy.path.all.4.png ├── all.copy.path.all.md ├── all.copy.path.all.nss ├── all.copy.path.env.1.png ├── all.copy.path.env.2.png ├── all.copy.path.env.md ├── all.copy.path.env.nss ├── all.copy.path.lnk.1.png ├── all.copy.path.lnk.2.png ├── all.copy.path.lnk.md ├── all.copy.path.lnk.nss ├── all.copy.path.lnk.png ├── all.copy.path.ps.1.png ├── all.copy.path.ps.2.png ├── all.copy.path.ps.md ├── all.copy.path.ps.nss ├── all.copy.path.url.1.png ├── all.copy.path.url.2.png ├── all.copy.path.url.md ├── all.copy.path.url.nss ├── all.drive.file.1.png ├── all.drive.file.2.png ├── all.drive.file.md ├── all.drive.file.nss ├── all.drive.folder.1.png ├── all.drive.folder.2.png ├── all.drive.folder.md ├── all.drive.folder.nss ├── all.drive.manage.1.png ├── all.drive.manage.2.png ├── all.drive.manage.md ├── all.drive.manage.nss ├── all.drive.swap.1.png ├── all.drive.swap.2.png ├── all.drive.swap.md ├── all.drive.swap.nss ├── all.security.encrypt.1.png ├── all.security.encrypt.2.png ├── all.security.encrypt.md ├── all.security.encrypt.nss ├── all.security.env.1.png ├── all.security.env.2.png ├── all.security.env.md ├── all.security.env.nss ├── all.security.firewall.1.png ├── all.security.firewall.md ├── all.security.firewall.nss ├── commands.item.options.nss ├── commands.links.0.png ├── commands.links.cmd.nss ├── commands.links.md ├── commands.links.png ├── commands.links.ps.nss ├── commands.renamer.1.png ├── commands.renamer.2.png ├── commands.renamer.md ├── commands.renamer.nss └── commands.shortcut.nss ├── ex4.terminal ├── all.terminal.md ├── all.terminal.nss └── all.terminal.png ├── ex5.goto ├── goto.address.md ├── goto.address.nss ├── goto.address.png ├── goto.aio.nss ├── goto.aio.png ├── goto.reg.md ├── goto.reg.nss ├── goto.reg.png ├── goto.run.md ├── goto.run.nss ├── goto.run.png ├── goto.temp.md ├── goto.temp.nss ├── goto.temp.png ├── goto.v2.md ├── goto.v2.nss └── goto.v2.png ├── ext.desktop ├── sys.spotlight.1.png ├── sys.spotlight.2.png ├── sys.spotlight.3.png ├── sys.spotlight.md └── sys.spotlight.nss ├── ext.managers ├── all.power.1.png ├── all.power.2.png ├── all.power.md ├── all.power.nss ├── nss.winver.md ├── nss.winver.nss └── nss.winver.png ├── ext.nilesoft ├── nss.about.md ├── nss.about.nss ├── nss.about.png └── theme-manager.nss ├── ext.others ├── bar.address.1.png ├── bar.address.md ├── bar.address.nss ├── bar.scroll.1.png ├── bar.scroll.2.png ├── bar.scroll.md ├── bar.scroll.nss ├── bar.title.1.png ├── bar.title.md ├── bar.title.nss ├── edit.1.png ├── edit.2.png ├── edit.md ├── edit.nss ├── recycle.bin.1.png ├── recycle.bin.2.png ├── recycle.bin.md └── recycle.bin.nss ├── readme.md ├── shell.basic.1.nss └── shell.basic.2.nss /.gitignore: -------------------------------------------------------------------------------- 1 | *tmp* -------------------------------------------------------------------------------- /Setup Version/Canary/shell-canary.v1.9.17.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/Setup Version/Canary/shell-canary.v1.9.17.zip -------------------------------------------------------------------------------- /Setup Version/Experimental/shell.v1.9.18.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/Setup Version/Experimental/shell.v1.9.18.dll -------------------------------------------------------------------------------- /Setup Version/Experimental/shell.v1.9.20.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/Setup Version/Experimental/shell.v1.9.20.dll -------------------------------------------------------------------------------- /Setup Version/Stable/setup.v1.9.15.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/Setup Version/Stable/setup.v1.9.15.exe -------------------------------------------------------------------------------- /dev.develop/app.sandbox.md: -------------------------------------------------------------------------------- 1 | # Windows Sandbox 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`app.sandbox.nss`](/dev.develop/app.sandbox.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1)](/dev.develop/app.sandbox.png) 10 | 11 | ## Overview 12 | Advanced Windows Sandbox integration for Nilesoft Shell, enabling secure file/folder testing and URL handling. 13 | 14 | ## Key Features 15 | - Folder synchronization 16 | - URL handling with Edge 17 | - Executable file testing 18 | - PowerShell script execution 19 | - Read/write access control 20 | 21 | ## Menu Structure 22 | - Sandbox with NS Shell options 23 | - Desktop synchronization 24 | - Folder sharing options 25 | - URL handling 26 | - File execution options 27 | - Script execution settings 28 | 29 | ## Usage Notes 30 | - SHIFT key enables write access 31 | - Disables when sandbox is running 32 | - Auto-cleans temporary files 33 | - Single selection mode 34 | 35 | ## Technical Details 36 | - Windows Sandbox does not support these characters in the path: é è à â ê û î ä ë ü ï ö ù ò ~ ! @ # $ % ^ & + = } { ] [ | < > ; 37 | - Disables GPU acceleration, ensuring that the sandbox does not utilize the host system's GPU resources. Instead, all graphical rendering is handled via software. 38 | 39 | ## Dependencies 40 | - Windows Operating System (build 1903+) 41 | - Nilesoft Shell framework 42 | - Windows Sandbox 43 | - Microsoft Edge 44 | - PowerShell -------------------------------------------------------------------------------- /dev.develop/app.sandbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/dev.develop/app.sandbox.png -------------------------------------------------------------------------------- /dev.helpers/nss.icons.win.md: -------------------------------------------------------------------------------- 1 | # Nilesoft Shell Windows Icon Path Extractor 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`nss.icons.win.nss`](/dev.helpers/nss.icons.win.nss) 7 | 8 | ### Screenshot: 9 | ![Windows Icons Menu Screenshot](/dev.helpers/nss.icons.win.png) 10 | 11 | ## Overview 12 | A specialized utility for extracting icon paths from Windows system DLLs and executables. This tool simplifies the process of accessing and copying Windows' built-in icon library paths through an organized context menu system. 13 | 14 | ## Key Features 15 | - Extract icon paths from system DLLs 16 | - Copy formatted icon references to clipboard 17 | - Access Windows executable icon paths 18 | 19 | ## Menu Structure 20 | 21 | 1. **Core System Icons** 22 | - shell32.dll (327 icons) 23 | - imageres.dll (359 icons) 24 | 25 | 2. **Hardware and Devices** 26 | - Hardware Devices (ddores.dll) 27 | - Audio Devices (mmres.dll) 28 | - Sensors (sensorscpl.dll) 29 | - Setup Wizard (setupapi.dll) 30 | - Multimedia (wmploc.dll) 31 | - Portable Devices (wpdshext.dll) 32 | - Disk Management (dmdskres.dll) 33 | - Imaging Hardware (wiashext.dll) 34 | 35 | 3. **Network Related** 36 | - Network (netcenter.dll) 37 | - Network Hardware (netshell.dll) 38 | - Network Settings (pnidui.dll) 39 | - Network Services (dsuiext.dll) 40 | - Internet Explorer (ieframe.dll) 41 | - Internet Shortcuts (url.dll) 42 | - Remote Desktop (mstscax.dll) 43 | 44 | 4. **System Utilities** 45 | - Accessibility Features 46 | - Actions 47 | - Action Center 48 | - Access Control 49 | - Auto Play 50 | - Common Controls 51 | - Installation 52 | 53 | 5. **Legacy Icons** 54 | - Windows 95/98 (pifmgr.dll) 55 | - Old Programming Language (moricons.dll) 56 | - Old Computer Management (mmcndmgr.dll) 57 | - Old Windows Hardware (compstui.dll) 58 | 59 | ## Usage Notes 60 | - Icons are accessed by their DLL location and index 61 | - Copies icon path in Nilesoft Shell's icon.box format 62 | - Shows number of available icons in each library 63 | 64 | ## Dependencies 65 | Required Components: 66 | - Windows Property System 67 | - Nilesoft Shell framework 68 | - Original system DLLs and executables 69 | 70 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /dev.helpers/nss.icons.win.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/dev.helpers/nss.icons.win.png -------------------------------------------------------------------------------- /dev.helpers/nss.meta.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/dev.helpers/nss.meta.1.png -------------------------------------------------------------------------------- /dev.helpers/nss.meta.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/dev.helpers/nss.meta.2.png -------------------------------------------------------------------------------- /dev.helpers/nss.meta.md: -------------------------------------------------------------------------------- 1 | # Nilesoft Shell Windows Properties Meta Copy Tool 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`nss.meta.nss`](/dev.helpers/nss.meta.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1)](/dev.helpers/nss.meta.1.png) 10 | ![Screenshot 2)](/dev.helpers/nss.meta.2.png) 11 | 12 | ## Overview 13 | A menu system for viewing and copying Windows file property metadata. The menu provides access to various Windows system property attributes organized into logical categories such as Core, Document, Image, Photo, Media, Audio, Music, Video... 14 | 15 | ## Key Features 16 | - Mouse-click command integration (Left Click, Right Click, with Shift modifiers) 17 | - Dynamic value retrieval from selected items 18 | - Tooltip support with command information 19 | - Extensive property list 20 | 21 | ## Usage Notes 22 | - Supports multiple selection mode 23 | - Command execution varies based on mouse button and shift key state 24 | - Tooltips provide additional information about properties 25 | - Properties are grouped logically for easier navigation 26 | 27 | ## Technical Details 28 | - Command Structure: 29 | - Left Click: `@this.title` 30 | - Left Click + Shift: io.meta(sel, '@this.title') 31 | - Right Click: `'@io.meta(sel, this.title)'` 32 | - Right Click + Shift: `io.meta(sel, '@this.title')=='@io.meta(sel, this.title)'` 33 | 34 | ## Dependencies 35 | Required Components: 36 | - Windows Property System 37 | - Nilesoft Shell framework 38 | 39 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /dev.helpers/nss.paths.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/dev.helpers/nss.paths.1.png -------------------------------------------------------------------------------- /dev.helpers/nss.paths.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/dev.helpers/nss.paths.2.png -------------------------------------------------------------------------------- /dev.helpers/nss.paths.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/dev.helpers/nss.paths.3.png -------------------------------------------------------------------------------- /dev.helpers/nss.paths.md: -------------------------------------------------------------------------------- 1 | # Nilesoft Shell Path Copy Tool 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`nss.paths.nss`](/dev.helpers/nss.paths.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1)](/dev.helpers/nss.paths.1.png) 10 | ![Screenshot 2)](/dev.helpers/nss.paths.2.png) 11 | ![Screenshot 3)](/dev.helpers/nss.paths.3.png) 12 | 13 | ## Overview 14 | Extension for converting Windows paths to Nilesoft Shell variable paths, offering path conversion for app, user, and system directories. 15 | 16 | ## Key Features 17 | - Automatic path variable detection 18 | - App directory path conversion 19 | - User directory path conversion 20 | - System directory path conversion 21 | - Library path support 22 | - Smart menu visibility 23 | 24 | ## Menu Structure 25 | - App paths (app.directory, app.dir, app.cfg, app.dll) 26 | - User paths (user.home, user.appdata, user.desktop, etc.) 27 | - Library paths (user.libraries, user.documentslibrary) 28 | - System paths (sys.bin, sys.root, sys.prog, etc.) 29 | 30 | ## Usage Notes 31 | - Single selection mode 32 | - Menu is enable only for supported paths 33 | - Handles special folder GUIDs 34 | 35 | ## Dependencies 36 | Required Components: 37 | - Windows Operating System 38 | - Nilesoft Shell framework 39 | 40 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /docs/VSCode-item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/docs/VSCode-item.png -------------------------------------------------------------------------------- /docs/VSCode-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/docs/VSCode-menu.png -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Hello World 7 | 8 | 9 |

Hello, World!

10 | 11 | -------------------------------------------------------------------------------- /docs/meta.data.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/docs/meta.data.xls -------------------------------------------------------------------------------- /ex1.system/all.autorename.md: -------------------------------------------------------------------------------- 1 | # Auto Rename Long Names 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.autorename.nss`](/ex1.system/all.autorename.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot](/ex1.system/all.autorename.png) 10 | 11 | ## Overview 12 | 13 | This Nilesoft Shell script adds an enhanced "Rename" context menu option that automatically shortens file or directory names when they exceed Windows' maximum path length limitations. 14 | 15 | ## Key Features 16 | - Automatically shortens file names that exceed 259 characters 17 | - Automatically shortens directory names that exceed 248 characters 18 | - Shows tooltip with the number of characters that will be removed 19 | - Appears in the same position as the standard Rename command 20 | 21 | ## Menu Structure 22 | 1. **Rename (auto)** 23 | - Appears in place of the standard Rename command 24 | - Only visible when the selected file/directory exceeds the maximum length 25 | - Shows a distinctive green-yellow rename icon 26 | - Provides tooltip showing how many characters will be removed 27 | 28 | ## Usage Notes 29 | - The menu item only appears when a file or directory name exceeds Windows' maximum path length 30 | - For files: Maximum path length is 259 characters 31 | - For directories: Maximum path length is 248 characters 32 | 33 | ## Dependencies 34 | Required Components: 35 | - Windows Operating System 36 | - Nilesoft Shell framework 37 | 38 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. 39 | -------------------------------------------------------------------------------- /ex1.system/all.autorename.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | // This code creates two menu items for renaming files and directories when their names exceed the maximum allowed length on Windows (259 characters for files and 248 characters for directories). When clicked, these menu items will automatically shorten the name to fit within the allowed length. 5 | 6 | //> https://learn.microsoft.com/en-gb/windows/win32/fileio/naming-a-file#maximum-path-length-limitation 7 | $maxFileLen = 259 8 | item(title=title.rename keys='auto' type='file' where=sel.len>=maxFileLen 9 | image=icon.rename(auto, color.greenyellow) pos=indexof(quote(str.replace(title.rename, '&', ''))) 10 | tip='shorten the name by @(sel.len-(maxFileLen-1)) characters' vis=if(this.level!=1, 'disabled') 11 | cmd=io.rename(sel.path, path.combine(sel.parent, str.left(sel.file.title, maxFileLen-1-sel.parent.len-sel.file.ext.len) + sel.file.ext))) 12 | $maxDirLen = 248 13 | item(title=title.rename keys='auto' type='dir' where=sel.len>=maxDirLen 14 | image=icon.rename(auto, color.greenyellow) pos=indexof(quote(str.replace(title.rename, '&', ''))) 15 | tip='shorten the name by @(sel.len-(maxDirLen-1)) characters' vis=if(this.level!=1, 'disabled') 16 | cmd=io.rename(sel.path, path.combine(sel.parent, str.left(sel.path.name, maxDirLen-1-sel.parent.len)))) -------------------------------------------------------------------------------- /ex1.system/all.autorename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex1.system/all.autorename.png -------------------------------------------------------------------------------- /ex1.system/all.clipboard.save.md: -------------------------------------------------------------------------------- 1 | # Clipboard Save Image 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.clipboard.save.nss`](/ex1.system/all.clipboard.save.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot](/ex1.system/all.clipboard.save.png) 10 | 11 | ## Overview 12 | 13 | This Nilesoft Shell script adds a "Save Image" context menu option that allows users to quickly save clipboard images as PNG files. 14 | 15 | ## Key Features 16 | - One-click saving of clipboard images to PNG files 17 | - Automatic filename generation using date and time 18 | - Strategic menu positioning near the Paste command 19 | - Only appears when an image is actually in the clipboard 20 | - Works on directories, drives, and desktop 21 | 22 | ## Menu Structure 23 | 1. **Save Image** 24 | - Single menu item that appears in the context menu 25 | - Positioned at the same level as the Paste command 26 | - Includes tooltip explaining the functionality 27 | - Shows a custom save icon 28 | 29 | ## Usage Notes 30 | - The menu item only appears when an image is present in the clipboard 31 | - Files are automatically named with date and time stamps (format: ymd-HMS.png) 32 | - The script uses PowerShell to access clipboard data and save the image 33 | - A system beep confirms successful saving 34 | - The menu option only appears when right-clicking on directories, drives, or the desktop 35 | 36 | ## Dependencies 37 | Required Components: 38 | - Windows Operating System 39 | - Nilesoft Shell framework 40 | 41 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. 42 | -------------------------------------------------------------------------------- /ex1.system/all.clipboard.save.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | $svg_save = ' 5 | 6 | ' 7 | item(title='Save Image' keys='.png' type='back.dir|back.drive|desktop' image=svg_save pos=indexof(str.replace(title.paste, '&', ''), 1) tip='Save the image to a file from the clipboard.' 8 | where=clipboard.is_bitmap commands { 9 | cmd-ps=`$filePath = '@path.combine(sel, sys.datetime("ymd-HMS") + '.png')'; Add-Type -AssemblyName System.Windows.Forms; Add-Type -AssemblyName System.Drawing; try { $image = [System.Windows.Forms.Clipboard]::GetImage(); $image.Save($filePath, [System.Drawing.Imaging.ImageFormat]::Png) } catch { Write-Host "Failed to save image to file: $_" }` window='hidden' wait=1, 10 | cmd=msg.beep, }) -------------------------------------------------------------------------------- /ex1.system/all.clipboard.save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex1.system/all.clipboard.save.png -------------------------------------------------------------------------------- /ex1.system/all.keyboard.shortcuts.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex1.system/all.keyboard.shortcuts.1.png -------------------------------------------------------------------------------- /ex1.system/all.keyboard.shortcuts.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex1.system/all.keyboard.shortcuts.2.png -------------------------------------------------------------------------------- /ex1.system/all.keyboard.shortcuts.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex1.system/all.keyboard.shortcuts.3.png -------------------------------------------------------------------------------- /ex1.system/all.keyboard.shortcuts.4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex1.system/all.keyboard.shortcuts.4.png -------------------------------------------------------------------------------- /ex1.system/all.keyboard.shortcuts.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex1.system/all.keyboard.shortcuts.5.png -------------------------------------------------------------------------------- /ex1.system/all.keyboard.shortcuts.md: -------------------------------------------------------------------------------- 1 | # Windows Keyboard Shortcuts Menu Enhancement 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.keyboard.shortcuts.nss`](/ex1.system/all.keyboard.shortcuts.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex1.system/all.keyboard.shortcuts.1.png) 10 | ![Screenshot 2](/ex1.system/all.keyboard.shortcuts.2.png) 11 | ![Screenshot 3](/ex1.system/all.keyboard.shortcuts.3.png) 12 | ![Screenshot 5](/ex1.system/all.keyboard.shortcuts.4.png) 13 | ![Screenshot 5](/ex1.system/all.keyboard.shortcuts.5.png) 14 | 15 | ## Overview 16 | A Nilesoft Shell extension that enhances the Windows context menu by adding keyboard shortcut information to standard menu items and introducing additional commands with keyboard shortcuts for improved productivity. 17 | 18 | ## Key Features 19 | - Displays keyboard shortcuts for common Windows operations 20 | - Adds tooltips with additional information for certain actions 21 | - Introduces new commands with keyboard shortcuts in the View menu 22 | - Modifies standard menu items with enhanced shortcut information 23 | - Customizes contextual behavior based on selection and window type 24 | 25 | ## Menu Structure 26 | - Common Operations 27 | - Open, Cut, Copy, Paste, Delete with keyboard shortcuts 28 | - Rename, Undo, Redo, Select All with shortcuts 29 | - Copy as Path, Refresh, Properties with shortcuts 30 | - View Menu Enhancements 31 | - Icon size shortcuts (Extra Large to Content) 32 | - Column Arrange (Ctrl+Shift+C) 33 | - Expand Navigation Pane (Ctrl+Shift+E) 34 | - Navigation shortcuts (Up, Back, Forward) 35 | - Desktop icon settings command 36 | 37 | ## Usage Notes 38 | - Displays keyboard shortcuts alongside menu items for quick reference 39 | - Window-specific commands appear only in appropriate contexts 40 | - Custom tooltips provide additional information 41 | - Introduces consistent keyboard shortcuts across Windows Explorer 42 | 43 | ## Dependencies 44 | Required Components: 45 | - Windows Operating System 46 | - System resources (shell32.dll) 47 | - String resources for localization support 48 | - Nilesoft Shell framework 49 | 50 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. 51 | -------------------------------------------------------------------------------- /ex1.system/all.keyboard.shortcuts.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | // remove keyboard shortcut info of the only command that has one 5 | // modify(find='Undo*|Redo*' keys='') 6 | // modify(where=str.start(this.title, title.Undo) or str.start(this.title, title.Redo) keys='') 7 | 8 | //> https://support.microsoft.com/en-us/windows/keyboard-shortcuts-in-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec 9 | //> https://www.elevenforum.com/t/keyboard-shortcuts-in-windows-11.2253/ 10 | modify(where=this.title==title.open keys='Enter') 11 | modify(where=this.title==title.cut type='*' keys='Ctrl+X') 12 | modify(where=this.title==title.copy type='*' keys='Ctrl+C') 13 | modify(where=this.title==title.paste type='*' keys='Ctrl+V') // tip='Open the clipboard history (Win+V)' 14 | modify(where=this.title==title.delete type='*' keys='Ctrl+D' tip=["\xE1A7 Press SHIFT key to permanently delete selected file"+if(sel.count>1, 's'), tip.danger, 1.0]) 15 | modify(where=this.title==title.rename keys='F2') 16 | modify(where=str.start(this.title, title.undo) type='*' keys='Ctrl+Z') 17 | modify(where=str.start(this.title, title.redo) type='*' keys='Ctrl+Y') 18 | modify(where=this.title==title.select_all type='*' keys='Ctrl+A') 19 | modify(where=this.title==title.copy_as_path keys='Ctrl+Shift+C') 20 | modify(where=this.title==title.refresh keys='Ctrl+R') 21 | modify(where=this.title==title.properties & sel.count>0 keys='Alt+Enter') 22 | 23 | //> https://www.elevenforum.com/t/change-size-of-desktop-icons-in-windows-11.4820/ 24 | modify(where=this.title==title.extra_large_icons in=str.replace(title.view, '&', '') keys='Ctrl+Shift+1') 25 | modify(where=this.title==title.large_icons in=str.replace(title.view, '&', '') keys='Ctrl+Shift+2') 26 | modify(where=this.title==title.medium_icons in=str.replace(title.view, '&', '') keys='Ctrl+Shift+3') 27 | modify(where=this.title==title.small_icons in=str.replace(title.view, '&', '') keys='Ctrl+Shift+4') 28 | modify(where=this.title==title.list in=str.replace(title.view, '&', '') keys='Ctrl+Shift+5') 29 | modify(where=this.title==title.details in=str.replace(title.view, '&', '') keys='Ctrl+Shift+6') 30 | modify(where=this.title==title.tiles in=str.replace(title.view, '&', '') keys='Ctrl+Shift+7') 31 | modify(where=this.title==title.content in=str.replace(title.view, '&', '') keys='Ctrl+Shift+8') 32 | 33 | // Add keyboard shortcut info to "&Folder" in "Ne&w" menu 34 | modify(where=this.title==eval(str.res('shell32.dll', -30317)) in=str.replace(title.new, '&', '') keys='Ctrl+Shift+N') 35 | 36 | // Add new commands for "Select &all" 37 | item(title='Select &all' keys='Ctrl+A' image=icon.select_all cmd=command.select_all) 38 | 39 | // Add keyboard shortcut info to "Size &All Columns to Fit" 40 | modify(type='*' keys='Ctrl+"Num Pad +"' 41 | where=(this.title==eval(str.res('shell32.dll', -37201)) or this.title==eval(str.res('shell32.dll', -37466))) and (wnd.parent.name=="SHELLDLL_DefView")) 42 | 43 | // Add new commands in "View" menu 44 | item(title='Column Arrange' keys='Ctrl+"Num Pad +"' 45 | where=window.name=='CabinetWClass' menu=title.view image=icon.details sep='top' 46 | commands{cmd=keys.send(key.ctrl, key.shift, 54) wait=1, cmd=keys.send(key.ctrl, 107)}) 47 | item(title='Expand Navigation Pane' keys='Ctrl+Shift+E' 48 | where=window.name=='CabinetWClass' menu=title.view image=icon.expand sep='bottom' 49 | tip='Expands all folders from the tree in the navigation pane.' cmd=keys.send(key.ctrl, key.shift, 69)) 50 | item(title='Up' keys='Alt+Up' 51 | where=window.name=='CabinetWClass' menu=title.view image=\uE214 cmd=keys.send(key.alt, key.up)) 52 | item(title='Back' keys='Alt+Left' 53 | where=window.name=='CabinetWClass' menu=title.view image=\uE216 cmd=keys.send(key.alt, key.left)) 54 | item(title='Forward' keys='Alt+Right' 55 | where=window.name=='CabinetWClass' menu=title.view image=\uE215 cmd=keys.send(key.alt, key.right)) 56 | 57 | item(title='Desktop icon settings' where=wnd.is_desktop menu=title.view pos=indexof(quote(str.replace(title.show_desktop_icons, '&', ''))) image=image.res('@sys.bin\desk.cpl', 0) 58 | cmd='rundll32.exe' args='shell32.dll,Control_RunDLL desk.cpl,,0') 59 | 60 | /* this snippet is not working well 61 | item(title='&Hide file names' where=wnd.is_desktop menu=title.view pos=indexof(quote(str.replace(title.show_desktop_icons, '&', ''))) tip='hides file names on desctop icons temporarly' 62 | cmd=wnd.command(28727)) */ -------------------------------------------------------------------------------- /ex1.system/all.openwith.md: -------------------------------------------------------------------------------- 1 | # Open With Menu Replacement 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippets: 6 | [`all.openwith.simple.nss`](/ex1.system/all.openwith.simple.nss)
7 | [`all.openwith.minimal.ml.nss`](/ex1.system/all.openwith.minimal.ml.nss) 8 | 9 | ### Screenshot: 10 | ![Screenshot 1](/ex1.system/all.openwith.simple.png) 11 | ![Screenshot 2](/ex1.system/all.openwith.minimal.ml.png) 12 | 13 | ## Overview 14 | These Nilesoft Shell scripts replace the default Windows "Open With" menu with custom versions 15 | 16 | ## Key Features 17 | - Replaces the default Windows "Open With" menu 18 | - Provides direct access to the "Choose another app" dialog 19 | - Enhanced version adds Microsoft Store search for file extensions 20 | - Enhanced version adds web search for file extension information 21 | 22 | ## Menu Structure 23 | 24 | ### Enhanced Version (`all.openwith.simple.nss`): 25 | 1. **Main "Open With" Menu** 26 | - "Choose another app" entry that opens the standard Windows Open With dialog 27 | - Sub-menu with additional options: 28 | - Microsoft Store search for the file extension 29 | - Web search for "What is this extension?" 30 | 31 | ### Minimal Version (`all.openwith.minimal.ml.nss`): 32 | 1. **Single Menu Entry** 33 | - Direct "Open With" menu item that opens the standard Windows dialog 34 | 35 | ## Usage Notes 36 | - Both versions remove the default Windows "Open With" menu items 37 | - Enhanced version works with both files and directories 38 | - Enhanced version provides additional options only for files (not directories) 39 | - Microsoft Store search links directly to the store filtered by the file extension 40 | - Web search uses file-extensions.org for extension information 41 | - The minimal version provides a cleaner context menu with the same core functionality 42 | - Choose which version to implement based on your preference for functionality vs. simplicity 43 | 44 | ## Dependencies 45 | Required Components: 46 | - Windows Operating System 47 | - Nilesoft Shell framework 48 | 49 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex1.system/all.openwith.minimal.ml.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | remove(where=this.title==str.res('shell32.dll', -5376) or this.title==str.res('shell32.dll', -5377)) 5 | 6 | item(title=str.res('shell32.dll', -5377) type='file|dir' image=icon.open_with tip=str.res('shell32.dll', -5378) 7 | cmd='rundll32.exe' args='shell32.dll,OpenAs_RunDLL @sel') -------------------------------------------------------------------------------- /ex1.system/all.openwith.minimal.ml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex1.system/all.openwith.minimal.ml.png -------------------------------------------------------------------------------- /ex1.system/all.openwith.simple.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | remove(where=this.title==str.res('shell32.dll', -5376) or this.title==str.res('shell32.dll', -5377)) 5 | 6 | menu(title=str.res('shell32.dll', -5376) type='file|dir' image=icon.open_with) { 7 | item(title=str.res('shell32.dll', -5377) image=inherit tip=str.res('shell32.dll', -5378) 8 | cmd='rundll32.exe' args='shell32.dll,OpenAs_RunDLL @sel') 9 | separator() 10 | menu(expanded='true' mode='single' type='file') { 11 | item(image=\uE1B9 title=str.res('shell32.dll', -5382) 12 | cmd='ms-windows-store://search/?query=.@sel.file.ext') 13 | item(image=\uE120 title='What is this extension?' 14 | cmd='https://www.file-extensions.org/search/?searchstring='+sel.file.ext) } } -------------------------------------------------------------------------------- /ex1.system/all.openwith.simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex1.system/all.openwith.simple.png -------------------------------------------------------------------------------- /ex1.system/all.sendto.md: -------------------------------------------------------------------------------- 1 | # Send To Menu Enhancement 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.sendto.nss`](/ex1.system/all.sendto.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot](/ex1.system/all.sendto.png) 10 | 11 | ## Overview 12 | 13 | This Nilesoft Shell script enhances the Windows "Send to" context menu by reorganizing its position, adding new useful options, and reordering the existing entries. 14 | 15 | ## Key Features 16 | - Repositions the "Send to" menu to a more convenient location 17 | - Adds a "Send to Executable" option for opening files with any program 18 | - Provides direct access to the "Send To" folder 19 | - Allows creation of new "Send To" shortcuts directly from the context menu 20 | - Reorders existing "Send to" system items for better organization 21 | - Compatible with both files and directories 22 | 23 | ## Menu Structure 24 | 1. **New Top-Level Items** 25 | - "Send to Executable" - Choose any EXE to open the selected file(s) 26 | - "Open 'Send To' folder" - Opens the user's SendTo directory 27 | - "Add Here..." - Creates a shortcut to the selected folder or EXE in the SendTo directory 28 | 29 | 2. **Reordered Default Items** 30 | - Bluetooth device 31 | - Compressed (zipped) folder 32 | - Desktop (create shortcut) 33 | - Documents 34 | - Mail recipient 35 | 36 | ## Usage Notes 37 | - The script moves the "Send to" menu to be positioned after the "Copy" command 38 | - The "Send to Executable" option opens a file browser filtered to show only EXE files 39 | - The "Add Here..." option only appears for directories, drives, and EXE files 40 | - Access the "Send To" folder directly to manage all shortcuts in one place 41 | 42 | ## Dependencies 43 | Required Components: 44 | - Windows Operating System 45 | - Nilesoft Shell framework 46 | 47 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex1.system/all.sendto.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | // These code snippet move down the 'Send to' menu. 5 | modify(where=this.title==title.send_to pos=indexof(quote(str.replace(title.copy, '&', '')), 1)) 6 | 7 | // These code snippets add new menu items to the 'Send to' menu. 8 | item(menu=title.send_to title='Send to Executable' 9 | image=icon.send_to pos='top' sep='both' 10 | cmd=path.file.box('.exe|*.exe') args=sel.path(true)) 11 | item(menu=title.send_to title='Open "Send To" folder' 12 | image=icon.open_folder sep='top' 13 | cmd=user.sendto) 14 | item(menu=title.send_to title='Add Here ...' type='namespace|drive|dir' 15 | image=icon.new_folder 16 | cmd=path.lnk.create(user.sendto+'\'+sel.path.title+'.lnk', sel.path)) 17 | item(menu=title.send_to title='Add Here ...' where=sel.file.ext=='.exe' 18 | image=icon.new_folder 19 | cmd=path.lnk.create(user.sendto+'\'+sel.path.title+'.lnk', sel.path)) 20 | 21 | // These code snippets reorder the 'Send to' menu. 22 | modify(where=this.title==str.res('sendmail.dll',-4) 23 | in=str.replace(title.send_to,'&','') pos='top' sep='after') 24 | modify(where=this.title==str.res('shell32.dll',-34575) 25 | in=str.replace(title.send_to,'&','') pos='top') 26 | modify(where=this.title==str.res('sendmail.dll',-21) 27 | in=str.replace(title.send_to,'&','') pos='top') 28 | modify(where=this.title==str.res('zipfldr.dll',-10148) 29 | in=str.replace(title.send_to,'&','') pos='top') 30 | modify(where=this.title==str.res('fsquirt.exe',-2343) 31 | in=str.replace(title.send_to,'&','') pos='top') 32 | 33 | /* 34 | // In Windows 11, the "Send to" menu generally copies files to a folder regardless of whether the source and destination are on the same drive. This change means that files are not moved when sending to a folder, which can be different from previous versions of Windows. 35 | $sendto_sc_path='@(user.sendto)\@(this.title).lnk' 36 | modify(where=path.lnk.type(sendto_sc_path)==2 or path.lnk.type(sendto_sc_path)==3 find='*' in=str.replace(title.send_to,'&','') 37 | keys=if(path.root(sel)==path.root(path.lnk(sendto_sc_path)), 'Move', 'Copy' )) 38 | */ 39 | -------------------------------------------------------------------------------- /ex1.system/all.sendto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex1.system/all.sendto.png -------------------------------------------------------------------------------- /ex1.system/ext.msi.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(title='MSI Commands' where=sel.file.ext=='.msi' image=\uE0F8 pos=1) { 5 | item(title='Open' 6 | cmd='msiexec' args='/i @sel.path(true)') 7 | separator() 8 | item(title='&Install' keys='SHIFT no restart' 9 | cmd='msiexec' args='/i @sel.path(true) @if(key.shift(), '/norestart')') 10 | item(title='install quietly' keys='SHIFT no restart' 11 | cmd='msiexec' args='/i @sel.path(true) /qn @if(key.shift(), '/norestart')') 12 | item(title='&Uninstall' keys='SHIFT no restart' 13 | cmd='msiexec' args='/x @sel.path(true) @if(key.shift(), '/norestart')') 14 | item(title='Uninstall quietly' keys='SHIFT no restart' 15 | cmd='msiexec' args='/x @sel.path(true) /qn @if(key.shift(), '/norestart')') 16 | item(title='Re&pair' 17 | cmd='msiexec' args='/f @sel.path(true)') 18 | separator() 19 | item(title='Extract' 20 | cmd='msiexec' args='/a @sel.path(true) /qb TARGETDIR="@sel.parent\@sel.file.title"') 21 | separator() 22 | item(title='View MSI Options' tip='Microsoft Standard Installer command-line options' 23 | cmd='msiexec' args='/?') 24 | } 25 | 26 | remove(where=sel.file.ext=='.msi' and this.title=='&Uninstall') 27 | remove(where=sel.file.ext=='.msi' and this.title=='Re&pair') -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.aio.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | $menu_cloud = eval('Cloud and Share') 5 | menu(title=menu_cloud mode='multiple' where=sel.namespaces.count==0 image=\uE09C) { } 6 | 7 | // reverse order of appearance 8 | import 'cloud.odrive.nss' 9 | $menu_od_name = menu_cloud 10 | $menu_od_external_mod = true 11 | 12 | //import 'cloud.dropbox.basic.ml.nss' 13 | import 'cloud.dropbox.enhanced.nss' 14 | $menu_db_name = menu_cloud 15 | $menu_db_external_mod = true 16 | 17 | import 'cloud.google.nss' 18 | $menu_gd_name = menu_cloud 19 | $menu_gd_external_mod = true 20 | 21 | import 'cloud.onedrive.nss' 22 | $menu_od_name = menu_cloud 23 | $menu_od_external_mod = true -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.aio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex2.user.cloud.share/cloud.aio.png -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.dropbox.basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex2.user.cloud.share/cloud.dropbox.basic.png -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.dropbox.enhanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex2.user.cloud.share/cloud.dropbox.enhanced.png -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.dropbox.md: -------------------------------------------------------------------------------- 1 | # Dropbox Integration for Nilesoft Shell 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippets: 6 | - [`cloud.dropbox.remove.nss`](/ex2.user.cloud.share/cloud.dropbox.remove.nss) - Removes default Dropbox context menu 7 | - [`cloud.dropbox.basic.nss`](/ex2.user.cloud.share/cloud.dropbox.basic.ml.nss) - Basic Dropbox menu integration 8 | - [`cloud.dropbox.enhanced.nss`](/ex2.user.cloud.share/cloud.dropbox.enhanced.nss) - Enhanced Dropbox menu with custom icons 9 | 10 | ### Screenshot: 11 | ![Screenshot 1](/ex2.user.cloud.share/cloud.dropbox.basic.png) 12 | ![Screenshot 2](/ex2.user.cloud.share/cloud.dropbox.enhanced.png) 13 | 14 | ## Overview 15 | These Nilesoft Shell snippets enhance Windows context menu integration with Dropbox. The files provide different levels of customization, from completely removing the default Dropbox menu to creating enhanced menus with custom icons and tooltips. 16 | 17 | ## Key Features 18 | - Remove default Dropbox context menu items (remove snippet) 19 | - Create a custom Dropbox menu with localized text (basic snippet) 20 | - Add enhanced visual elements with custom SVG icons (enhanced snippet) 21 | - Contextual menu items based on file location (Dropbox folder vs. local) 22 | - Helpful tooltips explaining each action (enhanced snippet) 23 | - Special handling for Dropbox-specific features like ignoring files (enhanced snippet) 24 | 25 | ## Menu Structure 26 | The snippets modify or create a dedicated Dropbox menu with the following context-aware items: 27 | 28 | - Move to Dropbox 29 | - Copy Dropbox link 30 | - Share 31 | - View in Dropbox/Dropbox.com 32 | - Version history 33 | - Make available offline/online-only 34 | - Send for signature 35 | - Request files 36 | - Manage access 37 | - Ignore/Un-ignore from Dropbox 38 | 39 | ## Usage Notes 40 | - The menu title can be customized by changing the `$menu_db_name` variable 41 | - Three different snippets are available depending on your needs: 42 | - Use `remove` to disable the default Dropbox context menu 43 | - Use `basic` for a basic replacement with native icons 44 | - Use `enhanced` for an enhanced menu with custom SVG icons and tooltips 45 | - The helper menu in the simple snippet displays all available command strings (disabled by default) 46 | - Custom ignore/un-ignore commands create/modify the special `com.dropbox.ignored` file 47 | 48 | ## Dependencies 49 | - Windows Operating System 50 | - Nilesoft Shell framework 51 | - Dropbox desktop client 52 | - Dropbox DLL for localized strings and icons 53 | - Dropbox user account configured on the system 54 | 55 | The snippets automatically retrieve necessary paths from the Windows Registry: 56 | - Dropbox DLL path 57 | - Dropbox folder location 58 | -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.dropbox.remove.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | // https://www.tenforums.com/tutorials/158955-how-add-remove-dropbox-context-menu-windows.html 5 | remove(clsid='{ECD97DE5-3C8F-4ACB-AEEE-CCAB78F7711C}' where=this.isuwp) 6 | // "...\Dropbox\Client\PackageAssets\Dropbox.msix\AppxManifest.xml" -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.google.md: -------------------------------------------------------------------------------- 1 | # Google Drive Integration for Nilesoft Shell 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`cloud.google.nss`](/ex2.user.cloud.share/cloud.google.nss) 7 | 8 | ### Screenshot: 9 | 10 | ## Overview 11 | This snippet enhances Windows Explorer's context menu by customizing Google Drive integration options. It provides a cleaner and more organized interface for Google Drive functionality directly in your file explorer. 12 | 13 | ## Key Features 14 | - Custom Google Drive menu with configurable name 15 | - Support for Google Workspace file extensions 16 | 17 | ## Menu Structure 18 | The extension modifies the following context menu items: 19 | - "Sync or Backup this Folder" 20 | - "Copy Link to clipboard" 21 | - "Open with Google Drive" 22 | - "Share with Google Drive" 23 | - "Copy diagnostic info to clipboard" 24 | - "Add shortcut to Drive" 25 | - "Add shortcut to Google Drive" 26 | - "Manage Version" 27 | - "Refresh Folder" 28 | - "Offline access" 29 | 30 | ## Usage Notes 31 | - The menu name is customizable via the `$menu_gd_name` variable 32 | - Handles both standard Google Drive extensions and web-compatible formats 33 | 34 | ## Dependencies 35 | - Windows Operating System 36 | - Nilesoft Shell framework 37 | - Google Drive desktop application 38 | -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.google.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | // Change the menu name of the "Google Drive" menu if you want 5 | $menu_gd_name = 'Google Drive' 6 | $menu_gd_external_mod = false 7 | menu(title=menu_gd_name mode='multiple' where=!menu_gd_external_mod image=\uE09C) { } 8 | 9 | $ext_ge = '.gcsesheet|.gcseslides|.gdoc|.gdraw|.gdrive|.gform|.gjam|.glink|.gmaillayout|.gmap|.gnote|.gscript|.gsheet|.gsite|.gslides|.gtable|' 10 | $ext_ge_web = '.gdocx|' 11 | 12 | modify(menu=menu_cloud find='Sync or Backup this Folder' type='dir|desktop') 13 | modify(menu=menu_cloud find='Copy Link to clipboard' type='dir|file') 14 | modify(menu=menu_cloud find='Open with Google Drive' type='dir') 15 | modify(menu=menu_cloud find='Open with Google Drive' type='file' where=!str.contains(ext_ge+ext_ge_web, sel.file.ext+'|')) 16 | modify(menu=menu_cloud find='Share with Google Drive') 17 | modify(menu=menu_cloud find='Copy diagnostic info to clipboard' title='Copy Diagnostic Info') 18 | modify(menu=menu_cloud find='Add shortcut to Drive|Add shortcut to Google Drive') 19 | modify(menu=menu_cloud find='Manage Version' type='file') 20 | modify(menu=menu_cloud find='Refresh Folder|OFfline access') 21 | 22 | /* information for further use 23 | Open with Google Docs 24 | Open with Google Sheets 25 | Open with Google Slides 26 | */ -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.odrive.md: -------------------------------------------------------------------------------- 1 | # ODrive Integration for Nilesoft Shell 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`cloud.odrive.nss`](/ex2.user.cloud.share/cloud.odrive.nss) 7 | 8 | ### Screenshot: 9 | 10 | ## Overview 11 | This snippet customizes the Windows Explorer context menu for ODrive integration. 12 | 13 | ## Key Features 14 | - Customizable ODrive menu name 15 | - Path-aware context menu modifications 16 | 17 | ## Menu Structure 18 | The extension modifies the following context menu items when in ODrive paths: 19 | - "Sync"/"Unsync" 20 | - "Refresh" 21 | - "Share Link" 22 | - "Share Storage" 23 | - "Open Web Preview" 24 | 25 | ## Usage Notes 26 | - The menu name is configurable via the `$menu_odrive_name` variable (default: 'ODrive') 27 | - Menu items only appear when working with files/folders in the ODrive path 28 | 29 | ## Dependencies 30 | - Windows Operating System 31 | - Nilesoft Shell framework 32 | - ODrive desktop application installed at default location 33 | -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.odrive.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | // Change the menu name of the "OneDrive" menu if you want 5 | $menu_odrive_name='ODrive' 6 | $menu_odrive_external_mod = false 7 | menu(title=menu_odrive_name mode='multiple' where=!menu_odrive_external_mod image='@sys.prog\odrive\odrive.exe') { } 8 | 9 | $is_odrive_path = str.contains(sel, '@user.home\odrive') 10 | 11 | modify(menu=menu_odrive_name image=inherit find='"Sync"|"Unsync"' where=is_odrive_path) 12 | modify(menu=menu_odrive_name image=inherit where=str.equals(this.title, 'refresh') and is_odrive_path) 13 | modify(menu=menu_odrive_name image=inherit find='Share Link|Share Storage|Open Web Preview' where=is_odrive_path) -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.onedrive.md: -------------------------------------------------------------------------------- 1 | # OneDrive Integration for Nilesoft Shell 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`cloud.onedrive.nss`](/ex2.user.cloud.share/cloud.onedrive.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot](/ex2.user.cloud.share/cloud.onedrive.png) 10 | 11 | ## Overview 12 | This Nilesoft Shell snippet enhances the Windows context menu with improved OneDrive integration. It modifies the appearance and functionality of OneDrive-related menu items, providing better visual indicators and more consistent behavior across different OneDrive states. 13 | 14 | ## Key Features 15 | - Custom OneDrive menu with distinctive icons 16 | - Contextual menu items based on file location (OneDrive folder vs. local) 17 | - Support for OneDrive Personal account features 18 | - Dynamic localization using OneDrive's resource DLL 19 | 20 | ## Menu Structure 21 | The snippet creates and modifies a dedicated OneDrive menu with the following context-aware items: 22 | - Share 23 | - Copy Link 24 | - Move to OneDrive 25 | - Always keep on this device 26 | - Free up space 27 | - View online 28 | - Version history 29 | - Manage access 30 | - Storage status 31 | - OneDrive Vault 32 | 33 | ## Usage Notes 34 | - The menu title can be customized by changing the `$menu_od_name` variable 35 | - The script detects whether files are inside OneDrive folders to show relevant options 36 | - OneDrive Vault-specific commands appear only when selecting the Vault folder 37 | - Menu items are displayed in the user's system language via resource strings 38 | 39 | ## Dependencies 40 | - Windows Operating System 41 | - Nilesoft Shell framework 42 | - Microsoft OneDrive client 43 | - OneDrive resource DLL for localized strings 44 | - OneDrive user account configured on the system 45 | 46 | The snippet automatically retrieves necessary paths from the Windows Registry: 47 | - OneDrive installation path 48 | - User folder location 49 | - Vault shortcut path 50 | - Resource DLL location 51 | -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.onedrive.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | // To-Do: Currently i am using "Microsoft OneDrive Free Plan", need information about "OneDrive Basic/Personal/Family" 4 | 5 | // Change the menu name of the "OneDrive" menu if you want 6 | $menu_od_name = 'OneDrive' 7 | $menu_od_external_mod = false 8 | menu(title=menu_od_name mode='multiple' where=!menu_od_external_mod image=\uE09C) { } 9 | 10 | $path_od_dll = reg.get('HKCU\Software\Microsoft\OneDrive', 'CurrentVersionPath') + '\FileSync.LocalizedResources.dll' 11 | $path_od_exe = reg.get('HKCU\Software\Microsoft\OneDrive', 'OneDriveTrigger') 12 | $path_od_dir = reg.get('HKCU\Software\Microsoft\OneDrive', 'UserFolder') 13 | $path_od_vlt = reg.get('HKCU\Software\Microsoft\OneDrive\Accounts\Personal', 'VaultShortcutPath') 14 | 15 | $svg_od_win = ' 16 | 17 | 18 | 19 | ' 20 | $ico_od_win = icon.res(path_od_exe, 0) 21 | 22 | $is_obp = str.contains(sel, path_od_dir) 23 | $is_obv = str.equals(sel, path_od_vlt) 24 | 25 | modify(menu=menu_od_name image=icon.share where=!is_obp && this.title== 26 | // "&Share" 27 | eval(str.res(path_od_dll, -9622))) 28 | modify(menu=menu_od_name image=svg_od_win where= is_obp && this.title( 29 | // "&Share" 30 | eval(str.res(path_od_dll, -9622)), 31 | // "Copy Link" 32 | eval(str.res(path_od_dll, -9649)) 33 | )) 34 | 35 | modify(menu=menu_od_name image=svg_od_win where= this.title== 36 | // "&Move to OneDrive" 37 | eval(str.res(path_od_dll, -9643))) 38 | modify(menu=menu_od_name image=svg_od_win where= is_obp && this.title( 39 | // "&Always keep on this device" - pinned 40 | eval(str.res(path_od_dll, -9637)), eval(str.res(path_od_dll, -9637).trimstart('&')), 41 | // "&Free up space" 42 | eval(str.res(path_od_dll, -9636)), eval(str.res(path_od_dll, -9636).trimstart('&')), 43 | // "&View online" 44 | eval(str.res(path_od_dll, -9618)), 45 | // "&Version history" 46 | eval(str.res(path_od_dll, -9642)), 47 | // "Manage access" 48 | eval(str.res(path_od_dll, -9650)), 49 | // "Manage OneDrive backup" 50 | eval(str.res(path_od_dll, -9645)), 51 | // "Settings" 52 | eval(str.res(path_od_dll, -9638)), 53 | // "Folder color" 54 | eval(str.res(path_od_dll, -53002)) 55 | )) 56 | // Storage %d%% full - Upgrade (tested with english language only) 57 | modify(menu=menu_od_name where= str.contains(this.title, eval(str.left(str.res(path_od_dll, -51550), str.find(str.res(path_od_dll, -51550), '%d%')))) and 58 | str.contains(this.title, eval(str.right(str.res(path_od_dll, -51550), str.len(str.res(path_od_dll, -51550)) - str.find(str.res(path_od_dll, -51550), '%d%') - 3)))) 59 | // "Lock %1"; "Unlock %1" (tested with english language only) 60 | modify(menu=menu_od_name image=svg_od_win where= is_obv find='@str.replace(eval(str.res(path_od_dll, -9639)),'%1','*')||@str.replace(eval(str.res(path_od_dll, -9640)),'%1','*')') 61 | 62 | /* information for further use 63 | o 9617, "&More OneDrive sharing options" (OneDrive Business) 64 | o 9618, "&View online" 65 | 9619, "View sync &problems" 66 | + 9622, "&Share" 67 | 9623, "Sync anyway" 68 | o 9630, "Share a OneDrive link" 69 | o 9631, "Choose OneDrive folders to sync" 70 | 71 | 9648, "M&ove to OneDrive - Personal" 72 | + 9649, "Copy Link" 73 | + 9650, "Manage access" 74 | 9651, "Stop Sync" 75 | 76 | + 9636, "&Free up space" 77 | + 9637, "&Always keep on this device" 78 | + 9638, "Settings" 79 | + 9639, "Lock %1" 80 | + 9640, "Unlock %1" 81 | 9641, "&Preview with OneDrive" 82 | + 9642, "&Version history" 83 | + 9643, "&Move to OneDrive" 84 | 9644, "OneDrive - Personal" 85 | + 9645, "Manage OneDrive backup" 86 | 9646, "Remove shortcut" (https://support.microsoft.com/en-au/office/onedrive-sync-app-error-unable-to-sync-shortcut-aee9955f-f7de-4be8-bf5e-48375bad9dd3) 87 | 9647, "&Move to %1" 88 | 89 | 53002, "Folder color" 90 | 91 | 10540 Storage %d%% full - Get more 92 | 10541 Storage %d%% full - Manage storage 93 | + 51550 Storage %d%% full - Upgrade 94 | 10542 Storage full - Get more 95 | 10543 Storage full - Manage storage 96 | 51551 Storage full - Upgrade 97 | */ 98 | -------------------------------------------------------------------------------- /ex2.user.cloud.share/cloud.onedrive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex2.user.cloud.share/cloud.onedrive.png -------------------------------------------------------------------------------- /ex3.archiver/app.NanaZup.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | // Hide default menu: NS can not recognize drag&drop paths, so use: 5 | remove(find='NanaZip') 6 | // remove(clsid='{CAE3F1D4-7765-4D98-A060-52CD14D56EAB}' where=this.isuwp) 7 | 8 | // ? HKEY_CLASSES_ROOT\PackagedCom\ClassIndex\{CAE3F1D4-7765-4D98-A060-52CD14D56EAB} 9 | // ? HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PackagedCom\ClassIndex\{CAE3F1D4-7765-4D98-A060-52CD14D56EAB} 10 | // ? HKEY_CLASSES_ROOT\PackagedCom\Package\40174MouriNaruto.NanaZip_3.1.1080.0_x64__gnj4mf6z9tkrc 11 | // ? HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PackagedCom\Package\40174MouriNaruto.NanaZip_3.1.1080.0_x64__gnj4mf6z9tkrc 12 | // ? HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\Repository\Packages\40174MouriNaruto.NanaZip_3.1.1080.0_x64__gnj4mf6z9tkrc\NanaZip.Modern\Capabilities\FileAssociations 13 | 14 | // supported formats by 7-zip 15 | $se7zP = '7z|xz|bz2|gz|tar|zip|wim' 16 | $se7zU = 'apfs|ar|arj|cab|chm|cpio|cramfs|dmg|ext|fat|gpt|hfs|ihex|iso|lzh|lzma|mbr|msi|nsis|ntfs|qcow2|rar|rpm|squashfs|udf|uefi|vdi|vhd|vhdx|vmdk|xar|z' 17 | 18 | // path to NanaZip 19 | $cmd_NanaM = path.combine(package('NanaZip'),'NanaZip.Modern.exe') 20 | $cmd_NanaW = path.combine(package('NanaZip'),'NanaZip.Windows.exe') 21 | $cmd_NanaM_alias = 'NanaZip.exe' 22 | $cmd_NanaW_alias = 'NanaZipG.exe' 23 | 24 | item(title='Browse with NanaZip...' mode='single' type='dir|drive|back' 25 | image=cmd_NanaM cmd=cmd_NanaM_alias args=sel(true)) 26 | item(title='Open with NanaZip...' mode='single' type='file' find=str.replace('."'+se7zP+'|'+se7zU+'"', '|', '"|."') 27 | image=cmd_NanaM cmd=cmd_NanaM_alias args=sel(true)) 28 | item(title='Extract files...' keys='single' mode='single' type='file' find=str.replace('."'+se7zP+'|'+se7zU+'"', '|', '"|."') 29 | image=cmd_NanaW cmd=cmd_NanaW_alias args='x @sel(true) -o@sel.path.title\ -ad') 30 | // or 31 | item(title=title.extract_to keys='single' mode='single' type='file' find=str.replace('."'+se7zP+'|'+se7zU+'"', '|', '"|."') 32 | image=icon.extract_to cmd=cmd_NanaW_alias args='x @sel(true) -o@sel.path.title\ -ad') 33 | 34 | 35 | 36 | // Extra 37 | item(title='NanaZip in Microsoft Store Mini' cmd='ms-windows-store://pdp/?mode=mini&ProductId=9N8G7TSCL18R') 38 | item(title='NanaZip in Microsoft Store' cmd='ms-windows-store://pdp/?ProductId=9N8G7TSCL18R') -------------------------------------------------------------------------------- /ex3.archiver/app.SevenZip.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/app.SevenZip.1.png -------------------------------------------------------------------------------- /ex3.archiver/app.SevenZip.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/app.SevenZip.2.png -------------------------------------------------------------------------------- /ex3.archiver/app.SevenZip.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/app.SevenZip.3.png -------------------------------------------------------------------------------- /ex3.archiver/app.SevenZip.4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/app.SevenZip.4.png -------------------------------------------------------------------------------- /ex3.archiver/app.SevenZip.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/app.SevenZip.5.png -------------------------------------------------------------------------------- /ex3.archiver/app.SevenZip.6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/app.SevenZip.6.png -------------------------------------------------------------------------------- /ex3.archiver/app.SevenZip.md: -------------------------------------------------------------------------------- 1 | # 7-Zip Context Menu 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`app.SevenZip.nss`](/ex3.archiver/app.SevenZip.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.archiver/app.SevenZip.1.png) 10 | ![Screenshot 2](/ex3.archiver/app.SevenZip.2.png) 11 | ![Screenshot 3](/ex3.archiver/app.SevenZip.3.png) 12 | ![Screenshot 4](/ex3.archiver/app.SevenZip.4.png) 13 | ![Screenshot 5](/ex3.archiver/app.SevenZip.5.png) 14 | ![Screenshot 6](/ex3.archiver/app.SevenZip.6.png) 15 | 16 | ## Overview 17 | Enhanced context menu integration for 7-Zip, providing comprehensive archive management capabilities directly in Windows Explorer. 18 | 19 | ## Key Features 20 | - Archive browsing and management 21 | - Multiple compression formats (7z, ZIP, SFX) 22 | - Password protection with header encryption 23 | - Smart extraction detection 24 | - Checksum generation and verification 25 | - PPMd compression for text files 26 | - Mail-ready archive creation 27 | - Multiple extraction options with cleanup 28 | 29 | ## Menu Structure 30 | 1. Main Menu 31 | - Browse/Open with 7-Zip 32 | - Extract submenu 33 | - Archive submenu 34 | - Test submenu 35 | - 7-Zip Info submenu 36 | 37 | 2. Extraction Options 38 | - Smart extraction 39 | - Extract here 40 | - Extract to named folder 41 | - Extract with cleanup 42 | 43 | 3. Archive Options 44 | - Password protection 45 | - SFX creation 46 | - Multiple format support 47 | - Mail-ready archives 48 | 49 | ## Usage Notes 50 | - SHIFT key toggles additional options 51 | - Smart extraction detects single-directory archives 52 | - Password protection can include filename encryption 53 | - PPMd compression optimized for text files 54 | - Supports archive testing and integrity verification 55 | 56 | ## Technical Details 57 | - Supported Compression Formats: 58 | - Packing/Unpacking: 7z, XZ, BZIP2, GZIP, TAR, ZIP, WIM 59 | - Unpacking Only: APFS, AR, ARJ, CAB, CHM, CPIO, ISO, RAR, etc. 60 | - Checksum Support: SHA256, SHA512, SHA1, MD5, CRC32, CRC64 61 | - Custom SVG icons for menu items 62 | - Registry-based command management 63 | - PowerShell integration for smart extraction 64 | 65 | ## Dependencies 66 | - Windows Operating System 67 | - Nilesoft Shell framework 68 | - 7-Zip installation (7z.exe, 7zG.exe, 7zFM.exe) 69 | - Windows Shell32.dll 70 | - Administrative privileges for some operations 71 | - PowerShell for smart extraction features -------------------------------------------------------------------------------- /ex3.archiver/app.UniExtract.md: -------------------------------------------------------------------------------- 1 | # UniExtract Context Menu 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`app.UniExtract.nss`](/ex3.archiver/app.UniExtract.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot)](/ex3.archiver/app.UniExtract.png) 10 | 11 | ## Overview 12 | Shell extension providing Universal Extractor integration into Windows context menu for comprehensive archive extraction capabilities. 13 | 14 | ## Key Features 15 | - Multiple extraction modes 16 | - File scanning functionality 17 | - Auto-update system 18 | - Automated installation process 19 | - Support for various archive formats 20 | 21 | ## Menu Structure 22 | 1. Extract Files... 23 | 2. Extract to Subdir... 24 | 3. Extract Here 25 | 4. Scan Files 26 | 5. Check for Updates 27 | 6. Download UniExtract (when not installed) 28 | 29 | ## Usage Notes 30 | - Requires UniExtract installation 31 | - SHIFT key toggles admin/non-admin updater 32 | - Automatic download and setup if not installed 33 | - Compatible with both admin and non-admin modes 34 | 35 | ## Technical Details 36 | - Installation Path: Program Files (x86)\UniExtract 37 | - Download Source: GitHub repository 38 | - PowerShell-based installation script 39 | - Automated directory creation 40 | - Update mechanisms: Admin and Non-Admin versions 41 | 42 | ## Dependencies 43 | - Windows Operating System 44 | - Nilesoft Shell framework 45 | - UniExtract executable 46 | - PowerShell for installation 47 | - System.IO.Compression for setup 48 | - Administrative privileges for certain operations -------------------------------------------------------------------------------- /ex3.archiver/app.UniExtract.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | $cmd_UniExtract = eval(sys.prog32+'\UniExtract\UniExtract.exe') 5 | menu(title='UniExtract' type='file' image=cmd_UniExtract) 6 | { 7 | $vis_UE = if(!path.exists(cmd_UniExtract), 'disable') 8 | $tip_UE = if(!path.exists(cmd_UniExtract), 'Requires UniExtract to be installed') 9 | 10 | item(vis=vis_UE tip=tip_UE title ='Extract Files...' image cmd=cmd_UniExtract args='@sel.path(true)') 11 | item(vis=vis_UE tip=tip_UE title ='Extract to Subdir...' image cmd=cmd_UniExtract args='@sel.path(true) "/sub"') 12 | item(vis=vis_UE tip=tip_UE title ='Extract Here' image cmd=cmd_UniExtract args='@sel.path(true) "."') 13 | separator() 14 | item(vis=vis_UE tip=tip_UE title ='Scan Files' image cmd=cmd_UniExtract args='@sel.path(true) "/scan"') 15 | item(vis=vis_UE tip=tip_UE title ='Check for Updates' image cmd=path.parent(cmd_UniExtract) + if(key.shift(),'/UniExtractUpdater_NoAdmin.exe','/UniExtractUpdater.exe')) 16 | item(vis=!path.exists(cmd_UniExtract) title ='Download UniExtract' image=icon.res(path.combine(sys.bin, 'shell32.dll'), 122) commands { 17 | // admin cmd-ps=`$DownloadURL = 'https://github.com/Bioruebe/UniExtract2/releases/download/v2.0.0-rc.3/UniExtractRC3.zip'; $TempZipPath = '@sys.temp\UniExtractRC3.zip'; $ExtractPath = '@path.parent(path.parent(cmd_UniExtract))'; if (!(Test-Path -Path $ExtractPath)) { New-Item -ItemType Directory -Path $ExtractPath -Force }; Invoke-WebRequest -Uri $DownloadURL -OutFile $TempZipPath; Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::ExtractToDirectory($TempZipPath, $ExtractPath); Remove-Item -Path $TempZipPath -Force` wait=1, 18 | admin cmd-ps=`$DownloadURL = 'https://github.com/Bioruebe/UniExtract2/releases/download/v2.0.0-rc.3/UniExtractRC3.zip'; $TempZipPath = '@sys.temp\UniExtractRC3.zip'; $ExtractPath = '@path.parent(path.parent(cmd_UniExtract))'; if (!(Test-Path -LiteralPath $ExtractPath)) { New-Item -ItemType Directory -Path $ExtractPath -Force }; Invoke-WebRequest -Uri $DownloadURL -OutFile $TempZipPath; Expand-Archive -LiteralPath $TempZipPath -DestinationPath $ExtractPath -Force; Remove-Item -LiteralPath $TempZipPath -Force` wait=1, 19 | cmd=path.parent(cmd_UniExtract) + if(key.shift(),'/UniExtractUpdater_NoAdmin.exe','/UniExtractUpdater.exe') wait=1, 20 | }) 21 | } 22 | 23 | 24 | /* 25 | https://github.com/Bioruebe/UniExtract2/blob/master/UniExtract.au3 26 | 27 | ; Define context menu commands 28 | ; On top to make remove via command line parameter possible 29 | ; Shell | Commandline Parameter | Translation | MultiSelectModel 30 | Global $CM_Shells[5][4] = [ _ 31 | ["uniextract_files", "", "EXTRACT_FILES", "Single"], _ 32 | ["uniextract_here", " .", "EXTRACT_HERE", "Player"], _ 33 | ["uniextract_sub", " /sub", "EXTRACT_SUB", "Player"], _ 34 | ["uniextract_last", " /last", "EXTRACT_LAST", "Player"], _ 35 | ["uniextract_scan", " /scan", "SCAN_FILE", "Player"] _ 36 | ] 37 | */ -------------------------------------------------------------------------------- /ex3.archiver/app.UniExtract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/app.UniExtract.png -------------------------------------------------------------------------------- /ex3.archiver/app.WinRAR.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/app.WinRAR.1.png -------------------------------------------------------------------------------- /ex3.archiver/app.WinRAR.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/app.WinRAR.2.png -------------------------------------------------------------------------------- /ex3.archiver/app.WinRAR.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/app.WinRAR.3.png -------------------------------------------------------------------------------- /ex3.archiver/app.WinRAR.md: -------------------------------------------------------------------------------- 1 | # WinRAR Context Menu 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`app.WinRAR.nss`](/ex3.archiver/app.WinRAR.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.archiver/app.WinRAR.1.png) 10 | ![Screenshot 2](/ex3.archiver/app.WinRAR.2.png) 11 | ![Screenshot 3](/ex3.archiver/app.WinRAR.3.png) 12 | 13 | ## Overview 14 | A comprehensive context menu replacement for WinRAR that extends and customizes archiving functionality in Windows File Explorer. Designed to provide advanced options and seamless integration with WinRAR's features. 15 | 16 | ## Key Features 17 | - Extract 18 | - Extract with WinRAR GUI Manager 19 | - Extract files to current folder 20 | - Extract to specific destination 21 | - Extract with full path preservation 22 | - Extract selected files from multi-volume archives 23 | - Extract with automatic folder creation 24 | 25 | - Compress 26 | - Create archives with multiple compression levels 27 | - Support for various archive formats (ZIP, RAR, 7Z) 28 | - Compress multiple files and folders 29 | - Create self-extracting archives 30 | - Set compression method and algorithm 31 | 32 | - Compress to Profile 33 | - Utilize predefined WinRAR compression profiles 34 | - Quick access to custom archive configurations 35 | - Dynamic profile management 36 | - Create and save new compression profiles 37 | - Instant application of saved profiles 38 | 39 | - Convert / Test / Repair 40 | - Convert between different archive formats 41 | - Test archive integrity 42 | - Verify archive structure 43 | - Attempt to repair damaged or corrupted archives 44 | - Compare archive contents 45 | 46 | - Install Theme / Update / Registration 47 | - Download and install WinRAR themes 48 | - Automatic WinRAR version updates 49 | - Trial version registration support 50 | - Customize WinRAR interface 51 | - Manage WinRAR installation settings 52 | 53 | - Others 54 | - Password protection for archives 55 | - Multi-language support 56 | - Context menu customization 57 | - Support for large file and multi-volume archives 58 | - Minimal performance overhead 59 | - Seamless File Explorer integration -------------------------------------------------------------------------------- /ex3.archiver/sys.compress.extract.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/sys.compress.extract.1.png -------------------------------------------------------------------------------- /ex3.archiver/sys.compress.extract.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/sys.compress.extract.2.png -------------------------------------------------------------------------------- /ex3.archiver/sys.compress.extract.md: -------------------------------------------------------------------------------- 1 | # Compress and Extract Context Menu 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`sys.compress.extract.nss`](/ex3.archiver/sys.compress.extract.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.archiver/sys.compress.extract.1.png) 10 | ![Screenshot 2](/ex3.archiver/sys.compress.extract.2.png) 11 | 12 | ## Overview 13 | A shell extension menu that enhances Windows' built-in compression functionality by providing modernized compression commands in the legacy context menu. 14 | 15 | ## Key Features 16 | - Integration of modern Windows compression commands 17 | - Support for multiple compression formats (ZIP, 7z, TAR) 18 | - Registry-based command management 19 | - Administrator-level modifications 20 | - Localized menu items using system resources 21 | 22 | ## Menu Structure 23 | 1. Main Menu ("Compress and Extract") 24 | 2. "Extract All" command (repositioned) 25 | 3. Submenu "NS Modern Commands": 26 | - Windows.CompressTo 27 | - Windows.CompressTo.Wizard 28 | - Windows.CompressTo.Zip 29 | - Windows.CompressTo.7z 30 | - Windows.CompressTo.Tar 31 | 32 | ## Usage Notes 33 | - Requires administrative privileges for registry modifications 34 | 35 | ## Technical Details 36 | - Registry paths: 37 | - HKEY_CLASSES_ROOT\*\shell 38 | - HKEY_CLASSES_ROOT\Folder\shell 39 | - HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore 40 | - Uses Windows resource strings for localization 41 | - Command state verification through registry queries 42 | - Supports hidden window execution 43 | 44 | ## Dependencies 45 | - Windows Operating System (Windows 11) 46 | - Nilesoft Shell framework 47 | - Windows Shell32.dll 48 | - Windows.UI.FileExplorer.dll 49 | - Zipfldr.dll 50 | - Administrative privileges for registry modifications 51 | 52 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. 53 | -------------------------------------------------------------------------------- /ex3.archiver/sys.compress.extract.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | //> https://www.tenforums.com/tutorials/3233-add-remove-extract-all-context-menu-windows.html 5 | // modify(find='Extract All*' menu=title.more_options sep pos=0) 6 | // remove(clsid='{b8cdcb65-b1bf-4b42-9428-1dfdb7ee92af}' where=!this.isuwp) 7 | 8 | $menu_archiver = '' 9 | menu(title='Compress and Extract' type='file|dir' image=icon.res('zipfldr.dll,-101')) { 10 | //> https://www.elevenforum.com/t/zip-compress-files-and-folders-in-windows-11.8235/ 11 | 12 | // move 'Extract All' to the middle of the menu 13 | modify(find=str.res('shell32.dll', -37514) pos='middle' menu=menu_archiver+'/Compress and Extract') 14 | menu(title='NS Modern Commands' image=icon.settings sep pos=bottom tip='Clone commands from modern to legacy context menu' vis=if(!sys.is11, 'disable')) { 15 | $rk = null // registry keyword name 16 | $rt = null // registry target name 17 | $re = null // registry file extension 18 | $reg_modify = 'reg query "HKEY_CLASSES_ROOT\@re\shell\@rk" >nul 2>&1 && reg delete "HKEY_CLASSES_ROOT\@re\shell\@rk" /f || reg copy "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\@rk" "HKEY_CLASSES_ROOT\@re\shell\@rk" /f' 19 | 20 | // Windows.CompressTo 21 | item(title=str.res('windows.UI.FileExplorer.dll,-51797') checked=reg.exists('HKCR\*\shell\Windows.CompressTo') and reg.exists('HKCR\Folder\shell\Windows.CompressTo') keys='menu' 22 | admin cmd-line='/c @{rk = 'Windows.CompressTo' rt = rk } @{re = '*'} @reg_modify & @{re = 'Folder'} @reg_modify' window='hidden') 23 | modify(where=this.title==str.res('windows.UI.FileExplorer.dll,-51797') image=icon.res('zipfldr.dll,-101') pos='middle' menu=menu_archiver+'/Compress and Extract') 24 | // Windows.CompressTo.Wizard 25 | item(title=str.res('zipfldr.dll,-10610') checked=reg.exists('HKCR\*\shell\Windows.CompressTo.Wizard') and reg.exists('HKCR\Folder\shell\Windows.CompressTo.Wizard') keys='wizard' 26 | admin cmd-line='/c @{rk = 'Windows.CompressTo.Wizard' rt = rk } @{re = '*'} @reg_modify & @{re = 'Folder'} @reg_modify' window='hidden') 27 | modify(where=this.title==str.res('zipfldr.dll,-10536') image=icon.res('zipfldr.dll,-101') title=str.res('zipfldr.dll,-10610') tip=str.res('zipfldr.dll,-10537') pos='middle' menu=menu_archiver+'/Compress and Extract') 28 | // Windows.CompressTo.Zip 29 | item(title=str.res('Windows.UI.FileExplorer.dll,-51793') checked=reg.exists('HKCR\*\shell\Windows.CompressTo.Zip') and reg.exists('HKCR\Folder\shell\Windows.CompressTo.Zip') 30 | admin cmd-line='/c @{rk = 'Windows.CompressTo.Zip' rt = rk } @{re = '*'} @reg_modify & @{re = 'Folder'} @reg_modify' window='hidden') 31 | modify(where=this.title==str.res('zipfldr.dll,-10530') image=icon.res('zipfldr.dll,-101') title=str.replace(str.res('windows.UI.FileExplorer.dll,-51797'), '...', ' ' + str.res('Windows.UI.FileExplorer.dll,-51798')) tip=str.res('zipfldr.dll,-10531') pos='middle' menu=menu_archiver+'/Compress and Extract') 32 | // Windows.CompressTo.7z 33 | item(title=str.replace(str.res('windows.UI.FileExplorer.dll,-51797'), '...', ' ' + str.res('Windows.UI.FileExplorer.dll,-51799')) checked=reg.exists('HKCR\*\shell\Windows.CompressTo.7z') and reg.exists('HKCR\Folder\shell\Windows.CompressTo.7z') 34 | admin cmd-line='/c @{rk = 'Windows.CompressTo.7z' rt = rk } @{re = '*'} @reg_modify & @{re = 'Folder'} @reg_modify' window='hidden') 35 | modify(where=this.title==str.res('zipfldr.dll,-10532') image=icon.res('zipfldr.dll,-101') title=str.replace(str.res('windows.UI.FileExplorer.dll,-51797'), '...', ' ' + str.res('Windows.UI.FileExplorer.dll,-51799')) pos='middle' menu=menu_archiver+'/Compress and Extract') 36 | // Windows.CompressTo.Tar 37 | item(title=str.replace(str.res('windows.UI.FileExplorer.dll,-51797'), '...', ' ' + str.res('Windows.UI.FileExplorer.dll,-51800')) checked=reg.exists('HKCR\*\shell\Windows.CompressTo.Tar') 38 | admin cmd-line='/c @{rk = 'Windows.CompressTo.Tar' rt = rk } @{re = '*'} @reg_modify & @{re = 'Folder'} @reg_modify' window='hidden') 39 | modify(where=this.title==str.res('zipfldr.dll,-10534') image=icon.res('zipfldr.dll,-101') title=str.replace(str.res('windows.UI.FileExplorer.dll,-51797'), '...', ' ' + str.res('Windows.UI.FileExplorer.dll,-51800')) pos='middle' menu=menu_archiver+'/Compress and Extract') 40 | } 41 | } -------------------------------------------------------------------------------- /ex3.archiver/sys.compress.ps.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/sys.compress.ps.1.png -------------------------------------------------------------------------------- /ex3.archiver/sys.compress.ps.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.archiver/sys.compress.ps.2.png -------------------------------------------------------------------------------- /ex3.archiver/sys.compress.ps.md: -------------------------------------------------------------------------------- 1 | # PowerShell Archivator 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`sys.compress.ps.nss`](/ex3.archiver/sys.compress.ps.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.archiver/sys.compress.ps.1.png) 10 | ![Screenshot 2](/ex3.archiver/sys.compress.ps.2.png) 11 | 12 | ## Overview 13 | PowerShell Archivator is a shell extension menu that provides archive management capabilities through PowerShell commands. It enables users to create and extract ZIP files and create ISO images directly from the context menu. 14 | 15 | ## Key Features 16 | - Extract ZIP files to named folders 17 | - Create ZIP archives from files and directories 18 | - Background extraction and compression operations 19 | - ISO image creation with customizable media types 20 | - Support for single and multiple file operations 21 | - GUID-based naming options for extraction folders 22 | 23 | ## Menu Structure 24 | 1. ZIP Extraction Options 25 | - Extract to named folder 26 | - Extract multiple archives to separate folders 27 | - Silent background extraction 28 | 29 | 2. ZIP Creation Options 30 | - Create ZIP with selected items 31 | - Create ZIP with item contents 32 | - Silent background compression 33 | 34 | 3. ISO Creation 35 | - Create ISO with customizable label and media type 36 | - Support for various optical media sizes 37 | 38 | ## Usage Notes 39 | - Paths with double spaces or square brackets are not supported 40 | - Use SHIFT key for GUID-based naming 41 | - Silent operations run in background 42 | - ISO creation allows custom media title and type selection 43 | 44 | ## Dependencies 45 | - Windows Operating System 46 | - Nilesoft Shell framework 47 | - Windows PowerShell 48 | - System.IO.Compression.FileSystem 49 | - IMAPI2FS.MsftFileSystemImage COM object -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.hash.cmd.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.hash.cmd.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.hash.cmd.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.hash.cmd.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.hash.cmd.md: -------------------------------------------------------------------------------- 1 | # File Hash Tool (CMD) 2 | 3 | ## Source Code & Screenshot 4 | 5 | ### Snippet: 6 | [`all.copy.hash.cmd.nss`](/ex3.multifunction/all.copy.hash.cmd.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.copy.hash.cmd.1.png) 10 | ![Screenshot 2](/ex3.multifunction/all.copy.hash.cmd.2.png) 11 | 12 | ## Overview 13 | A powerful context menu extension for Windows that allows you to calculate, verify, copy, and save various hash checksums of files directly from the right-click menu. 14 | 15 | ## Features 16 | 17 | ### Hash Types Supported 18 | - MD2 (Shift required) 19 | - MD4 (Shift required) 20 | - MD5 21 | - SHA1 22 | - SHA256 23 | - SHA384 (Shift required) 24 | - SHA512 (Shift required) 25 | 26 | ### Operations Available 27 | 28 | #### Verify Checksum (single file) 29 | - Automatically verifies checksums using `.md2`, `.md4`, `.md5`, `.sha1`, `.sha256`, `.SHA384`, and `.SHA512` files 30 | - Displays whether the hash matches or not 31 | 32 | #### Copy Hash (single file) 33 | - Copy of any supported hash to clipboard 34 | - Beep confirmation when hash is copied 35 | 36 | #### Copy or Create (single file) 37 | - Copy of any supported hash to clipboard 38 | - Hold SHIFT to create a checksum file (e.g., `.md5`, `.sha1`) with the hash value 39 | - Beep confirmation 40 | 41 | #### View or Save (single file) 42 | - View hash in terminal 43 | - Hold SHIFT to save hash report to a `.txt` file 44 | 45 | #### View (multiple file) 46 | - View hash in terminal 47 | 48 | ## Technical Details 49 | - Uses Windows `certutil` for hash calculations 50 | - Supports both single and multiple file selections 51 | 52 | ## Notes 53 | - All hash calculations are performed locally using Windows built-in tools 54 | - Operations are designed to be fast and efficient 55 | - Verification follows standard checksum file formats 56 | - Compatible with Windows command prompt environment -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.hash.cmd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.hash.cmd.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.hash.ps.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.hash.ps.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.hash.ps.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.hash.ps.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.hash.ps.md: -------------------------------------------------------------------------------- 1 | # File Hash Tool (Powershell) 2 | 3 | ## Source Code & Screenshot 4 | 5 | ### Snippet: 6 | [`all.copy.hash.ps.nss`](/ex3.multifunction/all.copy.hash.ps.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.copy.hash.ps.1.png) 10 | ![Screenshot 1](/ex3.multifunction/all.copy.hash.ps.2.png) 11 | 12 | ## Overview 13 | A powerful context menu extension for Windows that allows you to calculate, verify, copy, and save various hash checksums of files directly from the right-click menu. 14 | 15 | ## Features 16 | 17 | ### Hash Types Supported 18 | - MD5 19 | - SHA1 20 | - SHA256 21 | - SHA384 (Shift required) 22 | - SHA512 (Shift required) 23 | - MACTripleDES (Shift required) 24 | - RIPEMD160 (Shift required) 25 | 26 | ### Operations Available 27 | 28 | #### Verify Checksum (single file) 29 | - Automatically verifies checksums using `.md5`, `.sha1`, `.sha256`, `.SHA384`, and `.SHA512` files 30 | - Displays whether the hash matches or not 31 | - Color-coded output (red for non-matching hashes) 32 | 33 | #### Copy Hash (single file) 34 | - Copy of any supported hash to clipboard 35 | - Beep confirmation when hash is copied 36 | 37 | #### View Hash (single file) 38 | - View detailed hash information in terminal 39 | - Displays file path and hash value 40 | 41 | #### Hash Multi Verifier (single file) 42 | - Compare file against any hash value 43 | - Automatically detects hash type by length 44 | - Supports MD5, SHA1, SHA256, SHA384, and SHA512 45 | 46 | #### Hash Verifier (single file) 47 | - Compare file against specific hash type 48 | - Input validation for hash format 49 | - Clear match/no match output 50 | 51 | #### Compare Two Files 52 | - Compare two selected files using any supported hash 53 | - Instant match/no match results 54 | 55 | #### Create Checksums File (single or multiple) 56 | - Create checksum files for multiple files 57 | - Optional recursive mode for folders (hold SHIFT) 58 | - Supports all hash types 59 | - Creates a single checksums file in source directory 60 | 61 | ## Technical Details 62 | 63 | - Uses PowerShell's `Get-FileHash` cmdlet 64 | - Supports both single and multiple file selections 65 | - Supports directories (for checksums creation) 66 | 67 | ## Notes 68 | - All hash calculations are performed locally using PowerShell 69 | - Operations are designed to be fast and efficient 70 | - Verification follows standard checksum file formats 71 | - Compatible with Windows PowerShell environment 72 | 73 | ## Requirements 74 | - Windows PowerShell 5.1 or later 75 | - Windows 10/11 recommended -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.hash.ps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.hash.ps.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.list.cp.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.list.cp.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.list.cp.md: -------------------------------------------------------------------------------- 1 | # Copy List Tool (CMD and Powershell) 2 | 3 | ## Source Code & Screenshot 4 | 5 | ### Snippet: 6 | [`all.copy.list.cp.nss`](/ex3.multifunction/all.copy.list.cp.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.copy.list.cp.1.png) 10 | 11 | ## Overview 12 | Advanced directory listing extension using both Command Prompt and PowerShell commands to generate formatted file/folder lists with sizes and stats. 13 | 14 | ## Key Features 15 | - Directory listing with multiple format options 16 | - File size reporting in bytes and formatted units 17 | - Recursive directory support 18 | - Hidden item inclusion 19 | - Stats and details options 20 | - PowerShell-based size formatting 21 | 22 | ## Menu Structure 23 | - Item names (with/without stats) 24 | - Folder names (with/without stats) 25 | - File names (with/without stats) 26 | - File names with byte sizes 27 | - File names with formatted sizes (KB/MB/GB) 28 | 29 | ## Usage Notes 30 | - Single directory selection 31 | - SHIFT key enables recursive listing and paths 32 | - Hidden items included in most options 33 | - Size formatting automatic based on file size 34 | 35 | ## Dependencies 36 | Required Components: 37 | - Windows Operating System 38 | - Nilesoft Shell framework 39 | - Windows Command Prompt 40 | - Windows PowerShell 41 | - clip.exe 42 | 43 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.list.cp.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(image=icon.copy_path title='Copy list' mode='single' type='dir|back.dir|drive|back.drive|desktop') { 5 | item(image=inherit keys='SHIFT paths recursive' title='Copy item names' 6 | tip='Copy the names of selected items to the clipboard, including hidden irems. Hold SHIFT to include full paths and subfolders.' 7 | window=hidden cmd-line='/c dir @sel(true) @if(keys.shift(), '/s') /b /o:gn | clip') 8 | item(image=inherit keys='SHIFT paths recursive' title='Copy item names with stats 'where=keys.shift() 9 | tip='Copy the names of selected items to the clipboard, including hidden irems. Hold SHIFT to include full paths, subfolders, and item details.' 10 | window=hidden cmd-line='/c dir @sel(true) @if(keys.shift(), '/s') /o:gn | clip') 11 | item(image=inherit keys='SHIFT paths recursive' title='Copy folder names' 12 | tip='Copy the names of selected folders to the clipboard, including hidden folders. Hold SHIFT to include full paths and subfolders.' 13 | window=hidden cmd-line='/c dir @sel(true) @if(keys.shift(), '/s') /b /a:d /o:n | clip') 14 | item(image=inherit keys='SHIFT paths recursive' title='Copy folder names with stats' where=keys.shift() 15 | tip='Copy the names of selected folders to the clipboard, including hidden folders. Hold SHIFT to include full paths, subfolders, and folder details.' 16 | window=hidden cmd-line='/c dir @sel(true) @if(keys.shift(), '/s') /a:d /o:n | clip') 17 | item(image=inherit keys='SHIFT paths recursive' title='Copy file names' 18 | tip='Copy the names of selected files to the clipboard, including hidden files. Hold SHIFT to include full paths and subfolders.' 19 | window=hidden cmd-line='/c dir @sel(true) @if(keys.shift(), '/s') /b /a:-d /o:n | clip') 20 | item(image=inherit keys='SHIFT paths recursive' title='Copy file names with stats' where=keys.shift() 21 | tip='Copy the names of selected files to the clipboard, including hidden files. Hold SHIFT to include full paths, subfolders, and file details.' 22 | window=hidden cmd-line='/c dir @sel(true) @if(keys.shift(), '/s') /a:-d /o:n | clip') 23 | separator() 24 | item(image=inherit title='Copy file names with size (in bytes)' 25 | tip='Copy the names and sizes (in bytes) of all files in the selected folder to the clipboard. Hidden files are not included.' 26 | cmd-ps=`$path = '@sel'; $list = Get-ChildItem -LiteralPath $path | Where-Object { $_.PSIsContainer -eq $false } | ForEach-Object { $fileName = $_.Name; $fileSize = $_.Length; \"$fileName - $($fileSize) bytes\"; }; $list | Out-String | Set-Clipboard;` window=hidden) 27 | item(image=inherit title='Copy file names with size (formated)' 28 | tip='Copy the names and sizes of all files in the selected folder to the clipboard, formatted as GB, MB, or KB as appropriate. Hidden files are not included.' 29 | cmd-ps=`$path = '@sel'; $list = Get-ChildItem -LiteralPath $path | Where-Object { $_.PSIsContainer -eq $false } | ForEach-Object { $fileName = $_.Name; $fileSizeBytes = $_.Length; if ($fileSizeBytes -ge 1GB) { $fileSizeGB = $fileSizeBytes / 1GB; \"$fileName - $($fileSizeGB.ToString('N2')) GB\"; } elseif ($fileSizeBytes -ge 1MB) { $fileSizeMB = $fileSizeBytes / 1MB; \"$fileName - $($fileSizeMB.ToString('N2')) MB\"; } else { $fileSizeKB = $fileSizeBytes / 1KB; \"$fileName - $($fileSizeKB.ToString('N2')) KB\"; } }; $list | Out-String | Set-Clipboard;` window=hidden) } 30 | -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.list.cp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.list.cp.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.list.ns.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.list.ns.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.list.ns.md: -------------------------------------------------------------------------------- 1 | # Copy List Tool (Nilesoft Shell) 2 | 3 | ## Source Code & Screenshot 4 | 5 | ### Snippet: 6 | [`all.copy.list.ns.nss`](/ex3.multifunction/all.copy.list.ns.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.copy.list.ns.1.png) 10 | 11 | ## Overview 12 | Nilesoft Shell extension for copying lists of files and folders with flexible formatting options. 13 | 14 | ## Key Features 15 | - Multiple selection support 16 | - Directory content listing 17 | - Separate file/folder listing 18 | - Full path inclusion option 19 | - Hidden item support 20 | 21 | ## Menu Structure 22 | 23 | - Copy selected items 24 | - For directories: 25 | - Copy all item names 26 | - Copy file names only 27 | - Copy folder names only 28 | - SHIFT modifier for full paths 29 | 30 | ## Usage Notes 31 | - Works with single/multiple selections 32 | - SHIFT key adds full paths 33 | - Includes hidden items 34 | - Shows item counts 35 | 36 | ## Dependencies 37 | Required Components: 38 | - Windows Operating System 39 | - Nilesoft Shell framework 40 | 41 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.list.ns.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | 5 | menu(image=icon.copy_path title='Copy list' mode='multiple' where=(sel.count==1 and (sel.type==3 or sel.type==5)) or sel.count>1) { 6 | item(mode='multiple' where=sel.count>1 image=inherit title='Copy (@sel.count) item@if(sel.count>1, 's') selected' 7 | tip='Copy the names of all selected items to the clipboard.' 8 | cmd=command.copy(sel(false, "\n"))) 9 | menu(expanded='true' mode='single' type='dir|back.dir|drive|back.drive|desktop' image=inherit) { 10 | item(title='Copy (@len(path.files(sel.dir))) item name@if(len(path.files(sel.dir))>1, 's')' keys='SHIFT with path@if(len(path.files(sel.dir))>1, 's')' 11 | image=inherit 12 | tip='Copy the names of all items in the selected folder to the clipboard, including hidden items. Hold SHIFT to include full paths.' 13 | cmd=command.copy(str.join(path.files(sel.dir, '*', if(keys.shift(), 5|16, 5)), "\n"))) 14 | separator() 15 | item(title='Copy (@len(path.files(sel.dir, '*', 3))) file name@if(len(path.files(sel.dir, '*', 3))>1, 's')' keys='SHIFT with path@if(len(path.files(sel.dir, '*', 3))>1, 's')' 16 | image=inherit where=len(path.files(sel.dir, '*', 3))>0 17 | tip='Copy the names of all files in the selected folder to the clipboard, including hidden files. Hold SHIFT to include full paths.' 18 | cmd=command.copy(str.join(path.files(sel.dir, '*', if(keys.shift(), 3|16, 3)), "\n"))) 19 | item(title='Copy (@len(path.files(sel.dir, '*', 2))) folder name@if(len(path.files(sel.dir, '*', 2))>1, 's')' keys='SHIFT with path@if(len(path.files(sel.dir, '*', 2))>1, 's')' 20 | image=inherit where=len(path.files(sel.dir, '*', 2))>0 21 | tip='Copy the names of all folders in the selected folder to the clipboard, including hidden folders. Hold SHIFT to include full paths.' 22 | cmd=command.copy(str.join(path.files(sel.dir, '*', if(keys.shift(), 2|16, 2)), "\n"))) } -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.list.ns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.list.ns.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.all.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.all.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.all.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.all.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.all.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.all.3.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.all.4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.all.4.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.all.md: -------------------------------------------------------------------------------- 1 | # Windows Path Copy Tool 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.copy.path.all.nss`](/ex3.multifunction/all.copy.path.all.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.copy.path.all.1.png) 10 | ![Screenshot 2](/ex3.multifunction/all.copy.path.all.2.png) 11 | ![Screenshot 3](/ex3.multifunction/all.copy.path.all.3.png) 12 | ![Screenshot 4](/ex3.multifunction/all.copy.path.all.4.png) 13 | 14 | ## Overview 15 | Comprehensive Nilesoft Shell extension for copying various path formats and file information. 16 | 17 | ## Key Features 18 | - Multiple path format support (Windows, WSL, Cygwin, UNC) 19 | - File/folder name and extension extraction 20 | - UUID folder name handling 21 | - Library namespace support 22 | - Quick file location access 23 | 24 | ## Menu Structure 25 | - Open File Location 26 | - Full path variants (standard, raw, short, network, Unix) 27 | - Parent path variants 28 | - File names and extensions 29 | - Special folder names (UUID) 30 | - Namespace paths (.library-ms) 31 | 32 | ## Usage Notes 33 | - Single selection mode 34 | - SHIFT key reveals additional path formats 35 | - Supports files, folders, libraries 36 | - Handles special Windows folders 37 | 38 | ## Dependencies 39 | Required Components: 40 | - Windows Operating System 41 | - Nilesoft Shell framework 42 | 43 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.all.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // Based on: Nilesoft Shell original snippet 3 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 4 | 5 | menu(image=icon.copy_path title=title.copy_path mode='single') { 6 | item(title='Open File Location' image cmd='explorer.exe' args='/select, @sel') 7 | separator() 8 | 9 | // Section: Full Path Variants 10 | item(image=inherit cmd=command.copy(this.title) title=sel.path) 11 | item(image=inherit cmd=command.copy(this.title) title=sel.raw where=(sel.raw != sel.path)) 12 | item(image=inherit cmd=command.copy(this.title) title=sel.short where=(sel.short != sel.path) and len(sel.short)>0 tip='Short Path: Uses DOS 8.3 names for compatibility with older systems') 13 | menu(expanded='true' where=keys.shift() and str.contains(sel.path, ':')) { 14 | item(cmd=command.copy(this.title) title='\\localhost\' + str.replace(sel.path, ':', '$') tip='Network Path: For accessing via a mapped drive or UNC path') 15 | item(cmd=command.copy(this.title) title=path.wsl(sel.path) tip='Unix-style Path: Use for WSL or similar environments') 16 | item(cmd=command.copy(this.title) title=str.replace(path.wsl(sel.path), '/mnt/', '/cygdrive/') tip='Cygwin Path: For use in Cygwin environments') 17 | item(cmd=command.copy(this.title) title=str.right(path.wsl(sel.path), len(path.wsl(sel.path))-len('/mnt/c')) tip='Pure Unix Path: For Linux systems (with root /home structure)') 18 | item(cmd=command.copy(this.title) title='file://' + path.separator(sel.path) tip='Internet Path: Use as a file URL for browsers or network links') } 19 | separator() 20 | 21 | // Section: Parent Path Variants 22 | item(image=inherit cmd=command.copy(this.title) where=(sel.parent.len>3 and !str.start(sel.raw, '::')) title=@sel.parent) 23 | item(image=inherit cmd=command.copy(this.title) title=@sel.parent.raw where=(sel.parent.raw != sel.parent)) 24 | separator() 25 | 26 | // Section: File Name and Extension 27 | item(cmd=command.copy(this.title) type='file|dir|back.dir' title=@sel.file.name) 28 | item(cmd=command.copy(this.title) type='file' where=sel.file.len != sel.file.title.len title=@sel.file.title) 29 | item(cmd=command.copy(this.title) type='file' where=sel.file.ext.len>0 title=@sel.file.ext) 30 | 31 | // Section: Special Folder Names (UUID-based or System) 32 | $ext_dir = regex.matches(sel, '\.\{[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\}$') 33 | item(cmd=command.copy(this.title) type='dir|back.dir' where=len(ext_dir[0])>0 title=str.replace(sel.file.name, ext_dir[0], "")) 34 | item(cmd=command.copy(this.title) type='dir|back.dir' where=len(ext_dir[0])>0 title=ext_dir[0]) 35 | 36 | // Section: Namespace (e.g., libraries or virtual folders) 37 | item(cmd=command.copy(this.title) type='namespace' where=str.end(sel.raw, '.library-ms') title=sel.path.title+'.library-ms') 38 | item(cmd=command.copy(this.title) type='namespace' where=str.end(sel.raw, '.library-ms') title=sel.path.title) 39 | item(cmd=command.copy(this.title) type='namespace' where=str.end(sel.raw, '.library-ms') title='.library-ms') 40 | } 41 | -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.env.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.env.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.env.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.env.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.env.md: -------------------------------------------------------------------------------- 1 | # Windows Environment Path Copy Tool 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.copy.path.env.nss`](/ex3.multifunction/all.copy.path.env.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.copy.path.env.1.png) 10 | ![Screenshot 2](/ex3.multifunction/all.copy.path.env.2.png) 11 | 12 | ## Overview 13 | A Nilesoft Shell extension that converts file paths to use Windows environment variables and copies them to clipboard. 14 | 15 | ## Key Features 16 | - Quick access to Environment Variables settings 17 | - Converts paths to use environment variables 18 | - Supports system and user environment paths 19 | - Single folder/drive selection 20 | 21 | ## Menu Structure 22 | - Environment Variables (SHIFT + Click for admin) 23 | - User paths (%TMP%, %TEMP%, %LocalAppData%, etc.) 24 | - Program paths (%ProgramFiles%, %CommonProgramFiles%, etc.) 25 | - Windows paths (%WinDir%, %SystemRoot%) 26 | - Drive paths (%HomeDrive%, %SystemDrive%) 27 | 28 | ## Usage Notes 29 | - Works with directories, drives, and desktop 30 | - Single selection only 31 | - Only shows relevant variables for current path 32 | 33 | 34 | ## Dependencies 35 | Required Components: 36 | - Windows Operating System 37 | - Nilesoft Shell framework 38 | 39 | Optional Components: 40 | - Administrative privileges for system-wide changes 41 | 42 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.env.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(image=icon.copy_path title='Copy &env path' mode='single' type='dir|back.dir|drive|back.drive|desktop') { 5 | item(title='Environment Variables' keys='SHIFT admin' image='@sys.bin\imageres.dll,156' 6 | admin=keys.shift() cmd='rundll32.exe' args='sysdm.cpl,EditEnvironmentVariables') 7 | separator() 8 | // AppData / User 9 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%TMP%') title="%TMP%"+str.sub(sel.path, len(sys.expand('%TMP%')))) 10 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%TEMP%') title="%TEMP%"+str.sub(sel.path, len(sys.expand('%TEMP%')))) 11 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%LocalAppData%') title="%LocalAppData%"+str.sub(sel.path, len(sys.expand('%LocalAppData%')))) 12 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%UserProfile%') title="%UserProfile%"+str.sub(sel.path, len(sys.expand('%UserProfile%')))) 13 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%AppData%') title="%AppData%"+str.sub(sel.path, len(sys.expand('%AppData%')))) 14 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%Public%') title="%Public%"+str.sub(sel.path, len(sys.expand('%Public%')))) 15 | // ProgramData 16 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%ProgramData%') title="%ProgramData%"+str.sub(sel.path, len(sys.expand('%ProgramData%')))) 17 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%AllUsersProfile%') title="%AllUsersProfile%"+str.sub(sel.path, len(sys.expand('%AllUsersProfile%')))) 18 | // Program 19 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%CommonProgramFiles%') and !str.contains(sel.path, '%CommonProgramFiles(x86)%') title="%CommonProgramFiles%"+str.sub(sel.path, len(sys.expand('%CommonProgramFiles%')))) 20 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%ProgramFiles%') and !str.contains(sel.path, '%ProgramFiles(x86)%') title="%ProgramFiles%"+str.sub(sel.path, len(sys.expand('%ProgramFiles%')))) 21 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%CommonProgramFiles(x86)%') title="%CommonProgramFiles(x86)%"+str.sub(sel.path, len(sys.expand('%CommonProgramFiles(x86)%')))) 22 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%ProgramFiles(X86)%') title="%ProgramFiles(X86)%"+str.sub(sel.path, len(sys.expand('%ProgramFiles(X86)%')))) 23 | // Windows 24 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%WinDir%') title="%WinDir%"+str.sub(sel.path, len(sys.expand('%WinDir%')))) 25 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%SystemRoot%') title="%SystemRoot%"+str.sub(sel.path, len(sys.expand('%SystemRoot%')))) 26 | // drive letter 27 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%HomeDrive%') title="%HomeDrive%"+str.sub(sel.path, len(sys.expand('%HomeDrive%')))) 28 | item(image=inherit cmd=command.copy(this.title) where=str.contains(sel.path, '%SystemDrive%') title="%SystemDrive%"+str.sub(sel.path, len(sys.expand('%SystemDrive%')))) } -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.lnk.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.lnk.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.lnk.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.lnk.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.lnk.md: -------------------------------------------------------------------------------- 1 | # Shortcut Path Copy Tool 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.copy.path.lnk.nss`](/ex3.multifunction/all.copy.path.lnk.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.copy.path.lnk.1.png) 10 | ![Screenshot 2](/ex3.multifunction/all.copy.path.lnk.2.png) 11 | 12 | ## Overview 13 | A Nilesoft Shell extension adding enhanced shortcut (.lnk) path management capabilities to Windows context menu. 14 | 15 | ## Key Features 16 | - Copy target paths from shortcuts 17 | - Quick access to target file location 18 | - Copy shortcut/target names and locations 19 | - Support for "Start in" folder paths 20 | - Extension copying for target files 21 | 22 | ## Menu Structure 23 | - Open File Location 24 | - Target path 25 | - Resolved target path 26 | - Target location path 27 | - Start in folder path 28 | - Target name 29 | - Target title 30 | - Target extension 31 | 32 | ## Usage Notes 33 | - Single file selection only 34 | - Works exclusively with .lnk files 35 | 36 | ## Dependencies 37 | Required Components: 38 | - Windows Operating System 39 | - Nilesoft Shell framework 40 | 41 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.lnk.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(image=icon.copy_path title='Copy &lnk path' mode='single' type='file' where=len(path.lnktarget(sel))>0) { 5 | item(title='Open File Location' image cmd='explorer.exe' args='/select, @path.lnktarget(sel)') 6 | separator() 7 | // check if both path.lnktarget and path.lnk.target are the same 8 | item(image=inherit cmd=command.copy(this.title) title=path.lnk.target(sel)) 9 | item(image=inherit cmd=command.copy(this.title) title=path.lnktarget(sel) where=path.lnktarget(sel) != path.lnk.target(sel)) 10 | separator() 11 | item(image=inherit cmd=command.copy(this.title) title=path.location(path.lnk.target(sel)) where=len(path.location(path.lnk.target(sel)))>3) 12 | item(image=inherit cmd=command.copy(this.title) title=path.lnk.dir(sel) where=(path.location(path.lnk.target(sel)) != path.lnk.dir(sel)) and len(path.lnk.dir(sel))>0 tip='Start in folder') 13 | separator() 14 | item(cmd=command.copy(this.title) title=path.name(path.lnk.target(sel))) 15 | item(cmd=command.copy(this.title) title=path.title(path.lnk.target(sel)) where=path.name(path.lnk.target(sel)) != path.title(path.lnk.target(sel))) 16 | item(cmd=command.copy(this.title) title=path.file.ext(path.lnk.target(sel)) where=len(path.file.ext(path.lnk.target(sel)))>1) } -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.lnk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.lnk.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.ps.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.ps.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.ps.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.ps.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.ps.md: -------------------------------------------------------------------------------- 1 | # Copy Tool (Powershell) 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.copy.path.ps.nss`](/ex3.multifunction/all.copy.path.ps.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.copy.path.ps.1.png) 10 | ![Screenshot 2](/ex3.multifunction/all.copy.path.ps.2.png) 11 | 12 | ## Overview 13 | This Nilesoft Shell extension adds enhanced path and content copying capabilities to the Windows context menu. 14 | 15 | ## Key Features 16 | - Copy full file/folder paths 17 | - Copy parent directory paths 18 | - Copy file/folder names with/without extensions 19 | - Copy file contents 20 | - Copy directory contents listing 21 | - Multi-selection support 22 | 23 | ## Menu Structure 24 | - Copy item(s) full path 25 | - Copy parent(s) full path 26 | - Copy item(s) name 27 | - Copy item(s) title 28 | - Copy Content(s) - for files 29 | - Copy Content(s) - for directories 30 | 31 | ## Usage Notes 32 | - Works with files, folders, drives and desktop 33 | - Supports multiple item selection 34 | - Hidden PowerShell window execution 35 | 36 | ## Dependencies 37 | - Windows Operating System 38 | - Nilesoft Shell framework 39 | - PowerShell 40 | 41 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.ps.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // Based on: jorn's idea (Discord) 3 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 4 | 5 | menu(image=icon.copy_path title=title.copy_path mode='multiple' type='file|dir|back.dir|drive|back.drive|desktop') { 6 | item(image=inherit title='Copy item@if(sel.count>1, 's') full path' tip='Copies the full path of the selected item(s) to the clipboard' 7 | window='hidden' cmd-ps=`-Command @sel(2, ',') | % { [System.IO.Path]::GetFullPath($_) } | Set-Clipboard`) 8 | item(image=inherit title='Copy parent@if(sel.count>1, 's') full path' where=!path.isdrive(sel) tip='Copies the full path of the parent directory of the selected item(s) to the clipboard' 9 | window='hidden' cmd-ps=`-Command @sel(2, ',') | % { [System.IO.Path]::GetDirectoryName($_) } | Set-Clipboard`) 10 | separator() 11 | item(title='Copy item@if(sel.count>1, 's') name' tip='Copies the name (with extension) of the selected item(s) to the clipboard' 12 | window='hidden' cmd-ps=`-Command @sel(2, ',') | % { [System.IO.Path]::GetFileName($_) } | Set-Clipboard`) 13 | item(title='Copy item@if(sel.count>1, 's') title' tip='Copies the title (name without extension) of the selected item(s) to the clipboard' 14 | window='hidden' cmd-ps=`-Command @sel(2, ',') | % { [System.IO.Path]::GetFileNameWithoutExtension($_) } | Set-Clipboard`) 15 | separator() 16 | item(title='Copy Content@if(sel.count>1, 's')' type='file' mode='multi_unique' tip='Copies the content of the selected file(s) to the clipboard' 17 | window='hidden' cmd-ps=`-Command @sel(2, ',') | % { Get-Content $_ -Raw } | Set-Clipboard`) 18 | item(image=inherit title='Copy Content@if(sel.count>1, 's')' type='dir|back.dir|drive|back.drive|desktop' tip='Copies the full paths of all items inside the selected directory/drive to the clipboard' 19 | window='hidden' cmd-ps=`-Command Set-Clipboard -LiteralPath (@sel(2, ',') | % { Get-ChildItem $_ -Force | % { $_.FullName } })`) } 20 | 21 | -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.url.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.url.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.url.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.copy.path.url.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.url.md: -------------------------------------------------------------------------------- 1 | # URL Path Copy Tool 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.copy.path.url.nss`](/ex3.multifunction/all.copy.path.url.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.copy.path.url.1.png) 10 | ![Screenshot 2](/ex3.multifunction/all.copy.path.url.2.png) 11 | 12 | ## Overview 13 | A Nilesoft Shell extension for managing and copying URL components from .url shortcut files. 14 | 15 | ## Key Features 16 | - Extract and copy full URLs 17 | - Copy URL components (scheme, domain, path) 18 | - URL launch support with SHIFT key 19 | - Regular expression based parsing 20 | - Username extraction from URLs 21 | 22 | ## Menu Structure 23 | - Full URL (SHIFT to launch) 24 | - URL without scheme 25 | - Full domain (SHIFT to launch) 26 | - Domain without scheme 27 | - Username (if present) 28 | - URL scheme 29 | 30 | ## Usage Notes 31 | - Single file selection only 32 | - Works exclusively with .url files 33 | - SHIFT key enables direct URL launch 34 | - Supports various [`URI schemes`](https://en.wikipedia.org/wiki/List_of_URI_schemes) 35 | 36 | ## Dependencies 37 | Required Components: 38 | - Windows Operating System 39 | - Nilesoft Shell framework 40 | 41 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/all.copy.path.url.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(image=icon.copy_path title='Copy &url path' mode='single' type='file' where=sel.file.ext=='.url') { 5 | $url=ini.get(sel, 'InternetShortcut', 'URL') // io.meta(sel,'System.Link.TargetParsingPath') 6 | //https://en.wikipedia.org/wiki/List_of_URI_schemes 7 | $url_scheme=regex.matches(url, '^([a-zA-Z0-9]+):(\/\/)?') 8 | $url_domain=regex.matches(url, '^([a-zA-Z0-9]+):(\/\/)?(www\.)?([a-zA-Z0-9._\[\]:+-]+)@?([a-zA-Z0-9._-]+)?') 9 | 10 | item(title=url keys='SHIFT launch' cmd=if(keys.shift(), this.title, command.copy(this.title))) 11 | item(title=str.replace(url, url_scheme[0],'') cmd=command.copy(this.title)) 12 | separator() 13 | item(title=str.left(url, str.findlast(url, '#')) keys='SHIFT launch' where=str.findlast(url, '#')>0 cmd=if(keys.shift(), this.title, command.copy(this.title))) 14 | item(title=str.replace(str.left(url, str.findlast(url, '#')), url_scheme[0],'') where=str.findlast(url, '#')>0 cmd=command.copy(this.title)) 15 | separator() 16 | item(title=url_domain[0] keys='SHIFT launch' where=url_domain[0]!=url cmd=if(keys.shift(), this.title, command.copy(this.title))) 17 | item(title=str.replace(url_domain[0], url_scheme[0], '') where=url_domain[0]!=url cmd=command.copy(this.title)) 18 | separator() 19 | item(title=str.remove(url_domain[0], 0, 1+str.find(url_domain[0], '@')) cmd=command.copy(this.title) where=str.contains(url_domain[0], '@')) 20 | item(title=url_scheme[0] cmd=command.copy(this.title)) } -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.file.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.drive.file.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.file.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.drive.file.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.file.md: -------------------------------------------------------------------------------- 1 | # File Drive - Nilesoft Shell Snippet 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.drive.file.nss`](/ex3.multifunction/all.drive.file.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.drive.file.1.png) 10 | ![Screenshot 2](/ex3.multifunction/all.drive.file.2.png) 11 | 12 | ## Overview 13 | This Nilesoft Shell snippet adds a "File Drive" context menu with two distinct functionalities: managing ISO/IMG disk image files and interacting with mounted virtual drives. It provides convenient tools for mounting, unmounting, and querying disk images directly from Windows Explorer's context menu. 14 | 15 | ## Key Features 16 | - Mount ISO and IMG files with a single click 17 | - Unmount disk images easily 18 | - View information about disk image files 19 | - Retrieve the source file path of mounted images 20 | - Eject mounted virtual drives directly 21 | - Smart eject option that navigates away before unmounting 22 | 23 | ## Menu Structure 24 | - For ISO/IMG files: 25 | - Mount (mounts the disk image) 26 | - UnMount (unmounts the disk image) 27 | - Info (displays technical information about the image) 28 | - Verify (checks if the image is currently mounted) 29 | - For mounted CD/DVD drives: 30 | - View Source File #1 (shows original ISO file path using Volume method) 31 | - View Source File #2 (shows original ISO file path using DevicePath method) 32 | - Eject (unmounts the disk image) 33 | - Eject Smart (attempts to navigate away before unmounting) 34 | 35 | ## Usage Notes 36 | - Right-click on ISO/IMG files to access mount options 37 | - Right-click on mounted virtual drives to access eject options 38 | - All operations use PowerShell commands for disk image management 39 | - The menu intelligently appears only for supported file types and drives 40 | - Smart eject tries to navigate away from the drive before ejecting 41 | - No administrative privileges required for these operations 42 | - Works with both native Windows mounting and third-party mounted images 43 | - Compatible with both CDFS (Compact Disc File System) formatted drives 44 | 45 | ## Dependencies 46 | - Windows Operating System 47 | - Requires Windows 8 or newer (for native ISO mounting support) 48 | - Nilesoft Shell framework 49 | - Uses PowerShell's DiskImage module for mounting/unmounting 50 | - Works with Windows built-in ISO mounting capability 51 | 52 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.file.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | // To-Do: Check which is better to use: isCDFS or isCDDrive 4 | 5 | menu(title='File Drive' type='file' where=sel.file.ext=='.iso' or sel.file.ext=='.img' image=icon.mount) { 6 | // https://www.elevenforum.com/t/mount-or-unmount-iso-and-img-file-in-windows-11.1201/ 7 | item(title='Mount' image=icon.mount 8 | cmd-ps=`$file = Get-Item -LiteralPath '@sel(true)'; Mount-DiskImage -ImagePath $file` window='hidden') 9 | item(title='UnMount' image=icon.mount 10 | cmd-ps=`$file = Get-Item -LiteralPath '@sel(true)'; Dismount-DiskImage -ImagePath $file` window='hidden') 11 | item(title='Info' tip='Info about an ISO file' 12 | cmd-ps=`$file = Get-Item -LiteralPath '@sel(true)'; Get-DiskImage -ImagePath $file; Read-Host -Prompt '[Enter] to close'`) 13 | item(title='Verify' tip='Verify if an ISO file is mounted' 14 | cmd-ps=`$file = Get-Item -LiteralPath '@sel(true)'; (Get-DiskImage -ImagePath $file).Attached; Read-Host -Prompt '[Enter] to close'`) } 15 | 16 | // https://www.geeksforgeeks.org/what-is-cdfs-compact-disc-file-system/ 17 | $isCDFS = io.meta(sel,'System.Volume.FileSystem')=='CDFS' // Compact Disc File System 18 | $isCDDrive = io.meta(sel, 'System.ItemTypeText')=='CD Drive' 19 | menu(title='File Drive' where=isCDDrive image=icon.mount) { 20 | // https://www.elevenforum.com/t/find-file-path-location-of-mounted-iso-and-img-in-windows-11.23231/ 21 | item(title='View Source File #1' 22 | cmd-ps=`$imagePath = (Get-Volume @str.left(sel.root, 1) | Get-DiskImage).ImagePath; Write-Host $imagePath; Read-Host -Prompt '[Enter] to close'`) 23 | item(title='View Source File #2' 24 | cmd-ps=`(Get-DiskImage -DevicePath \\.\@str.trim(sel.root, '\')).ImagePath; Read-Host -Prompt '[Enter] to close'`) 25 | item(title='Eject' image=icon.eject cmd-ps=`$imagePath = (Get-Volume @str.left(sel.root, 1) | Get-DiskImage).ImagePath; Dismount-DiskImage -ImagePath $imagePath` window='hidden') 26 | 27 | item(title='Eject' image=icon.eject keys='Smart' commands { 28 | // not working good; navigate to "This PC" not possible 29 | cmd=command.navigate('C:\') && sleep(500) && keys.send(key.alt, key.up) wait=1, 30 | cmd-ps=`$imagePath = (Get-Volume @str.left(sel.root, 1) | Get-DiskImage).ImagePath; Dismount-DiskImage -ImagePath $imagePath` window='hidden' wait=1, 31 | }) } 32 | -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.folder.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.drive.folder.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.folder.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.drive.folder.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.folder.md: -------------------------------------------------------------------------------- 1 | # Folder Drive - Nilesoft Shell Snippet 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.drive.folder.nss`](/ex3.multifunction/all.drive.folder.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.drive.folder.1.png) 10 | ![Screenshot 2](/ex3.multifunction/all.drive.folder.2.png) 11 | 12 | ## Overview 13 | This Nilesoft Shell snippet adds a "Folder Drive" context menu that allows users to mount folders as virtual drives using the Windows SUBST command. It provides a convenient way to access frequently used folders as if they were physical drives, with options to mount, unmount, and manage these virtual drives. 14 | 15 | ## Key Features 16 | - Mount any folder as a virtual drive with a single click 17 | - Unmount virtual drives with tracking of original folder location 18 | - Navigate directly to the original folder location of any mounted drive 19 | - Display list of all currently mounted folder drives 20 | - Smart unmounting that returns to original folder location 21 | - Automatic desktop.ini file management for persistent tracking 22 | 23 | ## Menu Structure 24 | - Main entry: "Folder Drive" with a mount icon 25 | - For mounted virtual drives: 26 | - Unmount (removes the virtual drive) 27 | - Unmount Smart (navigates back to original folder before unmounting) 28 | - Open folder location (navigates to the original folder) 29 | - For folders and desktop: 30 | - Mount Folder submenu with available drive letters (A-Z) 31 | - Unavailable letters appear disabled 32 | - Mounted Folders section: 33 | - Shows all currently mounted folder drives with their source paths 34 | - Clicking any entry navigates to that drive 35 | 36 | ## Usage Notes 37 | - Right-click on a folder to mount it as a virtual drive 38 | - Right-click on a mounted drive to manage or unmount it 39 | - Virtual drives are temporary and exist only for the current session 40 | - They will be removed when you restart your computer 41 | - The system tracks the original folder path in a hidden desktop.ini file 42 | - Drive letters already in use by physical or other virtual drives appear disabled 43 | - Column breaks organize drive letters into logical groups 44 | 45 | ## Dependencies 46 | - Windows Operating System 47 | - Nilesoft Shell framework 48 | - Uses Windows built-in SUBST command for drive mapping 49 | - Tracks mounted drives using desktop.ini files 50 | 51 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. 52 | 53 | 54 | -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.manage.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.drive.manage.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.manage.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.drive.manage.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.manage.md: -------------------------------------------------------------------------------- 1 | # Drive Manage - Nilesoft Shell Snippet 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.drive.manage.nss`](/ex3.multifunction/all.drive.manage.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.drive.manage.1.png) 10 | ![Screenshot 2](/ex3.multifunction/all.drive.manage.2.png) 11 | 12 | ## Overview 13 | This Nilesoft Shell snippet adds a comprehensive "Drive Manage" context menu for drives in Windows Explorer. It provides quick access to various disk management utilities and operations without requiring users to navigate through system tools. 14 | 15 | ## Key Features 16 | - Direct access to essential drive maintenance tools 17 | - Disk cleanup options for freeing up space 18 | - Disk optimization and defragmentation tools 19 | - Disk error checking with different severity options 20 | - Access to system disk management utilities 21 | - Dynamic menu that adapts based on drive type 22 | 23 | ## Menu Structure 24 | - Main entry: "Drive Manage" with a drive icon 25 | - Section 1: Maintenance tools (for regular drives only) 26 | - Disk Cleanup (general and drive-specific) 27 | - Optimize/Defragment options 28 | - Check Disk utilities (standard and dismounted modes) 29 | - Section 2: System management tools 30 | - Disk Management console access 31 | - Disk and Volumes settings (Windows 8 and newer) 32 | 33 | ## Usage Notes 34 | - Right-click on any drive in Explorer to access this menu 35 | - Some options require administrative privileges (automatically requested) 36 | - The "Dismounted" check disk option is disabled for system drives 37 | - CD/DVD drives and virtual mapped folders show a simplified menu 38 | - Options dynamically appear/disappear based on available system utilities 39 | - Keyboard shortcuts are available for certain operations 40 | 41 | ## Dependencies 42 | - Windows Operating System 43 | - Nilesoft Shell framework 44 | - Uses Windows built-in utilities: 45 | - cleanmgr.exe (Disk Cleanup) 46 | - dfrgui.exe (Disk Defragmenter) 47 | - chkdsk (Check Disk) 48 | - diskmgmt.msc (Disk Management) 49 | - Some features require Windows 8 or newer 50 | 51 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. 52 | -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.manage.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(title='Drive Manage' where=sel.type==5 or io.meta(sel, 'System.ItemTypeText')=='CD Drive' image=\uE253) { 5 | separator() 6 | $isCDDrive = io.meta(sel, 'System.ItemTypeText')=='CD Drive' 7 | $isMFolder = path.exists(ini.get('@sel\desktop.ini', 'Nilesoft', 'subst')) 8 | menu(where=!(isCDDrive or isMFolder) expanded='true') { 9 | // https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cleanmgr 10 | item(title=str.replace(str.res('cleanmgr.exe', -28), ' : ', '@"\t"') where=path.exists('@sys.bin\cleanmgr.exe') image 11 | tip='Launches Disk Cleanup to free up space' 12 | cmd='cleanmgr.exe' keys=all) 13 | item(title=str.res('cleanmgr.exe', -19) keys=sel.root where=path.exists('@sys.bin\cleanmgr.exe') image 14 | tip='Runs Disk Cleanup on the selected drive' 15 | cmd='cleanmgr.exe' args='/d @sel') 16 | // https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/defrag 17 | item(title=str.res('dfrgui.exe', -106) where=path.exists('@sys.bin\dfrgui.exe') image 18 | tip='Opens the Defragment and Optimize Drives utility' 19 | cmd='dfrgui.exe' tip=str.res('dfrgui.exe', -103)) 20 | // https://www.elevenforum.com/t/add-optimize-to-context-menu-of-drives-in-windows-11.3216/ 21 | item(title=str.res('shell32.dll', -22027) where=path.exists('@sys.bin\dfrgui.exe') image='dfrgui.exe' 22 | tip='Runs disk optimization via command line' 23 | admin cmd-line='/k defrag @str.left(@sel, 2) /A & pause & exit') 24 | // https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/chkdsk?tabs=event-viewer 25 | item(title=str.res('shell32.dll', -28816) image=\uE0F6 26 | tip='Scans the drive for errors and attempts to fix them' 27 | admin cmd-line='/k chkdsk @str.left(@sel, 2) /r /f & pause & exit') 28 | item(title=str.res('shell32.dll', -28816) keys='dismounted' image=\uE0F6 vis=if(!path.isroot(sel) or str.contains(sel, sys.root), 'disable') 29 | tip='Performs a thorough disk check and attempts repairs (drive will be dismounted first)' 30 | admin cmd-line='/k chkdsk @str.left(@sel, 2) /r /f /x & pause & exit') 31 | separator() 32 | item(title='Disk Management' where=path.exists('@sys.bin\diskmgmt.msc') image=icon.settings 33 | tip='Opens the Disk Management utility to manage partitions' 34 | cmd='diskmgmt.msc') 35 | item(title='Disk and Volumes' where=sys.ver.major>=8 image=icon.settings 36 | tip='Opens Windows Settings for disk and volume management' 37 | cmd='ms-settings:disksandvolumes') } -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.swap.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.drive.swap.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.swap.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.drive.swap.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.swap.md: -------------------------------------------------------------------------------- 1 | # Swap Drive Letter - Nilesoft Shell Snippet 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.drive.swap.nss`](/ex3.multifunction/all.drive.swap.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.drive.swap.1.png) 10 | ![Screenshot 2](/ex3.multifunction/all.drive.swap.2.png) 11 | 12 | ## Overview 13 | This snippet adds a "Swap Drive Letter" context menu option for local and USB drives in Windows Explorer. It allows users to quickly change a drive's letter assignment through a hierarchical menu without having to open Disk Management. 14 | 15 | ## Key Features 16 | - Changes drive letters directly from Windows Explorer context menu 17 | - Shows only available drive letters (disables letters already in use) 18 | - Works with both local disks and USB drives 19 | - Organizes letters into a clean, categorized menu 20 | - Executes required administrative commands automatically 21 | - Prevents changes to system root drive 22 | 23 | ## Menu Structure 24 | - Submenu with all letters A-Z 25 | - Letters that are already assigned to other drives appear disabled 26 | 27 | ## Usage Notes 28 | - Right-click on any drive in Explorer to access this menu 29 | - The script only appears for items identified as "Local Disk" or "USB Drive" 30 | - The system drive (usually C:) is protected from changes 31 | - Administrative privileges are required (automatically requested) 32 | - Changes take effect immediately 33 | - The menu will not appear for virtual drives created by the SUBST command 34 | 35 | ## Dependencies 36 | - Windows Operating System 37 | - Nilesoft Shell framework 38 | - Uses Windows built-in firewall management tools: 39 | - PowerShell's `Set-Partition` cmdlet for drive letter modification 40 | 41 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/all.drive.swap.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(title='Swap Drive Letter' image=\uE1A9 vis=if(!path.isroot(sel) or str.contains(sel, sys.root), 'disable') 5 | where=(io.meta(sel, 'System.ItemTypeText')=='Local Disk' or io.meta(sel, 'System.ItemTypeText')=='USB Drive') 6 | and !path.exists(ini.get('@sel\desktop.ini', 'Nilesoft', 'subst'))) { 7 | item(title = 'A:' vis=if(path.exists('A:'),'disable') where=key.shift() 8 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter A; Exit' window='hidden') 9 | item(title = 'B:' vis=if(path.exists('B:'),'disable') where=key.shift() 10 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter B; Exit' window='hidden') 11 | item(title = 'C:' vis=if(path.exists('C:'),'disable') col 12 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter C; Exit' window='hidden') 13 | item(title = 'D:' vis=if(path.exists('D:'),'disable') 14 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter D; Exit' window='hidden') 15 | item(title = 'E:' vis=if(path.exists('E:'),'disable') 16 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter E; Exit' window='hidden') 17 | item(title = 'F:' vis=if(path.exists('F:'),'disable') 18 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter F; Exit' window='hidden') 19 | item(title = 'G:' vis=if(path.exists('G:'),'disable') 20 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter G; Exit' window='hidden') 21 | item(title = 'H:' vis=if(path.exists('H:'),'disable') 22 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter H; Exit' window='hidden') 23 | item(title = 'I:' vis=if(path.exists('I:'),'disable') col 24 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter I; Exit' window='hidden') 25 | item(title = 'J:' vis=if(path.exists('J:'),'disable') 26 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter J; Exit' window='hidden') 27 | item(title = 'K:' vis=if(path.exists('K:'),'disable') 28 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter K; Exit' window='hidden') 29 | item(title = 'L:' vis=if(path.exists('L:'),'disable') 30 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter L; Exit' window='hidden') 31 | item(title = 'M:' vis=if(path.exists('M:'),'disable') 32 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter M; Exit' window='hidden') 33 | item(title = 'N:' vis=if(path.exists('N:'),'disable') 34 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter N; Exit' window='hidden') 35 | item(title = 'O:' vis=if(path.exists('O:'),'disable') col 36 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter O; Exit' window='hidden') 37 | item(title = 'P:' vis=if(path.exists('P:'),'disable') 38 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter P; Exit' window='hidden') 39 | item(title = 'Q:' vis=if(path.exists('Q:'),'disable') 40 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter Q; Exit' window='hidden') 41 | item(title = 'R:' vis=if(path.exists('R:'),'disable') 42 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter R; Exit' window='hidden') 43 | item(title = 'S:' vis=if(path.exists('S:'),'disable') 44 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter S; Exit' window='hidden') 45 | item(title = 'T:' vis=if(path.exists('T:'),'disable') 46 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter T; Exit' window='hidden') 47 | item(title = 'U:' vis=if(path.exists('U:'),'disable') col 48 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter U; Exit' window='hidden') 49 | item(title = 'V:' vis=if(path.exists('V:'),'disable') 50 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter V; Exit' window='hidden') 51 | item(title = 'W:' vis=if(path.exists('W:'),'disable') 52 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter W; Exit' window='hidden') 53 | item(title = 'X:' vis=if(path.exists('X:'),'disable') 54 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter X; Exit' window='hidden') 55 | item(title = 'Y:' vis=if(path.exists('Y:'),'disable') 56 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter Y; Exit' window='hidden') 57 | item(title = 'Z:' vis=if(path.exists('Z:'),'disable') 58 | admin cmd-ps='-command Set-Partition -DriveLetter @str.left(@sel, 1) -NewDriveLetter Z; Exit' window='hidden') } -------------------------------------------------------------------------------- /ex3.multifunction/all.security.encrypt.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.security.encrypt.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.security.encrypt.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.security.encrypt.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.security.encrypt.md: -------------------------------------------------------------------------------- 1 | # Encrypt, Decrypt - Nilesoft Shell Snippet 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.security.encrypt.nss`](/ex3.multifunction/all.security.encrypt.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.security.encrypt.1.png) 10 | ![Screenshot 1](/ex3.multifunction/all.security.encrypt.2.png) 11 | 12 | ## Overview 13 | This Nilesoft Shell snippet adds an "Encrypt, Decrypt" context menu for files and folders, providing easy access to Windows' built-in Encrypted File System (EFS) functionality. It allows users to quickly encrypt or decrypt files and folders directly from the right-click menu without using command line tools. 14 | 15 | ## Key Features 16 | - One-click file and folder encryption using Windows EFS 17 | - One-click decryption of EFS-encrypted items 18 | - Recursive encryption/decryption options for folders 19 | - Smart menu that adapts based on the current encryption status 20 | - EFS certificate management options 21 | - Support for multiple file selection 22 | 23 | ## Menu Structure 24 | - Main entry: "Encrypt, Decrypt" with a lock icon 25 | - For unencrypted items: 26 | - Encrypt (for files and folders) 27 | - Encrypt recursive (for folders only) 28 | - For encrypted items: 29 | - Decrypt (for files and folders) 30 | - Decrypt recursive (for folders only) 31 | - Certificate management: 32 | - View EFS cert (displays encryption certificate details) 33 | - Copy EFS cert (copies certificate thumbprint to clipboard) 34 | 35 | ## Usage Notes 36 | - Right-click on files or folders to access this menu 37 | - The menu dynamically shows only relevant options based on encryption status 38 | - Encrypted files are identified by checking for the "E" attribute 39 | - All operations use the Windows built-in cipher.exe command 40 | - The Explorer view is automatically refreshed after encryption/decryption 41 | - Command windows display progress and require confirmation before closing 42 | - Certificate operations work with the current user's EFS certificate 43 | - Multiple files can be selected for batch encryption/decryption 44 | 45 | ## Dependencies 46 | - Windows Operating System 47 | - Windows Pro or Enterprise edition required (EFS is not available in Home editions) 48 | - Nilesoft Shell framework 49 | - Uses Windows built-in cipher.exe command for EFS operations 50 | - Requires NTFS file system (EFS is not available on FAT/exFAT) 51 | 52 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/all.security.encrypt.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(title='Encrypt, Decrypt' type='file|dir' tip='Encrypted File System (EFS)' mode='multiple' image=\uE0BA) { 5 | //> https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cipher 6 | //> https://www.elevenforum.com/t/encrypt-or-decrypt-files-and-folders-with-efs-in-windows-11.9738/ 7 | //+ https://winaero.com/decrypt-files-folders-efs-windows-10/ 8 | //+ https://winaero.com/how-to-add-encrypt-and-decrypt-commands-in-windows-10-right-click-menu/ 9 | //+ https://ss64.com/nt/cipher.html 10 | $isEncrypted=str.contains(io.meta(sel,'System.FileAttributes'), 'E') 11 | item(title='Encrypt' where=!isEncrypted image=\uE19A 12 | tip='Encrypt the selected file(s) using EFS' 13 | commands { cmd-line='/k cipher /e @sel(true) & pause & exit' wait=1, cmd=command.refresh }) 14 | item(title='Encrypt@"\t"recursive' where=!isEncrypted type='dir' mode='single' image=\uE19A 15 | tip='Encrypt all files in the selected folder and its subfolders using EFS' 16 | commands { cmd-line='/k cipher /e /s:@sel(true) & pause & exit' wait=1, cmd=command.refresh }) 17 | item(title='Decrypt' where=isEncrypted image=\uE19B 18 | tip='Decrypt the selected file(s) using EFS' 19 | commands { cmd-line='/k cipher /d @sel(true) & pause & exit' wait=1, cmd=command.refresh }) 20 | item(title='Decrypt@"\t"recursive' where=isEncrypted type='dir' mode='single' image=\uE19B 21 | tip='Decrypt all files in the selected folder and its subfolders using EFS' 22 | commands { cmd-line='/k cipher /d /s:@sel(true) & pause & exit' wait=1, cmd=command.refresh }) 23 | item(title='View EFS cert' image=\uE19C 24 | tip='Display the encryption certificate used for EFS' 25 | cmd-line='/k cipher /y & pause & exit') 26 | item(title='Copy EFS cert' image=\uE19C 27 | tip='Copy the encryption certificate thumbprint to the clipboard' 28 | cmd-line='/c cipher /y | findstr /r /c:"[0-9A-Fa-f] [0-9A-Fa-f]" | clip & exit' window='hidden') } -------------------------------------------------------------------------------- /ex3.multifunction/all.security.env.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.security.env.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.security.env.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.security.env.2.png -------------------------------------------------------------------------------- /ex3.multifunction/all.security.env.md: -------------------------------------------------------------------------------- 1 | # Environment Path Menu 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.security.env.nss`](/ex3.multifunction/all.security.env.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.security.env.1.png) 10 | ![Screenshot 2](/ex3.multifunction/all.security.env.2.png) 11 | 12 | ## Overview 13 | The Environment Path Menu provides a graphical interface for managing Windows environment variables and allowing users to modify system paths directly from the context menu. 14 | 15 | ## Key Features 16 | - Launch Environment Variables GUI editor 17 | - Add/Remove current directory to %PATH% 18 | 19 | ## Menu Structure 20 | - ENV GUI - Opens system Environment Variables editor 21 | - Add/Remove from %PATH% - Toggle current directory in %PATH% 22 | - Path Viewers (hidden) 23 | - Default %PATH% 24 | - Current User %PATH% 25 | - Local Machine %PATH% 26 | - Combined LM+CU %PATH% 27 | 28 | ## Usage Notes 29 | - Explorer restart needed for changes to take effect 30 | - Shift key combinations available for different %PATH% viewing options 31 | - Safety confirmation prompt when removing from %PATH% 32 | 33 | ## Technical Details 34 | - Registry locations: 35 | - Current User: `HKCU\Environment` 36 | - System: `HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment` 37 | 38 | ## Dependencies 39 | - Windows Operating System 40 | - Nilesoft Shell framework 41 | - System DLLs: 42 | - sysdm.cpl 43 | - imageres.dll 44 | 45 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/all.security.env.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | // To-Do: make exceptions for system folders 4 | 5 | menu(image=icon.copy_path title='Environment Path' mode='single' type='dir|back.dir|drive|back.drive|desktop') { 6 | //+ https://learn.microsoft.com/en-us/windows/deployment/usmt/usmt-recognized-environment-variables 7 | item(title='ENV GUI' keys='SHIFT edit sys env' tip='Edit Environment Variables' image='@sys.bin\imageres.dll,156' sep='both' 8 | admin=keys.shift() cmd='rundll32.exe' args='sysdm.cpl,EditEnvironmentVariables') 9 | 10 | $reg_cu = reg.get('HKCU\Environment', 'PATH') 11 | $reg_lm = reg.get('HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'PATH') 12 | // does not work for drives 13 | $is_in_path = str.contains(reg_cu, sel+';') or str.contains(reg_cu, sel+'\;') or str.end(reg_cu, sel) 14 | $add_to_path = str.replace('@reg_cu;@sel', ';;', ';').trimstart(';') 15 | $remove_from_path = str.replace(reg_cu, sel, '').replace('\;', ';').replace(';;', ';') 16 | 17 | /* need explorer restart to take effect 18 | item(title=if(is_in_path, 'Remove from ', 'Add to ')+"%PATH%" type='dir' 19 | admin cmd-line='/c @if(is_in_path, if(msg('Are you sure you want to remove this path?', 'NileSoft Shell', msg.yesno | msg.warning)==msg.idyes, 'setx PATH "@remove_from_path" & pause & exit'), 'setx PATH "@add_to_path" & pause & exit')') 20 | */ 21 | item(title=if(is_in_path, 'Remove path from ', 'Add path to ')+"%PATH%" type='dir|dir.back' image=if(is_in_path, \uE171, \uE172) 22 | admin cmd=if(is_in_path, if(msg('Are you sure you want to remove this path?', 'NileSoft Shell', msg.yesno | msg.warning)==msg.idyes, reg.set('HKCU\Environment', 'PATH', remove_from_path)), reg.set('HKCU\Environment', 'PATH', add_to_path))) 23 | 24 | separator() 25 | item(title='Check '+"%PATH%" keys='default' where=keys.shift() image=\uE187 cmd=msg(str.join(str.split('%path%', ';'), "\n"))) 26 | item(title='Check '+"%PATH%" keys='CU' where=keys.shift() image=\uE187 cmd=msg(str.join(str.split(reg_cu, ';'), "\n"))) 27 | item(title='Check '+"%PATH%" keys='LM' where=keys.shift() image=\uE187 cmd=msg(str.join(str.split(reg_lm, ';'), "\n"))) 28 | item(title='Check '+"%PATH%" keys='LM+CU' where=keys.shift() image=\uE187 cmd=msg(str.join(str.split(reg_lm, ';'), "\n") + "\n\n" + str.join(str.split(reg_cu, ';'), "\n"))) 29 | } -------------------------------------------------------------------------------- /ex3.multifunction/all.security.firewall.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/all.security.firewall.1.png -------------------------------------------------------------------------------- /ex3.multifunction/all.security.firewall.md: -------------------------------------------------------------------------------- 1 | # Firewall - Nilesoft Shell Snippet 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.security.firewall.nss`](/ex3.multifunction/all.security.firewall.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/all.security.firewall.1.png) 10 | 11 | ## Overview 12 | This Nilesoft Shell snippet adds a "Firewall" context menu for executable files that allows quick management of Windows Firewall rules. Users can easily allow or block network access for applications without needing to navigate through the Windows Firewall interface. 13 | 14 | ## Key Features 15 | - One-click application firewall rule creation 16 | - Support for both inbound and outbound rules simultaneously 17 | - Options for allowing application network access 18 | - Options for blocking application network access 19 | - Easy removal of existing firewall rules 20 | - Rule verification capabilities 21 | - Multiple implementation methods (PowerShell and netsh) 22 | - Direct access to Windows Firewall management consoles 23 | 24 | ## Menu Structure 25 | - Main entry: "Firewall" with a custom shield icon 26 | - PowerShell implementation section: 27 | - Allow in Windows Firewall 28 | - Block in Windows Firewall 29 | - Remove From Windows Firewall 30 | - Netsh implementation section: 31 | - Allow in Windows Firewall 32 | - Block in Windows Firewall 33 | - Remove From Windows Firewall 34 | - Check the Rule in Windows Firewall 35 | - Utilities section: 36 | - Windows Firewall (wf.msc) 37 | - Windows Defender Firewall (firewall.cpl) 38 | 39 | ## Usage Notes 40 | - Right-click on executable files (.exe, .cmd, .bat, .msi, .ps1, .vbs) to access this menu 41 | - All firewall operations require administrative privileges (automatically requested) 42 | - Rules are created for both inbound and outbound directions 43 | - Rule names are automatically generated based on the file name 44 | - The menu includes two implementation methods: 45 | - PowerShell commands (New-NetFirewallRule) 46 | - Legacy netsh commands 47 | - Command windows are hidden by default except for verification 48 | 49 | ## Dependencies 50 | - Windows Operating System 51 | - Nilesoft Shell framework 52 | - Uses Windows built-in firewall management tools: 53 | - PowerShell's NetFirewall module 54 | - netsh advfirewall commands 55 | - Windows Firewall console (wf.msc) 56 | - Windows Defender Firewall control panel (firewall.cpl) 57 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/all.security.firewall.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | // To-Do: Verify if PowerShell commands require escape characters. 4 | // To-Do: Ensure compatibility with .lnk files. 5 | // To-Do: Find the correct netsh commands to open and close ports. 6 | 7 | $svg_firewall=image.svg(' 8 | ') 9 | menu(title='Firewall' type='file' find='.exe|.cmd|.bat|.msi|.ps1|.vbs' image=svg_firewall) { 10 | //> https://learn.microsoft.com/en-us/windows-server/networking/technologies/netsh/netsh-contexts 11 | //> https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/netsh-advfirewall-firewall-control-firewall-behavior 12 | $name_allow='Allow @sel.name' 13 | $name_block='Block @sel.name' 14 | item(image=image.res('@sys.bin\comres.dll, 8') title='Allow in Windows Firewall' 15 | admin cmd-ps='New-NetFirewallRule -DisplayName \"@name_allow\" -Program @sel(true) -Direction Outbound -Action Allow; New-NetFirewallRule -DisplayName \"@name_allow\" -Program @sel(true) -Direction Inbound -Action Allow' window='hidden') 16 | item(image=image.res('@sys.bin\comres.dll,10') title='Block in Windows Firewall' 17 | admin cmd-ps='New-NetFirewallRule -DisplayName \"@name_block\" -Program @sel(true) -Direction Outbound -Action Block; New-NetFirewallRule -DisplayName \"@name_block\" -Program @sel(true) -Direction Inbound -Action Block' window='hidden') 18 | item(image=image.res('@sys.bin\comres.dll,13') title='Remove From Windows Firewall' 19 | admin cmd-ps='Get-NetFirewallRule -DisplayName \"@name_allow\" | Remove-NetFirewallRule; Get-NetFirewallRule -DisplayName \"@name_block\" | Remove-NetFirewallRule' window='hidden') 20 | separator() 21 | item(image=image.res('@sys.bin\imageres.dll, 101') title='Allow in Windows Firewall' keys='netsh' 22 | admin cmd-line='/c netsh advfirewall firewall add rule name="@name_allow" program=sel(true) dir=in action=allow && netsh advfirewall firewall add rule name="@name_allow" program=sel(true) dir=out action=allow' window='hidden') 23 | item(image=image.res('@sys.bin\imageres.dll, 100') title='Block in Windows Firewall' keys='netsh' 24 | admin cmd-line='/c netsh advfirewall firewall add rule name="@name_block" program=sel(true) dir=in action=block && netsh advfirewall firewall add rule name="@name_block" program=sel(true) dir=out action=block' window='hidden') 25 | item(image=image.res('@sys.bin\imageres.dll, 102') title='Remove From Windows Firewall' keys='netsh' 26 | admin cmd-line='/k netsh advfirewall firewall delete rule name="@name_allow" & netsh advfirewall firewall delete rule name="@name_block"' window='hidden') 27 | item(image=image.res('@sys.bin\imageres.dll, 099') title='Check the Rule in Windows Firewall' keys='netsh' 28 | admin cmd-line='/k netsh advfirewall firewall show rule name="@name_allow" & netsh advfirewall firewall show rule name="@name_block" & pause & exit') 29 | separator() 30 | item(image=inherit title='Windows Firewall' where=path.exists('@sys.bin\wf.msc') 31 | cmd='wf.msc') 32 | item(image=inherit title='Windows Defender Firewall' where=path.exists('@sys.bin\firewall.cpl') 33 | cmd='control' args='firewall.cpl') } -------------------------------------------------------------------------------- /ex3.multifunction/commands.item.options.nss: -------------------------------------------------------------------------------- 1 | menu(title='Item Options' type='~Desktop' mode='single' image=icon.folder_options) { 2 | item(where=!wnd.is_desktop title=title.folder_options image=icon.folder_options cmd=command.folder_options) 3 | } -------------------------------------------------------------------------------- /ex3.multifunction/commands.links.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/commands.links.0.png -------------------------------------------------------------------------------- /ex3.multifunction/commands.links.md: -------------------------------------------------------------------------------- 1 | # Create NTFS Links 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`commands.links.ps.nss`](/ex3.multifunction/commands.links.ps.nss) 7 | or 8 | [`commands.links.cmd.nss (unfinished)`](/ex3.multifunction/commands.links.cmd.nss) 9 | 10 | ### Screenshot: 11 | ![Screenshot 1](/ex3.multifunction/commands.links.0.png) 12 | 13 | ## Overview 14 | 15 | Comprehensive Nilesoft Shell extension for creating different types of file system links in Windows. 16 | 17 | ## Key Features 18 | - Create symbolic links for files and directories 19 | - Create hard links for files 20 | - Create soft links (junctions) for directories 21 | - Link creation from various sources: 22 | - Current selection 23 | - Clipboard path 24 | - Specific file/folder selection 25 | 26 | ## Menu Structure 27 | 1. **Symbolic Links** 28 | - Create link from current item 29 | - Create link to specific location 30 | - Create link from file/folder 31 | - Create link from clipboard path 32 | 33 | 2. **Hard Links** 34 | - Create hard link from current file 35 | - Create hard link to specific location 36 | - Create hard link from selected file 37 | - Create hard link from clipboard file path 38 | 39 | 3. **Soft Links (Junctions)** 40 | - Create soft link from current directory 41 | - Create soft link to specific location 42 | - Create soft link from selected folder 43 | - Create soft link from clipboard folder path 44 | 45 | ## Usage Notes 46 | - Links can span different volumes 47 | - Supports linking to network shares 48 | - Broken links remain but will error on access 49 | 50 | ## Dependencies 51 | - Windows Operating System 52 | - Nilesoft Shell framework 53 | - PowerShell or Windows Command Prompt 54 | 55 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/commands.links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/commands.links.png -------------------------------------------------------------------------------- /ex3.multifunction/commands.renamer.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/commands.renamer.1.png -------------------------------------------------------------------------------- /ex3.multifunction/commands.renamer.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex3.multifunction/commands.renamer.2.png -------------------------------------------------------------------------------- /ex3.multifunction/commands.renamer.md: -------------------------------------------------------------------------------- 1 | # Fast Renamer 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`commands.renamer.nss`](/ex3.multifunction/commands.renamer.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex3.multifunction/commands.renamer.1.png) 10 | ![Screenshot 2](/ex3.multifunction/commands.renamer.2.png) 11 | 12 | ## Overview 13 | Comprehensive Nilesoft Shell extension for file and folder renaming, providing multiple renaming functionalities through an intuitive context menu. 14 | 15 | ## Key Features 16 | - Single and multiple file/folder renaming 17 | - Case conversion (lowercase, uppercase, mixed-case) 18 | - Space and punctuation manipulation 19 | - Prefix and suffix addition 20 | - Extension changing 21 | - Media file metadata-based renaming (for MP3 files) (example only) 22 | 23 | ## Menu Structure 24 | 25 | 1. **Basic Renaming** 26 | - Rename single item 27 | - Rename multiple items 28 | - Rename with automatic counter 29 | 30 | 2. **Case Conversion** 31 | - Lowercase 32 | - Uppercase 33 | - Mixed-Case 34 | 35 | 3. **Space/Punctuation Handling** 36 | - Strip double spaces 37 | - Convert dots to spaces 38 | - Convert spaces to dots 39 | - Convert underscores to spaces 40 | - Convert spaces to underscores 41 | 42 | 4. **Name Modification** 43 | - Add prefix 44 | - Add suffix 45 | 46 | 5. **Media-Specific Renaming** 47 | - MP3 file renaming based on metadata (artist, title, album) 48 | 49 | ## Usage Notes 50 | - Use SHIFT key when renaming with counter to start numbering from 1 51 | - Handles file extensions automatically 52 | 53 | ## Dependencies 54 | Required Components: 55 | - Windows Operating System 56 | - Nilesoft Shell framework 57 | 58 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex3.multifunction/commands.shortcut.nss: -------------------------------------------------------------------------------- 1 | item(title='Create shortcut@if(sel.count>1, 's')' mode=multiple type='file|dir' image=icon.create_shortcut 2 | cmd=for(i=0, i1 47 | image cmd=exe_wsl args='-d "@distro_guids[0]" --cd "@sel.dir"') 48 | item(title='Open in ' + distro_names[1] where=len(distro_guids)>1 49 | image cmd=exe_wsl args='-d "@distro_guids[1]" --cd "@sel.dir"') 50 | item(title='Open in ' + distro_names[2] where=len(distro_guids)>2 51 | image cmd=exe_wsl args='-d "@distro_guids[2]" --cd "@sel.dir"') 52 | item(title='Open in ' + distro_names[3] where=len(distro_guids)>3 53 | image cmd=exe_wsl args='-d "@distro_guids[3]" --cd "@sel.dir"') 54 | item(title='Open in ' + distro_names[4] where=len(distro_guids)>4 55 | image cmd=exe_wsl args='-d "@distro_guids[4]" --cd "@sel.dir"') 56 | item(title='Open in ' + distro_names[5] where=len(distro_guids)>5 57 | image cmd=exe_wsl args='-d "@distro_guids[5]" --cd "@sel.dir"') 58 | } 59 | 60 | separator() 61 | item(title='Git CMD' where=path.exists(path.combine(sys.prog, 'Git', 'git-cmd.exe')) 62 | image cmd=path.combine(sys.prog, 'Git', 'git-cmd.exe') args='--cd-to-home & title Git CMD') 63 | 64 | separator() 65 | } 66 | 67 | modify(where=this.id==id.open_powershell_window_here pos='bottom' menu='Terminal' vis=keys.shift()) 68 | modify(where=this.name=='open linux shell here' image='wsl.exe' pos='bottom' menu='Terminal' vis=keys.shift()) 69 | remove(clsid='{9F156763-7844-4DC4-B2B1-901F640F5155}|{02DB545A-3E20-46DE-83A5-1329B1E88B6B}') // Open in Windows Terminal; Open in Terminal 70 | modify(where=this.name=='open in terminal' || this.name=='open in terminal preview' pos='bottom' menu='Terminal' vis=if(str.contains(sel.path, '[') or str.contains(sel.path, ']'), 'disabled') vis=keys.shift()) 71 | -------------------------------------------------------------------------------- /ex4.terminal/all.terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex4.terminal/all.terminal.png -------------------------------------------------------------------------------- /ex5.goto/goto.address.md: -------------------------------------------------------------------------------- 1 | # Go To Address Bar Menu for Nilesoft Shell 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`goto.address.nss`](/ex5.goto/goto.address.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex5.goto/goto.address.png) 10 | 11 | ## Overview 12 | The Go To Address Bar Menu is a Nilesoft Shell extension that provides quick access to your File Explorer address bar history. This implementation offers an efficient way to access previously visited locations through a convenient context menu, enhancing Windows File Explorer navigation capabilities. 13 | 14 | ## Key Features 15 | - Access to up to 26 recently typed paths in File Explorer 16 | - Intelligent path display with simplified formatting 17 | - Full path tooltips on hover 18 | - Smart navigation within existing or new windows 19 | - Context-aware behavior in File Explorer 20 | - One-click history clearing option 21 | - Path existence verification before display 22 | 23 | ## Menu Structure 24 | 1. **History Entries** 25 | - Shows up to 26 most recent typed paths (url1 through url26) 26 | - Each entry displays in simplified format: 27 | - Root drives shown in full (e.g., "C:\") 28 | - Other paths shown as "...\ParentFolder\CurrentFolder" 29 | - Full paths available as tooltips 30 | 31 | 2. **Management Options** 32 | - "Clear Address Bar history" option at the bottom 33 | 34 | ## Usage Notes 35 | - Menu appears only when address bar history exists 36 | - Click normally to navigate in current window 37 | - Hold Shift to open location in new window 38 | - Tooltips show full paths on hover 39 | - Entries only appear if paths still exist 40 | - History can be cleared through the menu interface 41 | 42 | ## Technical Details 43 | - **Registry Path**: `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths` 44 | 45 | ## Dependencies 46 | - Windows Operating System 47 | - Nilesoft Shell framework 48 | - Windows history tracking enabled 49 | 50 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex5.goto/goto.address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex5.goto/goto.address.png -------------------------------------------------------------------------------- /ex5.goto/goto.aio.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(expanded='true' where=keys.shift() type='back' ) 5 | { 6 | separator() 7 | import 'goto.temp.nss' 8 | import 'goto.temp.nss' 9 | import 'goto.temp.nss' 10 | separator() 11 | import 'goto.reg.nss' 12 | import 'goto.run.nss' 13 | import 'goto.address.nss' 14 | import 'goto.v2.nss' 15 | separator() 16 | } 17 | -------------------------------------------------------------------------------- /ex5.goto/goto.aio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex5.goto/goto.aio.png -------------------------------------------------------------------------------- /ex5.goto/goto.reg.md: -------------------------------------------------------------------------------- 1 | # Go To Menu for Nilesoft Shell 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`goto.reg.nss`](/ex5.goto//goto.reg.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex5.goto/goto.reg.png) 10 | 11 | ## Overview 12 | A Nilesoft Shell script that adds a "Go To" context menu to Windows Explorer, allowing users to save and quickly navigate to up to 10 frequently accessed locations. 13 | 14 | ## Key Features 15 | - Store up to 10 directory paths in the Windows Registry 16 | - Quick navigation to saved locations 17 | - Path display shows simplified format for better readability 18 | - Automatic path validation before displaying menu items 19 | - Clear function to remove all saved paths 20 | 21 | ## Menu Structure 22 | - "Add current path" option with counter (x/10) 23 | - List of saved paths (up to 5 entries) 24 | - Clear option to remove all saved paths 25 | 26 | ## Usage Notes 27 | - Click normally to navigate in current window 28 | - Hold Shift to open location in new window 29 | - Duplicate paths are prevented from being added 30 | - Invalid or non-existent paths are automatically hidden 31 | 32 | ## Technical Details 33 | - **Registry Path**: `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths` 34 | 35 | ## Dependencies 36 | - Windows Operating System 37 | - Nilesoft Shell framework 38 | 39 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex5.goto/goto.reg.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(title='Go To@"\t"Registry' mode=mode.multiple image=\uE14A) { 5 | $reg_path = 'HKEY_CURRENT_USER\Software\Nilesoft\Shell\GoTo' 6 | $dir_max = 9 7 | $counter = len(reg.values(reg_path)) 8 | $p00=null 9 | $p01=null 10 | $p02=null 11 | $p03=null 12 | $p04=null 13 | $p05=null 14 | $p06=null 15 | $p07=null 16 | $p08=null 17 | $p09=null 18 | menu(expanded='true' title={ 19 | p00=reg.get(reg_path, 0) 20 | p01=reg.get(reg_path, 1) 21 | p02=reg.get(reg_path, 2) 22 | p03=reg.get(reg_path, 3) 23 | p04=reg.get(reg_path, 4) 24 | p05=reg.get(reg_path, 5) 25 | p06=reg.get(reg_path, 6) 26 | p07=reg.get(reg_path, 7) 27 | p08=reg.get(reg_path, 8) 28 | p09=reg.get(reg_path, 9) 29 | }) { 30 | item(title='Add current path' keys=counter+'/'+ toint(dir_max+1) 31 | type='drive|dir|back.drive|back.dir|desktop' image=icon.new_folder sep='both' 32 | vis=if(counter>=dir_max or sel==p00 or sel==p01 or sel==p02 and p03 or sel==p04 or sel==p05 or sel==p06 or sel==p07 or sel==p08 or sel==p09, 'disable') 33 | cmd=reg.set(reg_path, counter, sel, reg.sz)) 34 | } 35 | item(title=if(len(path.location.name(p00))==1, p00, '...\@path.location.name(p00)\@path.title(p00)') where=path.exists(p00) image=\uE1F4 tip=p00 cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(p00), p00)) 36 | item(title=if(len(path.location.name(p01))==1, p01, '...\@path.location.name(p01)\@path.title(p01)') where=path.exists(p01) image=\uE1F4 tip=p01 cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(p01), p01)) 37 | item(title=if(len(path.location.name(p02))==1, p02, '...\@path.location.name(p02)\@path.title(p02)') where=path.exists(p02) image=\uE1F4 tip=p02 cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(p02), p02)) 38 | item(title=if(len(path.location.name(p03))==1, p03, '...\@path.location.name(p03)\@path.title(p03)') where=path.exists(p03) image=\uE1F4 tip=p03 cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(p03), p03)) 39 | item(title=if(len(path.location.name(p04))==1, p04, '...\@path.location.name(p04)\@path.title(p04)') where=path.exists(p04) image=\uE1F4 tip=p04 cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(p04), p04)) 40 | item(title=if(len(path.location.name(p05))==1, p05, '...\@path.location.name(p05)\@path.title(p05)') where=path.exists(p05) image=\uE1F4 tip=p05 cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(p05), p05)) 41 | item(title=if(len(path.location.name(p06))==1, p06, '...\@path.location.name(p06)\@path.title(p06)') where=path.exists(p06) image=\uE1F4 tip=p06 cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(p06), p06)) 42 | item(title=if(len(path.location.name(p07))==1, p07, '...\@path.location.name(p07)\@path.title(p07)') where=path.exists(p07) image=\uE1F4 tip=p07 cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(p07), p07)) 43 | item(title=if(len(path.location.name(p08))==1, p08, '...\@path.location.name(p08)\@path.title(p08)') where=path.exists(p08) image=\uE1F4 tip=p08 cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(p08), p09)) 44 | item(title=if(len(path.location.name(p09))==1, p09, '...\@path.location.name(p09)\@path.title(p09)') where=path.exists(p09) image=\uE1F4 tip=p09 cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(p09), p09)) 45 | item(title='Clear' where=counter>0 image=\uE0CE sep='both' cmd=reg.delete(reg_path) ) 46 | } -------------------------------------------------------------------------------- /ex5.goto/goto.reg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex5.goto/goto.reg.png -------------------------------------------------------------------------------- /ex5.goto/goto.run.md: -------------------------------------------------------------------------------- 1 | # Go To Run Menu for Nilesoft Shell 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`goto.run.nss`](/ex5.goto/goto.run.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex5.goto/goto.run.png) 10 | 11 | 12 | ## Overview 13 | The Go To Run Menu is a specialized Nilesoft Shell extension that provides quick access to your Run dialog history. This implementation offers an efficient way to access and manage your previously executed Run commands, enhancing the Windows Run functionality with a convenient history feature. 14 | 15 | ## Key Features 16 | - Access to the last 16 Run command entries 17 | - Ability to clear Run command history 18 | - Clean command display with stripped formatting 19 | 20 | ## Menu Structure 21 | 1. **History Entries** 22 | - Displays up to 16 most recent Run commands 23 | - Entries are automatically populated from the Windows Registry 24 | - Each entry is clickable and will re-execute the command 25 | 26 | 2. **Management Options** 27 | - "Clear Run history" option at the bottom 28 | 29 | ## Usage Notes 30 | - Menu appears only when Run history exists in the registry 31 | - Requires Windows Run command tracking to be enabled 32 | - History can be cleared through the menu interface 33 | - Settings can be adjusted through Windows Privacy settings 34 | 35 | ## Dependencies 36 | - Windows Operating System 37 | - Nilesoft Shell framework 38 | - Windows history tracking enabled 39 | 40 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex5.goto/goto.run.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | /* eanble/desable or reset the entries in the Run dialog box 5 | Settings > Privacy & security > General > Let Windows improve Start and search results by tracking app launches 6 | $enabel_tracking = reg.get('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'Start_TrackProgs') 7 | */ 8 | menu(title='Go To@"\t"RUN' type='*' mode=mode.multiple 9 | where=reg.exists('HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU', 'a') image=\uE14A) { 10 | $reg_path = 'HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU' 11 | $runO = null 12 | menu(title={ runO = reg.get(reg_path,'MRUList') } expanded='true') { 13 | // path.type corrently not working to determine file, dir, comand for better icons 14 | item(title=str.replace(reg.get(reg_path,runO[00]), '\1', '') where=reg.exists(reg_path, runO[00]) image cmd=sys.expand(this.title)) 15 | item(title=str.replace(reg.get(reg_path,runO[01]), '\1', '') where=reg.exists(reg_path, runO[01]) image cmd=sys.expand(this.title)) 16 | item(title=str.replace(reg.get(reg_path,runO[02]), '\1', '') where=reg.exists(reg_path, runO[02]) image cmd=sys.expand(this.title)) 17 | item(title=str.replace(reg.get(reg_path,runO[03]), '\1', '') where=reg.exists(reg_path, runO[03]) image cmd=sys.expand(this.title)) 18 | item(title=str.replace(reg.get(reg_path,runO[04]), '\1', '') where=reg.exists(reg_path, runO[04]) image cmd=sys.expand(this.title)) 19 | item(title=str.replace(reg.get(reg_path,runO[05]), '\1', '') where=reg.exists(reg_path, runO[05]) image cmd=sys.expand(this.title)) 20 | item(title=str.replace(reg.get(reg_path,runO[06]), '\1', '') where=reg.exists(reg_path, runO[06]) image cmd=sys.expand(this.title)) 21 | item(title=str.replace(reg.get(reg_path,runO[07]), '\1', '') where=reg.exists(reg_path, runO[07]) image cmd=sys.expand(this.title)) 22 | item(title=str.replace(reg.get(reg_path,runO[08]), '\1', '') where=reg.exists(reg_path, runO[08]) image cmd=sys.expand(this.title)) 23 | item(title=str.replace(reg.get(reg_path,runO[09]), '\1', '') where=reg.exists(reg_path, runO[09]) image cmd=sys.expand(this.title)) 24 | item(title=str.replace(reg.get(reg_path,runO[10]), '\1', '') where=reg.exists(reg_path, runO[10]) image cmd=sys.expand(this.title)) 25 | item(title=str.replace(reg.get(reg_path,runO[11]), '\1', '') where=reg.exists(reg_path, runO[11]) image cmd=sys.expand(this.title)) 26 | item(title=str.replace(reg.get(reg_path,runO[12]), '\1', '') where=reg.exists(reg_path, runO[12]) image cmd=sys.expand(this.title)) 27 | item(title=str.replace(reg.get(reg_path,runO[13]), '\1', '') where=reg.exists(reg_path, runO[13]) image cmd=sys.expand(this.title)) 28 | item(title=str.replace(reg.get(reg_path,runO[14]), '\1', '') where=reg.exists(reg_path, runO[14]) image cmd=sys.expand(this.title)) 29 | item(title=str.replace(reg.get(reg_path,runO[15]), '\1', '') where=reg.exists(reg_path, runO[15]) image cmd=sys.expand(this.title)) } 30 | item(title='Clear Run history' image=image.glyph(\uE0CE) sep='both' cmd=reg.delete(reg_path)) } 31 | -------------------------------------------------------------------------------- /ex5.goto/goto.run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex5.goto/goto.run.png -------------------------------------------------------------------------------- /ex5.goto/goto.temp.md: -------------------------------------------------------------------------------- 1 | # Go To Menu for Nilesoft Shell 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`goto.temp.nss`](/ex5.goto/goto.temp.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex5.goto/goto.temp.png) 10 | 11 | 12 | ## Overview 13 | A Nilesoft Shell script that adds a "Go To" context menu to Windows Explorer, allowing users to save and quickly navigate to up to 10 frequently accessed locations. 14 | 15 | ## Dependencies 16 | - Windows Operating System 17 | - Nilesoft Shell framework 18 | 19 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex5.goto/goto.temp.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(title='Go To@"\t"Temporary' type='*' mode=mode.multiple image=\uE14A) { 5 | // default order 6 | $do='0123456789' 7 | // next item 8 | $ni = 0 9 | // item paths 10 | $ip = '' 11 | 12 | item(title='Add current path' keys=ni+'/'+len(do) type='drive|dir|back.drive|back.dir|Desktop' 13 | vis=if(len(do)<=ni or str.contains(str.join(ip,'|')+'|', sel+'|'), 'disable', 'normal') sep='both' image=icon.new_folder 14 | cmd={ ip=[ if(ni==0, sel, ip[0]), if(ni==1, sel, ip[1]), if(ni==2, sel, ip[2]), if(ni==3, sel, ip[3]), if(ni==4, sel, ip[4]), 15 | if(ni==5, sel, ip[5]), if(ni==6, sel, ip[6]), if(ni==7, sel, ip[7]), if(ni==8, sel, ip[8]), if(ni==9, sel, ip[9])] ni+=1 }) 16 | item(title=ip[toint(do[0])] where=path.exists(ip[toint(do[0])]) image=\uE1F4 commands{ 17 | cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(this.title), this.title), 18 | /*no need to change the order*/}) 19 | item(title=ip[toint(do[1])] where=path.exists(ip[toint(do[1])]) image=\uE1F4 commands{ 20 | cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(this.title), this.title), 21 | cmd={ do=str.get(do, 1)+str.remove(do, 1, 1) }}) 22 | item(title=ip[toint(do[2])] where=path.exists(ip[toint(do[2])]) image=\uE1F4 commands{ 23 | cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(this.title), this.title), 24 | cmd={ do=str.get(do, 2)+str.remove(do, 2, 1) }}) 25 | item(title=ip[toint(do[3])] where=path.exists(ip[toint(do[3])]) image=\uE1F4 commands{ 26 | cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(this.title), this.title), 27 | cmd={ do=str.get(do, 3)+str.remove(do, 3, 1) }}) 28 | item(title=ip[toint(do[4])] where=path.exists(ip[toint(do[4])]) image=\uE1F4 commands{ 29 | cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(this.title), this.title), 30 | cmd={ do=str.get(do, 4)+str.remove(do, 4, 1) }}) 31 | item(title=ip[toint(do[5])] where=path.exists(ip[toint(do[5])]) image=\uE1F4 commands{ 32 | cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(this.title), this.title), 33 | cmd={ do=str.get(do, 5)+str.remove(do, 5, 1) }}) 34 | item(title=ip[toint(do[6])] where=path.exists(ip[toint(do[6])]) image=\uE1F4 commands{ 35 | cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(this.title), this.title), 36 | cmd={ do=str.get(do, 6)+str.remove(do, 6, 1) }}) 37 | item(title=ip[toint(do[7])] where=path.exists(ip[toint(do[7])]) image=\uE1F4 commands{ 38 | cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(this.title), this.title), 39 | cmd={ do=str.get(do, 7)+str.remove(do, 7, 1) }}) 40 | item(title=ip[toint(do[8])] where=path.exists(ip[toint(do[8])]) image=\uE1F4 commands{ 41 | cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(this.title), this.title), 42 | cmd={ do=str.get(do, 8)+str.remove(do, 8, 1) }}) 43 | item(title=ip[toint(do[9])] where=path.exists(ip[toint(do[9])]) image=\uE1F4 commands{ 44 | cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(this.title), this.title), 45 | cmd={ do=str.get(do, 9)+str.remove(do, 9, 1) }}) 46 | item(title='Clear' where=ni>0 image=image.glyph(\uE0CE) sep='both' cmd={ do='0123456789' ni=0 ip='' }) 47 | // where=keys.shift() 48 | item(title='Set NS sys...' image=image.glyph(\uE0F9) cmd={ do='0123456789' ip=[user.desktop, user.downloads, user.documents, user.pictures] ni=len(ip) }) 49 | item(title='Set NS user...' image=image.glyph(\uE0F9) cmd={ do='01234' ip=['sys.dir', sys.bin, sys.prog, sys.prog32, sys.users] ni=len(ip) }) 50 | item(title='Set Example...' image=image.glyph(\uE0F9) cmd={ do='0123456789' ip=['C:', user.desktop, '%temp%', sys.prog, sys.bin, '@user.localappdata\Programs\Microsoft VS Code'] ni=len(ip) }) } -------------------------------------------------------------------------------- /ex5.goto/goto.temp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex5.goto/goto.temp.png -------------------------------------------------------------------------------- /ex5.goto/goto.v2.md: -------------------------------------------------------------------------------- 1 | # Go To Menu for Nilesoft Shell (Improved version) 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`goto.v2.nss`](/ex5.goto/goto.v2.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ex5.goto/goto.v2.png) 10 | 11 | ## Overview 12 | The Go To Menu is a customizable navigation enhancement for Windows that provides quick access to essential system folders, Control Panel items, and Windows Settings. Based on the original Nilesoft Shell snippet. 13 | 14 | ## Key Features 15 | - Quick access to common Windows system folders 16 | - Direct navigation to user-specific directories 17 | - Integrated Control Panel and Settings access 18 | - Context-aware navigation behavior in File Explorer windows 19 | - Shift-key modifier support for alternative navigation methods 20 | 21 | ## Menu Structure 22 | 1. **Folders Section** 23 | - System directories (Windows, System, Program Files) 24 | - User directories (Desktop, Downloads, Pictures, etc.) 25 | - Special folders (ProgramData, Applications) 26 | 27 | 2. **Control Panel Access** 28 | - Direct Control Panel launcher 29 | - All Control Panel Items view 30 | - Run command shortcut 31 | 32 | 3. **Windows Settings** (Windows 10+ only) 33 | - System settings shortcuts 34 | - Personalization options 35 | - Network configurations 36 | - App management 37 | 38 | ## Usage Notes 39 | - When used in File Explorer windows: 40 | - Default click navigates within the current window 41 | - Holding Shift while clicking opens in a new window 42 | - Settings shortcuts require Windows 10 or later 43 | - Menu supports multiple selection mode 44 | 45 | ## Dependencies 46 | - Windows Operating System 47 | - Nilesoft Shell framework 48 | - Windows 10 or later for full Settings menu functionality 49 | 50 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ex5.goto/goto.v2.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // Based on: Nilesoft Shell original snippet 3 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 4 | 5 | menu(type='*' where=window.is_taskbar||sel.count mode=mode.multiple title=title.go_to+"\t"+'v2.0' image=\uE14A) 6 | { 7 | menu(title='Folder' image=\uE1F4) 8 | { 9 | item(image=inherit title='Windows' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(sys.dir), sys.dir)) 10 | item(image=inherit title='System' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(sys.bin), sys.bin)) 11 | item(image=inherit title='Program Files' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(sys.prog), sys.prog)) 12 | item(image=inherit title='Program Files x86' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(sys.prog32), sys.prog32)) 13 | item(image=inherit title='ProgramData' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(sys.programdata), sys.programdata)) 14 | item(image=inherit title='Applications' cmd='shell:appsfolder') 15 | item(image=inherit title='Users' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(sys.users), sys.users)) 16 | separator 17 | //item(title='@user.name@@@sys.name' vis=label) 18 | item(image=inherit title='Desktop' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(user.desktop), user.desktop)) 19 | item(image=inherit title='Downloads' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(user.downloads), user.downloads)) 20 | item(image=inherit title='Pictures' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(user.pictures), user.pictures)) 21 | item(image=inherit title='Documents' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(user.documents), user.documents)) 22 | item(image=inherit title='Startmenu' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(user.startmenu), user.startmenu)) 23 | item(image=inherit title='Profile' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(user.dir), user.dir)) 24 | item(image=inherit title='AppData' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(user.appdata), user.appdata)) 25 | item(image=inherit title='Temp' cmd=if(window.name=='CabinetWClass' and !keys.shift(), command.navigate(user.temp), user.temp)) 26 | } 27 | item(image=\uE0F3 title=title.control_panel cmd='shell:::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}') 28 | item(image=\uE0F3 title='All Control Panel Items' cmd='shell:::{ED7BA470-8E54-465E-825C-99712043E01C}') 29 | item(image=\uE14B title=title.run cmd='shell:::{2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}') 30 | menu(image=\uE0F3 where=sys.ver.major >= 10 title=title.settings sep=sep.before) 31 | { 32 | // https://docs.microsoft.com/en-us/windows/uwp/launch-resume/launch-settings-app 33 | item(image=inherit title='system' cmd='ms-settings:') 34 | item(image=inherit title='about' cmd='ms-settings:about') 35 | item(image=inherit title='your-info' cmd='ms-settings:yourinfo') 36 | item(image=inherit title='system-info' cmd-line='/K systeminfo') 37 | item(image=inherit title='search' cmd='search-ms:') 38 | item(image=inherit title='usb' cmd='ms-settings:usb') 39 | item(image=inherit title='windows-update' cmd='ms-settings:windowsupdate') 40 | item(image=inherit title='windows-defender' cmd='ms-settings:windowsdefender') 41 | menu(image=inherit title='apps') 42 | { 43 | item(image=inherit title='apps-features' cmd='ms-settings:appsfeatures') 44 | item(image=inherit title='default-apps' cmd='ms-settings:defaultapps') 45 | item(image=inherit title='optional-features' cmd='ms-settings:optionalfeatures') 46 | item(image=inherit title='startup' cmd='ms-settings:startupapps') 47 | } 48 | menu(image=inherit title='personalization') 49 | { 50 | item(image=inherit title='personalization' cmd='ms-settings:personalization') 51 | item(image=inherit title='lockscreen' cmd='ms-settings:lockscreen') 52 | item(image=inherit title='background' cmd='ms-settings:personalization-background') 53 | item(image=inherit title='colors' cmd='ms-settings:colors') 54 | item(image=inherit title='themes' cmd='ms-settings:themes') 55 | item(image=inherit title='start' cmd='ms-settings:personalization-start') 56 | item(image=inherit title='taskbar' cmd='ms-settings:taskbar') 57 | } 58 | menu(image=inherit title='network') 59 | { 60 | item(image=inherit title='status' cmd='ms-settings:network-status') 61 | item(image=inherit title='ethernet' cmd='ms-settings:network-ethernet') 62 | item(image=inherit title='connections' cmd='shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}') 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /ex5.goto/goto.v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ex5.goto/goto.v2.png -------------------------------------------------------------------------------- /ext.desktop/sys.spotlight.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.desktop/sys.spotlight.1.png -------------------------------------------------------------------------------- /ext.desktop/sys.spotlight.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.desktop/sys.spotlight.2.png -------------------------------------------------------------------------------- /ext.desktop/sys.spotlight.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.desktop/sys.spotlight.3.png -------------------------------------------------------------------------------- /ext.desktop/sys.spotlight.md: -------------------------------------------------------------------------------- 1 | # Windows Spotlight Enhancement 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet 6 | [`sys.spotlight.nss`](/ext.desktop/sys.spotlight.nss) 7 | 8 | ### Screenshots 9 | ![Screenshot 1)](/ext.desktop/sys.spotlight.1.png) 10 | ![Screenshot 2)](/ext.desktop/sys.spotlight.2.png) 11 | ![Screenshot 3)](/ext.desktop/sys.spotlight.3.png) 12 | 13 | ## Overview 14 | This script enhances Windows Spotlight functionality by adding a context menu to manage desktop wallpapers and related content. It was developed in response to Microsoft's changes to the Windows Spotlight context menu, where traditional options like "Switch to next picture," "I like this picture," and "Not a fan of this picture" were removed in favor of a modern menu interface. 15 | 16 | ### Important Note 17 | This NS script generates commands based on the information provided by the modern context menu. Future updates from Microsoft to Windows Spotlight might affect the script's functionality. Users should be aware that changes in Windows Spotlight's core functionality could impact the script's performance. 18 | 19 | ## Key Features 20 | - Context menu integration for Windows Spotlight 21 | - Wallpaper management capabilities 22 | - Related content display 23 | - Developer tools and settings 24 | - Current wallpaper information display with photographer credits 25 | - Quick navigation through Spotlight wallpaper collection (4 images per session) 26 | - Direct access to wallpaper information and related web content 27 | - Wallpaper saving functionality 28 | 29 | ## Menu Structure 30 | 31 | ### Main Menu Items 32 | 1. Current wallpaper information with photographer credits (shown as tooltip) 33 | 2. "Learn more" link to detailed web content about the image 34 | 3. Next wallpaper option (cycles through four available images) 35 | 4. Individual wallpaper submenus (one for each available image) 36 | 37 | ### Per-Wallpaper Submenu 38 | Each wallpaper has a dedicated submenu containing: 39 | - Landscape information 40 | - Copyright details (displayed as tooltip) 41 | - Description (available offline, no internet connection required) 42 | - View/Set wallpaper options 43 | - Related links (if enabled by feature flags) 44 | 45 | ### Management Options 46 | - Save wallpaper to custom location 47 | - Change icon 48 | * Can be set with "invisible" icon 49 | * "Cancel" restores default icon 50 | - Rename functionality 51 | * Supports empty names 52 | * "Cancel" restores default name 53 | - Delete option 54 | * Protected by Shift-key requirement 55 | * Automatically creates .reg file for restoring the icon 56 | - Settings management 57 | 58 | ### Settings Submenu 59 | - Related content toggles 60 | * Default values can be configured in code 61 | * Separate toggles for content and hotspots 62 | - Quick access to Windows settings: 63 | * Background customization 64 | * Color schemes 65 | * Lock screen options 66 | 67 | ### Developer Menu (Shift-key activated) 68 | - Image path information 69 | - Current image folder access 70 | - Registry information 71 | - Additional resources 72 | - Links to Windows Spotlight documentation 73 | 74 | ## Technical Components 75 | 76 | ### Data Processing 77 | The script processes multiple data arrays from Windows Registry: 78 | - Image paths and metadata 79 | - Text content (titles, descriptions, copyright) 80 | - Related URLs and links 81 | - System identifiers 82 | 83 | ### Registry Integration 84 | Primary registry key: `HKCU\Software\Microsoft\Windows\CurrentVersion\DesktopSpotlight\Creatives` 85 | 86 | Data extracted includes: 87 | - Asset paths (both full and cropped versions) 88 | - Icon hover text 89 | - Icon labels 90 | - Titles 91 | - Descriptions 92 | - Copyright information 93 | - CTA (Call-to-Action) text and URLs 94 | - System IDs 95 | 96 | ### Feature Flags 97 | - `use_relatedContent`: Toggle for related content display 98 | - `use_relatedHotspots`: Toggle for related hotspots 99 | - Validation checks for content availability 100 | - Flags can be preset in code for default behavior 101 | 102 | ## Usage Notes 103 | 104 | ### Keyboard Shortcuts 105 | - Shift + Click: Opens cropped wallpaper version instead of full version 106 | - Shift: Enables developer menu with additional options 107 | - Shift: Required for delete operation (safety measure) 108 | 109 | ### Related Content 110 | Content availability depends on: 111 | - System language settings 112 | - Feature flag configuration 113 | - Content presence in registry 114 | - Internet connectivity (for web links only) 115 | 116 | ### User Interface 117 | - Top section: Current wallpaper name and photographer credits 118 | - Navigation: Simple "Next" option for cycling through images 119 | - Information: Detailed metadata for each wallpaper 120 | - Quick actions: Save, view, and set wallpaper options 121 | - Safety: Protected delete operation with recovery option 122 | 123 | ## Dependencies 124 | - Windows Registry access 125 | - PowerShell execution capabilities 126 | - Windows Spotlight service 127 | - System icon resources 128 | - Windows modern context menu system 129 | -------------------------------------------------------------------------------- /ext.managers/all.power.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.managers/all.power.1.png -------------------------------------------------------------------------------- /ext.managers/all.power.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.managers/all.power.2.png -------------------------------------------------------------------------------- /ext.managers/all.power.md: -------------------------------------------------------------------------------- 1 | # Windows Power Menu 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`all.power.nss`](/ext.managers/all.power.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ext.managers/all.power.1.png) 10 | ![Screenshot 2](/ext.managers/all.power.2.png) 11 | 12 | ## Overview 13 | A comprehensive Windows context menu extension for power management operations, providing quick access to system power states and boot options. 14 | 15 | ## Key Features 16 | - System power states (Lock, Sleep, Hibernate, Shutdown) 17 | - Advanced restart options (Normal, Safe Mode, UEFI/BIOS) 18 | - Scheduled shutdown with hour/minute precision 19 | - Smart shutdown/restart with app state preservation 20 | - Hybrid power modes support (Not tested) 21 | 22 | ## Menu Structure 23 | - Basic Power Options 24 | - Lock 25 | - Logoff 26 | - Switch User 27 | - Sleep/Hibernate/Shutdown variants 28 | - Shutdown Schedule (up to 12 hours) 29 | - Advanced Boot Options 30 | - Recovery Mode 31 | - BIOS/UEFI Boot 32 | - Safe Mode variants 33 | 34 | ## Usage Notes 35 | - SHIFT key enables force operations for shutdown/restart 36 | - Hibernate availability depends on system configuration 37 | - Administrative privileges required for certain operations 38 | 39 | ## Dependencies 40 | - Windows built-in executables 41 | - shutdown.exe 42 | - rundll32.exe 43 | - powercfg.exe 44 | 45 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. 46 | -------------------------------------------------------------------------------- /ext.managers/nss.winver.md: -------------------------------------------------------------------------------- 1 | # Nilesoft Shell Windows Version Menu 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`nss.winver.nss`](/ext.managers/nss.winver.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ext.managers/nss.winver.png) 10 | 11 | ## Overview 12 | 13 | A simple but useful taskbar menu that displays Windows version information and provides quick access to system details. 14 | 15 | ## Key Features 16 | 17 | - Displays Windows OS name and version in the taskbar menu 18 | - Provides one-click copying of system information to clipboard 19 | - Quick access to System Information (msinfo32) and Windows Version (winver) tools 20 | - Shift key modifiers for alternate actions 21 | 22 | ## Menu Structure 23 | 24 | 1. **Windows OS Name** 25 | - Shows the Windows operating system name 26 | - Click to copy to clipboard 27 | - Hold Shift to open System Information (msinfo32) 28 | 29 | 2. **Windows Version** 30 | - Displays OS version and build information 31 | - Click to copy full version details to clipboard 32 | - Hold Shift to open Windows Version dialog (winver) 33 | 34 | ## Usage Notes 35 | - Menu appears in the Windows taskbar 36 | - Information is extracted directly from the registry 37 | - Provides contextual functionality through Shift key modifiers 38 | 39 | ## Dependencies 40 | Required Components: 41 | - Windows Operating System 42 | - Nilesoft Shell framework 43 | 44 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. 45 | -------------------------------------------------------------------------------- /ext.managers/nss.winver.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(expanded=1 type='taskbar') { 5 | $svg_info=image.svg(' 6 | 7 | ') 8 | $ver_short = reg.get('HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'DisplayVersion') 9 | separator() 10 | item(image=svg_info title=sys.ver.name 11 | tip='Click to copy OS to clipboard. Hold SHIFT to open System Information' 12 | cmd=if(!keys.shift(), clipboard.set(sys.ver.name), 'msinfo32.exe')) 13 | item(image=svg_info title='OS: @sys.ver [@ver_short]' 14 | tip='Click to copy full OS version to clipboard. Hold SHIFT to open System Information' 15 | cmd=if(!keys.shift(), clipboard.set(sys.ver), 'winver.exe')) 16 | separator() 17 | } -------------------------------------------------------------------------------- /ext.managers/nss.winver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.managers/nss.winver.png -------------------------------------------------------------------------------- /ext.nilesoft/nss.about.md: -------------------------------------------------------------------------------- 1 | # Nilesoft Shell About Menu 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`nss.about.nss`](/ext.nilesoft/nss.about.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ext.nilesoft/nss.about.png) 10 | 11 | ## Overview 12 | 13 | This Nilesoft Shell About menu appears when users press Shift or click the left mouse button on the taskbar and provides quick access to various Nilesoft Shell functions, links to documentation, community resources, and update options. 14 | 15 | ## Key Features 16 | 17 | - Quick access to Shell Manager and configuration files 18 | - One-click update checker with installation options 19 | - Registry modifications for .nss file preview in Explorer 20 | - Links to community resources (GitHub, Discord, Reddit) 21 | - Direct access to documentation and support channels 22 | 23 | ## Menu Structure 24 | 25 | 1. **Management Tools** 26 | - Shell Manager 27 | - Directory access 28 | - Configuration file access 29 | - NSS preview enabler 30 | 31 | 2. **Updates & Resources** 32 | - Update checker with installation instructions 33 | - GitHub repository 34 | - Discord server 35 | - YouTube channel 36 | - Reddit community 37 | - Documentation access 38 | 39 | 3. **Support & Information** 40 | - Version information 41 | - Documentation links 42 | - Code snippets gallery 43 | - Donation options 44 | - Email contact 45 | 46 | ## Usage Notes 47 | - The menu appears when pressing Shift or clicking the left mouse button on the taskbar 48 | - The update checker provides multiple installation options (manual, winget, scoop, choco) 49 | - Some functions require administrator privileges (indicated by `admin` property) 50 | - The Discord server is the recommended place for help and support 51 | - Alternative documentation access is provided via web archive if the main site is unavailable 52 | 53 | ## Dependencies 54 | Required Components: 55 | - Windows Operating System 56 | - Nilesoft Shell framework 57 | 58 | No additional software installation is required beyond the Nilesoft Shell framework and standard Windows components. -------------------------------------------------------------------------------- /ext.nilesoft/nss.about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.nilesoft/nss.about.png -------------------------------------------------------------------------------- /ext.others/bar.address.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.others/bar.address.1.png -------------------------------------------------------------------------------- /ext.others/bar.address.md: -------------------------------------------------------------------------------- 1 | # Address Bar Menu 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`bar.address.nss`](/ext.others/bar.address.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ext.others/bar.address.1.png) 10 | 11 | ## Overview 12 | Customizing the context menu options for the address bar. 13 | 14 | ## Key Features 15 | - Custom icons for address bar actions 16 | 17 | ## Menu Structure 18 | - Copy address (with copy path icon) 19 | - Edit address (with rename icon) 20 | - Delete history (with delete icon, separated) 21 | 22 | ## Usage Notes 23 | - Compatible with Classic File Explorer with Ribbon in Windows 11 24 | - Menu appears in address bar context menu 25 | 26 | ## Dependencies 27 | - Windows Operating System 28 | - Nilesoft Shell framework 29 | - Windows File Explorer 30 | - Classic File Explorer with Ribbon (for Windows 11) 31 | -------------------------------------------------------------------------------- /ext.others/bar.address.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | modify(type='*' where=wnd.name=='CabinetWClass' and wnd.parent.name=='msctls_progress32' find='Copy address' image=icon.copy_path) 5 | modify(type='*' where=wnd.name=='CabinetWClass' and wnd.parent.name=='msctls_progress32' find='Edit address' image=icon.rename) 6 | modify(type='*' where=wnd.name=='CabinetWClass' and wnd.parent.name=='msctls_progress32' find='Delete history' image=icon.delete sep='both') 7 | 8 | // Open Classic File Explorer with Ribbon in Windows 11 to test the menu 9 | // https://www.elevenforum.com/t/restore-classic-file-explorer-with-ribbon-in-wnds-11.620/ -------------------------------------------------------------------------------- /ext.others/bar.scroll.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.others/bar.scroll.1.png -------------------------------------------------------------------------------- /ext.others/bar.scroll.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.others/bar.scroll.2.png -------------------------------------------------------------------------------- /ext.others/bar.scroll.md: -------------------------------------------------------------------------------- 1 | # Scroll Bar Menu 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`bar.scroll.nss`](/ext.others/bar.scroll.nss) 7 | 8 | ### Screenshots: 9 | ![Screenshot 1](/ext.others/bar.scroll.1.png) 10 | ![Screenshot 2](/ext.others/bar.scroll.2.png) 11 | 12 | ## Overview 13 | Configuration for customizing Windows scroll bar context menu with SVG icons and directional controls. 14 | 15 | ## Key Features 16 | - Custom SVG icons for scroll actions 17 | - Directional controls (up, down, left, right) 18 | - Multi-level scroll options 19 | - Dynamic color handling 20 | 21 | ## Menu Structure 22 | - Scroll Here 23 | - Vertical Navigation 24 | - Top/Bottom 25 | - Page Up/Down 26 | - Scroll Up/Down 27 | - Horizontal Navigation 28 | - Left/Right Edge 29 | - Page Left/Right 30 | - Scroll Left/Right 31 | 32 | ## Dependencies 33 | - Windows Operating System 34 | - Nilesoft Shell framework 35 | - Windows DirectUI framework 36 | -------------------------------------------------------------------------------- /ext.others/bar.scroll.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | $svg_triple_up = ' 5 | 6 | 7 | ' 8 | $svg_triple_down = ' 9 | 10 | 11 | ' 12 | $svg_triple_left = ' 13 | 14 | 15 | ' 16 | $svg_triple_right = ' 17 | 18 | 19 | ' 20 | 21 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Scroll Here' 22 | image=[[\uE170, image.color1],[\uE16E, image.color2]]) 23 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Top' 24 | image=image.svg(svg_triple_up().replace('@image.color1', '@image.color2').replace('@image.color3', '@image.color2'))) 25 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Page Up' 26 | image=image.svg(svg_triple_up().replace('@image.color3', '@image.color2'))) 27 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Scroll Up' 28 | image=image.svg(svg_triple_up().replace('@image.color2', '@image.color1').replace('@image.color3', '@image.color2'))) 29 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Bottom' 30 | image=image.svg(svg_triple_down().replace('@image.color1', '@image.color2').replace('@image.color3', '@image.color2'))) 31 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Page Down' 32 | image=image.svg(svg_triple_down().replace('@image.color3', '@image.color2'))) 33 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Scroll Down' 34 | image=image.svg(svg_triple_down().replace('@image.color2', '@image.color1').replace('@image.color3', '@image.color2'))) 35 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Left Edge' 36 | image=image.svg(svg_triple_left().replace('@image.color1', '@image.color2').replace('@image.color3', '@image.color2'))) 37 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Page Left' 38 | image=image.svg(svg_triple_left().replace('@image.color3', '@image.color2'))) 39 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Scroll Left' 40 | image=image.svg(svg_triple_left().replace('@image.color2', '@image.color1').replace('@image.color3', '@image.color2'))) 41 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Right Edge' 42 | image=image.svg(svg_triple_right().replace('@image.color1', '@image.color2').replace('@image.color3', '@image.color2'))) 43 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Page Right' 44 | image=image.svg(svg_triple_right().replace('@image.color3', '@image.color2'))) 45 | modify(type='*' where=wnd.parent.name=='DirectUIHWND' && this.title=='Scroll Right' 46 | image=image.svg(svg_triple_right().replace('@image.color2', '@image.color1').replace('@image.color3', '@image.color2'))) -------------------------------------------------------------------------------- /ext.others/bar.title.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.others/bar.title.1.png -------------------------------------------------------------------------------- /ext.others/bar.title.md: -------------------------------------------------------------------------------- 1 | # Title Bar Menu 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`bar.title.nss`](/ext.others/bar.title.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ext.others/bar.title.1.png) 10 | 11 | ## Overview 12 | Configuration for Windows title bar menu customization, adding window management controls and fullscreen functionality. 13 | 14 | ## Key Features 15 | - Fullscreen toggle button 16 | - Window arrangement options 17 | - Keyboard shortcut integration 18 | 19 | ## Menu Structure 20 | - Fullscreen Toggle (F11) 21 | - Windows Menu 22 | - Cascade Windows 23 | - Show Windows Stacked 24 | - Show Windows Side by Side 25 | - Minimize All Windows (Win+M) 26 | - Restore All Windows (Win+Shift+M) 27 | 28 | ## Usage Notes 29 | - Available in title bar context menu 30 | - Supports keyboard shortcuts 31 | 32 | ## Dependencies 33 | - Windows Operating System 34 | - Nilesoft Shell framework 35 | - Windows Explorer 36 | - ieframe.dll 37 | -------------------------------------------------------------------------------- /ext.others/bar.title.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | // After replacing shell32 components with XAML resources, Windows Explorer's fullscreen does not work properly. 5 | item(title=str.res('ieframe.dll', -17985) where=wnd.is_titlebar type='*' 6 | tip=str.res('ieframe.dll', -9531) 7 | pos=indexof(str.replace(title.close, '&', '')) image=\uE1B1 8 | cmd=key.send(key.F11)) 9 | 10 | menu(title=title.windows where=wnd.is_titlebar type='*' pos=indexof(str.replace(title.close, '&', '')) sep='both' image=\uE1FB) 11 | { 12 | item(title=title.cascade_windows cmd=command.cascade_windows) 13 | item(title=title.Show_windows_stacked cmd=command.Show_windows_stacked) 14 | item(title=title.Show_windows_side_by_side cmd=command.Show_windows_side_by_side) 15 | sep 16 | item(title=title.minimize_all_windows keys='Win+M' cmd=command.minimize_all_windows) 17 | item(title=title.restore_all_windows keys='Win+Shift+M' cmd=command.restore_all_windows) 18 | } -------------------------------------------------------------------------------- /ext.others/edit.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.others/edit.1.png -------------------------------------------------------------------------------- /ext.others/edit.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.others/edit.2.png -------------------------------------------------------------------------------- /ext.others/edit.md: -------------------------------------------------------------------------------- 1 | # Editor Menu 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`edit.nss`](/ext.others/edit.nss) 7 | 8 | ### Screenshots: 9 | ![Screenshot 1](/ext.others/edit.1.png) 10 | ![Screenshot 2](/ext.others/edit.2.png) 11 | 12 | ## Overview 13 | Configuration for text editor context menu with quick phrases, emoji insertion, and clipboard management features. 14 | 15 | ## Key Features 16 | - Quick phrase insertion 17 | - Date/time stamps 18 | - Emoji picker integration 19 | - Clipboard history access 20 | 21 | ## Menu Structure 22 | - Phrases Menu 23 | - Examples submenu (SHIFT) 24 | - Copy and paste demos 25 | - Direct typing examples 26 | - Escape sequence samples 27 | - Date stamp 28 | - Time stamp 29 | - Preset phrases 30 | - Insert Emoji (Win+;) 31 | - Clipboard History (Win+V) 32 | 33 | ## Usage Notes 34 | - Two insertion methods: clipboard or direct typing 35 | - Special character handling via escape sequences 36 | 37 | ## Dependencies 38 | - Windows Operating System 39 | - Nilesoft Shell framework 40 | - PowerShell 41 | - System.Windows.Forms 42 | - Windows Clipboard 43 | - Fluent UI icons 44 | -------------------------------------------------------------------------------- /ext.others/edit.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // https://github.com/RubicBG/Nilesoft-Shell-Snippets/ 3 | 4 | menu(title='Phrases' type='*' where=wnd.is_edit pos=indexof('select all', 1) image=image.fluent(\uF684) sep='both') { 5 | menu(title='examples' expanded='true' where=keys.shift()) { 6 | item(title='copy phrase, then paste' keys='clip' tip='Copy the phrase to clipboard and then paste it.' 7 | commands { cmd=command.copy(this.title) wait=1, cmd=keys.send(key.ctrl, 86) }) 8 | item(title='type phrase' keys='1by1' tip='Insert the phrase character by character.' 9 | cmd-ps=`Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait('@this.title');` window=cmd.hidden) 10 | /* Character - Escape Sequence 11 | + {+} 12 | ^ {^} 13 | % {%} 14 | ( {(} 15 | ) {)} 16 | { {{} 17 | } {}} 18 | [ {[} 19 | ] {]} 20 | ~ {~} 21 | ! {!} 22 | " {"} 23 | ' {'} */ 24 | item(title='(use escape sequence)' keys='1by1' tip='Escape Char is used to represent a character that is not printable or to represent a special character. It is preceded with { and followed with }.' 25 | cmd-ps=`Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait('@str.replace(this.title, '(', '{(}').replace(')', '{)}')');` window=cmd.hidden) 26 | item(title='Unsupported phrase:' keys='1by1' tip='unsupported character will be skipped.' 27 | cmd-ps=`Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait('@this.title');` window=cmd.hidden) 28 | separator() } 29 | 30 | item(title=sys.datetime.date keys='1by1' 31 | cmd-ps=`Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait('@this.title');` window=cmd.hidden) 32 | item(title=sys.datetime("H.M") keys='1by1' 33 | cmd-ps=`Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait('@this.title');` window=cmd.hidden) 34 | item(title='New Project' keys='1by1' 35 | cmd-ps=`Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait('@this.title');` window=cmd.hidden) 36 | item(title='With Love for Nilesoft Shell' keys='1by1' 37 | cmd-ps=`Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait('@this.title');` window=cmd.hidden) 38 | } 39 | item(title='Insert Emoji' keys='Win+;' type='*' where=wnd.is_edit pos=indexof('Paste', 1) image=image.fluent(\uED54) cmd=key.send(key.win, 190)) 40 | item(title='Clipboard History' keys='Win+V' type='*' where=wnd.is_edit pos=indexof('Paste', 1) image=image.fluent(\uF0E3) cmd=key.send(key.win, 86)) 41 | -------------------------------------------------------------------------------- /ext.others/recycle.bin.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.others/recycle.bin.1.png -------------------------------------------------------------------------------- /ext.others/recycle.bin.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RubicBG/Nilesoft-Shell-Snippets/9268a484a6a330d3571516cfb5872b551c239782/ext.others/recycle.bin.2.png -------------------------------------------------------------------------------- /ext.others/recycle.bin.md: -------------------------------------------------------------------------------- 1 | # Recycle Bin and System Cleaning 2 | 3 | ## Source Code & Screenshots 4 | 5 | ### Snippet: 6 | [`recycle.bin.nss`](/ext.others/recycle.bin.nss) 7 | 8 | ### Screenshot: 9 | ![Screenshot 1](/ext.others/recycle.bin.1.png) 10 | ![Screenshot 2](/ext.others/recycle.bin.2.png) 11 | 12 | ## Overview 13 | Configuration for enhanced Recycle Bin context menu with system cleaning utilities and component store management. 14 | 15 | ## Key Features 16 | - Disk cleanup integration 17 | - Temporary file cleanup 18 | - Secure deletion option 19 | - Component store management 20 | 21 | ## Menu Structure 22 | - Cleaning/Recycling Menu 23 | - Disk Cleanup 24 | - Drive-specific cleanup 25 | - Temporary files cleanup 26 | - Empty Recycle Bin 27 | - Secure Empty (with SDelete) 28 | - Component Store (Windows 10+) 29 | - Analyze Store 30 | - Clean Up Store 31 | - Check and Clean Up 32 | 33 | ## Usage Notes 34 | - Requires admin rights for certain operations 35 | - SDelete integration optional 36 | - SHIFT key reveals additional options 37 | - Removes default Rename/Paste options 38 | 39 | ## Dependencies 40 | - Windows Operating System 41 | - Nilesoft Shell framework 42 | - Windows Disk Cleanup (cleanmgr.exe) 43 | - PowerShell 44 | - DISM (Windows 10+) 45 | - [SDelete]('https://winstall.app/apps/Microsoft.Sysinternals.SDelete') (optional) ([winget]('https://winstall.app/apps/Microsoft.Sysinternals.SDelete')) 46 | - Shell32.dll 47 | -------------------------------------------------------------------------------- /shell.basic.1.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // Based on: Nilesoft Shell original snippet 3 | // https://web.archive.org/web/20240613020655/https://nilesoft.org/forum/viewtopic.php?t=23&sid=991564ba72bf76c8ef095e9d80b84f5f 4 | 5 | settings 6 | { 7 | priority=1 8 | exclude.where = !process.is_explorer 9 | showdelay = 200 10 | // Options to allow modification of system items 11 | modify.remove.duplicate=not(wnd.name=='SystemTray_Main') 12 | tip.enabled=true 13 | } 14 | 15 | import 'imports/theme.nss' 16 | import 'imports/images.nss' 17 | 18 | import 'imports/modify.nss' 19 | 20 | import 'imports/terminal.nss' 21 | $sys_object_recycle_bin = sel.raw=='::{645FF040-5081-101B-9F08-00AA002F954E}' or sel.parent.raw=='::{645FF040-5081-101B-9F08-00AA002F954E}' 22 | $sys_object_on_desktop = wnd.is_desktop and sel.type==0 // "Windows Spotlight" 23 | menu(mode='multiple' expanded='true' where=not(sys_object_on_desktop) and not(sys_object_recycle_bin)) 24 | { 25 | menu(mode="multiple" title="Pin/Unpin" image=icon.pin) { } 26 | menu(mode="multiple" title=title.more_options image=icon.more_options) { } 27 | 28 | import 'imports/file-manage.nss' 29 | import 'imports/develop.nss' 30 | import 'imports/goto.nss' 31 | } 32 | 33 | import 'imports/taskbar.nss' 34 | -------------------------------------------------------------------------------- /shell.basic.2.nss: -------------------------------------------------------------------------------- 1 | // Author: Rubic / RubicBG 2 | // Based on: Nilesoft Shell original snippet 3 | // https://web.archive.org/web/20240613020655/https://nilesoft.org/forum/viewtopic.php?t=23&sid=991564ba72bf76c8ef095e9d80b84f5f 4 | 5 | settings 6 | { 7 | priority=1 8 | exclude.where = !process.is_explorer 9 | showdelay = 200 10 | // Options to allow modification of system items 11 | modify.remove.duplicate=not(wnd.name=='SystemTray_Main') 12 | tip.enabled=true 13 | } 14 | 15 | import 'imports/theme.nss' 16 | import 'imports/images.nss' 17 | 18 | import 'imports/modify.nss' 19 | 20 | $sys_object_recycle_bin = sel.raw=='::{645FF040-5081-101B-9F08-00AA002F954E}' or sel.parent.raw=='::{645FF040-5081-101B-9F08-00AA002F954E}' 21 | $sys_object_on_desktop = wnd.is_desktop and sel.type==0 // "Windows Spotlight" 22 | menu(mode='multiple' expanded='true' where=not(sys_object_on_desktop) and not(sys_object_recycle_bin)) 23 | { 24 | menu(mode="multiple" title="Pin/Unpin" image=icon.pin) { } 25 | menu(mode="multiple" title=title.more_options image=icon.more_options) { } 26 | 27 | import 'imports/terminal.nss' 28 | import 'imports/file-manage.nss' 29 | import 'imports/develop.nss' 30 | import 'imports/goto.nss' 31 | } 32 | 33 | menu(type='*' where=wnd.is_taskbar expanded='true') 34 | { 35 | import 'imports/terminal.nss' 36 | separator() 37 | import 'imports/taskbar.nss' 38 | } 39 | --------------------------------------------------------------------------------