A Rust library for managing Windows context menu entries.
cargo add win-ctx- Create and edit context menu entries and sub-entries
- Toggle the pre-Windows 11 context menu
The following code creates a top-level context menu entry that appears on right-clicked folders and opens the target folder in the terminal.
use win_ctx::*;
CtxEntry::new_with_options(
"Open in terminal",
&ActivationType::Folder,
&EntryOptions {
command: Some("cmd /s /k pushd \"%V\""),
icon: Some("C:\\Windows\\System32\\cmd.exe"),
position: None,
extended: false,
}
)?;The following code creates a context menu entry with child entries that each open the target folder in the selected program.
To reduce line count, the more basic non-options functions can be used, and individual values are then set on the resulting entries.
use win_ctx::{CtxEntry, ActivationType};
let mut parent = CtxEntry::new("Open directory in", &ActivationType::Background)?;
let mut child_1 = parent.new_child("Terminal")?;
child_1.set_command(Some("cmd /s /k pushd \"%V\""))?;
child_1.set_icon(Some("C:\\Windows\\System32\\cmd.exe"))?;
let mut child_2 = parent.new_child("Powershell")?;
child_2.set_command(Some("powershell -noexit -command Set-Location -literalPath '%V'"))?;
child_2.set_icon(Some("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"))?;It's possible that an entry's underlying registry key goes out of sync,
so most CtxEntry functions verify this and return a std::io::Result.
Errors will have an ErrorKind of either:
PermissionDeniedfor insufficient privileges,InvalidValuefor invalid entry renames, orNotFoundfor operations on missing keys and values.