Skip to main content
New+ extends the Windows File Explorer “New” context menu with customizable file templates. Create files from your own templates with a single right-click.

Activation

1

Open Context Menu

Right-click in any File Explorer window or on the desktop.
2

Navigate to New+

Hover over New or New+ in the context menu.
3

Select Template

Choose from your configured templates or built-in options.
4

Name File

Enter a name for the new file and press Enter.
New+ appears as an enhanced version of the standard Windows “New” menu when enabled in PowerToys Settings.

Features

Custom Templates

Create files from your own templates instead of empty files.
New+ uses a template folder where you store template files:Default location: %USERPROFILE%\Documents\PowerToys\New+\TemplatesAny file placed in this folder becomes available in the New+ menu.
1

Create Template

Create a file with your desired content (e.g., template.md, script_template.py).
2

Add to Templates Folder

Copy the file to your New+ templates directory.
3

Configure Settings

Optionally customize the template name, icon, or visibility in PowerToys Settings.
4

Use Template

Right-click in File Explorer > New+ > Select your template.

Variable Substitution

New+ supports variable replacement in template files. From source /src/modules/NewPlus/NewShellExtensionContextMenu/constants.h:37:
$PARENT_FOLDER_NAME - Name of the current folder
Example Template:
README Template
# $PARENT_FOLDER_NAME

Project description goes here.

## Installation

## Usage

## License
When created in a folder named “MyProject”, this becomes:
Generated File
# MyProject

Project description goes here.
...
Use variables to create context-aware templates that adapt to the current folder or project.

Template Organization

Store all templates in the root templates folder:
Templates/
  template.md
  script.py
  config.json
All templates appear at the top level of the New+ menu.

Configuration

Settings

Configure New+ in PowerToys Settings > New+:
Setting: TemplateLocationCustomize where New+ looks for template files. Default is %USERPROFILE%\Documents\PowerToys\New+\Templates.From source /src/modules/NewPlus/NewShellExtensionContextMenu/constants.h:19
Setting: HideFileExtensionWhen creating files from templates, hide or show the file extension in the initial filename.From source /src/modules/NewPlus/NewShellExtensionContextMenu/constants.h:13
Setting: HideStartingDigitsRemove leading digits from template names when displaying in menu (useful for ordering templates).Example: 01_markdown.md displays as markdown.mdFrom source /src/modules/NewPlus/NewShellExtensionContextMenu/constants.h:15
Setting: ReplaceVariablesEnable or disable variable substitution in template files.From source /src/modules/NewPlus/NewShellExtensionContextMenu/constants.h:17
Setting: BuiltInNewHidePreferenceHide the standard Windows “New” menu items and show only New+ templates.From source /src/modules/NewPlus/NewShellExtensionContextMenu/constants.h:21

Template Icons

New+ displays icons based on file type associations:
  • Uses Windows file type icons automatically
  • Custom icons via template configuration
  • Light/dark theme support
From source /src/modules/NewPlus/NewShellExtensionContextMenu/constants.h:29-35:
new_icon_light_resource_relative_path[] = L"\\Assets\\NewPlus\\New_light.ico";
new_icon_dark_resource_relative_path[] = L"\\Assets\\NewPlus\\New_dark.ico";

Use Cases

Development Workflows

Create pre-configured source files:
  • Python scripts with standard imports
  • React components with boilerplate
  • Config files with defaults

Documentation

Quickly create documentation files:
  • README templates
  • API documentation
  • Project proposals

Project Initialization

Start new projects with:
  • License files
  • .gitignore templates
  • CI/CD configurations

Productivity

Common file patterns:
  • Meeting notes templates
  • Task lists
  • Email drafts

Example Templates

File: python_script.py
#!/usr/bin/env python3
"""
$PARENT_FOLDER_NAME - Script Description

Author: Your Name
Date: 2024
"""

import sys
import os

def main():
    """Main function."""
    pass

if __name__ == "__main__":
    main()
File: document.md
# Document Title

**Project:** $PARENT_FOLDER_NAME

**Date:** 2024-03-04

## Overview

## Details

## Conclusion
File: .gitignore
# $PARENT_FOLDER_NAME - Git Ignore

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python

# Virtual environments
venv/
env/

# IDE
.vscode/
.idea/

# OS
.DS_Store
Thumbs.db
File: index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>$PARENT_FOLDER_NAME</title>
    <style>
        body {
            font-family: system-ui, sans-serif;
            max-width: 800px;
            margin: 0 auto;
            padding: 2rem;
        }
    </style>
</head>
<body>
    <h1>$PARENT_FOLDER_NAME</h1>
    <p>Content goes here.</p>
</body>
</html>
File: config.json
{
  "name": "$PARENT_FOLDER_NAME",
  "version": "1.0.0",
  "description": "",
  "settings": {
    "enabled": true,
    "debug": false
  }
}

Advanced Features

Template Ordering

Control the order of templates in the menu by prefixing filenames with numbers:
Templates/
  01_readme.md
  02_license.txt
  03_gitignore.txt
With “Hide starting digits” enabled, the menu shows:
  • readme.md
  • license.txt
  • gitignore.txt

Context Menu Integration

New+ integrates with File Explorer through a shell extension: From source /src/modules/NewPlus/NewShellExtensionContextMenu/constants.h:23-27:
context_menu_package_name[] = L"NewPlusContextMenu";
module_name[] = L"NewPlus.ShellExtension";
The shell extension is registered dynamically when PowerToys loads.

Troubleshooting

  • Ensure New+ is enabled in PowerToys Settings
  • Restart File Explorer: Right-click taskbar > Task Manager > Restart “Windows Explorer”
  • Verify PowerToys is running
  • Check that templates folder exists and is accessible
  • Verify template location setting points to correct folder
  • Check that template files exist in the templates directory
  • Ensure files are not hidden or system files
  • Restart File Explorer after adding new templates
  • Enable “Replace variables” in PowerToys Settings
  • Verify variable syntax: $PARENT_FOLDER_NAME
  • Check that template file is not read-only
  • Some binary file formats may not support variable substitution
  • File icons come from Windows file type associations
  • Install applications that register icon handlers for custom file types
  • Rebuild icon cache if icons appear corrupted

Source Code

Location: /src/modules/NewPlus/
  • Shell extension: NewShellExtensionContextMenu/
  • Constants and settings: NewShellExtensionContextMenu/constants.h
  • Template utilities: NewShellExtensionContextMenu/new_utilities.cpp

Build docs developers (and LLMs) love