8 stable releases
Uses new Rust 2024
| 1.4.1 | Jun 10, 2025 |
|---|---|
| 1.4.0 | Apr 2, 2025 |
| 1.2.0 | Mar 31, 2025 |
#82 in Windows APIs
862 downloads per month
29KB
380 lines
win-ctx

A Rust library for managing Windows context menu entries.
Installation
cargo add win-ctx
Features
- Create and edit context menu entries and sub-entries
- Toggle the pre-Windows 11 context menu
Basic examples
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"))?;
Errors
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.
Dependencies
~17–25MB
~322K SLoC