【右键菜单】Windows端一款高度自定义及美化的右键/上下文菜单管理工具

1. 简介

  • 软件名称:Nilesoft Shell
  • 作者:moudey
  • 开源&付费情况:闭源、免费
  • 应用平台:Windows 7/8/10/11 (x86/x64/arm64)
  • 包管理工具安装:
    • scoop install nilesoft-shell
    • winget install nilesoft.shell
    • choco install nilesoft-shell

Nilesoft Shell 是一款可高度自定义菜单项及美化的右键菜单工具
在同类右键菜单软件中最大的特点是 不动注册表 ,配置文件在根目录下,可轻便的安装和卸载

2. 相关链接

3. 功能/特点

  • 轻量便携、资源占用低、干净无捆绑
  • 不修改注册表
  • 菜单项及嵌套层级完全自定义
  • 背景、图标可高度自定义
  • 卸载后立即还原右键菜单,保留配置文件再次安装也能还原
  • 上手难度低,对有编程基础的用户更友好
  • 内置各种变量、函数、语法,详见 Shell Docs(Shell)
  • 支持任务栏右键菜单
  • 多列菜单

4. 缺点/不足

  • 点击 exelnk 文件似乎有一丢丢延迟?感知不明显,可能与电脑性能或软件配置有关
  • 暂不支持打开对话框和保存对话框

5. Windows 10 下截图

image_30

6. 使用

  • 启用:运行 shell. exe 后,点击 RegisterCtrl + R 后,退出即可
  • 卸载:点击 UnregisterCtrl + U
  • 更新配置:修改保存好配置文件 shell.nss 后,点击 Restart ExplorerCtrl + X
  • 执行以上操作都会重启资源管理器,等待一下就好

最近在论坛里看到相关帖子,想起用了几个月的 “Nilesoft Shell” 也能实现

【Mini Env】一个在 Windows 系统中通过右键菜单添加目录到环境变量的小工具 - 发现频道 :mag_right: - 小众软件官方论坛

来自Discord上FierySpectre所分享的代码片段:

item(title = 'Add to PATH' Window=Hidden type='dir|back.dir' admin cmd args='/K @echo powershell.exe [Environment]::SetEnvironmentVariable("\"PATH\"", "\"@sel.path;"\" + [Environment]::GetEnvironmentVariable("\"PATH"\", "\"Machine"\"),"\"Machine"\") && @echo exit')

以及 @nanachi 的求助帖,有办法给7z的右键菜单增加按键导航吗 - 问题求助:question: - 小众软件官方论坛

给菜单项添加快捷键,title=‘菜单项文本(&按键)’:

item(find="search everything" title='搜索(&S)')

mini-env是个练手项目,完成度不高。

这工具看着不错。

根目录下 .\imports 文件夹是引用的配置文件 xx.nss

配置文件shell.nss的简单介绍:

shell
{
	// 变量声明
	var
	{
		isw11=sys.is11	
	}
	// 基本设置
	set
	{
		// 主题外观
		theme
		{
			// 整体样式:auto, classic, white, black, or modern
			name="modern" 

			// 夜间模式: true, false
			dark = true

			// 直角,默认是圆角
			// border.radius = 0


			// 背景样式
			background
			{
				// 背景透明度
				// opacity = 85
				// 背景效果: value 0 = disable, 1 = transparent, 2 = blur, 3 = acrylic
				// effect = 1
			}
		}

		// 菜单显示延迟调整:0-4000
		showdelay = 0
	}

	// 引入其他的配置文件
	images import 'imports/images.nss'

	// 静态菜单项:配置现有菜单项,比如系统内置或通过其他软件/注册表添加的
	static
	{	
		
	}

	// 动态菜单项:通过dynamic的配置,自定义添加的菜单项
	dynamic
	{
	
	}
}
1 个赞

感谢推荐。我后来用十六进制编辑器暴力修改字符,算是达成了需求。这个看起来也不错,可以收作备用

很强大,就是写配置有点麻烦

介绍一些基本用法,方便懒得去看文档的轻度用户 :joy:,也欢迎大家分享代码段:

  • 隐藏现有菜单项
static
{
  // 通过Nilesoft Shell能方便的隐藏一些第三方右键菜单软件不方便隐藏的系统项和注册表添加项

  // find:菜单项的文本或是自定义title的值,每项用"|"分隔
  // 字符匹配的默认方式是填入的文本项只需要被现有文本包含就行
  // 比如:填入find="百度网盘",就能匹配到"上传到百度网盘"及其他含有"百度网盘"的项
  item(find="授予访问权限|上传到百度网盘|" vis=hidden )
}
  • 菜单项重命名和快捷键
static
{
    item(find="open in new ta" title='在新标签打开')
    item(find="使用火绒安全粉碎文件" title='火绒处理文件')
    item(find="search everything" title='搜索(&S)')
    item(find="智能解压并删除" title="智能解压并删除(&X)")
    item(find="记事本" title="记事本(&N)")
}
  • 自定义菜单项图标
static
{
	// image=\图标编码
    // 内置的图标编码:[Glyphs Gallery - Shell](https://nilesoft.org/gallery/glyphs)
    // 也可以去阿里图标找:[iconfont-阿里巴巴矢量图标库](https://www.iconfont.cn/)
	item(find="打开" image=\uE215)
	item(find="打开方式" image=\uE16A)
	item(find="注销" image=\uE045)
	item(find="编辑" image=\uE281)
	item(find="在新标签打开" image=\uE0A4)
	item(find="选择其他应用" image=\uE1F6)
	item(find="Run script" title='运行' image="\uE20C")
}
  • 添加菜单项
dynamic
{
    // Windows Terminal在当前目录打开
    // title:菜单项文本(&快捷键)
   //  admin=key.shift():按住shift右键以管理员方式打开
    item(where=sys.ver.major >= 10 title=title.Windows_Terminal tip=tip_run_admin admin=key.shift() image=icon.run_with_powershell cmd='wt.exe的路径' arg='-d "@sel.path\."')
}
  • 指定文件的打开方式
dynamic
{
// .nss用VS Code打开
// item(type='file' find='.nss'  title='VS Code'cmd='VS Code路径' args='"@sel.path"')

// .nss用记事本打开
item(type='file' find='.nss'  title='记事本'cmd='记事本路径' args='"@sel.path"')
}
2 个赞

现在新版本的shell.nss好像不一样了,可以更新下介绍吗 ::

settings
{
	priority=1
	exclude.where = !process.is_explorer
	showdelay = 200
	// Options to allow modification of system items
	modify.remove.duplicate=1
	tip.enabled=true
}

import 'imports/theme.nss'
import 'imports/images.nss'

import 'imports/modify.nss'

menu(mode="multiple" title="Pin/Unpin" image=icon.pin)
{
}

menu(mode="multiple" title=title.more_options image=icon.more_options)
{
}

import 'imports/terminal.nss'
import 'imports/file-manage.nss'
import 'imports/develop.nss'
import 'imports/goto.nss'
import 'imports/taskbar.nss'