-
Notifications
You must be signed in to change notification settings - Fork 0
glyph sets
A glyph set defines the symbol shown before a file or directory name. Nerd Fonts and Emoji provide the complete selector catalog. The text and Unicode fallback sets intentionally use only essential file-system matchers.
| Set | Default file glyph | Purpose |
|---|---|---|
NerdFonts |
|
Full Nerd Font icon set; the default. |
ANSI |
[file] |
Readable ASCII labels for files, directories, links, and attributes; no special font required. |
ANSICompact |
f |
Compact structural labels for narrow terminals. |
Unicode |
□ |
Unicode structural symbols without the Private Use Area. |
Emoji |
📄 |
Emoji and short text labels; actual width depends on the terminal. |
List and select a set:
Get-GlyGlyphSet
Set-GlyGlyphSet UnicodePreview every glyph matcher without changing the active set:
Show-GlyGlyph UnicodeSee Theme and glyph previews for combined previews and pipeline behavior.
If NerdFonts glyphs do not render correctly, select a fallback explicitly:
Set-GlyGlyphSet ANSI
Set-GlyGlyphSet ANSICompact
Set-GlyGlyphSet Unicode
Set-GlyGlyphSet Emojigly does not detect the active terminal font or switch sets automatically.
ANSI, ANSICompact, and Unicode define only these matcher-specific glyphs:
- directory;
- junction;
- symbolic link;
- read-only attribute;
- hidden attribute.
All extension, well-known-name, and specialized-directory matches use the set's default file glyph. This keeps fallback output predictable instead of representing dedicated Nerd Font icons with arbitrary abbreviations.
NerdFonts and Emoji contain rules for the groups below. More specific well-known-name rules are declared after extension rules and therefore take precedence.
| Group | Names |
|---|---|
| Git |
.git, .github
|
| Editor settings |
.config, .vscode, .vscode-insiders, .idea
|
| Dependencies |
node_modules, vendor, packages, bower_components
|
| Source |
src, source, scripts
|
| Tests |
test, tests, spec, specs, coverage
|
| Documentation |
doc, docs, documentation
|
| Build |
build, dist, out, output, artifacts, target, bin
|
| Cache |
.cache, __pycache__, .pytest_cache, .mypy_cache
|
| Downloads |
download, downloads
|
| Images |
image, images, photo, photos, picture, pictures
|
| Audio |
audio, music, songs
|
| Video |
video, videos, movie, movies
|
| Infrastructure |
.docker, .kube, .terraform, infra, deploy, charts
|
Other directories use separate Directory, Junction, and Symlink rules.
| Group | Patterns and names |
|---|---|
| Git |
.gitignore, .gitattributes, .gitmodules, .gitconfig, .gitkeep
|
| Docker Compose |
Dockerfile, Dockerfile.*, .dockerignore, docker-compose*.yml, docker-compose*.yaml, compose*.yml, compose*.yaml
|
| Core documentation |
README*, LICENSE*, LICENCE*, COPYING*, CHANGELOG*, HISTORY*
|
| Packages |
package.json, package-lock.json, yarn.lock, pnpm-lock.yaml, composer.json, composer.lock, go.mod, go.sum, Cargo.toml, Cargo.lock, requirements.txt, pyproject.toml, Pipfile
|
| Projects and build |
*.sln, *.slnx, *.csproj, *.fsproj, *.vbproj, CMakeLists.txt, Makefile
|
| Settings |
.editorconfig, ESLint/Prettier config files, tsconfig*.json, jsconfig*.json
|
| CI | GitLab CI, Travis CI, Azure Pipelines, Bitbucket Pipelines, Jenkinsfile
|
| Group | Supported extensions |
|---|---|
| PowerShell |
.ps1, .psm1, .psd1, .ps1xml, .psc1, .pssc
|
| Shell |
.sh, .bash, .zsh, .fish, .bat, .cmd
|
| .NET |
.cs, .csx, .fs, .fsx, .vb
|
| C/C++ |
.c, .h, .cpp, .cc, .cxx, .hpp
|
| JVM |
.java, .class, .jar, .kt, .kts, .scala, .gradle
|
| JavaScript/TypeScript |
.js, .mjs, .cjs, .ts, .d.ts, .jsx, .tsx
|
| Other languages | Python/Jupyter, Rust, Go, Ruby, PHP |
| Web | HTML, CSS, Sass, Less, Vue, Svelte |
| Data and settings | JSON/JSONC, YAML, TOML, INI, CFG, CONF, ENV, XML/XSD/XSL/XAML/PLIST |
| Text | Markdown/MDX/RST, TXT/RTF, LOG/TRACE |
| Archives | TAR and compound TAR, ZIP, GZip, BZip2, XZ, 7z, RAR, TGZ, Zstandard |
| Media | Common image, audio, and video formats |
| Documents | PDF, Word/OpenDocument, Excel/CSV/TSV, PowerPoint/OpenDocument |
| Other | Databases/SQL, fonts, certificates/keys, executable and binary files |
ReadOnly and Hidden attributes also have dedicated rules; the Hidden rule is declared last.
The catalog was assembled from stable mappings in these reference projects:
| Project | Inspiration |
|---|---|
| devblackops/Terminal-Icons | Well-known directories/files, extension groups, and Nerd Font glyphs. |
| SemperFu/GlyphShell | Broader coverage of modern project/tool directories and files. |
| hanthor/PSFileIcons | Compact core of common development, document, and media mappings. |
gly does not add Git-aware or executable-aware behavior: matching uses only the object name, extension, kind, and attributes.
Get-GlyGlyphSet and Copy-GlyGlyphSet return GlyGlyphSet. Its rules use GlyGlyphRule, and its selectors use GlySelector.
Registration still accepts a hashtable or pscustomobject; the input is validated and converted to the typed model before storage:
@{
Name = 'MyGlyphs'
BuiltIn = $false
Default = '[file]'
Rules = @(
@{
Selector = @{ Kind = 'Directory' }
Glyph = '[dir]'
}
)
}If Default is not set and no rule matches, no glyph is added.
Built-in sets are immutable. Copy a set, edit the copy, and register it under a new name:
$glyphs = Copy-GlyGlyphSet ANSI MyGlyphs
$glyphs.Rules += @{
Selector = @{ Extension = '.log' }
Glyph = '[my-log]'
}
Register-GlyGlyphSet $glyphs
Set-GlyGlyphSet MyGlyphsRules use the shared selector model.