├── .gitattributes ├── .github ├── CONTRIBUTING.md ├── FUNDING.yml ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── publish.yaml │ └── push.yaml ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── Terminal-Icons ├── Data │ ├── colorThemes │ │ ├── devblackops.psd1 │ │ ├── devblackops_light.psd1 │ │ └── dracula.psd1 │ ├── glyphs.ps1 │ └── iconThemes │ │ └── devblackops.psd1 ├── Private │ ├── Add-Theme.ps1 │ ├── ConvertFrom-ColorEscapeSequence.ps1 │ ├── ConvertFrom-RGBColor.ps1 │ ├── ConvertTo-ColorSequence.ps1 │ ├── Get-ThemeStoragePath.ps1 │ ├── Import-ColorTheme.ps1 │ ├── Import-IconTheme.ps1 │ ├── Import-Preferences.ps1 │ ├── New-EmptyColorTheme.ps1 │ ├── Resolve-Icon.ps1 │ ├── Save-Preferences.ps1 │ ├── Save-Theme.ps1 │ └── Set-Theme.ps1 ├── Public │ ├── Add-TerminalIconsColorTheme.ps1 │ ├── Add-TerminalIconsIconTheme.ps1 │ ├── Format-TerminalIcons.ps1 │ ├── Get-TerminalIconsColorTheme.ps1 │ ├── Get-TerminalIconsGlyphs.ps1 │ ├── Get-TerminalIconsIconTheme.ps1 │ ├── Get-TerminalIconsTheme.ps1 │ ├── Invoke-TerminalIconsThemeMigration.ps1 │ ├── Remove-TerminalIconsTheme.ps1 │ ├── Set-TerminalIconsIcon.ps1 │ ├── Set-TerminalIconsTheme.ps1 │ └── Show-TerminalIconsTheme.ps1 ├── Terminal-Icons.format.ps1xml ├── Terminal-Icons.psd1 └── Terminal-Icons.psm1 ├── build.ps1 ├── docs └── en-US │ ├── Add-TerminalIconsColorTheme.md │ ├── Add-TerminalIconsIconTheme.md │ ├── Format-TerminalIcons.md │ ├── Get-TerminalIconsColorTheme.md │ ├── Get-TerminalIconsGlyphs.md │ ├── Get-TerminalIconsIconTheme.md │ ├── Get-TerminalIconsTheme.md │ ├── Invoke-TerminalIconsThemeMigration.md │ ├── Remove-TerminalIconsTheme.md │ ├── Set-TerminalIconsColorTheme.md │ ├── Set-TerminalIconsIcon.md │ ├── Set-TerminalIconsIconTheme.md │ ├── Set-TerminalIconsTheme.md │ └── Show-TerminalIconsTheme.md ├── media ├── icon_256.png ├── icon_512.png ├── screenshot.png └── screenshot1.PNG ├── psakeFile.ps1 ├── requirements.psd1 └── tests ├── Help.tests.ps1 ├── Manifest.tests.ps1 ├── Meta.tests.ps1 ├── MetaFixers.psm1 ├── MyAwesomeColorTheme.psd1 ├── MyAwesomeIconTheme.psd1 ├── ScriptAnalyzerSettings.psd1 ├── TestItems ├── .gitattributes ├── .gitconfig ├── LICENSE ├── README.md ├── asdf.md ├── asdf.png ├── asdf.txt ├── bar.jpg ├── foo.go └── for.gif └── unit ├── Add-TerminalIconsColorTheme.tests.ps1 ├── Add-TerminalIconsIconTheme.tests.ps1 └── Format-TerminalIcons.tests.ps1 /.gitattributes: -------------------------------------------------------------------------------- 1 | * -crlf 2 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to contribute 2 | 3 | Contributions to Terminal-Icons are highly encouraged and desired. 4 | Below are some guidelines that will help make the process as smooth as possible. 5 | 6 | ## Getting Started 7 | 8 | - Make sure you have a [GitHub account](https://github.com/signup/free) 9 | - Submit a new issue, assuming one does not already exist. 10 | - Clearly describe the issue including steps to reproduce when it is a bug. 11 | - Make sure you fill in the earliest version that you know has the issue. 12 | - Fork the repository on GitHub 13 | 14 | ## Suggesting Enhancements 15 | 16 | I want to know what you think is missing from Terminal-Icons and how it can be made better. 17 | 18 | - When submitting an issue for an enhancement, please be as clear as possible about why you think the enhancement is needed and what the benefit of it would be. 19 | 20 | ## Making Changes 21 | 22 | - From your fork of the repository, create a topic branch where work on your change will take place. 23 | - To quickly create a topic branch based on master; `git checkout -b my_contribution master`. 24 | Please avoid working directly on the `master` branch. 25 | - Make commits of logical units. 26 | - Check for unnecessary whitespace with `git diff --check` before committing. 27 | - Please follow the prevailing code conventions in the repository. 28 | Differences in style make the code harder to understand for everyone. 29 | - Make sure your commit messages are in the proper format. 30 | 31 | ``` 32 | Add more cowbell to Get-Something.ps1 33 | 34 | The functionality of Get-Something would be greatly improved if there was a little 35 | more 'pizzazz' added to it. I propose a cowbell. Adding more cowbell has been 36 | shown in studies to both increase one's mojo, and cement one's status 37 | as a rock legend. 38 | ``` 39 | 40 | - Make sure you have added all the necessary Pester tests for your changes. 41 | - Run _all_ Pester tests in the module to assure nothing else was accidentally broken. 42 | 43 | ## Documentation 44 | 45 | I am infallible and as such my documenation needs no corectoin. 46 | In the highly unlikely event that that is _not_ the case, commits to update or add documentation are highly apprecaited. 47 | 48 | ## Submitting Changes 49 | 50 | - Push your changes to a topic branch in your fork of the repository. 51 | - Submit a pull request to the main repository. 52 | - Once the pull request has been reviewed and accepted, it will be merged with the master branch. 53 | - Celebrate 54 | 55 | ## Additional Resources 56 | 57 | - [General GitHub documentation](https://help.github.com/) 58 | - [GitHub forking documentation](https://guides.github.com/activities/forking/) 59 | - [GitHub pull request documentation](https://help.github.com/send-pull-requests/) 60 | - [GitHub Flow guide](https://guides.github.com/introduction/flow/) 61 | - [GitHub's guide to contributing to open source projects](https://guides.github.com/activities/contributing-to-open-source/) 62 | 63 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: devblackops 4 | patreon: devblackops 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Expected Behavior 4 | 5 | 6 | 7 | ## Current Behavior 8 | 9 | 10 | 11 | ## Possible Solution 12 | 13 | 14 | 15 | ## Steps to Reproduce (for bugs) 16 | 17 | 18 | 1. 19 | 2. 20 | 3. 21 | 4. 22 | 23 | ## Context 24 | 25 | 26 | 27 | ## Your Environment 28 | 29 | * Module version used: 30 | * Operating System and PowerShell version: 31 | 32 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Description 4 | 5 | 6 | ## Related Issue 7 | 8 | 9 | 10 | 11 | 12 | ## Motivation and Context 13 | 14 | 15 | ## How Has This Been Tested? 16 | 17 | 18 | 19 | 20 | ## Screenshots (if appropriate): 21 | 22 | ## Types of changes 23 | 24 | - [ ] Bug fix (non-breaking change which fixes an issue) 25 | - [ ] New feature (non-breaking change which adds functionality) 26 | - [ ] Breaking change (fix or feature that would cause existing functionality to change) 27 | 28 | ## Checklist: 29 | 30 | 31 | - [ ] My code follows the code style of this project. 32 | - [ ] My change requires a change to the documentation. 33 | - [ ] I have updated the documentation accordingly. 34 | - [ ] I have read the **CONTRIBUTING** document. 35 | - [ ] I have added tests to cover my changes. 36 | - [ ] All new and existing tests passed. 37 | 38 | -------------------------------------------------------------------------------- /.github/workflows/publish.yaml: -------------------------------------------------------------------------------- 1 | name: Publish module 2 | on: 3 | workflow_dispatch: 4 | release: 5 | types: [published] 6 | 7 | jobs: 8 | terraform_publish: 9 | name: Publish module 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - name: Publish module 14 | id: publish 15 | shell: pwsh 16 | run: | 17 | $apiKey = '${{ secrets.PS_GALLERY_API_KEY }}' | ConvertTo-SecureString -AsPlainText -Force 18 | $cred = [pscredential]::new('apikey', $apiKey) 19 | ./build.ps1 -Task Publish -PSGalleryApiKey $cred -Bootstrap 20 | -------------------------------------------------------------------------------- /.github/workflows/push.yaml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: [push, pull_request] 3 | jobs: 4 | test: 5 | name: test 6 | runs-on: ${{ matrix.os }} 7 | strategy: 8 | fail-fast: false 9 | matrix: 10 | os: [ubuntu-latest, windows-latest, macOS-latest] 11 | steps: 12 | - uses: actions/checkout@v3 13 | - name: Test 14 | run: pwsh -f ./build.ps1 -Task Test -Bootstrap 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | # Don't check in the Output dir 4 | Output/ 5 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "ms-vscode.PowerShell", 6 | "DavidAnson.vscode-markdownlint" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "PowerShell Launch Current File", 9 | "type": "PowerShell", 10 | "request": "launch", 11 | "script": "${file}", 12 | "args": [], 13 | "cwd": "${file}" 14 | }, 15 | { 16 | "name": "PowerShell Launch Current File in Temporary Console", 17 | "type": "PowerShell", 18 | "request": "launch", 19 | "script": "${file}", 20 | "args": [], 21 | "cwd": "${file}", 22 | "createTemporaryIntegratedConsole": true 23 | }, 24 | { 25 | "name": "PowerShell Launch Current File w/Args Prompt", 26 | "type": "PowerShell", 27 | "request": "launch", 28 | "script": "${file}", 29 | "args": [ 30 | "${command:SpecifyScriptArgs}" 31 | ], 32 | "cwd": "${file}" 33 | }, 34 | { 35 | "name": "PowerShell Attach to Host Process", 36 | "type": "PowerShell", 37 | "request": "attach" 38 | }, 39 | { 40 | "name": "PowerShell Interactive Session", 41 | "type": "PowerShell", 42 | "request": "launch", 43 | "cwd": "" 44 | }, 45 | { 46 | "name": "PowerShell Attach Interactive Session Runspace", 47 | "type": "PowerShell", 48 | "request": "attach", 49 | "processId": "current" 50 | } 51 | ] 52 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.trimTrailingWhitespace": true, 3 | "files.insertFinalNewline": true, 4 | "editor.insertSpaces": true, 5 | "editor.tabSize": 4, 6 | "powershell.codeFormatting.preset": "OTBS" 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | 6 | // Start PowerShell (pwsh on *nix) 7 | "windows": { 8 | "options": { 9 | "shell": { 10 | "executable": "pwsh.exe", 11 | "args": [ "-NoProfile", "-ExecutionPolicy", "Bypass", "-Command" ] 12 | } 13 | } 14 | }, 15 | "linux": { 16 | "options": { 17 | "shell": { 18 | "executable": "/usr/bin/pwsh", 19 | "args": [ "-NoProfile", "-Command" ] 20 | } 21 | } 22 | }, 23 | "osx": { 24 | "options": { 25 | "shell": { 26 | "executable": "/usr/local/bin/pwsh", 27 | "args": [ "-NoProfile", "-Command" ] 28 | } 29 | } 30 | }, 31 | 32 | "tasks": [ 33 | { 34 | "label": "Clean", 35 | "type": "shell", 36 | "command": "${cwd}/build.ps1 -Task Clean -Verbose" 37 | }, 38 | { 39 | "label": "Test", 40 | "type": "shell", 41 | "command": "${cwd}/build.ps1 -Task Test -Verbose", 42 | "group": { 43 | "kind": "test", 44 | "isDefault": true 45 | }, 46 | "problemMatcher": "$pester" 47 | }, 48 | { 49 | "label": "Analyze", 50 | "type": "shell", 51 | "command": "${cwd}/build.ps1 -Task Analyze -Verbose" 52 | }, 53 | { 54 | "label": "Pester", 55 | "type": "shell", 56 | "command": "${cwd}/build.ps1 -Task Pester -Verbose", 57 | "problemMatcher": "$pester" 58 | }, 59 | { 60 | "label": "Build", 61 | "type": "shell", 62 | "command": "${cwd}/build.ps1 -Task Build -Verbose", 63 | "group": { 64 | "kind": "build", 65 | "isDefault": true 66 | } 67 | }, 68 | { 69 | "label": "Publish", 70 | "type": "shell", 71 | "command": "${cwd}/build.ps1 -Task Publish -Verbose" 72 | } 73 | ] 74 | } 75 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](http://keepachangelog.com/) 6 | and this project adheres to [Semantic Versioning](http://semver.org/). 7 | 8 | ## [0.12.0] Unreleased 9 | 10 | ### Added 11 | 12 | - Add icon and color for wellknown file `jenkinsfile`. 13 | - Add icon and color for c++ files (.cxx and .c++) 14 | - Add icon and color for wellknown file `makefile`. 15 | - Add icon and color for svelte files (.svelte). 16 | - Add icon and color for generic database files (.db) 17 | - Add icon and color for Scala Build Tool files (.sbt) 18 | 19 | ## [0.11.0] 2023-07-05 20 | 21 | ### Added 22 | 23 | - [**#104**](https://github.com/devblackops/Terminal-Icons/pull/104) Migrate to Nerd Font v3 (via [@Tiberriver256](https://github.com/Tiberriver256) 24 | - [**#92**](https://github.com/devblackops/Terminal-Icons/pull/92) - Add icon and color for `artifacts` wellknown folder (via [@wangkanai](https://github.com/wangkanai)) 25 | - [**#91**](https://github.com/devblackops/Terminal-Icons/pull/91) - Add icons and colors for `demo` and `sample` wellknown folders (via [@wangkanai](https://github.com/wangkanai)) 26 | - [**#90**](https://github.com/devblackops/Terminal-Icons/pull/90) - Add icon and color for `benchmark` wellknown folder (via [@wangkanai](https://github.com/wangkanai)) 27 | - Add glyphs from Nerd Font v2.2.0 (must have a Nerd Font >= 2.2.0 installed to see these) 28 | - Add icon and color for Puppet (.pp and .epp) 29 | - Add icon and color for bicep (.bicep) 30 | - Add icon and color for `output` wellknown folder 31 | - Add icon and color for Scala (.scala, .sc) 32 | - Add icon and color for Autodesk Inventor (.iLogicVb) 33 | 34 | ## [0.10.0] 2022-07-06 35 | 36 | ### Added 37 | 38 | - [**#80**](https://github.com/devblackops/Terminal-Icons/pull/80) - Added light color theme `devblackops_light` (via [@TamKengHong](https://github.com/TamKengHong)) 39 | - Add icon and color for Julia language file (.jl) 40 | - Add icon and color for Vim (.vim) 41 | - Add icon and color for Sass (.scss) 42 | 43 | ### Fixed 44 | 45 | - [**#68**](https://github.com/devblackops/Terminal-Icons/issues/68) Symlink rendering on Windows PowerShell 46 | 47 | ## [0.9.0] 2022-01-27 48 | 49 | ### Added 50 | 51 | - Add icon and color R language files (.R, .Rmd, and .Rproj) 52 | 53 | ## [0.8.0] 2021-12-15 54 | 55 | ### Added 56 | 57 | - [**#60**](https://github.com/devblackops/Terminal-Icons/pull/60) Add support for Gradle (*.gradle and gradlew) files (via [@Hexeption](https://github.com/Hexeption)) 58 | - [**#58**](https://github.com/devblackops/Terminal-Icons/pull/58) Add support for Jupyter notebook (*.ipynb) files (via [@gaardhus](https://github.com/gaardhus)) 59 | 60 | ## [0.7.1] 2021-11-22 61 | 62 | ### Fixed 63 | 64 | - Set default preferences if the preferences XML file cannot be parsed for any reason. 65 | 66 | ## [0.7.0] 2021-11-10 67 | 68 | ### Added 69 | 70 | - [**#53**](https://github.com/devblackops/Terminal-Icons/pull/53) Add color and icon for handlebar (.hbs) files (via [@nikouu](https://github.com/nikouu)) 71 | 72 | ## [0.6.0] 2021-11-08 73 | 74 | ### Added 75 | 76 | - [**#44**](https://github.com/devblackops/Terminal-Icons/pull/44) Added icons for .msi, .msix, .msixbundle, .appx, .appxbundle, .deb, .rpm, .jar, .srt, .lrc, .ass, .wav, .acc, .opus, .vmdk, .vhdx, .iso. (via [@KaranKad](https://github.com/KaranKad)) 77 | - Added option to turn off displaying custom icons or colors with `-DisableIconTheme` and `-DisableColorTheme` switches on the `Set-TerminalIconsTheme` command. 78 | 79 | ### Changed 80 | 81 | - [**#44**](https://github.com/devblackops/Terminal-Icons/pull/44) Changed .img icon to match other disk image formats (via [@KaranKad](https://github.com/KaranKad)) 82 | 83 | ### Removed 84 | 85 | - Removed deprecated commands `Set-TerminalIconsColorTheme` and `Set-TerminalIconsIconTheme`. Use `Set-TerminalIconsTheme` instead. 86 | 87 | ## [0.5.2] 2021-06-18 88 | 89 | ### Added 90 | 91 | - [**#39**](https://github.com/devblackops/Terminal-Icons/pull/39) Added icon and color for Visual Studio Solution filter files (.slnf) (via [@kkoziarski](https://github.com/kkoziarski)) 92 | 93 | ## [0.5.1] 2021-05-21 94 | 95 | ### Added 96 | 97 | - Add icon for `gruntfile.js` 98 | 99 | ### Changed 100 | 101 | - Theme files and preferences are now stored in the directory defined by `$env:XDG_CONFIG_HOME` (if it exists) on Linux and macOS. If not defined, the default of `$HOME/local/share/powershell/Community/Terminal-Icons` is still used. 102 | - `Get-TerminalIconsGlyphs` now returns glyphs sorted by name 103 | 104 | ## [0.5.0] 2021-04-20 105 | 106 | ### Added 107 | 108 | - [**#PR35**](https://github.com/devblackops/Terminal-Icons/pull/35) Add `Get-TerminalIconsGlyphs` and `Set-TerminalIconsIcon` functions (via [@tillig](https://github.com/tillig)) 109 | - `Get-TerminalIconsGlyphs` returns the list of glyphs available 110 | - `Set-TerminalIconsIcon` set a specific icon in the current icon theme or allows for swapping one glyph for another. Changes are not persisted between PowerShell sessions. 111 | 112 | ### Fixed 113 | 114 | - Replace glyphs that are causing alignment issues 115 | - Fixed module import error when user directory containing saved themes did not exist 116 | 117 | ## [0.4.0] 2021-04-18 118 | 119 | ### Added 120 | 121 | - [**#PR27**](https://github.com/devblackops/Terminal-Icons/pull/27) Add icon for Umbraco .NET CMS common folder (via [@warrenbuckley](https://github.com/warrenbuckley)) 122 | - [**#PR30**](https://github.com/devblackops/Terminal-Icons/pull/30) Add `.gitconfig` and `.vscode-insiders` icons/colors (via [@MJECloud](https://github.com/MJECloud)) 123 | - Added function `Set-TerminalIconsTheme` to set icon/color theme. Existing functions `Set-TerminalIconsColorTheme` and `Set-TerminalIconsIconTheme` have been deprecated and will be removed in a later version 124 | - Added function `Remove-TerminalIconsTheme` to remove an icon or color theme 125 | 126 | ### Changed 127 | 128 | - Minimum PowerShell verison is now `5.1` 129 | 130 | ### Fixed 131 | 132 | - Adding a new icon or color theme no longer raises errors 133 | 134 | ## [0.3.1] 2021-04-09 135 | 136 | ### Fixed 137 | 138 | - [**#PR26**](https://github.com/devblackops/Terminal-Icons/pull/26) Display file when no extension is present (via [@zanseb](https://github.com/zanseb)) 139 | 140 | ## [0.3.0] 2021-04-08 141 | 142 | ### Added 143 | 144 | - Icon and color for symlinks and junctions are now shown, along with the target path. 145 | - [**#PR23**](https://github.com/devblackops/Terminal-Icons/pull/23) Add icons/colors for common folders `.aws`, `.Azure`, `.kube`, and `.docker` (via [@cdhunt](https://github.com/cdhunt)) 146 | 147 | ### Fixed 148 | 149 | - Colors/icons for files with more than one extension now have the theme applied. 150 | 151 | ## [0.2.2] 2020-01-10 152 | 153 | ### Added 154 | 155 | - New icons and colors for Terraform files (via [@TravisTX](https://github.com/TravisTX)) 156 | 157 | ## [0.2.1] 2020-11-30 158 | 159 | ### Added 160 | 161 | - New icons and colors for Python (.py) and Java (.java) files. 162 | 163 | ## [0.2.0] 2020-11-15 164 | 165 | ### Added 166 | 167 | - New icons and colors for well-known folder names (via [@rashil2000](https://github.com/rashil2000)) 168 | 169 | ### Changed 170 | 171 | - Module load time has been improved by ~4x by storing the current theme on disk in XML format (Export-CliXml) instead of PSD1. 172 | 173 | ## [0.1.1] 2019-06-11 174 | 175 | ### Changed 176 | 177 | - Store RGB color values instead of escape sequences in the theme data stored in the user profile. 178 | 179 | ### Fixed 180 | 181 | - Changed `glyphs.ps1` to `UTF8 with BOM` so it's compatible with Windows PowerShell. 182 | - Changed minimum PowerShell version to `v4.0` as the `.ForEach()` and `.Where()` methods are used internally. 183 | - Fixed use of escape sequences to be compatible with Windows PowerShell and the default console. 184 | 185 | ## [0.1.0] 2019-06-09 186 | 187 | ### Added 188 | 189 | - Initial release 190 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, sexual identity and 10 | orientation, or sexual proclivities between consenting adults. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 26 | * Trolling, insulting/derogatory comments, and personal or political attacks 27 | * Public or private harassment 28 | * Publishing others' private information, such as a physical or electronic 29 | address, without explicit permission 30 | * Other conduct which could reasonably be considered inappropriate in a 31 | professional setting 32 | 33 | ## Our Responsibilities 34 | 35 | Project maintainers are responsible for clarifying the standards of acceptable 36 | behavior and are expected to take appropriate and fair corrective action in 37 | response to any instances of unacceptable behavior. 38 | 39 | Project maintainers have the right and responsibility to remove, edit, or 40 | reject comments, commits, code, wiki edits, issues, and other contributions 41 | that are not aligned to this Code of Conduct, or to ban temporarily or 42 | permanently any contributor for other behaviors that they deem inappropriate, 43 | threatening, offensive, or harmful. 44 | 45 | ## Scope 46 | 47 | This Code of Conduct applies both within project spaces and in public spaces 48 | when an individual is representing the project or its community. Examples of 49 | representing a project or community include using an official project e-mail 50 | address, posting via an official social media account, or acting as an appointed 51 | representative at an online or offline event. Representation of a project may be 52 | further defined and clarified by project maintainers. 53 | 54 | ## Enforcement 55 | 56 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 57 | reported by contacting the project team at [brandon@devblackops.io](mailto:brandon@devblackops.io). All 58 | complaints will be reviewed and investigated and will result in a response that 59 | is deemed necessary and appropriate to the circumstances. The project team is 60 | obligated to maintain confidentiality with regard to the reporter of an incident. 61 | Further details of specific enforcement policies may be posted separately. 62 | 63 | Project maintainers who do not follow or enforce the Code of Conduct in good 64 | faith may face temporary or permanent repercussions as determined by other 65 | members of the project's leadership. 66 | 67 | ## Attribution 68 | 69 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4.1, 70 | available at [http://contributor-covenant.org/version/1/4/1][version] 71 | 72 | [homepage]: http://contributor-covenant.org 73 | [version]: http://contributor-covenant.org/version/1/4/ 74 | 75 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Brandon Olin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Terminal-Icons 2 | 3 | A PowerShell module to show file and folder icons in the terminal. 4 | 5 | | GitHub Actions | PSGallery | License | 6 | |----------------|-----------|---------| 7 | [![GitHub Actions Status][github-actions-badge]][github-actions-build] | [![PowerShell Gallery][psgallery-badge]][psgallery] | [![License][license-badge]][license] 8 | 9 |

10 | Icon 11 |

12 | 13 | ## Overview 14 | 15 | *Terminal-Icons* is a PowerShell module that adds file and folder icons when displaying items in the terminal. 16 | This relies on the custom fonts provided by [Nerd Fonts](https://github.com/ryanoasis/nerd-fonts). 17 | 18 | > You must be using one of the fonts provided by Nerd Fonts for this module to work as these fonts include tons of custom glyphs/icons that are referenced by their unicode number. 19 | 20 | ## How Does this Work? 21 | 22 | It uses a custom [format.ps1xml](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_format.ps1xml?view=powershell-6) file that inspects the items being displayed and looks up their appropriate icon based on name or extension. 23 | Icons for well-known files/folders are attempted to be used first before displaying an icon based on the file extension. 24 | Any files/folders that are not matched are shown using a generic file or folder icon. 25 | 26 | ## Installation 27 | 28 | To install the module from the [PowerShell Gallery](https://www.powershellgallery.com/): 29 | 30 | ```powershell 31 | Install-Module -Name Terminal-Icons -Repository PSGallery 32 | ``` 33 | 34 | You can also install it from [Scoop](https://scoop.sh/): 35 | ```powershell 36 | scoop bucket add extras 37 | scoop install terminal-icons 38 | ``` 39 | 40 | ## Usage 41 | 42 | ```powershell 43 | Import-Module -Name Terminal-Icons 44 | 45 | Get-Item ./README.md 46 | 47 | Get-ChildItem 48 | 49 | Get-ChildItem | Format-List 50 | 51 | Get-ChildItem | Format-Wide 52 | ``` 53 | 54 | ## Commands 55 | 56 | | Command | Description 57 | |---------|-------------| 58 | Add-TerminalIconsColorTheme | Add a Terminal-Icons color theme for the current user. 59 | Add-TerminalIconsIconTheme | Add a Terminal-Icons icon theme for the current user. 60 | Format-TerminalIcons | Prepend a custom icon (with color) to the provided file or folder object when displayed. 61 | Get-TerminalIconsColorTheme | List the available color themes. 62 | Get-TerminalIconsIconTheme | List the available icon themes. 63 | Get-TerminalIconsTheme | Get the currently applied color and icon theme. 64 | Remove-TerminalIconsTheme | Removes a given icon or color theme. 65 | Set-TerminalIconsColorTheme | **DEPRECATED** Set the Terminal-Icons color theme. 66 | Set-TerminalIconsIconTheme | **DEPRECATED** Set the Terminal-Icons icon theme. 67 | Set-TerminalIconsTheme | Set the Terminal-Icons icon and/or color theme. 68 | Show-TerminalIconsTheme | List example directories and files to show the currently applied color and icon themes. 69 | 70 | ## Screenshots 71 | 72 | ```powershell 73 | Get-ChildItem -Path . -Force 74 | ``` 75 | 76 | ![Screenshot 1](./media/screenshot.png) 77 | 78 | ## Tips 79 | 80 | If using the default console in Windows and not something like VSCode, ConEmu, Terminus, etc., you may have issues getting a nerd font to be recognized correctly. 81 | Try following this [quick guide](https://gist.github.com/markwragg/6301bfcd56ce86c3de2bd7e2f09a8839) by [Mark Wragg](https://twitter.com/markwragg). 82 | [Issue #269](https://github.com/ryanoasis/nerd-fonts/issues/269) on Nerd Fonts has more information. 83 | 84 | ## Contributions 85 | 86 | Any ideas on how to improve this module are welcome. 87 | If you have ideas for an appropriate [glyph](http://nerdfonts.com/#cheat-sheet) to display for a well-known folder or file, or a particular file extension, please raise an [issue](https://github.com/devblackops/Terminal-Icons/issues/new). 88 | If you'd like to submit an entirely new color or icon theme, take a look at the existing ones [here](https://github.com/devblackops/Terminal-Icons/tree/master/Terminal-Icons/Data/colorThemes) and [here](https://github.com/devblackops/Terminal-Icons/tree/master/Terminal-Icons/Data/iconThemes), create your new file(s) named what ever you like, and submit a pull request. 89 | 90 | [github-actions-badge]: https://github.com/devblackops/Terminal-Icons/workflows/CI/badge.svg 91 | [github-actions-build]: https://github.com/devblackops/Terminal-Icons/actions 92 | [psgallery-badge]: https://img.shields.io/powershellgallery/dt/terminal-icons.svg 93 | [psgallery]: https://www.powershellgallery.com/packages/terminal-icons 94 | [license-badge]: https://img.shields.io/github/license/poshbotio/poshbot.svg 95 | [license]: https://www.powershellgallery.com/packages/poshbot 96 | -------------------------------------------------------------------------------- /Terminal-Icons/Data/colorThemes/devblackops.psd1: -------------------------------------------------------------------------------- 1 | @{ 2 | Name = 'devblackops' 3 | Types = @{ 4 | Directories = @{ 5 | symlink = '7373ff' 6 | junction = '7373ff' 7 | WellKnown = @{ 8 | docs = '00BFFF' 9 | documents = '00BFFF' 10 | desktop = '00FBFF' 11 | benchmark = 'F08519' 12 | demo = '5F3EC3' 13 | samples = '5F3EC3' 14 | contacts = '00FBFF' 15 | apps = 'FF143C' 16 | applications = 'FF143C' 17 | artifacts = 'D49653' 18 | shortcuts = 'FF143C' 19 | links = 'FF143C' 20 | fonts = 'DC143C' 21 | images = '9ACD32' 22 | photos = '9ACD32' 23 | pictures = '9ACD32' 24 | videos = 'FFA500' 25 | movies = 'FFA500' 26 | media = 'D3D3D3' 27 | music = 'DB7093' 28 | songs = 'DB7093' 29 | onedrive = 'D3D3D3' 30 | downloads = 'D3D3D3' 31 | src = '00FF7F' 32 | development = '00FF7F' 33 | projects = '00FF7F' 34 | bin = '00FFF7' 35 | tests = '87CEEB' 36 | windows = '00A8E8' 37 | users = 'F4F4F4' 38 | favorites = 'F7D72C' 39 | output = '00FF7F' 40 | '.config' = '87CEAF' 41 | '.cache' = '87ECAF' 42 | '.vscode' = '87CEFA' 43 | '.vscode-insiders' = '24BFA5' 44 | '.git' = 'FF4500' 45 | '.github' = 'C0C0C0' 46 | 'github' = 'C0C0C0' 47 | 'node_modules' = '6B8E23' 48 | '.terraform' = '948EEC' 49 | '.azure' = '00BFFF' 50 | '.aws' = 'EC912D' 51 | '.kube' = '326DE6' 52 | '.docker' = '2391E6' 53 | } 54 | } 55 | Files = @{ 56 | symlink = '7373ff' 57 | junction = '7373ff' 58 | WellKnown = @{ 59 | '.gitattributes' = 'FF4500' 60 | '.gitconfig' = 'FF4500' 61 | '.gitignore' = 'FF4500' 62 | '.gitmodules' = 'FF4500' 63 | '.gitkeep' = 'FF4500' 64 | 'git-history' = 'FF4500' 65 | 'LICENSE' = 'CD5C5C' 66 | 'LICENSE.md' = 'CD5C5C' 67 | 'LICENSE.txt' = 'CD5C5C' 68 | 'CHANGELOG.md' = '98FB98' 69 | 'CHANGELOG.txt' = '98FB98' 70 | 'CHANGELOG' = '98FB98' 71 | 'README.md' = '00FFFF' 72 | 'README.txt' = '00FFFF' 73 | 'README' = '00FFFF' 74 | '.DS_Store' = '696969' 75 | '.tsbuildinfo' = 'F4A460' 76 | '.jscsrc' = 'F4A460' 77 | '.jshintrc' = 'F4A460' 78 | 'tsconfig.json' = 'F4A460' 79 | 'tslint.json' = 'F4A460' 80 | 'composer.lock' = 'F4A460' 81 | '.jsbeautifyrc' = 'F4A460' 82 | '.esformatter' = 'F4A460' 83 | 'cdp.pid' = 'F4A460' 84 | '.htaccess' = '9ACD32' 85 | '.jshintignore' = '87CEEB' 86 | '.buildignore' = '87CEEB' 87 | '.mrconfig' = '87CEEB' 88 | '.yardopts' = '87CEEB' 89 | 'manifest.mf' = '87CEEB' 90 | '.clang-format' = '87CEEB' 91 | '.clang-tidy' = '87CEEB' 92 | 'favicon.ico' = 'FFD700' 93 | '.travis.yml' = 'FFE4B5' 94 | '.gitlab-ci.yml' = 'FF4500' 95 | '.jenkinsfile' = '6495ED' 96 | 'jenkinsfile' = '6495ED' 97 | 'bitbucket-pipelines.yml' = '87CEFA' 98 | 'bitbucket-pipelines.yaml' = '87CEFA' 99 | '.azure-pipelines.yml' = '00BFFF' 100 | 'makefile' = '6495ED' 101 | 102 | # Firebase 103 | 'firebase.json' = 'FFA500' 104 | '.firebaserc' = 'FFA500' 105 | 106 | # Bower 107 | '.bowerrc' = 'CD5C5C' 108 | 'bower.json' = 'CD5C5C' 109 | 110 | # Conduct 111 | 'code_of_conduct.md' = 'FFFFE0' 112 | 'code_of_conduct.txt' = 'FFFFE0' 113 | 114 | # Docker 115 | 'Dockerfile' = '4682B4' 116 | 'docker-compose.yml' = '4682B4' 117 | 'docker-compose.yaml' = '4682B4' 118 | 'docker-compose.dev.yml' = '4682B4' 119 | 'docker-compose.local.yml' = '4682B4' 120 | 'docker-compose.ci.yml' = '4682B4' 121 | 'docker-compose.override.yml' = '4682B4' 122 | 'docker-compose.staging.yml' = '4682B4' 123 | 'docker-compose.prod.yml' = '4682B4' 124 | 'docker-compose.production.yml' = '4682B4' 125 | 'docker-compose.test.yml' = '4682B4' 126 | 127 | # Vue 128 | 'vue.config.js' = '778899' 129 | 'vue.config.ts' = '778899' 130 | 131 | # Gulp 132 | 'gulpfile.js' = 'CD5C5C' 133 | 'gulpfile.ts' = 'CD5C5C' 134 | 'gulpfile.babel.js' = 'CD5C5C' 135 | 136 | 'gruntfile.js' = 'CD5C5C' 137 | 138 | # NodeJS 139 | 'package.json' = '6B8E23' 140 | 'package-lock.json' = '6B8E23' 141 | '.nvmrc' = '6B8E23' 142 | '.esmrc' = '6B8E23' 143 | 144 | # NPM 145 | '.nmpignore' = '00BFFF' 146 | '.npmrc' = '00BFFF' 147 | 148 | # Authors 149 | 'authors' = 'FF6347' 150 | 'authors.md' = 'FF6347' 151 | 'authors.txt' = 'FF6347' 152 | 153 | # Terraform 154 | '.terraform.lock.hcl' = '948EEC' 155 | 156 | # Gradle 157 | 'gradlew' = '39D52D' 158 | } 159 | # Archive files 160 | '.7z' = 'DAA520' 161 | '.bz' = 'DAA520' 162 | '.tar' = 'DAA520' 163 | '.zip' = 'DAA520' 164 | '.gz' = 'DAA520' 165 | '.xz' = 'DAA520' 166 | '.br' = 'DAA520' 167 | '.bzip2' = 'DAA520' 168 | '.gzip' = 'DAA520' 169 | '.brotli' = 'DAA520' 170 | '.rar' = 'DAA520' 171 | '.tgz' = 'DAA520' 172 | 173 | # Executable things 174 | '.bat' = '008000' 175 | '.cmd' = '008000' 176 | '.exe' = '00FA9A' 177 | '.pl' = '8A2BE2' 178 | 179 | '.sh' = 'FF4500' 180 | 181 | # App Packages 182 | '.msi' = 'FFC77A' 183 | '.msix' = 'FFC77A' 184 | '.msixbundle' = 'FFC77A' 185 | '.appx' = 'FFC77A' 186 | '.AppxBundle' = 'FFC77A' 187 | '.deb' = 'FFC77A' 188 | '.rpm' = 'FFC77A' 189 | 190 | # PowerShell 191 | '.ps1' = '00BFFF' 192 | '.psm1' = '00BFFF' 193 | '.psd1' = '00BFFF' 194 | '.ps1xml' = '00BFFF' 195 | '.psc1' = '00BFFF' 196 | '.pssc' = '00BFFF' 197 | 198 | # Javascript 199 | '.js' = 'F0E68C' 200 | '.esx' = 'F0E68C' 201 | '.mjs' = 'F0E68C' 202 | 203 | # Java 204 | '.java' = 'F89820' 205 | '.jar' = 'F89820' 206 | 207 | '.gradle' = '39D52D' 208 | 209 | # Python 210 | '.py' = '4B8BBE' 211 | '.ipynb' = '4B8BBE' 212 | 213 | 214 | # React 215 | '.jsx' = '20B2AA' 216 | '.tsx' = '20B2AA' 217 | 218 | # Typescript 219 | '.ts' = 'F0E68C' 220 | 221 | # Not-executable code files 222 | '.dll' = '87CEEB' 223 | 224 | # Importable Data files 225 | '.clixml' = '00BFFF' 226 | '.csv' = '9ACD32' 227 | '.tsv' = '9ACD32' 228 | 229 | # Settings 230 | '.ini' = '6495ED' 231 | '.dlc' = '6495ED' 232 | '.config' = '6495ED' 233 | '.conf' = '6495ED' 234 | '.properties' = '6495ED' 235 | '.prop' = '6495ED' 236 | '.settings' = '6495ED' 237 | '.option' = '6495ED' 238 | '.reg' = '6495ED' 239 | '.props' = '6495ED' 240 | '.toml' = '6495ED' 241 | '.prefs' = '6495ED' 242 | '.sln.dotsettings' = '6495ED' 243 | '.sln.dotsettings.user' = '6495ED' 244 | '.cfg' = '6495ED' 245 | 246 | # Source Files 247 | '.c' = 'A9A9A9' 248 | '.cpp' = 'A9A9A9' 249 | '.cxx' = 'A9A9A9' 250 | '.c++' = 'A9A9A9' 251 | '.go' = '20B2AA' 252 | '.php' = '6A5ACD' 253 | 254 | # Visual Studio 255 | '.csproj' = 'EE82EE' 256 | '.ruleset' = 'EE82EE' 257 | '.sln' = 'EE82EE' 258 | '.slnf' = 'EE82EE' 259 | '.suo' = 'EE82EE' 260 | '.vb' = 'EE82EE' 261 | '.vbs' = 'EE82EE' 262 | '.vcxitems' = 'EE82EE' 263 | '.vcxitems.filters' = 'EE82EE' 264 | '.vcxproj' = 'EE82EE' 265 | '.vsxproj.filters' = 'EE82EE' 266 | 267 | # CSharp 268 | '.cs' = '7B68EE' 269 | '.csx' = '7B68EE' 270 | 271 | # Haskell 272 | '.hs' = '9932CC' 273 | 274 | # XAML 275 | '.xaml' = '87CEFA' 276 | 277 | # Rust 278 | '.rs' = 'FF4500' 279 | 280 | # Database 281 | '.pdb' = 'FFD700' 282 | '.sql' = 'FFD700' 283 | '.pks' = 'FFD700' 284 | '.pkb' = 'FFD700' 285 | '.accdb' = 'FFD700' 286 | '.mdb' = 'FFD700' 287 | '.sqlite' = 'FFD700' 288 | '.pgsql' = 'FFD700' 289 | '.postgres' = 'FFD700' 290 | '.psql' = 'FFD700' 291 | '.db' = 'FFD700' 292 | 293 | # Source Control 294 | '.patch' = 'FF4500' 295 | 296 | # Project files 297 | '.user' = '00BFFF' 298 | '.code-workspace' = '00BFFF' 299 | 300 | # Text data files 301 | '.log' = 'F0E68C' 302 | '.txt' = '00CED1' 303 | 304 | # Subtitle files 305 | '.srt' = '00CED1' 306 | '.lrc' = '00CED1' 307 | '.ass' = 'C50000' 308 | 309 | # HTML/css 310 | '.html' = 'CD5C5C' 311 | '.htm' = 'CD5C5C' 312 | '.xhtml' = 'CD5C5C' 313 | '.html_vm' = 'CD5C5C' 314 | '.asp' = 'CD5C5C' 315 | '.css' = '87CEFA' 316 | '.sass' = 'FF00FF' 317 | '.scss' = 'FF00FF' 318 | '.less' = '6B8E23' 319 | 320 | # Markdown 321 | '.md' = '00BFFF' 322 | '.markdown' = '00BFFF' 323 | '.rst' = '00BFFF' 324 | 325 | # Handlebars 326 | '.hbs' = 'E37933' 327 | 328 | # JSON 329 | '.json' = 'FFD700' 330 | '.tsbuildinfo' = 'FFD700' 331 | 332 | # YAML 333 | '.yml' = 'FF6347' 334 | '.yaml' = 'FF6347' 335 | 336 | # LUA 337 | '.lua' = '87CEFA' 338 | 339 | # Clojure 340 | '.clj' = '00FF7F' 341 | '.cljs' = '00FF7F' 342 | '.cljc' = '00FF7F' 343 | 344 | # Groovy 345 | '.groovy' = '87CEFA' 346 | 347 | # Vue 348 | '.vue' = '20B2AA' 349 | 350 | # Dart 351 | '.dart' = '4682B4' 352 | 353 | # Elixir 354 | '.ex' = '8B4513' 355 | '.exs' = '8B4513' 356 | '.eex' = '8B4513' 357 | '.leex' = '8B4513' 358 | 359 | # Erlang 360 | '.erl' = 'FF6347' 361 | 362 | # Elm 363 | '.elm' = '9932CC' 364 | 365 | # Applescript 366 | '.applescript' = '4682B4' 367 | 368 | # XML 369 | '.xml' = '98FB98' 370 | '.plist' = '98FB98' 371 | '.xsd' = '98FB98' 372 | '.dtd' = '98FB98' 373 | '.xsl' = '98FB98' 374 | '.xslt' = '98FB98' 375 | '.resx' = '98FB98' 376 | '.iml' = '98FB98' 377 | '.xquery' = '98FB98' 378 | '.tmLanguage' = '98FB98' 379 | '.manifest' = '98FB98' 380 | '.project' = '98FB98' 381 | 382 | # Documents 383 | '.chm' = '87CEEB' 384 | '.pdf' = 'CD5C5C' 385 | 386 | # Excel 387 | '.xls' = '9ACD32' 388 | '.xlsx' = '9ACD32' 389 | 390 | # PowerPoint 391 | '.pptx' = 'DC143C' 392 | '.ppt' = 'DC143C' 393 | '.pptm' = 'DC143C' 394 | '.potx' = 'DC143C' 395 | '.potm' = 'DC143C' 396 | '.ppsx' = 'DC143C' 397 | '.ppsm' = 'DC143C' 398 | '.pps' = 'DC143C' 399 | '.ppam' = 'DC143C' 400 | '.ppa' = 'DC143C' 401 | 402 | # Word 403 | '.doc' = '00BFFF' 404 | '.docx' = '00BFFF' 405 | '.rtf' = '00BFFF' 406 | 407 | # Audio 408 | '.mp3' = 'DB7093' 409 | '.flac' = 'DB7093' 410 | '.m4a' = 'DB7093' 411 | '.wma' = 'DB7093' 412 | '.aiff' = 'DB7093' 413 | '.wav' = 'DB7093' 414 | '.aac' = 'DB7093' 415 | '.opus' = 'DB7093' 416 | 417 | # Images 418 | '.png' = '20B2AA' 419 | '.jpeg' = '20B2AA' 420 | '.jpg' = '20B2AA' 421 | '.gif' = '20B2AA' 422 | '.ico' = '20B2AA' 423 | '.tif' = '20B2AA' 424 | '.tiff' = '20B2AA' 425 | '.psd' = '20B2AA' 426 | '.psb' = '20B2AA' 427 | '.ami' = '20B2AA' 428 | '.apx' = '20B2AA' 429 | '.bmp' = '20B2AA' 430 | '.bpg' = '20B2AA' 431 | '.brk' = '20B2AA' 432 | '.cur' = '20B2AA' 433 | '.dds' = '20B2AA' 434 | '.dng' = '20B2AA' 435 | '.eps' = '20B2AA' 436 | '.exr' = '20B2AA' 437 | '.fpx' = '20B2AA' 438 | '.gbr' = '20B2AA' 439 | '.jbig2' = '20B2AA' 440 | '.jb2' = '20B2AA' 441 | '.jng' = '20B2AA' 442 | '.jxr' = '20B2AA' 443 | '.pbm' = '20B2AA' 444 | '.pgf' = '20B2AA' 445 | '.pic' = '20B2AA' 446 | '.raw' = '20B2AA' 447 | '.webp' = '20B2AA' 448 | '.svg' = 'F4A460' 449 | 450 | # Video 451 | '.webm' = 'FFA500' 452 | '.mkv' = 'FFA500' 453 | '.flv' = 'FFA500' 454 | '.vob' = 'FFA500' 455 | '.ogv' = 'FFA500' 456 | '.ogg' = 'FFA500' 457 | '.gifv' = 'FFA500' 458 | '.avi' = 'FFA500' 459 | '.mov' = 'FFA500' 460 | '.qt' = 'FFA500' 461 | '.wmv' = 'FFA500' 462 | '.yuv' = 'FFA500' 463 | '.rm' = 'FFA500' 464 | '.rmvb' = 'FFA500' 465 | '.mp4' = 'FFA500' 466 | '.mpg' = 'FFA500' 467 | '.mp2' = 'FFA500' 468 | '.mpeg' = 'FFA500' 469 | '.mpe' = 'FFA500' 470 | '.mpv' = 'FFA500' 471 | '.m2v' = 'FFA500' 472 | 473 | # Email 474 | '.ics' = '00CED1' 475 | 476 | # Certifactes 477 | '.cer' = 'FF6347' 478 | '.cert' = 'FF6347' 479 | '.crt' = 'FF6347' 480 | '.pfx' = 'FF6347' 481 | 482 | # Keys 483 | '.pem' = '66CDAA' 484 | '.pub' = '66CDAA' 485 | '.key' = '66CDAA' 486 | '.asc' = '66CDAA' 487 | '.gpg' = '66CDAA' 488 | 489 | # Fonts 490 | '.woff' = 'DC143C' 491 | '.woff2' = 'DC143C' 492 | '.ttf' = 'DC143C' 493 | '.eot' = 'DC143C' 494 | '.suit' = 'DC143C' 495 | '.otf' = 'DC143C' 496 | '.bmap' = 'DC143C' 497 | '.fnt' = 'DC143C' 498 | '.odttf' = 'DC143C' 499 | '.ttc' = 'DC143C' 500 | '.font' = 'DC143C' 501 | '.fonts' = 'DC143C' 502 | '.sui' = 'DC143C' 503 | '.ntf' = 'DC143C' 504 | '.mrg' = 'DC143C' 505 | 506 | # Ruby 507 | '.rb' = 'FF0000' 508 | '.erb' = 'FF0000' 509 | '.gemfile' = 'FF0000' 510 | 'Rakefile' = 'FF0000' 511 | 512 | # FSharp 513 | '.fs' = '00BFFF' 514 | '.fsx' = '00BFFF' 515 | '.fsi' = '00BFFF' 516 | '.fsproj' = '00BFFF' 517 | 518 | # Docker 519 | '.dockerignore' = '4682B4' 520 | '.dockerfile' = '4682B4' 521 | 522 | 523 | # VSCode 524 | '.vscodeignore' = '6495ED' 525 | '.vsixmanifest' = '6495ED' 526 | '.vsix' = '6495ED' 527 | '.code-workplace' = '6495ED' 528 | 529 | # Sublime 530 | '.sublime-project' = 'F4A460' 531 | '.sublime-workspace' = 'F4A460' 532 | 533 | '.lock' = 'DAA520' 534 | 535 | # Terraform 536 | '.tf' = '948EEC' 537 | '.tfvars' = '948EEC' 538 | '.auto.tfvars' = '948EEC' 539 | 540 | # Bicep 541 | '.bicep' = '00BFFF' 542 | 543 | # Disk Image 544 | '.vmdk' = 'E1E3E6' 545 | '.vhd' = 'E1E3E6' 546 | '.vhdx' = 'E1E3E6' 547 | '.img' = 'E1E3E6' 548 | '.iso' = 'E1E3E6' 549 | 550 | # R language 551 | '.R' = '276DC3' 552 | '.Rmd' = '276DC3' 553 | '.Rproj' = '276DC3' 554 | 555 | # Julia language 556 | '.jl' = '9259a3' 557 | 558 | # Vim 559 | '.vim' = '019833' 560 | 561 | # Puppet 562 | '.pp' = 'FFA61A' 563 | '.epp' = 'FFA61A' 564 | 565 | # Scala 566 | '.scala' = 'DE3423' 567 | '.sc' = 'DE3423' 568 | '.sbt' = 'DE3423' 569 | 570 | # Autodesk Inventor 571 | '.iLogicVb' = 'A63B22' 572 | 573 | '.svelte' = 'FF3E00' 574 | } 575 | } 576 | } 577 | -------------------------------------------------------------------------------- /Terminal-Icons/Data/colorThemes/devblackops_light.psd1: -------------------------------------------------------------------------------- 1 | @{ 2 | Name = 'devblackops_light' 3 | Types = @{ 4 | Directories = @{ 5 | symlink = '7373ff' 6 | junction = '7373ff' 7 | WellKnown = @{ 8 | docs = '00BFFF' 9 | documents = '00BFFF' 10 | desktop = '00c9cd' 11 | benchmark = 'F08519' 12 | demo = '5F3EC3' 13 | samples = '5F3EC3' 14 | contacts = '00c9cd' 15 | apps = 'FF143C' 16 | applications = 'FF143C' 17 | artifacts = 'D49653' 18 | shortcuts = 'FF143C' 19 | links = 'FF143C' 20 | fonts = 'DC143C' 21 | images = '9ACD32' 22 | photos = '9ACD32' 23 | pictures = '9ACD32' 24 | videos = 'FFA500' 25 | movies = 'FFA500' 26 | media = 'b0b0b0' 27 | music = 'DB7093' 28 | songs = 'DB7093' 29 | onedrive = 'b0b0b0' 30 | downloads = 'b0b0b0' 31 | src = '00cd65' 32 | development = '00cd65' 33 | projects = '00cd65' 34 | bin = '00FFF7' 35 | tests = '87CEEB' 36 | windows = '00A8E8' 37 | users = 'F4F4F4' 38 | favorites = 'F7D72C' 39 | output = '00cd65' 40 | '.config' = '87CEAF' 41 | '.cache' = '87ECAF' 42 | '.vscode' = '87CEFA' 43 | '.vscode-insiders' = '24BFA5' 44 | '.git' = 'FF4500' 45 | '.github' = 'b0b0b0' 46 | 'github' = 'b0b0b0' 47 | 'node_modules' = '6B8E23' 48 | '.terraform' = '948EEC' 49 | '.azure' = '00BFFF' 50 | '.aws' = 'EC912D' 51 | '.kube' = '326DE6' 52 | '.docker' = '2391E6' 53 | } 54 | } 55 | Files = @{ 56 | symlink = '7373ff' 57 | junction = '7373ff' 58 | WellKnown = @{ 59 | '.gitattributes' = 'FF4500' 60 | '.gitconfig' = 'FF4500' 61 | '.gitignore' = 'FF4500' 62 | '.gitmodules' = 'FF4500' 63 | '.gitkeep' = 'FF4500' 64 | 'git-history' = 'FF4500' 65 | 'LICENSE' = 'CD5C5C' 66 | 'LICENSE.md' = 'CD5C5C' 67 | 'LICENSE.txt' = 'CD5C5C' 68 | 'CHANGELOG.md' = '09db09' 69 | 'CHANGELOG.txt' = '09db09' 70 | 'CHANGELOG' = '09db09' 71 | 'README.md' = '00CDCD' 72 | 'README.txt' = '00CDCD' 73 | 'README' = '00CDCD' 74 | '.DS_Store' = '696969' 75 | '.tsbuildinfo' = 'F4A460' 76 | '.jscsrc' = 'F4A460' 77 | '.jshintrc' = 'F4A460' 78 | 'tsconfig.json' = 'F4A460' 79 | 'tslint.json' = 'F4A460' 80 | 'composer.lock' = 'F4A460' 81 | '.jsbeautifyrc' = 'F4A460' 82 | '.esformatter' = 'F4A460' 83 | 'cdp.pid' = 'F4A460' 84 | '.htaccess' = '9ACD32' 85 | '.jshintignore' = '87CEEB' 86 | '.buildignore' = '87CEEB' 87 | '.mrconfig' = '87CEEB' 88 | '.yardopts' = '87CEEB' 89 | 'manifest.mf' = '87CEEB' 90 | '.clang-format' = '87CEEB' 91 | '.clang-tidy' = '87CEEB' 92 | 'favicon.ico' = 'ffc200' 93 | '.travis.yml' = 'ffbe4f' 94 | '.gitlab-ci.yml' = 'FF4500' 95 | '.jenkinsfile' = '6495ED' 96 | 'jenkinsfile' = '6495ED' 97 | 'bitbucket-pipelines.yml' = '87CEFA' 98 | 'bitbucket-pipelines.yaml' = '87CEFA' 99 | '.azure-pipelines.yml' = '00BFFF' 100 | 'makefile' = '6495ED' 101 | 102 | # Firebase 103 | 'firebase.json' = 'FFA500' 104 | '.firebaserc' = 'FFA500' 105 | 106 | # Bower 107 | '.bowerrc' = 'CD5C5C' 108 | 'bower.json' = 'CD5C5C' 109 | 110 | # Conduct 111 | 'code_of_conduct.md' = 'b0b0b0' 112 | 'code_of_conduct.txt' = 'b0b0b0' 113 | 114 | # Docker 115 | 'Dockerfile' = '4682B4' 116 | 'docker-compose.yml' = '4682B4' 117 | 'docker-compose.yaml' = '4682B4' 118 | 'docker-compose.dev.yml' = '4682B4' 119 | 'docker-compose.local.yml' = '4682B4' 120 | 'docker-compose.ci.yml' = '4682B4' 121 | 'docker-compose.override.yml' = '4682B4' 122 | 'docker-compose.staging.yml' = '4682B4' 123 | 'docker-compose.prod.yml' = '4682B4' 124 | 'docker-compose.production.yml' = '4682B4' 125 | 'docker-compose.test.yml' = '4682B4' 126 | 127 | # Vue 128 | 'vue.config.js' = '778899' 129 | 'vue.config.ts' = '778899' 130 | 131 | # Gulp 132 | 'gulpfile.js' = 'CD5C5C' 133 | 'gulpfile.ts' = 'CD5C5C' 134 | 'gulpfile.babel.js' = 'CD5C5C' 135 | 136 | 'gruntfile.js' = 'CD5C5C' 137 | 138 | # NodeJS 139 | 'package.json' = '6B8E23' 140 | 'package-lock.json' = '6B8E23' 141 | '.nvmrc' = '6B8E23' 142 | '.esmrc' = '6B8E23' 143 | 144 | # NPM 145 | '.nmpignore' = '00BFFF' 146 | '.npmrc' = '00BFFF' 147 | 148 | # Authors 149 | 'authors' = 'FF6347' 150 | 'authors.md' = 'FF6347' 151 | 'authors.txt' = 'FF6347' 152 | 153 | # Terraform 154 | '.terraform.lock.hcl' = '948EEC' 155 | 156 | # Gradle 157 | 'gradlew' = '39D52D' 158 | } 159 | # Archive files 160 | '.7z' = 'DAA520' 161 | '.bz' = 'DAA520' 162 | '.tar' = 'DAA520' 163 | '.zip' = 'DAA520' 164 | '.gz' = 'DAA520' 165 | '.xz' = 'DAA520' 166 | '.br' = 'DAA520' 167 | '.bzip2' = 'DAA520' 168 | '.gzip' = 'DAA520' 169 | '.brotli' = 'DAA520' 170 | '.rar' = 'DAA520' 171 | '.tgz' = 'DAA520' 172 | 173 | # Executable things 174 | '.bat' = '008000' 175 | '.cmd' = '008000' 176 | '.exe' = '00e18a' 177 | '.pl' = '8A2BE2' 178 | 179 | '.sh' = 'FF4500' 180 | 181 | # App Packages 182 | '.msi' = 'ffb247' 183 | '.msix' = 'ffb247' 184 | '.msixbundle' = 'ffb247' 185 | '.appx' = 'ffb247' 186 | '.AppxBundle' = 'ffb247' 187 | '.deb' = 'ffb247' 188 | '.rpm' = 'ffb247' 189 | 190 | # PowerShell 191 | '.ps1' = '00BFFF' 192 | '.psm1' = '00BFFF' 193 | '.psd1' = '00BFFF' 194 | '.ps1xml' = '00BFFF' 195 | '.psc1' = '00BFFF' 196 | '.pssc' = '00BFFF' 197 | 198 | # Javascript 199 | '.js' = 'FFC200' 200 | '.esx' = 'FFC200' 201 | '.mjs' = 'FFC200' 202 | 203 | # Java 204 | '.java' = 'F89820' 205 | '.jar' = 'F89820' 206 | 207 | '.gradle' = '39D52D' 208 | 209 | # Python 210 | '.py' = '4B8BBE' 211 | '.ipynb' = '4B8BBE' 212 | 213 | # React 214 | '.jsx' = '20B2AA' 215 | '.tsx' = '20B2AA' 216 | 217 | # Typescript 218 | '.ts' = 'FFC200' 219 | 220 | # Not-executable code files 221 | '.dll' = '87CEEB' 222 | 223 | # Importable Data files 224 | '.clixml' = '00BFFF' 225 | '.csv' = '9ACD32' 226 | '.tsv' = '9ACD32' 227 | 228 | # Settings 229 | '.ini' = '6495ED' 230 | '.dlc' = '6495ED' 231 | '.config' = '6495ED' 232 | '.conf' = '6495ED' 233 | '.properties' = '6495ED' 234 | '.prop' = '6495ED' 235 | '.settings' = '6495ED' 236 | '.option' = '6495ED' 237 | '.reg' = '6495ED' 238 | '.props' = '6495ED' 239 | '.toml' = '6495ED' 240 | '.prefs' = '6495ED' 241 | '.sln.dotsettings' = '6495ED' 242 | '.sln.dotsettings.user' = '6495ED' 243 | '.cfg' = '6495ED' 244 | 245 | # Source Files 246 | '.c' = 'A9A9A9' 247 | '.cpp' = 'A9A9A9' 248 | '.cxx' = 'A9A9A9' 249 | '.c++' = 'A9A9A9' 250 | '.go' = '20B2AA' 251 | '.php' = '6A5ACD' 252 | 253 | # Visual Studio 254 | '.csproj' = 'EE82EE' 255 | '.ruleset' = 'EE82EE' 256 | '.sln' = 'EE82EE' 257 | '.slnf' = 'EE82EE' 258 | '.suo' = 'EE82EE' 259 | '.vb' = 'EE82EE' 260 | '.vbs' = 'EE82EE' 261 | '.vcxitems' = 'EE82EE' 262 | '.vcxitems.filters' = 'EE82EE' 263 | '.vcxproj' = 'EE82EE' 264 | '.vsxproj.filters' = 'EE82EE' 265 | 266 | # CSharp 267 | '.cs' = '7B68EE' 268 | '.csx' = '7B68EE' 269 | 270 | # Haskell 271 | '.hs' = '9932CC' 272 | 273 | # XAML 274 | '.xaml' = '87CEFA' 275 | 276 | # Rust 277 | '.rs' = 'FF4500' 278 | 279 | # Database 280 | '.pdb' = 'ffc200' 281 | '.sql' = 'ffc200' 282 | '.pks' = 'ffc200' 283 | '.pkb' = 'ffc200' 284 | '.accdb' = 'ffc200' 285 | '.mdb' = 'ffc200' 286 | '.sqlite' = 'ffc200' 287 | '.pgsql' = 'ffc200' 288 | '.postgres' = 'ffc200' 289 | '.psql' = 'ffc200' 290 | '.db' = 'ffc200' 291 | 292 | # Source Control 293 | '.patch' = 'FF4500' 294 | 295 | # Project files 296 | '.user' = '00BFFF' 297 | '.code-workspace' = '00BFFF' 298 | 299 | # Text data files 300 | '.log' = 'FFC200' 301 | '.txt' = '00CED1' 302 | 303 | # Subtitle files 304 | '.srt' = '00CED1' 305 | '.lrc' = '00CED1' 306 | '.ass' = 'C50000' 307 | 308 | # HTML/css 309 | '.html' = 'CD5C5C' 310 | '.htm' = 'CD5C5C' 311 | '.xhtml' = 'CD5C5C' 312 | '.html_vm' = 'CD5C5C' 313 | '.asp' = 'CD5C5C' 314 | '.css' = '87CEFA' 315 | '.sass' = 'FF00FF' 316 | '.scss' = 'FF00FF' 317 | '.less' = '6B8E23' 318 | 319 | # Markdown 320 | '.md' = '00BFFF' 321 | '.markdown' = '00BFFF' 322 | '.rst' = '00BFFF' 323 | 324 | # Handlebars 325 | '.hbs' = 'E37933' 326 | 327 | # JSON 328 | '.json' = 'ffc200' 329 | '.tsbuildinfo' = 'ffc200' 330 | 331 | # YAML 332 | '.yml' = 'FF6347' 333 | '.yaml' = 'FF6347' 334 | 335 | # LUA 336 | '.lua' = '87CEFA' 337 | 338 | # Clojure 339 | '.clj' = '00cd65' 340 | '.cljs' = '00cd65' 341 | '.cljc' = '00cd65' 342 | 343 | # Groovy 344 | '.groovy' = '87CEFA' 345 | 346 | # Vue 347 | '.vue' = '20B2AA' 348 | 349 | # Dart 350 | '.dart' = '4682B4' 351 | 352 | # Elixir 353 | '.ex' = '8B4513' 354 | '.exs' = '8B4513' 355 | '.eex' = '8B4513' 356 | '.leex' = '8B4513' 357 | 358 | # Erlang 359 | '.erl' = 'FF6347' 360 | 361 | # Elm 362 | '.elm' = '9932CC' 363 | 364 | # Applescript 365 | '.applescript' = '4682B4' 366 | 367 | # XML 368 | '.xml' = '09db09' 369 | '.plist' = '09db09' 370 | '.xsd' = '09db09' 371 | '.dtd' = '09db09' 372 | '.xsl' = '09db09' 373 | '.xslt' = '09db09' 374 | '.resx' = '09db09' 375 | '.iml' = '09db09' 376 | '.xquery' = '09db09' 377 | '.tmLanguage' = '09db09' 378 | '.manifest' = '09db09' 379 | '.project' = '09db09' 380 | 381 | # Documents 382 | '.chm' = '87CEEB' 383 | '.pdf' = 'CD5C5C' 384 | 385 | # Excel 386 | '.xls' = '9ACD32' 387 | '.xlsx' = '9ACD32' 388 | 389 | # PowerPoint 390 | '.pptx' = 'DC143C' 391 | '.ppt' = 'DC143C' 392 | '.pptm' = 'DC143C' 393 | '.potx' = 'DC143C' 394 | '.potm' = 'DC143C' 395 | '.ppsx' = 'DC143C' 396 | '.ppsm' = 'DC143C' 397 | '.pps' = 'DC143C' 398 | '.ppam' = 'DC143C' 399 | '.ppa' = 'DC143C' 400 | 401 | # Word 402 | '.doc' = '00BFFF' 403 | '.docx' = '00BFFF' 404 | '.rtf' = '00BFFF' 405 | 406 | # Audio 407 | '.mp3' = 'DB7093' 408 | '.flac' = 'DB7093' 409 | '.m4a' = 'DB7093' 410 | '.wma' = 'DB7093' 411 | '.aiff' = 'DB7093' 412 | '.wav' = 'DB7093' 413 | '.aac' = 'DB7093' 414 | '.opus' = 'DB7093' 415 | 416 | # Images 417 | '.png' = '20B2AA' 418 | '.jpeg' = '20B2AA' 419 | '.jpg' = '20B2AA' 420 | '.gif' = '20B2AA' 421 | '.ico' = '20B2AA' 422 | '.tif' = '20B2AA' 423 | '.tiff' = '20B2AA' 424 | '.psd' = '20B2AA' 425 | '.psb' = '20B2AA' 426 | '.ami' = '20B2AA' 427 | '.apx' = '20B2AA' 428 | '.bmp' = '20B2AA' 429 | '.bpg' = '20B2AA' 430 | '.brk' = '20B2AA' 431 | '.cur' = '20B2AA' 432 | '.dds' = '20B2AA' 433 | '.dng' = '20B2AA' 434 | '.eps' = '20B2AA' 435 | '.exr' = '20B2AA' 436 | '.fpx' = '20B2AA' 437 | '.gbr' = '20B2AA' 438 | '.jbig2' = '20B2AA' 439 | '.jb2' = '20B2AA' 440 | '.jng' = '20B2AA' 441 | '.jxr' = '20B2AA' 442 | '.pbm' = '20B2AA' 443 | '.pgf' = '20B2AA' 444 | '.pic' = '20B2AA' 445 | '.raw' = '20B2AA' 446 | '.webp' = '20B2AA' 447 | '.svg' = 'F4A460' 448 | 449 | # Video 450 | '.webm' = 'FFA500' 451 | '.mkv' = 'FFA500' 452 | '.flv' = 'FFA500' 453 | '.vob' = 'FFA500' 454 | '.ogv' = 'FFA500' 455 | '.ogg' = 'FFA500' 456 | '.gifv' = 'FFA500' 457 | '.avi' = 'FFA500' 458 | '.mov' = 'FFA500' 459 | '.qt' = 'FFA500' 460 | '.wmv' = 'FFA500' 461 | '.yuv' = 'FFA500' 462 | '.rm' = 'FFA500' 463 | '.rmvb' = 'FFA500' 464 | '.mp4' = 'FFA500' 465 | '.mpg' = 'FFA500' 466 | '.mp2' = 'FFA500' 467 | '.mpeg' = 'FFA500' 468 | '.mpe' = 'FFA500' 469 | '.mpv' = 'FFA500' 470 | '.m2v' = 'FFA500' 471 | 472 | # Email 473 | '.ics' = '00CED1' 474 | 475 | # Certifactes 476 | '.cer' = 'FF6347' 477 | '.cert' = 'FF6347' 478 | '.crt' = 'FF6347' 479 | '.pfx' = 'FF6347' 480 | 481 | # Keys 482 | '.pem' = '66CDAA' 483 | '.pub' = '66CDAA' 484 | '.key' = '66CDAA' 485 | '.asc' = '66CDAA' 486 | '.gpg' = '66CDAA' 487 | 488 | # Fonts 489 | '.woff' = 'DC143C' 490 | '.woff2' = 'DC143C' 491 | '.ttf' = 'DC143C' 492 | '.eot' = 'DC143C' 493 | '.suit' = 'DC143C' 494 | '.otf' = 'DC143C' 495 | '.bmap' = 'DC143C' 496 | '.fnt' = 'DC143C' 497 | '.odttf' = 'DC143C' 498 | '.ttc' = 'DC143C' 499 | '.font' = 'DC143C' 500 | '.fonts' = 'DC143C' 501 | '.sui' = 'DC143C' 502 | '.ntf' = 'DC143C' 503 | '.mrg' = 'DC143C' 504 | 505 | # Ruby 506 | '.rb' = 'FF0000' 507 | '.erb' = 'FF0000' 508 | '.gemfile' = 'FF0000' 509 | 'Rakefile' = 'FF0000' 510 | 511 | # FSharp 512 | '.fs' = '00BFFF' 513 | '.fsx' = '00BFFF' 514 | '.fsi' = '00BFFF' 515 | '.fsproj' = '00BFFF' 516 | 517 | # Docker 518 | '.dockerignore' = '4682B4' 519 | '.dockerfile' = '4682B4' 520 | 521 | 522 | # VSCode 523 | '.vscodeignore' = '6495ED' 524 | '.vsixmanifest' = '6495ED' 525 | '.vsix' = '6495ED' 526 | '.code-workplace' = '6495ED' 527 | 528 | # Sublime 529 | '.sublime-project' = 'F4A460' 530 | '.sublime-workspace' = 'F4A460' 531 | 532 | '.lock' = 'DAA520' 533 | 534 | # Terraform 535 | '.tf' = '948EEC' 536 | '.tfvars' = '948EEC' 537 | '.auto.tfvars' = '948EEC' 538 | 539 | # Bicep 540 | '.bicep' = '00BFFF' 541 | 542 | # Disk Image 543 | '.vmdk' = 'a9afb8' 544 | '.vhd' = 'a9afb8' 545 | '.vhdx' = 'a9afb8' 546 | '.img' = 'a9afb8' 547 | '.iso' = 'a9afb8' 548 | 549 | # R language 550 | '.R' = '276DC3' 551 | '.Rmd' = '276DC3' 552 | '.Rproj' = '276DC3' 553 | 554 | # Julia language 555 | '.jl' = '9259a3' 556 | 557 | # Vim 558 | '.vim' = '019833' 559 | 560 | # Puppet 561 | '.pp' = 'FFA61A' 562 | '.epp' = 'FFA61A' 563 | 564 | # Scala 565 | '.scala' = 'DE3423' 566 | '.sc' = 'DE3423' 567 | '.sbt' = 'DE3423' 568 | 569 | # Autodesk Inventor 570 | '.iLogicVb' = 'A63B22' 571 | 572 | '.svelte' = 'FF3E00' 573 | } 574 | } 575 | } 576 | -------------------------------------------------------------------------------- /Terminal-Icons/Data/colorThemes/dracula.psd1: -------------------------------------------------------------------------------- 1 | @{ 2 | Name = 'dracula' 3 | Types = @{ 4 | Directories = @{ 5 | symlink = '6272a4' 6 | junction = '6272a4' 7 | WellKnown = @{ 8 | docs = '8be9fd' 9 | documents = '8be9fd' 10 | desktop = '8be9fd' 11 | benchmark = 'ffb86c' 12 | demo = 'bd93f9' 13 | samples = 'bd93f9' 14 | contacts = '8be9fd' 15 | apps = 'ff5555' 16 | applications = 'ff5555' 17 | artifacts = 'ffb86c' 18 | shortcuts = 'ff5555' 19 | links = 'ff5555' 20 | fonts = 'ff5555' 21 | images = '50fa7b' 22 | photos = '50fa7b' 23 | pictures = '50fa7b' 24 | videos = 'ffb86c' 25 | movies = 'ffb86c' 26 | media = 'f8f8f2' 27 | music = 'ff79c6' 28 | songs = 'ff79c6' 29 | onedrive = 'f8f8f2' 30 | downloads = 'f8f8f2' 31 | src = '50fa7b' 32 | development = '50fa7b' 33 | projects = '50fa7b' 34 | bin = '8be9fd' 35 | tests = '8be9fd' 36 | windows = '8be9fd' 37 | users = 'f8f8f2' 38 | favorites = 'f1fa8c' 39 | output = '50fa7b' 40 | '.config' = '50fa7b' 41 | '.cache' = '50fa7b' 42 | '.vscode' = '8be9fd' 43 | '.vscode-insiders' = '8be9fd' 44 | '.git' = 'ff5555' 45 | '.github' = 'f8f8f2' 46 | 'github' = 'f8f8f2' 47 | 'node_modules' = '50fa7b' 48 | '.terraform' = '6272a4' 49 | '.azure' = '8be9fd' 50 | '.aws' = 'ffb86c' 51 | '.kube' = '6272a4' 52 | '.docker' = '6272a4' 53 | } 54 | } 55 | Files = @{ 56 | symlink = '6272a4' 57 | junction = '6272a4' 58 | WellKnown = @{ 59 | '.gitattributes' = 'ff5555' 60 | '.gitconfig' = 'ff5555' 61 | '.gitignore' = 'ff5555' 62 | '.gitmodules' = 'ff5555' 63 | '.gitkeep' = 'ff5555' 64 | 'git-history' = 'ff5555' 65 | 'LICENSE' = 'ff5555' 66 | 'LICENSE.md' = 'ff5555' 67 | 'LICENSE.txt' = 'ff5555' 68 | 'CHANGELOG.md' = '50fa7b' 69 | 'CHANGELOG.txt' = '50fa7b' 70 | 'CHANGELOG' = '50fa7b' 71 | 'README.md' = '8be9fd' 72 | 'README.txt' = '8be9fd' 73 | 'README' = '8be9fd' 74 | '.DS_Store' = '44475a' 75 | '.tsbuildinfo' = 'ffb86c' 76 | '.jscsrc' = 'ffb86c' 77 | '.jshintrc' = 'ffb86c' 78 | 'tsconfig.json' = 'ffb86c' 79 | 'tslint.json' = 'ffb86c' 80 | 'composer.lock' = 'ffb86c' 81 | '.jsbeautifyrc' = 'ffb86c' 82 | '.esformatter' = 'ffb86c' 83 | 'cdp.pid' = 'ffb86c' 84 | '.htaccess' = '50fa7b' 85 | '.jshintignore' = '8be9fd' 86 | '.buildignore' = '8be9fd' 87 | '.mrconfig' = '8be9fd' 88 | '.yardopts' = '8be9fd' 89 | 'manifest.mf' = '8be9fd' 90 | '.clang-format' = '8be9fd' 91 | '.clang-tidy' = '8be9fd' 92 | 'favicon.ico' = 'f1fa8c' 93 | '.travis.yml' = 'ffb86c' 94 | '.gitlab-ci.yml' = 'ff5555' 95 | '.jenkinsfile' = '6272a4' 96 | 'jenkinsfile' = '6272a4' 97 | 'bitbucket-pipelines.yml' = '8be9fd' 98 | 'bitbucket-pipelines.yaml' = '8be9fd' 99 | '.azure-pipelines.yml' = '8be9fd' 100 | 'makefile' = '6272a4' 101 | 102 | # Firebase 103 | 'firebase.json' = 'ffb86c' 104 | '.firebaserc' = 'ffb86c' 105 | 106 | # Bower 107 | '.bowerrc' = 'ff5555' 108 | 'bower.json' = 'ff5555' 109 | 110 | # Conduct 111 | 'code_of_conduct.md' = 'f8f8f2' 112 | 'code_of_conduct.txt' = 'f8f8f2' 113 | 114 | # Docker 115 | 'Dockerfile' = '6272a4' 116 | 'docker-compose.yml' = '6272a4' 117 | 'docker-compose.yaml' = '6272a4' 118 | 'docker-compose.dev.yml' = '6272a4' 119 | 'docker-compose.local.yml' = '6272a4' 120 | 'docker-compose.ci.yml' = '6272a4' 121 | 'docker-compose.override.yml' = '6272a4' 122 | 'docker-compose.staging.yml' = '6272a4' 123 | 'docker-compose.prod.yml' = '6272a4' 124 | 'docker-compose.production.yml' = '6272a4' 125 | 'docker-compose.test.yml' = '6272a4' 126 | 127 | # Vue 128 | 'vue.config.js' = '44475a' 129 | 'vue.config.ts' = '44475a' 130 | 131 | # Gulp 132 | 'gulpfile.js' = 'ff5555' 133 | 'gulpfile.ts' = 'ff5555' 134 | 'gulpfile.babel.js' = 'ff5555' 135 | 136 | 'gruntfile.js' = 'ff5555' 137 | 138 | # NodeJS 139 | 'package.json' = '50fa7b' 140 | 'package-lock.json' = '50fa7b' 141 | '.nvmrc' = '50fa7b' 142 | '.esmrc' = '50fa7b' 143 | 144 | # NPM 145 | '.nmpignore' = '8be9fd' 146 | '.npmrc' = '8be9fd' 147 | 148 | # Authors 149 | 'authors' = 'ff5555' 150 | 'authors.md' = 'ff5555' 151 | 'authors.txt' = 'ff5555' 152 | 153 | # Terraform 154 | '.terraform.lock.hcl' = '6272a4' 155 | 156 | # Gradle 157 | 'gradlew' = '50fa7b' 158 | } 159 | # Archive files 160 | '.7z' = 'ffb86c' 161 | '.bz' = 'ffb86c' 162 | '.tar' = 'ffb86c' 163 | '.zip' = 'ffb86c' 164 | '.gz' = 'ffb86c' 165 | '.xz' = 'ffb86c' 166 | '.br' = 'ffb86c' 167 | '.bzip2' = 'ffb86c' 168 | '.gzip' = 'ffb86c' 169 | '.brotli' = 'ffb86c' 170 | '.rar' = 'ffb86c' 171 | '.tgz' = 'ffb86c' 172 | 173 | # Executable things 174 | '.bat' = '50fa7b' 175 | '.cmd' = '50fa7b' 176 | '.exe' = '8be9fd' 177 | '.pl' = 'bd93f9' 178 | 179 | '.sh' = 'ff5555' 180 | 181 | # App Packages 182 | '.msi' = 'ffb86c' 183 | '.msix' = 'ffb86c' 184 | '.msixbundle' = 'ffb86c' 185 | '.appx' = 'ffb86c' 186 | '.AppxBundle' = 'ffb86c' 187 | '.deb' = 'ffb86c' 188 | '.rpm' = 'ffb86c' 189 | 190 | # PowerShell 191 | '.ps1' = '8be9fd' 192 | '.psm1' = '8be9fd' 193 | '.psd1' = '8be9fd' 194 | '.ps1xml' = '8be9fd' 195 | '.psc1' = '8be9fd' 196 | '.pssc' = '8be9fd' 197 | 198 | # Javascript 199 | '.js' = 'f1fa8c' 200 | '.esx' = 'f1fa8c' 201 | '.mjs' = 'f1fa8c' 202 | 203 | # Java 204 | '.java' = 'ffb86c' 205 | '.jar' = 'ffb86c' 206 | 207 | '.gradle' = '50fa7b' 208 | 209 | # Python 210 | '.py' = '6272a4' 211 | '.ipynb' = '6272a4' 212 | 213 | 214 | # React 215 | '.jsx' = '6272a4' 216 | '.tsx' = '6272a4' 217 | 218 | # Typescript 219 | '.ts' = 'f1fa8c' 220 | 221 | # Not-executable code files 222 | '.dll' = '8be9fd' 223 | 224 | # Importable Data files 225 | '.clixml' = '8be9fd' 226 | '.csv' = '50fa7b' 227 | '.tsv' = '50fa7b' 228 | 229 | # Settings 230 | '.ini' = '6272a4' 231 | '.dlc' = '6272a4' 232 | '.config' = '6272a4' 233 | '.conf' = '6272a4' 234 | '.properties' = '6272a4' 235 | '.prop' = '6272a4' 236 | '.settings' = '6272a4' 237 | '.option' = '6272a4' 238 | '.reg' = '6272a4' 239 | '.props' = '6272a4' 240 | '.toml' = '6272a4' 241 | '.prefs' = '6272a4' 242 | '.sln.dotsettings' = '6272a4' 243 | '.sln.dotsettings.user' = '6272a4' 244 | '.cfg' = '6272a4' 245 | 246 | # Source Files 247 | '.c' = 'f8f8f2' 248 | '.cpp' = 'f8f8f2' 249 | '.cxx' = 'f8f8f2' 250 | '.c++' = 'f8f8f2' 251 | '.go' = '6272a4' 252 | '.php' = 'bd93f9' 253 | 254 | # Visual Studio 255 | '.csproj' = 'ff79c6' 256 | '.ruleset' = 'ff79c6' 257 | '.sln' = 'ff79c6' 258 | '.slnf' = 'ff79c6' 259 | '.suo' = 'ff79c6' 260 | '.vb' = 'ff79c6' 261 | '.vbs' = 'ff79c6' 262 | '.vcxitems' = 'ff79c6' 263 | '.vcxitems.filters' = 'ff79c6' 264 | '.vcxproj' = 'ff79c6' 265 | '.vsxproj.filters' = 'ff79c6' 266 | 267 | # CSharp 268 | '.cs' = '6272a4' 269 | '.csx' = '6272a4' 270 | 271 | # Haskell 272 | '.hs' = 'bd93f9' 273 | 274 | # XAML 275 | '.xaml' = '8be9fd' 276 | 277 | # Rust 278 | '.rs' = 'ff5555' 279 | 280 | # Database 281 | '.pdb' = 'f1fa8c' 282 | '.sql' = 'f1fa8c' 283 | '.pks' = 'f1fa8c' 284 | '.pkb' = 'f1fa8c' 285 | '.accdb' = 'f1fa8c' 286 | '.mdb' = 'f1fa8c' 287 | '.sqlite' = 'f1fa8c' 288 | '.pgsql' = 'f1fa8c' 289 | '.postgres' = 'f1fa8c' 290 | '.psql' = 'f1fa8c' 291 | '.db' = 'f1fa8c' 292 | 293 | # Source Control 294 | '.patch' = 'ff5555' 295 | 296 | # Project files 297 | '.user' = '8be9fd' 298 | '.code-workspace' = '8be9fd' 299 | 300 | # Text data files 301 | '.log' = 'f1fa8c' 302 | '.txt' = '8be9fd' 303 | 304 | # Subtitle files 305 | '.srt' = '8be9fd' 306 | '.lrc' = '8be9fd' 307 | '.ass' = 'ff5555' 308 | 309 | # HTML/css 310 | '.html' = 'ff5555' 311 | '.htm' = 'ff5555' 312 | '.xhtml' = 'ff5555' 313 | '.html_vm' = 'ff5555' 314 | '.asp' = 'ff5555' 315 | '.css' = '8be9fd' 316 | '.sass' = 'ff79c6' 317 | '.scss' = 'ff79c6' 318 | '.less' = '50fa7b' 319 | 320 | # Markdown 321 | '.md' = '8be9fd' 322 | '.markdown' = '8be9fd' 323 | '.rst' = '8be9fd' 324 | 325 | # Handlebars 326 | '.hbs' = 'ffb86c' 327 | 328 | # JSON 329 | '.json' = 'f1fa8c' 330 | '.tsbuildinfo' = 'f1fa8c' 331 | 332 | # YAML 333 | '.yml' = 'ff5555' 334 | '.yaml' = 'ff5555' 335 | 336 | # LUA 337 | '.lua' = '8be9fd' 338 | 339 | # Clojure 340 | '.clj' = '50fa7b' 341 | '.cljs' = '50fa7b' 342 | '.cljc' = '50fa7b' 343 | 344 | # Groovy 345 | '.groovy' = '8be9fd' 346 | 347 | # Vue 348 | '.vue' = '6272a4' 349 | 350 | # Dart 351 | '.dart' = '6272a4' 352 | 353 | # Elixir 354 | '.ex' = 'ffb86c' 355 | '.exs' = 'ffb86c' 356 | '.eex' = 'ffb86c' 357 | '.leex' = 'ffb86c' 358 | 359 | # Erlang 360 | '.erl' = 'ff5555' 361 | 362 | # Elm 363 | '.elm' = 'bd93f9' 364 | 365 | # Applescript 366 | '.applescript' = '6272a4' 367 | 368 | # XML 369 | '.xml' = '50fa7b' 370 | '.plist' = '50fa7b' 371 | '.xsd' = '50fa7b' 372 | '.dtd' = '50fa7b' 373 | '.xsl' = '50fa7b' 374 | '.xslt' = '50fa7b' 375 | '.resx' = '50fa7b' 376 | '.iml' = '50fa7b' 377 | '.xquery' = '50fa7b' 378 | '.tmLanguage' = '50fa7b' 379 | '.manifest' = '50fa7b' 380 | '.project' = '50fa7b' 381 | 382 | # Documents 383 | '.chm' = '8be9fd' 384 | '.pdf' = 'ff5555' 385 | 386 | # Excel 387 | '.xls' = '50fa7b' 388 | '.xlsx' = '50fa7b' 389 | 390 | # PowerPoint 391 | '.pptx' = 'ff5555' 392 | '.ppt' = 'ff5555' 393 | '.pptm' = 'ff5555' 394 | '.potx' = 'ff5555' 395 | '.potm' = 'ff5555' 396 | '.ppsx' = 'ff5555' 397 | '.ppsm' = 'ff5555' 398 | '.pps' = 'ff5555' 399 | '.ppam' = 'ff5555' 400 | '.ppa' = 'ff5555' 401 | 402 | # Word 403 | '.doc' = '8be9fd' 404 | '.docx' = '8be9fd' 405 | '.rtf' = '8be9fd' 406 | 407 | # Audio 408 | '.mp3' = 'ff79c6' 409 | '.flac' = 'ff79c6' 410 | '.m4a' = 'ff79c6' 411 | '.wma' = 'ff79c6' 412 | '.aiff' = 'ff79c6' 413 | '.wav' = 'ff79c6' 414 | '.aac' = 'ff79c6' 415 | '.opus' = 'ff79c6' 416 | 417 | # Images 418 | '.png' = '6272a4' 419 | '.jpeg' = '6272a4' 420 | '.jpg' = '6272a4' 421 | '.gif' = '6272a4' 422 | '.ico' = '6272a4' 423 | '.tif' = '6272a4' 424 | '.tiff' = '6272a4' 425 | '.psd' = '6272a4' 426 | '.psb' = '6272a4' 427 | '.ami' = '6272a4' 428 | '.apx' = '6272a4' 429 | '.bmp' = '6272a4' 430 | '.bpg' = '6272a4' 431 | '.brk' = '6272a4' 432 | '.cur' = '6272a4' 433 | '.dds' = '6272a4' 434 | '.dng' = '6272a4' 435 | '.eps' = '6272a4' 436 | '.exr' = '6272a4' 437 | '.fpx' = '6272a4' 438 | '.gbr' = '6272a4' 439 | '.jbig2' = '6272a4' 440 | '.jb2' = '6272a4' 441 | '.jng' = '6272a4' 442 | '.jxr' = '6272a4' 443 | '.pbm' = '6272a4' 444 | '.pgf' = '6272a4' 445 | '.pic' = '6272a4' 446 | '.raw' = '6272a4' 447 | '.webp' = '6272a4' 448 | '.svg' = 'ffb86c' 449 | 450 | # Video 451 | '.webm' = 'ffb86c' 452 | '.mkv' = 'ffb86c' 453 | '.flv' = 'ffb86c' 454 | '.vob' = 'ffb86c' 455 | '.ogv' = 'ffb86c' 456 | '.ogg' = 'ffb86c' 457 | '.gifv' = 'ffb86c' 458 | '.avi' = 'ffb86c' 459 | '.mov' = 'ffb86c' 460 | '.qt' = 'ffb86c' 461 | '.wmv' = 'ffb86c' 462 | '.yuv' = 'ffb86c' 463 | '.rm' = 'ffb86c' 464 | '.rmvb' = 'ffb86c' 465 | '.mp4' = 'ffb86c' 466 | '.mpg' = 'ffb86c' 467 | '.mp2' = 'ffb86c' 468 | '.mpeg' = 'ffb86c' 469 | '.mpe' = 'ffb86c' 470 | '.mpv' = 'ffb86c' 471 | '.m2v' = 'ffb86c' 472 | 473 | # Email 474 | '.ics' = '8be9fd' 475 | 476 | # Certifactes 477 | '.cer' = 'ff5555' 478 | '.cert' = 'ff5555' 479 | '.crt' = 'ff5555' 480 | '.pfx' = 'ff5555' 481 | 482 | # Keys 483 | '.pem' = '8be9fd' 484 | '.pub' = '8be9fd' 485 | '.key' = '8be9fd' 486 | '.asc' = '8be9fd' 487 | '.gpg' = '8be9fd' 488 | 489 | # Fonts 490 | '.woff' = 'ff5555' 491 | '.woff2' = 'ff5555' 492 | '.ttf' = 'ff5555' 493 | '.eot' = 'ff5555' 494 | '.suit' = 'ff5555' 495 | '.otf' = 'ff5555' 496 | '.bmap' = 'ff5555' 497 | '.fnt' = 'ff5555' 498 | '.odttf' = 'ff5555' 499 | '.ttc' = 'ff5555' 500 | '.font' = 'ff5555' 501 | '.fonts' = 'ff5555' 502 | '.sui' = 'ff5555' 503 | '.ntf' = 'ff5555' 504 | '.mrg' = 'ff5555' 505 | 506 | # Ruby 507 | '.rb' = 'ff5555' 508 | '.erb' = 'ff5555' 509 | '.gemfile' = 'ff5555' 510 | 'Rakefile' = 'ff5555' 511 | 512 | # FSharp 513 | '.fs' = '8be9fd' 514 | '.fsx' = '8be9fd' 515 | '.fsi' = '8be9fd' 516 | '.fsproj' = '8be9fd' 517 | 518 | # Docker 519 | '.dockerignore' = '6272a4' 520 | '.dockerfile' = '6272a4' 521 | 522 | 523 | # VSCode 524 | '.vscodeignore' = '6272a4' 525 | '.vsixmanifest' = '6272a4' 526 | '.vsix' = '6272a4' 527 | '.code-workplace' = '6272a4' 528 | 529 | # Sublime 530 | '.sublime-project' = 'ffb86c' 531 | '.sublime-workspace' = 'ffb86c' 532 | 533 | '.lock' = 'ffb86c' 534 | 535 | # Terraform 536 | '.tf' = '6272a4' 537 | '.tfvars' = '6272a4' 538 | '.auto.tfvars' = '6272a4' 539 | 540 | # Bicep 541 | '.bicep' = '8be9fd' 542 | 543 | # Disk Image 544 | '.vmdk' = 'f8f8f2' 545 | '.vhd' = 'f8f8f2' 546 | '.vhdx' = 'f8f8f2' 547 | '.img' = 'f8f8f2' 548 | '.iso' = 'f8f8f2' 549 | 550 | # R language 551 | '.R' = '6272a4' 552 | '.Rmd' = '6272a4' 553 | '.Rproj' = '6272a4' 554 | 555 | # Julia language 556 | '.jl' = '9259a3' 557 | 558 | # Vim 559 | '.vim' = '50fa7b' 560 | 561 | # Puppet 562 | '.pp' = 'ffb86c' 563 | '.epp' = 'ffb86c' 564 | 565 | # Scala 566 | '.scala' = 'ff5555' 567 | '.sc' = 'ff5555' 568 | '.sbt' = 'ff5555' 569 | 570 | # Autodesk Inventor 571 | '.iLogicVb' = 'ff5555' 572 | 573 | '.svelte' = 'ff5555' 574 | } 575 | } 576 | } 577 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/Add-Theme.ps1: -------------------------------------------------------------------------------- 1 | function Add-Theme { 2 | [cmdletbinding(DefaultParameterSetName = 'Path', SupportsShouldProcess)] 3 | param( 4 | [Parameter( 5 | Mandatory, 6 | ParameterSetName = 'Path', 7 | Position = 0, 8 | ValueFromPipeline, 9 | ValueFromPipelineByPropertyName 10 | )] 11 | [ValidateNotNullOrEmpty()] 12 | [SupportsWildcards()] 13 | [string[]]$Path, 14 | 15 | [Parameter( 16 | Mandatory, 17 | ParameterSetName = 'LiteralPath', 18 | Position = 0, 19 | ValueFromPipelineByPropertyName 20 | )] 21 | [ValidateNotNullOrEmpty()] 22 | [Alias('PSPath')] 23 | [string[]]$LiteralPath, 24 | 25 | [switch]$Force, 26 | 27 | [ValidateSet('Color', 'Icon')] 28 | [Parameter(Mandatory)] 29 | [string]$Type 30 | ) 31 | 32 | process { 33 | # Resolve path(s) 34 | if ($PSCmdlet.ParameterSetName -eq 'Path') { 35 | $paths = Resolve-Path -Path $Path | Select-Object -ExpandProperty Path 36 | } elseif ($PSCmdlet.ParameterSetName -eq 'LiteralPath') { 37 | $paths = Resolve-Path -LiteralPath $LiteralPath | Select-Object -ExpandProperty Path 38 | } 39 | 40 | foreach ($resolvedPath in $paths) { 41 | if (Test-Path $resolvedPath) { 42 | $item = Get-Item -LiteralPath $resolvedPath 43 | 44 | $statusMsg = "Adding $($type.ToLower()) theme [$($item.BaseName)]" 45 | $confirmMsg = "Are you sure you want to add file [$resolvedPath]?" 46 | $operation = "Add $($Type.ToLower())" 47 | if ($PSCmdlet.ShouldProcess($statusMsg, $confirmMsg, $operation) -or $Force.IsPresent) { 48 | if (-not $script:userThemeData.Themes.$Type.ContainsKey($item.BaseName) -or $Force.IsPresent) { 49 | 50 | $theme = Import-PowerShellDataFile $item.FullName 51 | 52 | # Convert color theme into escape sequences for lookup later 53 | if ($Type -eq 'Color') { 54 | # Add empty color theme 55 | if (-not $script:colorSequences.ContainsKey($theme.Name)) { 56 | $script:colorSequences[$theme.Name] = New-EmptyColorTheme 57 | } 58 | 59 | # Directories 60 | $theme.Types.Directories.WellKnown.GetEnumerator().ForEach({ 61 | $script:colorSequences[$theme.Name].Types.Directories[$_.Name] = ConvertFrom-RGBColor -RGB $_.Value 62 | }) 63 | # Wellknown files 64 | $theme.Types.Files.WellKnown.GetEnumerator().ForEach({ 65 | $script:colorSequences[$theme.Name].Types.Files.WellKnown[$_.Name] = ConvertFrom-RGBColor -RGB $_.Value 66 | }) 67 | # File extensions 68 | $theme.Types.Files.GetEnumerator().Where({$_.Name -ne 'WellKnown'}).ForEach({ 69 | $script:colorSequences[$theme.Name].Types.Files[$_.Name] = ConvertFrom-RGBColor -RGB $_.Value 70 | }) 71 | } 72 | 73 | $script:userThemeData.Themes.$Type[$theme.Name] = $theme 74 | Save-Theme -Theme $theme -Type $Type 75 | } else { 76 | Write-Error "$Type theme [$($theme.Name)] already exists. Use the -Force switch to overwrite." 77 | } 78 | } 79 | } else { 80 | Write-Error "Path [$resolvedPath] is not valid." 81 | } 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/ConvertFrom-ColorEscapeSequence.ps1: -------------------------------------------------------------------------------- 1 | function ConvertFrom-ColorEscapeSequence { 2 | [OutputType([string])] 3 | [CmdletBinding()] 4 | param( 5 | [Parameter(Mandatory, ValueFromPipeline)] 6 | [ValidateNotNullOrEmpty()] 7 | [string]$Sequence 8 | ) 9 | 10 | process { 11 | # Example input sequence: 'e[38;2;135;206;250m' 12 | $arr = $Sequence.Split(';') 13 | $r = '{0:x}' -f [int]$arr[2] 14 | $g = '{0:x}' -f [int]$arr[3] 15 | $b = '{0:x}' -f [int]$arr[4].TrimEnd('m') 16 | 17 | ($r + $g + $b).ToUpper() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/ConvertFrom-RGBColor.ps1: -------------------------------------------------------------------------------- 1 | function ConvertFrom-RGBColor { 2 | [OutputType([string])] 3 | [CmdletBinding()] 4 | param( 5 | [Parameter(Mandatory, ValueFromPipeline)] 6 | [ValidateNotNullOrEmpty()] 7 | [string]$RGB 8 | ) 9 | 10 | process { 11 | $RGB = $RGB.Replace('#', '') 12 | $r = [convert]::ToInt32($RGB.SubString(0,2), 16) 13 | $g = [convert]::ToInt32($RGB.SubString(2,2), 16) 14 | $b = [convert]::ToInt32($RGB.SubString(4,2), 16) 15 | 16 | "${script:escape}[38;2;$r;$g;$b`m" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/ConvertTo-ColorSequence.ps1: -------------------------------------------------------------------------------- 1 | function ConvertTo-ColorSequence { 2 | [cmdletbinding()] 3 | param( 4 | [parameter(Mandatory, ValueFromPipeline)] 5 | [hashtable]$ColorData 6 | ) 7 | 8 | process { 9 | $cs = New-EmptyColorTheme 10 | $cs.Name = $ColorData.Name 11 | 12 | # Directories 13 | if ($ColorData.Types.Directories['symlink']) { 14 | $cs.Types.Directories['symlink'] = ConvertFrom-RGBColor -RGB $ColorData.Types.Directories['symlink'] 15 | } 16 | if ($ColorData.Types.Directories['junction']) { 17 | $cs.Types.Directories['junction'] = ConvertFrom-RGBColor -RGB $ColorData.Types.Directories['junction'] 18 | } 19 | $ColorData.Types.Directories.WellKnown.GetEnumerator().ForEach({ 20 | $cs.Types.Directories[$_.Name] = ConvertFrom-RGBColor -RGB $_.Value 21 | }) 22 | 23 | # Wellknown files 24 | if ($ColorData.Types.Files['symlink']) { 25 | $cs.Types.Files['symlink'] = ConvertFrom-RGBColor -RGB $ColorData.Types.Files['symlink'] 26 | } 27 | if ($ColorData.Types.Files['junction']) { 28 | $cs.Types.Files['junction'] = ConvertFrom-RGBColor -RGB $ColorData.Types.Files['junction'] 29 | } 30 | $ColorData.Types.Files.WellKnown.GetEnumerator().ForEach({ 31 | $cs.Types.Files.WellKnown[$_.Name] = ConvertFrom-RGBColor -RGB $_.Value 32 | }) 33 | 34 | # File extensions 35 | $ColorData.Types.Files.GetEnumerator().Where({$_.Name -ne 'WellKnown' -and $_.Name -ne ''}).ForEach({ 36 | $cs.Types.Files[$_.Name] = ConvertFrom-RGBColor -RGB $_.Value 37 | }) 38 | 39 | $cs 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/Get-ThemeStoragePath.ps1: -------------------------------------------------------------------------------- 1 | function Get-ThemeStoragePath { 2 | [OutputType([string])] 3 | [CmdletBinding()] 4 | param() 5 | 6 | if ($IsLinux -or $IsMacOs) { 7 | if (-not ($basePath = $env:XDG_CONFIG_HOME)) { 8 | $basePath = [IO.Path]::Combine($HOME, '.local', 'share') 9 | } 10 | } else { 11 | if (-not ($basePath = $env:APPDATA)) { 12 | $basePath = [Environment]::GetFolderPath('ApplicationData') 13 | } 14 | } 15 | 16 | if ($basePath) { 17 | $storagePath = [IO.Path]::Combine($basePath, 'powershell', 'Community', 'Terminal-Icons') 18 | if (-not (Test-Path $storagePath)) { 19 | New-Item -Path $storagePath -ItemType Directory -Force > $null 20 | } 21 | $storagePath 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/Import-ColorTheme.ps1: -------------------------------------------------------------------------------- 1 | function Import-ColorTheme { 2 | [OutputType([hashtable])] 3 | [cmdletbinding()] 4 | param() 5 | 6 | $hash = @{} 7 | (Get-ChildItem -Path $moduleRoot/Data/colorThemes).ForEach({ 8 | $colorData = Import-PowerShellDataFile $_.FullName 9 | $hash[$colorData.Name] = $colorData 10 | $hash[$colorData.Name].Types.Directories[''] = $colorReset 11 | $hash[$colorData.Name].Types.Files[''] = $colorReset 12 | }) 13 | $hash 14 | } 15 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/Import-IconTheme.ps1: -------------------------------------------------------------------------------- 1 | function Import-IconTheme { 2 | [OutputType([hashtable])] 3 | [cmdletbinding()] 4 | param() 5 | 6 | $hash = @{} 7 | (Get-ChildItem -Path $moduleRoot/Data/iconThemes).ForEach({ 8 | $hash.Add($_.Basename, (Import-PowerShellDataFile $_.FullName)) 9 | }) 10 | $hash 11 | } 12 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/Import-Preferences.ps1: -------------------------------------------------------------------------------- 1 | function Import-Preferences { 2 | [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] 3 | [OutputType([hashtable])] 4 | [cmdletbinding()] 5 | param( 6 | [parameter(ValueFromPipeline)] 7 | [string]$Path = (Join-Path (Get-ThemeStoragePath) 'prefs.xml'), 8 | 9 | [string]$DefaultThemeName = $script:defaultTheme 10 | ) 11 | 12 | begin { 13 | $defaultPrefs = @{ 14 | CurrentColorTheme = $DefaultThemeName 15 | CurrentIconTheme = $DefaultThemeName 16 | } 17 | } 18 | 19 | process { 20 | if (Test-Path $Path) { 21 | try { 22 | Import-Clixml -Path $Path -ErrorAction Stop 23 | } catch { 24 | Write-Warning "Unable to parse [$Path]. Setting default preferences." 25 | $defaultPrefs 26 | } 27 | } else { 28 | $defaultPrefs 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/New-EmptyColorTheme.ps1: -------------------------------------------------------------------------------- 1 | function New-EmptyColorTheme { 2 | [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] 3 | [OutputType([hashtable])] 4 | [cmdletbinding()] 5 | param() 6 | 7 | @{ 8 | Name = '' 9 | Types = @{ 10 | Directories = @{ 11 | #'' = "`e[0m" 12 | symlink = '' 13 | junction = '' 14 | WellKnown = @{} 15 | } 16 | Files = @{ 17 | #'' = "`e[0m" 18 | symlink = '' 19 | junction = '' 20 | WellKnown = @{} 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/Resolve-Icon.ps1: -------------------------------------------------------------------------------- 1 | function Resolve-Icon { 2 | [OutputType([hashtable])] 3 | [CmdletBinding()] 4 | param( 5 | [Parameter(Mandatory, ValueFromPipeline)] 6 | [IO.FileSystemInfo]$FileInfo, 7 | 8 | [string]$IconTheme = $script:userThemeData.CurrentIconTheme, 9 | 10 | [string]$ColorTheme = $script:userThemeData.CurrentColorTheme 11 | ) 12 | 13 | begin { 14 | $icons = $script:userThemeData.Themes.Icon[$IconTheme] 15 | $colors = $script:colorSequences[$ColorTheme] 16 | } 17 | 18 | process { 19 | $displayInfo = @{ 20 | Icon = $null 21 | Color = $null 22 | Target = '' 23 | } 24 | 25 | if ($FileInfo.PSIsContainer) { 26 | $type = 'Directories' 27 | } else { 28 | $type = 'Files' 29 | } 30 | 31 | switch ($FileInfo.LinkType) { 32 | # Determine symlink or junction icon and color 33 | 'Junction' { 34 | if ($icons) { 35 | $iconName = $icons.Types.($type)['junction'] 36 | } else { 37 | $iconName = $null 38 | } 39 | if ($colors) { 40 | $colorSeq = $colors.Types.($type)['junction'] 41 | } else { 42 | $colorSet = $script:colorReset 43 | } 44 | $displayInfo['Target'] = ' ' + $glyphs['nf-md-arrow_right_thick'] + ' ' + $FileInfo.Target 45 | break 46 | } 47 | 'SymbolicLink' { 48 | if ($icons) { 49 | $iconName = $icons.Types.($type)['symlink'] 50 | } else { 51 | $iconName = $null 52 | } 53 | if ($colors) { 54 | $colorSeq = $colors.Types.($type)['symlink'] 55 | } else { 56 | $colorSet = $script:colorReset 57 | } 58 | $displayInfo['Target'] = ' ' + $glyphs['nf-md-arrow_right_thick'] + ' ' + $FileInfo.Target 59 | break 60 | } default { 61 | if ($icons) { 62 | # Determine normal directory icon and color 63 | $iconName = $icons.Types.$type.WellKnown[$FileInfo.Name] 64 | if (-not $iconName) { 65 | if ($FileInfo.PSIsContainer) { 66 | $iconName = $icons.Types.$type[$FileInfo.Name] 67 | } elseif ($icons.Types.$type.ContainsKey($FileInfo.Extension)) { 68 | $iconName = $icons.Types.$type[$FileInfo.Extension] 69 | } else { 70 | # File probably has multiple extensions 71 | # Fallback to computing the full extension 72 | $firstDot = $FileInfo.Name.IndexOf('.') 73 | if ($firstDot -ne -1) { 74 | $fullExtension = $FileInfo.Name.Substring($firstDot) 75 | $iconName = $icons.Types.$type[$fullExtension] 76 | } 77 | } 78 | if (-not $iconName) { 79 | $iconName = $icons.Types.$type[''] 80 | } 81 | 82 | # Fallback if everything has gone horribly wrong 83 | if (-not $iconName) { 84 | if ($FileInfo.PSIsContainer) { 85 | $iconName = 'nf-oct-file_directory' 86 | } else { 87 | $iconName = 'nf-fa-file' 88 | } 89 | } 90 | } 91 | } else { 92 | $iconName = $null 93 | } 94 | if ($colors) { 95 | $colorSeq = $colors.Types.$type.WellKnown[$FileInfo.Name] 96 | if (-not $colorSeq) { 97 | if ($FileInfo.PSIsContainer) { 98 | $colorSeq = $colors.Types.$type[$FileInfo.Name] 99 | } elseif ($colors.Types.$type.ContainsKey($FileInfo.Extension)) { 100 | $colorSeq = $colors.Types.$type[$FileInfo.Extension] 101 | } else { 102 | # File probably has multiple extensions 103 | # Fallback to computing the full extension 104 | $firstDot = $FileInfo.Name.IndexOf('.') 105 | if ($firstDot -ne -1) { 106 | $fullExtension = $FileInfo.Name.Substring($firstDot) 107 | $colorSeq = $colors.Types.$type[$fullExtension] 108 | } 109 | } 110 | if (-not $colorSeq) { 111 | $colorSeq = $colors.Types.$type[''] 112 | } 113 | 114 | # Fallback if everything has gone horribly wrong 115 | if (-not $colorSeq) { 116 | $colorSeq = $script:colorReset 117 | } 118 | } 119 | } else { 120 | $colorSeq = $script:colorReset 121 | } 122 | } 123 | } 124 | if ($iconName) { 125 | $displayInfo['Icon'] = $glyphs[$iconName] 126 | } else { 127 | $displayInfo['Icon'] = $null 128 | } 129 | $displayInfo['Color'] = $colorSeq 130 | $displayInfo 131 | } 132 | } 133 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/Save-Preferences.ps1: -------------------------------------------------------------------------------- 1 | function Save-Preferences { 2 | [cmdletbinding()] 3 | param( 4 | [parameter(Mandatory, ValueFromPipeline)] 5 | [hashtable]$Preferences, 6 | 7 | [string]$Path = (Join-Path (Get-ThemeStoragePath) 'prefs.xml') 8 | ) 9 | 10 | process { 11 | Write-Debug ('Saving preferendces to [{0}]' -f $Path) 12 | $Preferences | Export-CliXml -Path $Path -Force 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/Save-Theme.ps1: -------------------------------------------------------------------------------- 1 | function Save-Theme { 2 | [CmdletBinding()] 3 | param( 4 | [Parameter(Mandatory, ValueFromPipeline)] 5 | [hashtable]$Theme, 6 | 7 | [ValidateSet('color', 'icon')] 8 | [string]$Type, 9 | 10 | [string]$Path = (Get-ThemeStoragePath) 11 | ) 12 | 13 | process { 14 | $themePath = Join-Path $Path "$($Theme.Name)_$($Type.ToLower()).xml" 15 | Write-Debug ('Saving [{0}] theme [{1}] to [{2}]' -f $type, $theme.Name, $themePath) 16 | $Theme | Export-CliXml -Path $themePath -Force 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Terminal-Icons/Private/Set-Theme.ps1: -------------------------------------------------------------------------------- 1 | function Set-Theme { 2 | [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] 3 | [CmdletBinding()] 4 | param( 5 | [Parameter(Mandatory)] 6 | [AllowNull()] 7 | [AllowEmptyString()] 8 | [string]$Name, 9 | 10 | [ValidateSet('Color', 'Icon')] 11 | [Parameter(Mandatory)] 12 | [string]$Type 13 | ) 14 | 15 | if ([string]::IsNullOrEmpty($Name)) { 16 | $script:userThemeData."Current$($Type)Theme" = $null 17 | $script:prefs."Current$($Type)Theme" = '' 18 | Save-Preferences $script:prefs 19 | } else { 20 | if (-not $script:userThemeData.Themes.$Type.ContainsKey($Name)) { 21 | Write-Error "$Type theme [$Name] not found." 22 | } else { 23 | $script:userThemeData."Current$($Type)Theme" = $Name 24 | $script:prefs."Current$($Type)Theme" = $Name 25 | Save-Theme -Theme $userThemeData.Themes.$Type[$Name] -Type $type 26 | Save-Preferences $script:prefs 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Terminal-Icons/Public/Add-TerminalIconsColorTheme.ps1: -------------------------------------------------------------------------------- 1 | function Add-TerminalIconsColorTheme { 2 | <# 3 | .SYNOPSIS 4 | Add a Terminal-Icons color theme for the current user. 5 | .DESCRIPTION 6 | Add a Terminal-Icons color theme for the current user. The theme data 7 | is stored in the user's profile 8 | .PARAMETER Path 9 | The path to the Terminal-Icons color theme file. 10 | .PARAMETER LiteralPath 11 | The literal path to the Terminal-Icons color theme file. 12 | .PARAMETER Force 13 | Overwrite the color theme if it already exists in the profile. 14 | .EXAMPLE 15 | PS> Add-TerminalIconsColorTheme -Path ./my_color_theme.psd1 16 | 17 | Add the color theme contained in ./my_color_theme.psd1. 18 | .EXAMPLE 19 | PS> Get-ChildItem ./path/to/colorthemes | Add-TerminalIconsColorTheme -Force 20 | 21 | Add all color themes contained in the folder ./path/to/colorthemes and add them, 22 | overwriting existing ones if needed. 23 | .INPUTS 24 | System.String 25 | 26 | You can pipe a string that contains a path to 'Add-TerminalIconsColorTheme'. 27 | .OUTPUTS 28 | None. 29 | .NOTES 30 | 'Add-TerminalIconsColorTheme' will not overwrite an existing theme by default. 31 | Add the -Force switch to overwrite. 32 | .LINK 33 | Add-TerminalIconsIconTheme 34 | #> 35 | [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '', Justification='Implemented in private function')] 36 | [CmdletBinding(DefaultParameterSetName = 'Path', SupportsShouldProcess)] 37 | param( 38 | [Parameter( 39 | Mandatory, 40 | ParameterSetName = 'Path', 41 | Position = 0, 42 | ValueFromPipeline, 43 | ValueFromPipelineByPropertyName 44 | )] 45 | [ValidateNotNullOrEmpty()] 46 | [SupportsWildcards()] 47 | [string[]]$Path, 48 | 49 | [Parameter( 50 | Mandatory, 51 | ParameterSetName = 'LiteralPath', 52 | Position = 0, 53 | ValueFromPipelineByPropertyName 54 | )] 55 | [ValidateNotNullOrEmpty()] 56 | [Alias('PSPath')] 57 | [string[]]$LiteralPath, 58 | 59 | [switch]$Force 60 | ) 61 | 62 | process { 63 | Add-Theme @PSBoundParameters -Type Color 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Terminal-Icons/Public/Add-TerminalIconsIconTheme.ps1: -------------------------------------------------------------------------------- 1 | function Add-TerminalIconsIconTheme { 2 | <# 3 | .SYNOPSIS 4 | Add a Terminal-Icons icon theme for the current user. 5 | .DESCRIPTION 6 | Add a Terminal-Icons icon theme for the current user. The theme data 7 | is stored in the user's profile 8 | .PARAMETER Path 9 | The path to the Terminal-Icons icon theme file. 10 | .PARAMETER LiteralPath 11 | The literal path to the Terminal-Icons icon theme file. 12 | .PARAMETER Force 13 | Overwrite the icon theme if it already exists in the profile. 14 | .EXAMPLE 15 | PS> Add-Terminal-IconsIconTHeme -Path ./my_icon_theme.psd1 16 | 17 | Add the icon theme contained in ./my_icon_theme.psd1. 18 | .EXAMPLE 19 | PS> Get-ChildItem ./path/to/iconthemes | Add-TerminalIconsIconTheme -Force 20 | 21 | Add all icon themes contained in the folder ./path/to/iconthemes and add them, 22 | overwriting existing ones if needed. 23 | .INPUTS 24 | System.String 25 | 26 | You can pipe a string that contains a path to 'Add-TerminalIconsIconTheme'. 27 | .OUTPUTS 28 | None. 29 | .NOTES 30 | 'Add-TerminalIconsIconTheme' will not overwrite an existing theme by default. 31 | Add the -Force switch to overwrite. 32 | .LINK 33 | Add-TerminalIconsColorTheme 34 | #> 35 | [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '', Justification='Implemented in private function')] 36 | [CmdletBinding(DefaultParameterSetName = 'Path', SupportsShouldProcess)] 37 | param( 38 | [Parameter( 39 | Mandatory, 40 | ParameterSetName = 'Path', 41 | Position = 0, 42 | ValueFromPipeline, 43 | ValueFromPipelineByPropertyName 44 | )] 45 | [ValidateNotNullOrEmpty()] 46 | [SupportsWildcards()] 47 | [string[]]$Path, 48 | 49 | [Parameter( 50 | Mandatory, 51 | ParameterSetName = 'LiteralPath', 52 | Position = 0, 53 | ValueFromPipelineByPropertyName 54 | )] 55 | [ValidateNotNullOrEmpty()] 56 | [Alias('PSPath')] 57 | [string[]]$LiteralPath, 58 | 59 | [switch]$Force 60 | ) 61 | 62 | process { 63 | Add-Theme @PSBoundParameters -Type Icon 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Terminal-Icons/Public/Format-TerminalIcons.ps1: -------------------------------------------------------------------------------- 1 | function Format-TerminalIcons { 2 | <# 3 | .SYNOPSIS 4 | Prepend a custom icon (with color) to the provided file or folder object when displayed. 5 | .DESCRIPTION 6 | Take the provided file or folder object and look up the appropriate icon and color to display. 7 | .PARAMETER FileInfo 8 | The file or folder to display 9 | .EXAMPLE 10 | Get-ChildItem 11 | 12 | List a directory. Terminal-Icons will be invoked automatically for display. 13 | .EXAMPLE 14 | Get-Item ./README.md | Format-TerminalIcons 15 | 16 | Get a file object and pass directly to Format-TerminalIcons. 17 | .INPUTS 18 | System.IO.FileSystemInfo 19 | 20 | You can pipe an objects that derive from System.IO.FileSystemInfo (System.IO.DIrectoryInfo and System.IO.FileInfo) to 'Format-TerminalIcons'. 21 | .OUTPUTS 22 | System.String 23 | 24 | Outputs a colorized string with an icon prepended. 25 | #> 26 | [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] 27 | [OutputType([string])] 28 | [CmdletBinding()] 29 | param( 30 | [Parameter(Mandatory, ValueFromPipeline)] 31 | [IO.FileSystemInfo]$FileInfo 32 | ) 33 | 34 | process { 35 | $displayInfo = Resolve-Icon $FileInfo 36 | if ($displayInfo.Icon) { 37 | "$($displayInfo.Color)$($displayInfo.Icon) $($FileInfo.Name)$($displayInfo.Target)$($script:colorReset)" 38 | } else { 39 | "$($displayInfo.Color)$($FileInfo.Name)$($displayInfo.Target)$($script:colorReset)" 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Terminal-Icons/Public/Get-TerminalIconsColorTheme.ps1: -------------------------------------------------------------------------------- 1 | function Get-TerminalIconsColorTheme { 2 | <# 3 | .SYNOPSIS 4 | List the available color themes. 5 | .DESCRIPTION 6 | List the available color themes. 7 | .Example 8 | PS> Get-TerminalIconsColorTheme 9 | 10 | Get the list of available color themes. 11 | .INPUTS 12 | None. 13 | .OUTPUTS 14 | System.Collections.Hashtable 15 | 16 | An array of hashtables representing available color themes. 17 | .LINK 18 | Get-TerminalIconsIconTheme 19 | .LINK 20 | Get-TerminalIconsTheme 21 | #> 22 | $script:userThemeData.Themes.Color 23 | } 24 | -------------------------------------------------------------------------------- /Terminal-Icons/Public/Get-TerminalIconsGlyphs.ps1: -------------------------------------------------------------------------------- 1 | function Get-TerminalIconsGlyphs { 2 | <# 3 | .SYNOPSIS 4 | Gets the list of glyphs known to Terminal-Icons. 5 | .DESCRIPTION 6 | Gets a hashtable with the available glyph names and icons. Useful in creating a custom theme. 7 | .EXAMPLE 8 | PS> Get-TerminalIconsGlyphs 9 | 10 | Gets the table of glyph names and icons. 11 | .INPUTS 12 | None. 13 | .OUTPUTS 14 | None. 15 | .LINK 16 | Get-TerminalIconsIconTheme 17 | .LINK 18 | Set-TerminalIconsIcon 19 | #> 20 | [cmdletbinding()] 21 | param() 22 | 23 | # This is also helpful for argument completers needing glyphs - 24 | # ArgumentCompleterAttribute isn't able to access script variables but it 25 | # CAN call commands. 26 | $script:glyphs.GetEnumerator() | Sort-Object Name 27 | } 28 | -------------------------------------------------------------------------------- /Terminal-Icons/Public/Get-TerminalIconsIconTheme.ps1: -------------------------------------------------------------------------------- 1 | function Get-TerminalIconsIconTheme { 2 | <# 3 | .SYNOPSIS 4 | List the available icon themes. 5 | .DESCRIPTION 6 | List the available icon themes. 7 | .Example 8 | PS> Get-TerminalIconsIconTheme 9 | 10 | Get the list of available icon themes. 11 | .INPUTS 12 | None. 13 | .OUTPUTS 14 | System.Collections.Hashtable 15 | 16 | An array of hashtables representing available icon themes. 17 | .LINK 18 | Get-TerminalIconsColorTheme 19 | .LINK 20 | Get-TerminalIconsTheme 21 | #> 22 | $script:userThemeData.Themes.Icon 23 | } 24 | -------------------------------------------------------------------------------- /Terminal-Icons/Public/Get-TerminalIconsTheme.ps1: -------------------------------------------------------------------------------- 1 | function Get-TerminalIconsTheme { 2 | <# 3 | .SYNOPSIS 4 | Get the currently applied color and icon theme. 5 | .DESCRIPTION 6 | Get the currently applied color and icon theme. 7 | .EXAMPLE 8 | PS> Get-TerminalIconsTheme 9 | 10 | Get the currently applied Terminal-Icons color and icon theme. 11 | .INPUTS 12 | None. 13 | .OUTPUTS 14 | System.Management.Automation.PSCustomObject 15 | 16 | An object representing the currently applied color and icon theme. 17 | .LINK 18 | Get-TerminalIconsColorTheme 19 | .LINK 20 | Get-TerminalIconsIconTheme 21 | #> 22 | [CmdletBinding()] 23 | param() 24 | 25 | $iconTheme = if ($script:userThemeData.CurrentIconTheme) { 26 | [pscustomobject]$script:userThemeData.Themes.Icon[$script:userThemeData.CurrentIconTheme] 27 | } else { 28 | $null 29 | } 30 | 31 | $colorTheme = if ($script:userThemeData.CurrentColorTheme) { 32 | [pscustomobject]$script:userThemeData.Themes.Color[$script:userThemeData.CurrentColorTheme] 33 | } else { 34 | $null 35 | } 36 | 37 | [pscustomobject]@{ 38 | PSTypeName = 'TerminalIconsTheme' 39 | Color = $colorTheme 40 | Icon = $iconTheme 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Terminal-Icons/Public/Remove-TerminalIconsTheme.ps1: -------------------------------------------------------------------------------- 1 | function Remove-TerminalIconsTheme { 2 | <# 3 | .SYNOPSIS 4 | Removes a color or icon theme 5 | .DESCRIPTION 6 | Removes a given icon or color theme. In order to be removed, a theme must not be active. 7 | .PARAMETER IconTheme 8 | The icon theme to remove. 9 | .PARAMETER ColorTheme 10 | The color theme to remove. 11 | .PARAMETER Force 12 | Bypass confirmation messages. 13 | .EXAMPLE 14 | PS> Remove-TerminalIconsTheme -IconTheme MyAwesomeTheme 15 | 16 | Removes the icon theme 'MyAwesomeTheme' 17 | .EXAMPLE 18 | PS> Remove-TerminalIconsTheme -ColorTheme MyAwesomeTheme 19 | 20 | Removes the color theme 'MyAwesomeTheme' 21 | .INPUTS 22 | System.String 23 | 24 | The name of the color or icon theme to remove. 25 | .OUTPUTS 26 | None. 27 | .LINK 28 | Set-TerminalIconsTheme 29 | .LINK 30 | Add-TerminalIconsColorTheme 31 | .LINK 32 | Add-TerminalIconsIconTheme 33 | .LINK 34 | Get-TerminalIconsTheme 35 | .NOTES 36 | A theme must not be active in order to be removed. 37 | #> 38 | [cmdletbinding(SupportsShouldProcess)] 39 | param( 40 | [ArgumentCompleter({ 41 | (Get-TerminalIconsIconTheme).Keys | Sort-Object 42 | })] 43 | [string]$IconTheme, 44 | 45 | [ArgumentCompleter({ 46 | (Get-TerminalIconsColorTheme).Keys | Sort-Object 47 | })] 48 | [string]$ColorTheme, 49 | 50 | [switch]$Force 51 | ) 52 | 53 | $currentTheme = Get-TerminalIconsTheme 54 | $themeStoragePath = Get-ThemeStoragePath 55 | 56 | if ($ColorTheme) { 57 | if ($currentTheme.Color.Name -ne $ColorTheme) { 58 | $themePath = Join-Path $themeStoragePath "$($ColorTheme)_color.xml" 59 | if (-not (Test-Path $themePath)) { 60 | Write-Error "Could not find theme file [$themePath]" 61 | } else { 62 | if ($Force -or $PSCmdlet.ShouldProcess($ColorTheme, 'Remove color theme')) { 63 | if ($userThemeData.Themes.Color.ContainsKey($ColorTheme)) { 64 | $userThemeData.Themes.Color.Remove($ColorTheme) 65 | } else { 66 | # We shouldn't be here 67 | Write-Error "Color theme [$ColorTheme] is not registered." 68 | } 69 | Remove-Item $themePath -Force 70 | } 71 | } 72 | } else { 73 | Write-Error ("Color theme [{0}] is active. Please select another theme before removing this it." -f $ColorTheme) 74 | } 75 | } 76 | 77 | if ($IconTheme) { 78 | if ($currentTheme.Icon.Name -ne $IconTheme) { 79 | $themePath = Join-Path $themeStoragePath "$($IconTheme)_icon.xml" 80 | if (-not (Test-Path $themePath)) { 81 | Write-Error "Could not find theme file [$themePath]" 82 | } else { 83 | if ($Force -or $PSCmdlet.ShouldProcess($ColorTheme, 'Remove icon theme')) { 84 | if ($userThemeData.Themes.Icon.ContainsKey($IconTheme)) { 85 | $userThemeData.Themes.Icon.Remove($IconTheme) 86 | } else { 87 | # We shouldn't be here 88 | Write-Error "Icon theme [$IconTheme] is not registered." 89 | } 90 | Remove-Item $themePath -Force 91 | } 92 | } 93 | } else { 94 | Write-Error ("Icon theme [{0}] is active. Please select another theme before removing this it." -f $IconTheme) 95 | } 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /Terminal-Icons/Public/Set-TerminalIconsIcon.ps1: -------------------------------------------------------------------------------- 1 | function Set-TerminalIconsIcon { 2 | <# 3 | .SYNOPSIS 4 | Set a specific icon in the current Terminal-Icons icon theme or allows 5 | swapping one glyph for another. 6 | .DESCRIPTION 7 | Set the Terminal-Icons icon for a specific file/directory or glyph to a 8 | named glyph. 9 | 10 | Also allows all uses of a specific glyph to be replaced with a different 11 | glyph. 12 | .PARAMETER Directory 13 | The well-known directory name to match for the icon. 14 | .PARAMETER FileName 15 | The well-known file name to match for the icon. 16 | .PARAMETER FileExtension 17 | The file extension to match for the icon. 18 | .PARAMETER NewGlyph 19 | The name of the new glyph to use when swapping. 20 | .PARAMETER Glyph 21 | The name of the glyph to use; or, when swapping glyphs, the name of the 22 | glyph you want to change. 23 | .PARAMETER Force 24 | Bypass confirmation messages. 25 | .EXAMPLE 26 | PS> Set-TerminalIconsIcon -FileName "README.md" -Glyph "nf-fa-file_text" 27 | 28 | Set README.md files to display a text file icon. 29 | .EXAMPLE 30 | PS> Set-TerminalIconsIcon -FileExtension ".xml" -Glyph "nf-md-xml" 31 | 32 | Set XML files to display an XML file icon. 33 | .EXAMPLE 34 | PS> Set-TerminalIconsIcon -Directory ".github" -Glyph "nf-dev-github_alt" 35 | 36 | Set directories named ".github" to display an Octocat face icon. 37 | .EXAMPLE 38 | PS> Set-TerminalIconsIcon -Glyph "nf-md-xml" -NewGlyph "nf-md-xml" 39 | 40 | Changes all uses of the "nf-md-xml" double-wide glyph to be the "nf-md-xml" 41 | single-width XML file glyph. 42 | .INPUTS 43 | None. 44 | 45 | The command does not accept pipeline input. 46 | .OUTPUTS 47 | None. 48 | .LINK 49 | Get-TerminalIconsIconTheme 50 | .LINK 51 | Get-TerminalIconsTheme 52 | .LINK 53 | Get-TerminalIconsGlyphs 54 | #> 55 | [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', Justification = "ArgumentCompleter parameters don't all get used.")] 56 | [cmdletbinding(SupportsShouldProcess, DefaultParameterSetName = "FileExtension")] 57 | param( 58 | [Parameter(ParameterSetName = "Directory", Mandatory)] 59 | [ArgumentCompleter( { 60 | param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) 61 | (Get-TerminalIconsIconTheme).Values.Types.Directories.WellKnown.Keys | Where-Object { $_ -like "$wordToComplete*" } | Sort-Object 62 | })] 63 | [ValidateNotNullOrEmpty()] 64 | [string]$Directory, 65 | 66 | [Parameter(ParameterSetName = "FileName", Mandatory)] 67 | [ArgumentCompleter( { 68 | param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) 69 | (Get-TerminalIconsIconTheme).Values.Types.Files.WellKnown.Keys | Where-Object { $_ -like "$wordToComplete*" } | Sort-Object 70 | })] 71 | [ValidateNotNullOrEmpty()] 72 | [string]$FileName, 73 | 74 | [Parameter(ParameterSetName = "FileExtension", Mandatory)] 75 | [ArgumentCompleter( { 76 | param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) 77 | (Get-TerminalIconsIconTheme).Values.Types.Files.Keys | Where-Object { $_.StartsWith(".") -and $_ -like "$wordToComplete*" } | Sort-Object 78 | })] 79 | [ValidatePattern("^\.")] 80 | [string]$FileExtension, 81 | 82 | [Parameter(ParameterSetName = "SwapGlyph", Mandatory)] 83 | [ArgumentCompleter( { 84 | param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) 85 | (Get-TerminalIconsGlyphs).Keys | Where-Object { $_ -like "*$wordToComplete*" } | Sort-Object 86 | })] 87 | [ValidateNotNullOrEmpty()] 88 | [string]$NewGlyph, 89 | 90 | [Parameter(Mandatory)] 91 | [ArgumentCompleter( { 92 | param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) 93 | (Get-TerminalIconsGlyphs).Keys | Where-Object { $_ -like "*$wordToComplete*" } | Sort-Object 94 | })] 95 | [ValidateNotNullOrEmpty()] 96 | [string]$Glyph, 97 | 98 | [switch]$Force 99 | ) 100 | 101 | If($PSCmdlet.ParameterSetName -eq "Directory") { 102 | If ($Force -or $PSCmdlet.ShouldProcess("$Directory = $Glyph", 'Set well-known directory icon')) { 103 | (Get-TerminalIconsIconTheme).Values.Types.Directories.WellKnown[$Directory] = $Glyph 104 | } 105 | } 106 | ElseIf ($PSCmdlet.ParameterSetName -eq "FileName") { 107 | If ($Force -or $PSCmdlet.ShouldProcess("$FileName = $Glyph", 'Set well-known file name icon')) { 108 | (Get-TerminalIconsIconTheme).Values.Types.Files.WellKnown[$FileName] = $Glyph 109 | } 110 | } 111 | ElseIf ($PSCmdlet.ParameterSetName -eq "FileExtension") { 112 | If ($Force -or $PSCmdlet.ShouldProcess("$FileExtension = $Glyph", 'Set file extension icon')) { 113 | (Get-TerminalIconsIconTheme).Values.Types.Files[$FileExtension] = $Glyph 114 | } 115 | } 116 | ElseIf ($PSCmdlet.ParameterSetName -eq "SwapGlyph") { 117 | If ($Force -or $PSCmdlet.ShouldProcess("$Glyph to $NewGlyph", 'Swap glyph usage')) { 118 | # Directories 119 | $toModify = (Get-TerminalIconsTheme).Icon.Types.Directories.WellKnown 120 | $keys = $toModify.Keys | Where-Object { $toModify[$_] -eq $Glyph } 121 | $keys | ForEach-Object { $toModify[$_] = $NewGlyph } 122 | 123 | # Files 124 | $toModify = (Get-TerminalIconsTheme).Icon.Types.Files.WellKnown 125 | $keys = $toModify.Keys | Where-Object { $toModify[$_] -eq $Glyph } 126 | $keys | ForEach-Object { $toModify[$_] = $NewGlyph } 127 | 128 | # Extensions 129 | $toModify = (Get-TerminalIconsTheme).Icon.Types.Files 130 | $keys = $toModify.Keys | Where-Object { $_.StartsWith(".") -and $toModify[$_] -eq $Glyph } 131 | $keys | ForEach-Object { $toModify[$_] = $NewGlyph } 132 | } 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /Terminal-Icons/Public/Set-TerminalIconsTheme.ps1: -------------------------------------------------------------------------------- 1 | function Set-TerminalIconsTheme { 2 | <# 3 | .SYNOPSIS 4 | Set the Terminal-Icons color or icon theme 5 | .DESCRIPTION 6 | Set the Terminal-Icons color or icon theme to the given name. 7 | .PARAMETER ColorTheme 8 | The name of a registered color theme to use. 9 | .PARAMETER IconTheme 10 | The name of a registered icon theme to use. 11 | .PARAMETER DisableColorTheme 12 | Disables custom colors and uses default terminal color. 13 | .PARAMETER DisableIconTheme 14 | Disables custom icons and shows only shows the directory or file name. 15 | .PARAMETER Force 16 | Bypass confirmation messages. 17 | .EXAMPLE 18 | PS> Set-TerminalIconsTheme -ColorTheme devblackops 19 | 20 | Set the color theme to 'devblackops'. 21 | .EXAMPLE 22 | PS> Set-TerminalIconsTheme -IconTheme devblackops 23 | 24 | Set the icon theme to 'devblackops'. 25 | .EXAMPLE 26 | PS> Set-TerminalIconsTheme -DisableIconTheme 27 | 28 | Disable Terminal-Icons custom icons and only show custom colors. 29 | .EXAMPLE 30 | PS> Set-TerminalIconsTheme -DisableColorTheme 31 | 32 | Disable Terminal-Icons custom colors and only show custom icons. 33 | .INPUTS 34 | System.String 35 | 36 | The name of the color or icon theme to use. 37 | .OUTPUTS 38 | None. 39 | .LINK 40 | Get-TerminalIconsColorTheme 41 | .LINK 42 | Get-TerminalIconsIconTheme 43 | .LINK 44 | Get-TerminalIconsTheme 45 | .NOTES 46 | This function supercedes Set-TerminalIconsColorTheme and Set-TerminalIconsIconTheme. They have been deprecated. 47 | #> 48 | [cmdletbinding(SupportsShouldProcess, DefaultParameterSetName = 'theme')] 49 | param( 50 | [Parameter(ParameterSetName = 'theme')] 51 | [ArgumentCompleter({ 52 | (Get-TerminalIconsIconTheme).Keys | Sort-Object 53 | })] 54 | [string]$IconTheme, 55 | 56 | [Parameter(ParameterSetName = 'theme')] 57 | [ArgumentCompleter({ 58 | (Get-TerminalIconsColorTheme).Keys | Sort-Object 59 | })] 60 | [string]$ColorTheme, 61 | 62 | [Parameter(ParameterSetName = 'notheme')] 63 | [switch]$DisableColorTheme, 64 | 65 | [Parameter(ParameterSetName = 'notheme')] 66 | [switch]$DisableIconTheme, 67 | 68 | [switch]$Force 69 | ) 70 | 71 | if ($DisableIconTheme.IsPresent) { 72 | Set-Theme -Name $null -Type Icon 73 | } 74 | 75 | if ($DisableColorTheme.IsPresent) { 76 | Set-Theme -Name $null -Type Color 77 | } 78 | 79 | if ($ColorTheme) { 80 | if ($Force -or $PSCmdlet.ShouldProcess($ColorTheme, 'Set color theme')) { 81 | Set-Theme -Name $ColorTheme -Type Color 82 | } 83 | } 84 | 85 | if ($IconTheme) { 86 | if ($Force -or $PSCmdlet.ShouldProcess($IconTheme, 'Set icon theme')) { 87 | Set-Theme -Name $IconTheme -Type Icon 88 | } 89 | } 90 | } 91 | 92 | -------------------------------------------------------------------------------- /Terminal-Icons/Public/Show-TerminalIconsTheme.ps1: -------------------------------------------------------------------------------- 1 | function Show-TerminalIconsTheme { 2 | <# 3 | .SYNOPSIS 4 | List example directories and files to show the currently applied color and icon themes. 5 | .DESCRIPTION 6 | List example directories and files to show the currently applied color and icon themes. 7 | The directory/file objects show are in memory only, they are not written to the filesystem. 8 | .PARAMETER ColorTheme 9 | The color theme to use for examples 10 | .PARAMETER IconTheme 11 | The icon theme to use for examples 12 | .EXAMPLE 13 | Show-TerminalIconsTheme 14 | 15 | List example directories and files to show the currently applied color and icon themes. 16 | .INPUTS 17 | None. 18 | .OUTPUTS 19 | System.IO.DirectoryInfo 20 | .OUTPUTS 21 | System.IO.FileInfo 22 | .NOTES 23 | Example directory and file objects only exist in memory. They are not written to the filesystem. 24 | .LINK 25 | Get-TerminalIconsColorTheme 26 | .LINK 27 | Get-TerminalIconsIconTheme 28 | .LINK 29 | Get-TerminalIconsTheme 30 | #> 31 | [CmdletBinding()] 32 | param() 33 | 34 | $theme = Get-TerminalIconsTheme 35 | 36 | # Use the default theme if the icon theme has been disabled 37 | if ($theme.Icon) { 38 | $themeName = $theme.Icon.Name 39 | } else { 40 | $themeName = $script:defaultTheme 41 | } 42 | 43 | $directories = @( 44 | [IO.DirectoryInfo]::new('ExampleFolder') 45 | $script:userThemeData.Themes.Icon[$themeName].Types.Directories.WellKnown.Keys.ForEach({ 46 | [IO.DirectoryInfo]::new($_) 47 | }) 48 | ) 49 | $wellKnownFiles = @( 50 | [IO.FileInfo]::new('ExampleFile') 51 | $script:userThemeData.Themes.Icon[$themeName].Types.Files.WellKnown.Keys.ForEach({ 52 | [IO.FileInfo]::new($_) 53 | }) 54 | ) 55 | 56 | $extensions = $script:userThemeData.Themes.Icon[$themeName].Types.Files.Keys.Where({$_ -ne 'WellKnown'}).ForEach({ 57 | [IO.FileInfo]::new("example$_") 58 | }) 59 | 60 | $directories + $wellKnownFiles + $extensions | Sort-Object | Format-TerminalIcons 61 | } 62 | -------------------------------------------------------------------------------- /Terminal-Icons/Terminal-Icons.format.ps1xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | FileSystemTypes 9 | 10 | System.IO.DirectoryInfo 11 | System.IO.FileInfo 12 | 13 | 14 | 15 | 16 | 17 | 18 | FileSystemTypes-GroupingFormat 19 | 20 | 21 | 22 | 23 | 24 | 4 25 | 26 | 27 | 28 | 29 | $_.PSParentPath.Replace("Microsoft.PowerShell.Core\FileSystem::", "") 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | children 45 | 46 | FileSystemTypes 47 | 48 | 49 | PSParentPath 50 | FileSystemTypes-GroupingFormat 51 | 52 | 53 | 54 | 55 | 56 | 7 57 | left 58 | 59 | 60 | 61 | 25 62 | right 63 | 64 | 65 | 66 | 14 67 | right 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | Mode 79 | 80 | 81 | 82 | [String]::Format('{0,10} {1,8}', $_.LastWriteTime.ToString('d'), $_.LastWriteTime.ToString('t')) 83 | 84 | 85 | 86 | Length 87 | 88 | 89 | 90 | Terminal-Icons\Format-TerminalIcons $_ 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | children 100 | 101 | FileSystemTypes 102 | 103 | 104 | PSParentPath 105 | FileSystemTypes-GroupingFormat 106 | 107 | 108 | 109 | 110 | 111 | System.IO.FileInfo 112 | 113 | 114 | 115 | 116 | 117 | Terminal-Icons\Format-TerminalIcons $_ 118 | 119 | 120 | 121 | Length 122 | 123 | 124 | CreationTime 125 | 126 | 127 | LastWriteTime 128 | 129 | 130 | LastAccessTime 131 | 132 | 133 | Mode 134 | 135 | 136 | LinkType 137 | 138 | 139 | 140 | 141 | Terminal-Icons\Format-TerminalIcons $_ 142 | 143 | 144 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | Terminal-Icons\Format-TerminalIcons $_ 155 | 156 | 157 | 158 | CreationTime 159 | 160 | 161 | LastWriteTime 162 | 163 | 164 | LastAccessTime 165 | 166 | 167 | Mode 168 | 169 | 170 | LinkType 171 | 172 | 173 | 174 | 175 | Terminal-Icons\Format-TerminalIcons $_ 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | children 185 | 186 | FileSystemTypes 187 | 188 | 189 | PSParentPath 190 | FileSystemTypes-GroupingFormat 191 | 192 | 193 | 194 | 195 | 196 | 197 | Terminal-Icons\Format-TerminalIcons $_ 198 | 199 | 200 | 201 | 202 | 203 | System.IO.DirectoryInfo 204 | 205 | 206 | 207 | Terminal-Icons\Format-TerminalIcons $_ 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | -------------------------------------------------------------------------------- /Terminal-Icons/Terminal-Icons.psd1: -------------------------------------------------------------------------------- 1 | @{ 2 | RootModule = 'Terminal-Icons.psm1' 3 | ModuleVersion = '0.12.0' 4 | GUID = '4419ddb6-3528-47cd-baf3-7fb9d8566620' 5 | Author = 'Brandon Olin' 6 | CompanyName = 'Community' 7 | Copyright = '(c) Brandon Olin. All rights reserved.' 8 | Description = 'PowerShell module to add file icons to terminal based on file extension' 9 | PowerShellVersion = '5.1' 10 | # PowerShellHostName = '' 11 | # PowerShellHostVersion = '' 12 | RequiredModules = @() 13 | FunctionsToExport = @() 14 | CmdletsToExport = @() 15 | VariablesToExport = @() 16 | AliasesToExport = @() 17 | PrivateData = @{ 18 | PSData = @{ 19 | Tags = @('Color', 'Terminal', 'Console', 'NerdFonts', 'Icon') 20 | LicenseUri = 'https://raw.githubusercontent.com/devblackops/Terminal-Icons/master/LICENSE' 21 | ProjectUri = 'https://github.com/devblackops/Terminal-Icons' 22 | IconUri = 'https://github.com/devblackops/Terminal-Icons/raw/master/media/icon_256.png' 23 | ReleaseNotes = 'https://raw.githubusercontent.com/devblackops/Terminal-Icons/master/CHANGELOG.md' 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Terminal-Icons/Terminal-Icons.psm1: -------------------------------------------------------------------------------- 1 | # Dot source public/private functions 2 | # $public = @(Get-ChildItem -Path ([IO.Path]::Combine($PSScriptRoot, 'Public/*.ps1')) -Recurse -ErrorAction Stop) 3 | # $private = @(Get-ChildItem -Path ([IO.Path]::Combine($PSScriptRoot, 'Private/*.ps1')) -Recurse -ErrorAction Stop) 4 | # @($public + $private).ForEach({ 5 | # try { 6 | # . $_.FullName 7 | # } catch { 8 | # throw $_ 9 | # $PSCmdlet.ThrowTerminatingError("Unable to dot source [$($import.FullName)]") 10 | # } 11 | # }) 12 | 13 | $moduleRoot = $PSScriptRoot 14 | $glyphs = . $moduleRoot/Data/glyphs.ps1 15 | $escape = [char]27 16 | $colorReset = "${escape}[0m" 17 | $defaultTheme = 'devblackops' 18 | $userThemePath = Get-ThemeStoragePath 19 | $userThemeData = @{ 20 | CurrentIconTheme = $null 21 | CurrentColorTheme = $null 22 | Themes = @{ 23 | Color = @{} 24 | Icon = @{} 25 | } 26 | } 27 | 28 | # Import builtin icon/color themes and convert colors to escape sequences 29 | $colorSequences = @{} 30 | $iconThemes = Import-IconTheme 31 | $colorThemes = Import-ColorTheme 32 | $colorThemes.GetEnumerator().ForEach({ 33 | $colorSequences[$_.Name] = ConvertTo-ColorSequence -ColorData $_.Value 34 | }) 35 | 36 | # Load or create default prefs 37 | $prefs = Import-Preferences 38 | 39 | # Set current theme 40 | $userThemeData.CurrentIconTheme = $prefs.CurrentIconTheme 41 | $userThemeData.CurrentColorTheme = $prefs.CurrentColorTheme 42 | 43 | # Load user icon and color themes 44 | # We're ignoring the old 'theme.xml' from Terimal-Icons v0.3.1 and earlier 45 | (Get-ChildItem $userThemePath -Filter '*_icon.xml').ForEach({ 46 | $userIconTheme = Import-CliXml -Path $_.FullName 47 | $userThemeData.Themes.Icon[$userIconTheme.Name] = $userIconTheme 48 | }) 49 | (Get-ChildItem $userThemePath -Filter '*_color.xml').ForEach({ 50 | $userColorTheme = Import-CliXml -Path $_.FullName 51 | $userThemeData.Themes.Color[$userColorTheme.Name] = $userColorTheme 52 | $colorSequences[$userColorTheme.Name] = ConvertTo-ColorSequence -ColorData $userThemeData.Themes.Color[$userColorTheme.Name] 53 | }) 54 | 55 | # Update the builtin themes 56 | $colorThemes.GetEnumerator().ForEach({ 57 | $userThemeData.Themes.Color[$_.Name] = $_.Value 58 | }) 59 | $iconThemes.GetEnumerator().ForEach({ 60 | $userThemeData.Themes.Icon[$_.Name] = $_.Value 61 | }) 62 | 63 | # Save all themes to theme path 64 | $userThemeData.Themes.Color.GetEnumerator().ForEach({ 65 | $colorThemePath = Join-Path $userThemePath "$($_.Name)_color.xml" 66 | $_.Value | Export-Clixml -Path $colorThemePath -Force 67 | }) 68 | $userThemeData.Themes.Icon.GetEnumerator().ForEach({ 69 | $iconThemePath = Join-Path $userThemePath "$($_.Name)_icon.xml" 70 | $_.Value | Export-Clixml -Path $iconThemePath -Force 71 | }) 72 | 73 | Save-Preferences -Preferences $prefs 74 | 75 | # Export-ModuleMember -Function $public.Basename 76 | 77 | Update-FormatData -Prepend ([IO.Path]::Combine($moduleRoot, 'Terminal-Icons.format.ps1xml')) 78 | -------------------------------------------------------------------------------- /build.ps1: -------------------------------------------------------------------------------- 1 | [cmdletbinding(DefaultParameterSetName = 'Task')] 2 | param( 3 | # Build task(s) to execute 4 | [parameter(ParameterSetName = 'task', position = 0)] 5 | [string[]]$Task = 'default', 6 | 7 | # Bootstrap dependencies 8 | [switch]$Bootstrap, 9 | 10 | # List available build tasks 11 | [parameter(ParameterSetName = 'Help')] 12 | [switch]$Help, 13 | 14 | [pscredential]$PSGalleryApiKey 15 | ) 16 | 17 | $ErrorActionPreference = 'Stop' 18 | 19 | # Bootstrap dependencies 20 | if ($Bootstrap.IsPresent) { 21 | Get-PackageProvider -Name Nuget -ForceBootstrap | Out-Null 22 | Set-PSRepository -Name PSGallery -InstallationPolicy Trusted 23 | if (-not (Get-Module -Name PSDepend -ListAvailable)) { 24 | Install-Module -Name PSDepend -Repository PSGallery -Scope CurrentUser 25 | } 26 | Invoke-PSDepend -Path './requirements.psd1' -Install -Import -Force -WarningAction SilentlyContinue 27 | } 28 | 29 | # Execute psake task(s) 30 | $psakeFile = './psakeFile.ps1' 31 | if ($PSCmdlet.ParameterSetName -eq 'Help') { 32 | Get-PSakeScriptTasks -buildFile $psakeFile | 33 | Format-Table -Property Name, Description, Alias, DependsOn 34 | } else { 35 | Set-BuildEnvironment -Force 36 | $parameters = @{} 37 | if ($PSGalleryApiKey) { 38 | $parameters['galleryApiKey'] = $PSGalleryApiKey 39 | } 40 | Invoke-psake -buildFile $psakeFile -taskList $Task -nologo -parameters $parameters 41 | exit ( [int]( -not $psake.build_success ) ) 42 | } 43 | -------------------------------------------------------------------------------- /docs/en-US/Add-TerminalIconsColorTheme.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Add-TerminalIconsColorTheme 9 | 10 | ## SYNOPSIS 11 | Add a Terminal-Icons color theme for the current user. 12 | 13 | ## SYNTAX 14 | 15 | ### Path (Default) 16 | ``` 17 | Add-TerminalIconsColorTheme [-Path] [-Force] [-WhatIf] [-Confirm] [] 18 | ``` 19 | 20 | ### LiteralPath 21 | ``` 22 | Add-TerminalIconsColorTheme [-LiteralPath] [-Force] [-WhatIf] [-Confirm] [] 23 | ``` 24 | 25 | ## DESCRIPTION 26 | Add a Terminal-Icons color theme for the current user. 27 | The theme data 28 | is stored in the user's profile 29 | 30 | ## EXAMPLES 31 | 32 | ### EXAMPLE 1 33 | ``` 34 | Add-Terminal-IconsColorTHeme -Path ./my_color_theme.psd1 35 | ``` 36 | 37 | Add the color theme contained in ./my_color_theme.psd1. 38 | 39 | ### EXAMPLE 2 40 | ``` 41 | Get-ChildItem ./path/to/colorthemes | Add-TerminalIconsColorTheme -Force 42 | ``` 43 | 44 | Add all color themes contained in the folder ./path/to/colorthemes and add them, 45 | overwriting existing ones if needed. 46 | 47 | ## PARAMETERS 48 | 49 | ### -Path 50 | The path to the Terminal-Icons color theme file. 51 | 52 | ```yaml 53 | Type: String[] 54 | Parameter Sets: Path 55 | Aliases: 56 | 57 | Required: True 58 | Position: 1 59 | Default value: None 60 | Accept pipeline input: True (ByPropertyName, ByValue) 61 | Accept wildcard characters: True 62 | ``` 63 | 64 | ### -LiteralPath 65 | The literal path to the Terminal-Icons color theme file. 66 | 67 | ```yaml 68 | Type: String[] 69 | Parameter Sets: LiteralPath 70 | Aliases: PSPath 71 | 72 | Required: True 73 | Position: 1 74 | Default value: None 75 | Accept pipeline input: True (ByPropertyName) 76 | Accept wildcard characters: False 77 | ``` 78 | 79 | ### -Force 80 | Overwrite the color theme if it already exists in the profile. 81 | 82 | ```yaml 83 | Type: SwitchParameter 84 | Parameter Sets: (All) 85 | Aliases: 86 | 87 | Required: False 88 | Position: Named 89 | Default value: False 90 | Accept pipeline input: False 91 | Accept wildcard characters: False 92 | ``` 93 | 94 | ### -WhatIf 95 | Shows what would happen if the cmdlet runs. 96 | The cmdlet is not run. 97 | 98 | ```yaml 99 | Type: SwitchParameter 100 | Parameter Sets: (All) 101 | Aliases: wi 102 | 103 | Required: False 104 | Position: Named 105 | Default value: None 106 | Accept pipeline input: False 107 | Accept wildcard characters: False 108 | ``` 109 | 110 | ### -Confirm 111 | Prompts you for confirmation before running the cmdlet. 112 | 113 | ```yaml 114 | Type: SwitchParameter 115 | Parameter Sets: (All) 116 | Aliases: cf 117 | 118 | Required: False 119 | Position: Named 120 | Default value: None 121 | Accept pipeline input: False 122 | Accept wildcard characters: False 123 | ``` 124 | 125 | ### CommonParameters 126 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 127 | 128 | ## INPUTS 129 | 130 | ### System.String 131 | ### You can pipe a string that contains a path to 'Add-TerminalIconsColorTheme'. 132 | ## OUTPUTS 133 | 134 | ### None. 135 | ## NOTES 136 | 'Add-TerminalIconsColorTheme' will not overwrite an existing theme by default. 137 | Add the -Force switch to overwrite. 138 | 139 | ## RELATED LINKS 140 | 141 | [Add-TerminalIconsIconTheme]() 142 | 143 | -------------------------------------------------------------------------------- /docs/en-US/Add-TerminalIconsIconTheme.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Add-TerminalIconsIconTheme 9 | 10 | ## SYNOPSIS 11 | Add a Terminal-Icons icon theme for the current user. 12 | 13 | ## SYNTAX 14 | 15 | ### Path (Default) 16 | ``` 17 | Add-TerminalIconsIconTheme [-Path] [-Force] [-WhatIf] [-Confirm] [] 18 | ``` 19 | 20 | ### LiteralPath 21 | ``` 22 | Add-TerminalIconsIconTheme [-LiteralPath] [-Force] [-WhatIf] [-Confirm] [] 23 | ``` 24 | 25 | ## DESCRIPTION 26 | Add a Terminal-Icons icon theme for the current user. 27 | The theme data 28 | is stored in the user's profile 29 | 30 | ## EXAMPLES 31 | 32 | ### EXAMPLE 1 33 | ``` 34 | Add-Terminal-IconsIconTHeme -Path ./my_icon_theme.psd1 35 | ``` 36 | 37 | Add the icon theme contained in ./my_icon_theme.psd1. 38 | 39 | ### EXAMPLE 2 40 | ``` 41 | Get-ChildItem ./path/to/iconthemes | Add-TerminalIconsIconTheme -Force 42 | ``` 43 | 44 | Add all icon themes contained in the folder ./path/to/iconthemes and add them, 45 | overwriting existing ones if needed. 46 | 47 | ## PARAMETERS 48 | 49 | ### -Path 50 | The path to the Terminal-Icons icon theme file. 51 | 52 | ```yaml 53 | Type: String[] 54 | Parameter Sets: Path 55 | Aliases: 56 | 57 | Required: True 58 | Position: 1 59 | Default value: None 60 | Accept pipeline input: True (ByPropertyName, ByValue) 61 | Accept wildcard characters: True 62 | ``` 63 | 64 | ### -LiteralPath 65 | The literal path to the Terminal-Icons icon theme file. 66 | 67 | ```yaml 68 | Type: String[] 69 | Parameter Sets: LiteralPath 70 | Aliases: PSPath 71 | 72 | Required: True 73 | Position: 1 74 | Default value: None 75 | Accept pipeline input: True (ByPropertyName) 76 | Accept wildcard characters: False 77 | ``` 78 | 79 | ### -Force 80 | Overwrite the icon theme if it already exists in the profile. 81 | 82 | ```yaml 83 | Type: SwitchParameter 84 | Parameter Sets: (All) 85 | Aliases: 86 | 87 | Required: False 88 | Position: Named 89 | Default value: False 90 | Accept pipeline input: False 91 | Accept wildcard characters: False 92 | ``` 93 | 94 | ### -WhatIf 95 | Shows what would happen if the cmdlet runs. 96 | The cmdlet is not run. 97 | 98 | ```yaml 99 | Type: SwitchParameter 100 | Parameter Sets: (All) 101 | Aliases: wi 102 | 103 | Required: False 104 | Position: Named 105 | Default value: None 106 | Accept pipeline input: False 107 | Accept wildcard characters: False 108 | ``` 109 | 110 | ### -Confirm 111 | Prompts you for confirmation before running the cmdlet. 112 | 113 | ```yaml 114 | Type: SwitchParameter 115 | Parameter Sets: (All) 116 | Aliases: cf 117 | 118 | Required: False 119 | Position: Named 120 | Default value: None 121 | Accept pipeline input: False 122 | Accept wildcard characters: False 123 | ``` 124 | 125 | ### CommonParameters 126 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 127 | 128 | ## INPUTS 129 | 130 | ### System.String 131 | ### You can pipe a string that contains a path to 'Add-TerminalIconsIconTheme'. 132 | ## OUTPUTS 133 | 134 | ### None. 135 | ## NOTES 136 | 'Add-TerminalIconsIconTheme' will not overwrite an existing theme by default. 137 | Add the -Force switch to overwrite. 138 | 139 | ## RELATED LINKS 140 | 141 | [Add-TerminalIconsColorTheme]() 142 | 143 | -------------------------------------------------------------------------------- /docs/en-US/Format-TerminalIcons.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Format-TerminalIcons 9 | 10 | ## SYNOPSIS 11 | Prepend a custom icon (with color) to the provided file or folder object when displayed. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Format-TerminalIcons [-FileInfo] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | Take the provided file or folder object and look up the appropriate icon and color to display. 21 | 22 | ## EXAMPLES 23 | 24 | ### EXAMPLE 1 25 | ``` 26 | Get-ChildItem 27 | ``` 28 | 29 | List a directory. 30 | Terminal-Icons will be invoked automatically for display. 31 | 32 | ### EXAMPLE 2 33 | ``` 34 | Get-Item ./README.md | Format-TerminalIcons 35 | ``` 36 | 37 | Get a file object and pass directly to Format-TerminalIcons. 38 | 39 | ## PARAMETERS 40 | 41 | ### -FileInfo 42 | The file or folder to display 43 | 44 | ```yaml 45 | Type: FileSystemInfo 46 | Parameter Sets: (All) 47 | Aliases: 48 | 49 | Required: True 50 | Position: 1 51 | Default value: None 52 | Accept pipeline input: True (ByValue) 53 | Accept wildcard characters: False 54 | ``` 55 | 56 | ### CommonParameters 57 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 58 | 59 | ## INPUTS 60 | 61 | ### System.IO.FileSystemInfo 62 | ### You can pipe an objects that derive from System.IO.FileSystemInfo (System.IO.DIrectoryInfo and System.IO.FileInfo) to 'Format-TerminalIcons'. 63 | ## OUTPUTS 64 | 65 | ### System.String 66 | ### Outputs a colorized string with an icon prepended. 67 | ## NOTES 68 | 69 | ## RELATED LINKS 70 | -------------------------------------------------------------------------------- /docs/en-US/Get-TerminalIconsColorTheme.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-TerminalIconsColorTheme 9 | 10 | ## SYNOPSIS 11 | List the available color themes. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-TerminalIconsColorTheme [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | List the available color themes. 21 | 22 | ## EXAMPLES 23 | 24 | ### EXAMPLE 1 25 | ``` 26 | Get-TerminalIconsColorTheme 27 | ``` 28 | 29 | Get the list of available color themes. 30 | 31 | ## PARAMETERS 32 | 33 | ### CommonParameters 34 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 35 | 36 | ## INPUTS 37 | 38 | ### None. 39 | ## OUTPUTS 40 | 41 | ### System.Collections.Hashtable 42 | ### An array of hashtables representing available color themes. 43 | ## NOTES 44 | 45 | ## RELATED LINKS 46 | 47 | [Get-TerminalIconsIconTheme]() 48 | 49 | [Get-TerminalIconsTheme]() 50 | 51 | -------------------------------------------------------------------------------- /docs/en-US/Get-TerminalIconsGlyphs.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-TerminalIconsGlyphs 9 | 10 | ## SYNOPSIS 11 | Gets the list of glyphs known to Terminal-Icons. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-TerminalIconsGlyphs [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | Gets a hashtable with the available glyph names and icons. 21 | Useful in creating a custom theme. 22 | 23 | ## EXAMPLES 24 | 25 | ### EXAMPLE 1 26 | ``` 27 | Get-TerminalIconsGlyphs 28 | ``` 29 | 30 | Gets the table of glyph names and icons. 31 | 32 | ## PARAMETERS 33 | 34 | ### CommonParameters 35 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 36 | 37 | ## INPUTS 38 | 39 | ### None. 40 | ## OUTPUTS 41 | 42 | ### None. 43 | ## NOTES 44 | 45 | ## RELATED LINKS 46 | 47 | [Get-TerminalIconsIconTheme]() 48 | 49 | [Set-TerminalIconsIcon]() 50 | 51 | -------------------------------------------------------------------------------- /docs/en-US/Get-TerminalIconsIconTheme.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-TerminalIconsIconTheme 9 | 10 | ## SYNOPSIS 11 | List the available icon themes. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-TerminalIconsIconTheme [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | List the available icon themes. 21 | 22 | ## EXAMPLES 23 | 24 | ### EXAMPLE 1 25 | ``` 26 | Get-TerminalIconsIconTheme 27 | ``` 28 | 29 | Get the list of available icon themes. 30 | 31 | ## PARAMETERS 32 | 33 | ### CommonParameters 34 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 35 | 36 | ## INPUTS 37 | 38 | ### None. 39 | ## OUTPUTS 40 | 41 | ### System.Collections.Hashtable 42 | ### An array of hashtables representing available icon themes. 43 | ## NOTES 44 | 45 | ## RELATED LINKS 46 | 47 | [Get-TerminalIconsColorTheme]() 48 | 49 | [Get-TerminalIconsTheme]() 50 | 51 | -------------------------------------------------------------------------------- /docs/en-US/Get-TerminalIconsTheme.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-TerminalIconsTheme 9 | 10 | ## SYNOPSIS 11 | Get the currently applied color and icon theme. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-TerminalIconsTheme [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | Get the currently applied color and icon theme. 21 | 22 | ## EXAMPLES 23 | 24 | ### EXAMPLE 1 25 | ``` 26 | Get-TerminalIconsTheme 27 | ``` 28 | 29 | Get the currently applied Terminal-Icons color and icon theme. 30 | 31 | ## PARAMETERS 32 | 33 | ### CommonParameters 34 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 35 | 36 | ## INPUTS 37 | 38 | ### None. 39 | ## OUTPUTS 40 | 41 | ### System.Management.Automation.PSCustomObject 42 | ### An object representing the currently applied color and icon theme. 43 | ## NOTES 44 | 45 | ## RELATED LINKS 46 | 47 | [Get-TerminalIconsColorTheme]() 48 | 49 | [Get-TerminalIconsIconTheme]() 50 | 51 | -------------------------------------------------------------------------------- /docs/en-US/Invoke-TerminalIconsThemeMigration.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Invoke-TerminalIconsThemeMigration 9 | 10 | ## SYNOPSIS 11 | Used to migrate your terminal icon themes to Nerd Fonts v3. 12 | 13 | ## SYNTAX 14 | 15 | ### Path 16 | ``` 17 | Invoke-TerminalIconsThemeMigration [-Path] [] 18 | ``` 19 | 20 | ### LiteralPath 21 | ``` 22 | Invoke-TerminalIconsThemeMigration [-LiteralPath] [] 23 | ``` 24 | 25 | ## DESCRIPTION 26 | Used to migrate your terminal icon themes to Nerd Fonts v3. 27 | 28 | ## EXAMPLES 29 | 30 | ### EXAMPLE 1 31 | ``` 32 | Invoke-TerminalIconsThemeMigration -Path ./my_icon_theme.psd1 | Out-File ./migrated_icon_theme.psd1 33 | ``` 34 | 35 | Loads the theme, migrates classes and then saves the newly migrated theme using the Out-File command. 36 | 37 | ## PARAMETERS 38 | 39 | ### -Path 40 | {{ Fill Path Description }} 41 | 42 | ```yaml 43 | Type: String[] 44 | Parameter Sets: Path 45 | Aliases: 46 | 47 | Required: True 48 | Position: 1 49 | Default value: None 50 | Accept pipeline input: True (ByPropertyName, ByValue) 51 | Accept wildcard characters: True 52 | ``` 53 | 54 | ### -LiteralPath 55 | {{ Fill LiteralPath Description }} 56 | 57 | ```yaml 58 | Type: String[] 59 | Parameter Sets: LiteralPath 60 | Aliases: PSPath 61 | 62 | Required: True 63 | Position: 1 64 | Default value: None 65 | Accept pipeline input: True (ByPropertyName) 66 | Accept wildcard characters: False 67 | ``` 68 | 69 | ### CommonParameters 70 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 71 | 72 | ## INPUTS 73 | 74 | ### None. 75 | ## OUTPUTS 76 | 77 | ### System.String 78 | ### The theme that has been fully migrated. 79 | ## NOTES 80 | 81 | ## RELATED LINKS 82 | 83 | [Invoke-TerminalIconsThemeMigration]() 84 | 85 | [Invoke-TerminalIconsThemeMigration]() 86 | 87 | -------------------------------------------------------------------------------- /docs/en-US/Remove-TerminalIconsTheme.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Remove-TerminalIconsTheme 9 | 10 | ## SYNOPSIS 11 | Removes a color or icon theme 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Remove-TerminalIconsTheme [[-IconTheme] ] [[-ColorTheme] ] [-Force] [-WhatIf] [-Confirm] 17 | [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | Removes a given icon or color theme. 22 | In order to be removed, a theme must not be active. 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ``` 28 | Remove-TerminalIconsTheme -IconTheme MyAwesomeTheme 29 | ``` 30 | 31 | Removes the icon theme 'MyAwesomeTheme' 32 | 33 | ### EXAMPLE 2 34 | ``` 35 | Remove-TerminalIconsTheme -ColorTheme MyAwesomeTheme 36 | ``` 37 | 38 | Removes the color theme 'MyAwesomeTheme' 39 | 40 | ## PARAMETERS 41 | 42 | ### -IconTheme 43 | The icon theme to remove. 44 | 45 | ```yaml 46 | Type: String 47 | Parameter Sets: (All) 48 | Aliases: 49 | 50 | Required: False 51 | Position: 1 52 | Default value: None 53 | Accept pipeline input: False 54 | Accept wildcard characters: False 55 | ``` 56 | 57 | ### -ColorTheme 58 | The color theme to remove. 59 | 60 | ```yaml 61 | Type: String 62 | Parameter Sets: (All) 63 | Aliases: 64 | 65 | Required: False 66 | Position: 2 67 | Default value: None 68 | Accept pipeline input: False 69 | Accept wildcard characters: False 70 | ``` 71 | 72 | ### -Force 73 | Bypass confirmation messages. 74 | 75 | ```yaml 76 | Type: SwitchParameter 77 | Parameter Sets: (All) 78 | Aliases: 79 | 80 | Required: False 81 | Position: Named 82 | Default value: False 83 | Accept pipeline input: False 84 | Accept wildcard characters: False 85 | ``` 86 | 87 | ### -WhatIf 88 | Shows what would happen if the cmdlet runs. The cmdlet is not run. 89 | 90 | ```yaml 91 | Type: SwitchParameter 92 | Parameter Sets: (All) 93 | Aliases: wi 94 | 95 | Required: False 96 | Position: Named 97 | Default value: None 98 | Accept pipeline input: False 99 | Accept wildcard characters: False 100 | ``` 101 | 102 | ### -Confirm 103 | Prompts you for confirmation before running the cmdlet. 104 | 105 | ```yaml 106 | Type: SwitchParameter 107 | Parameter Sets: (All) 108 | Aliases: cf 109 | 110 | Required: False 111 | Position: Named 112 | Default value: None 113 | Accept pipeline input: False 114 | Accept wildcard characters: False 115 | ``` 116 | 117 | ### CommonParameters 118 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 119 | 120 | ## INPUTS 121 | 122 | ### System.String 123 | ### The name of the color or icon theme to remove. 124 | ## OUTPUTS 125 | 126 | ### None. 127 | ## NOTES 128 | A theme must not be active in order to be removed. 129 | 130 | ## RELATED LINKS 131 | 132 | [Set-TerminalIconsTheme]() 133 | 134 | [Add-TerminalIconsColorTheme]() 135 | 136 | [Add-TerminalIconsIconTheme]() 137 | 138 | [Get-TerminalIconsTheme]() 139 | 140 | -------------------------------------------------------------------------------- /docs/en-US/Set-TerminalIconsColorTheme.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Set-TerminalIconsColorTheme 9 | 10 | ## SYNOPSIS 11 | Set the Terminal-Icons color theme. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Set-TerminalIconsColorTheme [-Name] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | Set the Terminal-Icons color theme to a registered theme. 21 | 22 | ## EXAMPLES 23 | 24 | ### EXAMPLE 1 25 | ``` 26 | Set-TerminalIconsColorTheme -Name devblackops 27 | ``` 28 | 29 | Set the color theme to 'devblackops'. 30 | 31 | ## PARAMETERS 32 | 33 | ### -Name 34 | The name of a registered color theme. 35 | 36 | ```yaml 37 | Type: String 38 | Parameter Sets: (All) 39 | Aliases: 40 | 41 | Required: True 42 | Position: 1 43 | Default value: None 44 | Accept pipeline input: True (ByPropertyName, ByValue) 45 | Accept wildcard characters: False 46 | ``` 47 | 48 | ### CommonParameters 49 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 50 | 51 | ## INPUTS 52 | 53 | ### System.String 54 | ### The name of a registered color theme. 55 | ## OUTPUTS 56 | 57 | ### None. 58 | ## NOTES 59 | 60 | ## RELATED LINKS 61 | 62 | [Set-TerminalIconsIconTheme]() 63 | 64 | [Get-TerminalIconsColorTheme]() 65 | 66 | [Get-TerminalIconsIconTheme]() 67 | 68 | -------------------------------------------------------------------------------- /docs/en-US/Set-TerminalIconsIcon.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Set-TerminalIconsIcon 9 | 10 | ## SYNOPSIS 11 | Set a specific icon in the current Terminal-Icons icon theme or allows 12 | swapping one glyph for another. 13 | 14 | ## SYNTAX 15 | 16 | ### FileExtension (Default) 17 | ``` 18 | Set-TerminalIconsIcon -FileExtension -Glyph [-Force] [-WhatIf] [-Confirm] 19 | [] 20 | ``` 21 | 22 | ### Directory 23 | ``` 24 | Set-TerminalIconsIcon -Directory -Glyph [-Force] [-WhatIf] [-Confirm] [] 25 | ``` 26 | 27 | ### FileName 28 | ``` 29 | Set-TerminalIconsIcon -FileName -Glyph [-Force] [-WhatIf] [-Confirm] [] 30 | ``` 31 | 32 | ### SwapGlyph 33 | ``` 34 | Set-TerminalIconsIcon -NewGlyph -Glyph [-Force] [-WhatIf] [-Confirm] [] 35 | ``` 36 | 37 | ## DESCRIPTION 38 | Set the Terminal-Icons icon for a specific file/directory or glyph to a 39 | named glyph. 40 | 41 | Also allows all uses of a specific glyph to be replaced with a different 42 | glyph. 43 | 44 | ## EXAMPLES 45 | 46 | ### EXAMPLE 1 47 | ``` 48 | Set-TerminalIconsIcon -FileName "README.md" -Glyph "nf-fa-file_text" 49 | ``` 50 | 51 | Set README.md files to display a text file icon. 52 | 53 | ### EXAMPLE 2 54 | ``` 55 | Set-TerminalIconsIcon -FileExtension ".xml" -Glyph "nf-md-xml" 56 | ``` 57 | 58 | Set XML files to display an XML file icon. 59 | 60 | ### EXAMPLE 3 61 | ``` 62 | Set-TerminalIconsIcon -Directory ".github" -Glyph "nf-dev-github_alt" 63 | ``` 64 | 65 | Set directories named ".github" to display an Octocat face icon. 66 | 67 | ### EXAMPLE 4 68 | ``` 69 | Set-TerminalIconsIcon -Glyph "nf-md-xml" -NewGlyph "nf-md-xml" 70 | ``` 71 | 72 | Changes all uses of the "nf-md-xml" double-wide glyph to be the "nf-md-xml" 73 | single-width XML file glyph. 74 | 75 | ## PARAMETERS 76 | 77 | ### -Directory 78 | The well-known directory name to match for the icon. 79 | 80 | ```yaml 81 | Type: String 82 | Parameter Sets: Directory 83 | Aliases: 84 | 85 | Required: True 86 | Position: Named 87 | Default value: None 88 | Accept pipeline input: False 89 | Accept wildcard characters: False 90 | ``` 91 | 92 | ### -FileName 93 | The well-known file name to match for the icon. 94 | 95 | ```yaml 96 | Type: String 97 | Parameter Sets: FileName 98 | Aliases: 99 | 100 | Required: True 101 | Position: Named 102 | Default value: None 103 | Accept pipeline input: False 104 | Accept wildcard characters: False 105 | ``` 106 | 107 | ### -FileExtension 108 | The file extension to match for the icon. 109 | 110 | ```yaml 111 | Type: String 112 | Parameter Sets: FileExtension 113 | Aliases: 114 | 115 | Required: True 116 | Position: Named 117 | Default value: None 118 | Accept pipeline input: False 119 | Accept wildcard characters: False 120 | ``` 121 | 122 | ### -NewGlyph 123 | The name of the new glyph to use when swapping. 124 | 125 | ```yaml 126 | Type: String 127 | Parameter Sets: SwapGlyph 128 | Aliases: 129 | 130 | Required: True 131 | Position: Named 132 | Default value: None 133 | Accept pipeline input: False 134 | Accept wildcard characters: False 135 | ``` 136 | 137 | ### -Glyph 138 | The name of the glyph to use; or, when swapping glyphs, the name of the 139 | glyph you want to change. 140 | 141 | ```yaml 142 | Type: String 143 | Parameter Sets: (All) 144 | Aliases: 145 | 146 | Required: True 147 | Position: Named 148 | Default value: None 149 | Accept pipeline input: False 150 | Accept wildcard characters: False 151 | ``` 152 | 153 | ### -Force 154 | Bypass confirmation messages. 155 | 156 | ```yaml 157 | Type: SwitchParameter 158 | Parameter Sets: (All) 159 | Aliases: 160 | 161 | Required: False 162 | Position: Named 163 | Default value: False 164 | Accept pipeline input: False 165 | Accept wildcard characters: False 166 | ``` 167 | 168 | ### -WhatIf 169 | Shows what would happen if the cmdlet runs. 170 | The cmdlet is not run. 171 | 172 | ```yaml 173 | Type: SwitchParameter 174 | Parameter Sets: (All) 175 | Aliases: wi 176 | 177 | Required: False 178 | Position: Named 179 | Default value: None 180 | Accept pipeline input: False 181 | Accept wildcard characters: False 182 | ``` 183 | 184 | ### -Confirm 185 | Prompts you for confirmation before running the cmdlet. 186 | 187 | ```yaml 188 | Type: SwitchParameter 189 | Parameter Sets: (All) 190 | Aliases: cf 191 | 192 | Required: False 193 | Position: Named 194 | Default value: None 195 | Accept pipeline input: False 196 | Accept wildcard characters: False 197 | ``` 198 | 199 | ### CommonParameters 200 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 201 | 202 | ## INPUTS 203 | 204 | ### None. 205 | ### The command does not accept pipeline input. 206 | ## OUTPUTS 207 | 208 | ### None. 209 | ## NOTES 210 | 211 | ## RELATED LINKS 212 | 213 | [Get-TerminalIconsIconTheme]() 214 | 215 | [Get-TerminalIconsTheme]() 216 | 217 | [Get-TerminalIconsGlyphs]() 218 | 219 | -------------------------------------------------------------------------------- /docs/en-US/Set-TerminalIconsIconTheme.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Set-TerminalIconsIconTheme 9 | 10 | ## SYNOPSIS 11 | Set the Terminal-Icons icon theme. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Set-TerminalIconsIconTheme [-Name] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | Set the Terminal-Icons icon theme to a registered theme. 21 | 22 | ## EXAMPLES 23 | 24 | ### EXAMPLE 1 25 | ``` 26 | Set-TerminalIconsIconTheme -Name devblackops 27 | ``` 28 | 29 | Set the icon theme to 'devblackops'. 30 | 31 | ## PARAMETERS 32 | 33 | ### -Name 34 | The name of a registered icon theme. 35 | 36 | ```yaml 37 | Type: String 38 | Parameter Sets: (All) 39 | Aliases: 40 | 41 | Required: True 42 | Position: 1 43 | Default value: None 44 | Accept pipeline input: True (ByPropertyName, ByValue) 45 | Accept wildcard characters: False 46 | ``` 47 | 48 | ### CommonParameters 49 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 50 | 51 | ## INPUTS 52 | 53 | ### System.String 54 | ### The name of a registered icon theme. 55 | ## OUTPUTS 56 | 57 | ### None. 58 | ## NOTES 59 | 60 | ## RELATED LINKS 61 | 62 | [Set-TerminalIconsColorTheme]() 63 | 64 | [Get-TerminalIconsColorTheme]() 65 | 66 | [Get-TerminalIconsIconTheme]() 67 | 68 | -------------------------------------------------------------------------------- /docs/en-US/Set-TerminalIconsTheme.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Set-TerminalIconsTheme 9 | 10 | ## SYNOPSIS 11 | {{ Fill in the Synopsis }} 12 | 13 | ## SYNTAX 14 | 15 | ### theme (Default) 16 | ``` 17 | Set-TerminalIconsTheme [-IconTheme ] [-ColorTheme ] [-Force] [-WhatIf] [-Confirm] 18 | [] 19 | ``` 20 | 21 | ### notheme 22 | ``` 23 | Set-TerminalIconsTheme [-DisableColorTheme] [-DisableIconTheme] [-Force] [-WhatIf] [-Confirm] 24 | [] 25 | ``` 26 | 27 | ## DESCRIPTION 28 | {{ Fill in the Description }} 29 | 30 | ## EXAMPLES 31 | 32 | ### Example 1 33 | ```powershell 34 | PS C:\> {{ Add example code here }} 35 | ``` 36 | 37 | {{ Add example description here }} 38 | 39 | ## PARAMETERS 40 | 41 | ### -IconTheme 42 | {{ Fill IconTheme Description }} 43 | 44 | ```yaml 45 | Type: String 46 | Parameter Sets: theme 47 | Aliases: 48 | 49 | Required: False 50 | Position: Named 51 | Default value: None 52 | Accept pipeline input: False 53 | Accept wildcard characters: False 54 | ``` 55 | 56 | ### -ColorTheme 57 | {{ Fill ColorTheme Description }} 58 | 59 | ```yaml 60 | Type: String 61 | Parameter Sets: theme 62 | Aliases: 63 | 64 | Required: False 65 | Position: Named 66 | Default value: None 67 | Accept pipeline input: False 68 | Accept wildcard characters: False 69 | ``` 70 | 71 | ### -DisableColorTheme 72 | Disables custom colors and uses default terminal color. 73 | 74 | ```yaml 75 | Type: SwitchParameter 76 | Parameter Sets: notheme 77 | Aliases: 78 | 79 | Required: False 80 | Position: Named 81 | Default value: False 82 | Accept pipeline input: False 83 | Accept wildcard characters: False 84 | ``` 85 | 86 | ### -DisableIconTheme 87 | Disables custom icons and shows only shows the directory or file name. 88 | 89 | ```yaml 90 | Type: SwitchParameter 91 | Parameter Sets: notheme 92 | Aliases: 93 | 94 | Required: False 95 | Position: Named 96 | Default value: False 97 | Accept pipeline input: False 98 | Accept wildcard characters: False 99 | ``` 100 | 101 | ### -Force 102 | Bypass confirmation messages. 103 | 104 | ```yaml 105 | Type: SwitchParameter 106 | Parameter Sets: (All) 107 | Aliases: 108 | 109 | Required: False 110 | Position: Named 111 | Default value: False 112 | Accept pipeline input: False 113 | Accept wildcard characters: False 114 | ``` 115 | 116 | ### -WhatIf 117 | Shows what would happen if the cmdlet runs. The cmdlet is not run. 118 | 119 | ```yaml 120 | Type: SwitchParameter 121 | Parameter Sets: (All) 122 | Aliases: wi 123 | 124 | Required: False 125 | Position: Named 126 | Default value: None 127 | Accept pipeline input: False 128 | Accept wildcard characters: False 129 | ``` 130 | 131 | ### -Confirm 132 | Prompts you for confirmation before running the cmdlet. 133 | 134 | ```yaml 135 | Type: SwitchParameter 136 | Parameter Sets: (All) 137 | Aliases: cf 138 | 139 | Required: False 140 | Position: Named 141 | Default value: None 142 | Accept pipeline input: False 143 | Accept wildcard characters: False 144 | ``` 145 | 146 | ### CommonParameters 147 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 148 | 149 | ## INPUTS 150 | 151 | ### System.String 152 | 153 | ## OUTPUTS 154 | 155 | ### System.Object 156 | ## NOTES 157 | 158 | ## RELATED LINKS 159 | -------------------------------------------------------------------------------- /docs/en-US/Show-TerminalIconsTheme.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: Terminal-Icons-help.xml 3 | Module Name: Terminal-Icons 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Show-TerminalIconsTheme 9 | 10 | ## SYNOPSIS 11 | List example directories and files to show the currently applied color and icon themes. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Show-TerminalIconsTheme [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | List example directories and files to show the currently applied color and icon themes. 21 | The directory/file objects show are in memory only, they are not written to the filesystem. 22 | 23 | ## EXAMPLES 24 | 25 | ### EXAMPLE 1 26 | ``` 27 | Show-TerminalIconsTheme 28 | ``` 29 | 30 | List example directories and files to show the currently applied color and icon themes. 31 | 32 | ## PARAMETERS 33 | 34 | ### CommonParameters 35 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 36 | 37 | ## INPUTS 38 | 39 | ### None. 40 | ## OUTPUTS 41 | 42 | ### System.IO.DirectoryInfo 43 | ### System.IO.FileInfo 44 | ## NOTES 45 | Example directory and file objects only exist in memory. 46 | They are not written to the filesystem. 47 | 48 | ## RELATED LINKS 49 | 50 | [Get-TerminalIconsColorTheme]() 51 | 52 | [Get-TerminalIconsIconTheme]() 53 | 54 | [Get-TerminalIconsTheme]() 55 | 56 | -------------------------------------------------------------------------------- /media/icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/media/icon_256.png -------------------------------------------------------------------------------- /media/icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/media/icon_512.png -------------------------------------------------------------------------------- /media/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/media/screenshot.png -------------------------------------------------------------------------------- /media/screenshot1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/media/screenshot1.PNG -------------------------------------------------------------------------------- /psakeFile.ps1: -------------------------------------------------------------------------------- 1 | properties { 2 | # Build settings 3 | $PSBPreference.Build.CompileModule = $true 4 | $PSBPreference.Build.CopyDirectories = @('Data') 5 | $PSBPreference.Build.CompileHeader = @' 6 | using namespace System.Management.Automation 7 | using namespace System.Collections.ObjectModel 8 | '@ 9 | 10 | # Test settings 11 | $PSBPreference.Test.ImportModule = $true 12 | $PSBPreference.Test.OutputFile = [IO.Path]::Combine($PSBPreference.Build.OutDir, 'testResults.xml') 13 | $PSBPreference.Test.ScriptAnalysis.SettingsPath = [IO.Path]::Combine($PSBPreference.Test.RootDir, 'ScriptAnalyzerSettings.psd1') 14 | 15 | # Publish settings 16 | if ($galleryApiKey) { 17 | $PSBPreference.Publish.PSRepositoryApiKey = $galleryApiKey.GetNetworkCredential().password 18 | } 19 | } 20 | 21 | task default -depends Test 22 | 23 | task Pester -FromModule PowerShellBuild -Version '0.6.1' -preaction {Remove-Module Terminal-Icons -ErrorAction SilentlyContinue} 24 | 25 | task UpdateGlyphs { 26 | Import-Module PowerHtml 27 | 28 | $cheatsheet = 'https://www.nerdfonts.com/cheat-sheet' 29 | $parsedHtml = Invoke-WebRequest $cheatsheet | ConvertFrom-Html 30 | $glyphs = $parsedHtml.SelectNodes("//div[@class='class-name']").ForEach({ 31 | [pscustomobject]@{ 32 | name = $_.InnerText 33 | codePoint = $_.NextSibling[0].InnerText 34 | } 35 | }) 36 | 37 | $sb = [Text.StringBuilder]::new() 38 | $sb.AppendLine('@{') > $null 39 | $glyphs.ForEach({ 40 | $icon = [char][int]"0x$($_.codePoint)" 41 | $sb.AppendFormat(" '{0}' = '{1}'`n", $_.Name, $icon ) > $null 42 | }) 43 | $sb.AppendLine('}') > $null 44 | 45 | $now = [int][double]::Parse((Get-Date -UFormat %s)) 46 | $fileName = "$PSScriptRoot/Terminal-Icons/Data/glyphs_$now.ps1" 47 | $sb.ToString().Trim() | Out-File $fileName -Encoding utf8 48 | 49 | } -description 'Create a list of glyphs, sourced from nerdfonts.com' 50 | 51 | task InstallAct { 52 | if (-not (Get-Command -Name act -CommandType Application -ErrorAction SilentlyContinue)) { 53 | if ($IsWindows) { 54 | choco install act-cli 55 | } elseif ($IsLinux) { 56 | curl https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash 57 | } elseIf ($IsMacOS) { 58 | brew install nektos/tap/act 59 | } 60 | } else { 61 | 'act already installed' 62 | } 63 | } 64 | 65 | task TestGHAction -depends Build, InstallAct { 66 | act -j test -P ubuntu-latest=nektos/act-environments-ubuntu:18.04 67 | } 68 | -------------------------------------------------------------------------------- /requirements.psd1: -------------------------------------------------------------------------------- 1 | @{ 2 | PSDependOptions = @{ 3 | Target = 'CurrentUser' 4 | } 5 | BuildHelpers = '2.0.16' 6 | PowerHtml = 'latest' 7 | PowerShellBuild = '0.6.1' 8 | psake = '4.9.0' 9 | PSScriptAnalyzer = '1.19.1' 10 | } 11 | -------------------------------------------------------------------------------- /tests/Help.tests.ps1: -------------------------------------------------------------------------------- 1 | # Taken with love from @juneb_get_help (https://raw.githubusercontent.com/juneb/PesterTDD/master/Module.Help.Tests.ps1) 2 | 3 | Describe 'Help' { 4 | $testCases = Get-Command -Module $env:BHProjectName -CommandType Cmdlet, Function | ForEach-Object { 5 | @{ 6 | Name = $_.Name 7 | Command = $_ 8 | } 9 | } 10 | 11 | BeforeAll { 12 | $commonParameters = 'Debug', 'ErrorAction', 'ErrorVariable', 'InformationAction', 'InformationVariable', 'OutBuffer', 13 | 'OutVariable', 'PipelineVariable', 'Verbose', 'WarningAction', 'WarningVariable', 'Confirm', 'Whatif' 14 | } 15 | 16 | # No auto-generated help 17 | Context 'Auto-generation' { 18 | it 'Help for [] should not be auto-generated' -TestCases $testCases { 19 | param($Name, $Command) 20 | 21 | $help = Get-Help $Name -ErrorAction SilentlyContinue 22 | $help.Synopsis | Should -Not -BeLike '*`[``]*' 23 | } 24 | } 25 | 26 | 27 | # Should have a description for every function 28 | Context 'Help description' { 29 | It 'Help for [] has a description' -TestCases $testCases { 30 | param($Name, $Command) 31 | 32 | $help = Get-Help $Name -ErrorAction SilentlyContinue 33 | $help.Description | Should -Not -BeNullOrEmpty 34 | } 35 | } 36 | 37 | # Should be at least one example per command 38 | Context 'Examples' { 39 | It 'Help for [] has example code' -TestCases $testCases { 40 | param($Name, $Command) 41 | 42 | $help = Get-Help $Name -ErrorAction SilentlyContinue 43 | ($help.Examples.Example | Select-Object -First 1).Code | Should -Not -BeNullOrEmpty 44 | } 45 | } 46 | 47 | # Parameter help 48 | Context 'Parameter help' { 49 | It '[] has help for every parameter' -TestCases $testCases { 50 | param($Name, $Command) 51 | 52 | $help = Get-Help $Name -ErrorAction SilentlyContinue 53 | $parameters = $Command.ParameterSets.Parameters | 54 | Sort-Object -Property Name -Unique | 55 | Where-Object { $_.Name -notin $commonParameters } 56 | $parameterNames = $parameters.Name 57 | 58 | # Without the filter, WhatIf and Confirm parameters are still flagged in "finds help parameter in code" test 59 | $helpParameters = $help.Parameters.Parameter | 60 | Where-Object { $_.Name -notin $commonParameters } | 61 | Sort-Object -Property Name -Unique 62 | $helpParameterNames = $helpParameters.Name 63 | 64 | foreach ($parameter in $parameters) { 65 | $parameterName = $parameter.Name 66 | $parameterHelp = $help.parameters.parameter | Where-Object Name -eq $parameterName 67 | $parameterHelp.Description.Text | Should -Not -BeNullOrEmpty 68 | 69 | $codeMandatory = $parameter.IsMandatory.toString() 70 | $parameterHelp.Required | Should -Be $codeMandatory 71 | 72 | $codeType = $parameter.ParameterType.Name 73 | # To avoid calling Trim method on a null object. 74 | $helpType = if ($parameterHelp.parameterValue) { $parameterHelp.parameterValue.Trim() } 75 | $helpType | Should -Be $codeType 76 | } 77 | } 78 | } 79 | 80 | # Links are valid 81 | Context 'Links' { 82 | It 'Help for [] has valid links' -TestCases $testCases { 83 | param($Name, $Command) 84 | 85 | $help = Get-Help $Name -ErrorAction SilentlyContinue 86 | $link = $help.relatedLinks.navigationLink.uri 87 | foreach ($link in $links) { 88 | $Results = Invoke-WebRequest -Uri $link -UseBasicParsing 89 | $Results.StatusCode | Should -Be '200' 90 | } 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /tests/Manifest.tests.ps1: -------------------------------------------------------------------------------- 1 | Describe 'Module manifest' { 2 | 3 | BeforeAll { 4 | $moduleName = $env:BHProjectName 5 | $manifest = Test-ModuleManifest $env:BHPSModuleManifest 6 | $outputDir = [IO.Path]::Combine($ENV:BHProjectPath, 'Output') 7 | $outputModDir = [IO.Path]::Combine($outputDir, $env:BHProjectName) 8 | $outputModVerDir = [IO.Path]::Combine($outputModDir, $manifest.Version) 9 | $outputManifestPath = [IO.Path]::Combine($outputModVerDir, "$($moduleName).psd1") 10 | $changelogPath = [IO.Path]::Combine($env:BHProjectPath, 'CHANGELOG.md') 11 | } 12 | 13 | Context 'Validation' { 14 | 15 | $script:manifest = $null 16 | 17 | It 'has a valid manifest' { 18 | { 19 | $script:manifest = Test-ModuleManifest -Path $outputManifestPath -Verbose:$false -ErrorAction Stop -WarningAction SilentlyContinue 20 | } | Should -Not -Throw 21 | } 22 | 23 | It 'has a valid name in the manifest' { 24 | $script:manifest.Name | Should -Be $env:BHProjectName 25 | } 26 | 27 | It 'has a valid root module' { 28 | $script:manifest.RootModule | Should -Be "$($moduleName).psm1" 29 | } 30 | 31 | It 'has a valid version in the manifest' { 32 | $script:manifest.Version -as [Version] | Should -Not -BeNullOrEmpty 33 | } 34 | 35 | It 'has a valid description' { 36 | $script:manifest.Description | Should -Not -BeNullOrEmpty 37 | } 38 | 39 | It 'has a valid author' { 40 | $script:manifest.Author | Should -Not -BeNullOrEmpty 41 | } 42 | 43 | It 'has a valid guid' { 44 | { 45 | [guid]::Parse($script:manifest.Guid) 46 | } | Should -Not -Throw 47 | } 48 | 49 | It 'has a valid copyright' { 50 | $script:manifest.CopyRight | Should -Not -BeNullOrEmpty 51 | } 52 | 53 | $script:changelogVersion = $null 54 | It 'has a valid version in the changelog' { 55 | foreach ($line in (Get-Content $changelogPath)) { 56 | if ($line -match "^##\s\[(?(\d+\.){1,3}\d+)\]") { 57 | $script:changelogVersion = $matches.Version 58 | break 59 | } 60 | } 61 | $script:changelogVersion | Should -Not -BeNullOrEmpty 62 | $script:changelogVersion -as [Version] | Should -Not -BeNullOrEmpty 63 | } 64 | 65 | It 'changelog and manifest versions are the same' { 66 | $script:changelogVersion -as [Version] | Should -Be ( $script:manifest.Version -as [Version] ) 67 | } 68 | 69 | if (Get-Command git.exe -ErrorAction SilentlyContinue) { 70 | $script:tagVersion = $null 71 | It 'is tagged with a valid version' -skip { 72 | $thisCommit = git.exe log --decorate --oneline HEAD~1..HEAD 73 | 74 | if ($thisCommit -match 'tag:\s*(\d+(?:\.\d+)*)') { 75 | $script:tagVersion = $matches[1] 76 | } 77 | 78 | $script:tagVersion | Should -Not -BeNullOrEmpty 79 | $script:tagVersion -as [Version] | Should -Not -BeNullOrEmpty 80 | } 81 | 82 | It 'all versions are the same' { 83 | $script:changelogVersion -as [Version] | Should -Be ( $script:manifest.Version -as [Version] ) 84 | } 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /tests/Meta.tests.ps1: -------------------------------------------------------------------------------- 1 | Describe 'Text files formatting' { 2 | 3 | BeforeAll { 4 | Set-StrictMode -Version latest 5 | 6 | # Make sure MetaFixers.psm1 is loaded - it contains Get-TextFilesList 7 | Import-Module -Name ([IO.Path]::Combine($PSScriptRoot, 'MetaFixers.psm1')) -Verbose:$false -Force 8 | 9 | $projectRoot = $ENV:BHProjectPath 10 | if(-not $projectRoot) { 11 | $projectRoot = $PSScriptRoot 12 | } 13 | 14 | $allTextFiles = Get-TextFilesList $projectRoot 15 | } 16 | 17 | Context 'Files encoding' { 18 | It "Doesn't use Unicode encoding" { 19 | $unicodeFilesCount = 0 20 | $allTextFiles | Foreach-Object { 21 | if (Test-FileUnicode $_) { 22 | $unicodeFilesCount += 1 23 | Write-Warning "File $($_.FullName) contains 0x00 bytes. It's probably uses Unicode and need to be converted to UTF-8. Use Fixer 'Get-UnicodeFilesList `$pwd | ConvertTo-UTF8'." 24 | } 25 | } 26 | $unicodeFilesCount | Should -Be 0 27 | } 28 | } 29 | 30 | Context 'Indentations' { 31 | It 'Uses spaces for indentation, not tabs' { 32 | $totalTabsCount = 0 33 | $allTextFiles | Foreach-Object { 34 | $fileName = $_.FullName 35 | (Get-Content $_.FullName -Raw) | Select-String "`t" | Foreach-Object { 36 | Write-Warning "There are tab in $fileName. Use Fixer 'Get-TextFilesList `$pwd | ConvertTo-SpaceIndentation'." 37 | $totalTabsCount++ 38 | } 39 | } 40 | $totalTabsCount | Should -Be 0 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /tests/MetaFixers.psm1: -------------------------------------------------------------------------------- 1 | # Taken with love from https://github.com/PowerShell/DscResource.Tests/blob/master/MetaFixers.psm1 2 | 3 | <# 4 | This module helps fix problems, found by Meta.Tests.ps1 5 | #> 6 | 7 | $ErrorActionPreference = 'stop' 8 | Set-StrictMode -Version latest 9 | 10 | function ConvertTo-UTF8() { 11 | [CmdletBinding()] 12 | [OutputType([void])] 13 | param( 14 | [Parameter(Mandatory, ValueFromPipeline)] 15 | [System.IO.FileInfo]$FileInfo 16 | ) 17 | 18 | process { 19 | $content = Get-Content -Raw -Encoding Unicode -Path $FileInfo.FullName 20 | [System.IO.File]::WriteAllText($FileInfo.FullName, $content, [System.Text.Encoding]::UTF8) 21 | } 22 | } 23 | 24 | function ConvertTo-SpaceIndentation() { 25 | [CmdletBinding()] 26 | [OutputType([void])] 27 | param( 28 | [Parameter(Mandatory, ValueFromPipeline)] 29 | [System.IO.FileInfo]$FileInfo 30 | ) 31 | 32 | process { 33 | $content = (Get-Content -Raw -Path $FileInfo.FullName) -replace "`t", ' ' 34 | [System.IO.File]::WriteAllText($FileInfo.FullName, $content) 35 | } 36 | } 37 | 38 | function Get-TextFilesList { 39 | [CmdletBinding()] 40 | [OutputType([System.IO.FileInfo])] 41 | param( 42 | [Parameter(Mandatory)] 43 | [string]$Root 44 | ) 45 | Get-ChildItem -Path $Root -File -Recurse | 46 | Where-Object { @('.gitignore', '.gitattributes', '.ps1', '.psm1', '.psd1', '.json', '.xml', '.cmd', '.mof') -contains $_.Extension } 47 | } 48 | 49 | function Test-FileUnicode { 50 | [CmdletBinding()] 51 | [OutputType([bool])] 52 | param( 53 | [Parameter(Mandatory, ValueFromPipeline)] 54 | [System.IO.FileInfo]$FileInfo 55 | ) 56 | 57 | process { 58 | $path = $FileInfo.FullName 59 | $bytes = [System.IO.File]::ReadAllBytes($path) 60 | $zeroBytes = @($bytes -eq 0) 61 | return [bool]$zeroBytes.Length 62 | 63 | } 64 | } 65 | 66 | function Get-UnicodeFilesList() { 67 | [CmdletBinding()] 68 | [OutputType([System.IO.FileInfo])] 69 | param( 70 | [Parameter(Mandatory)] 71 | [string]$Root 72 | ) 73 | 74 | Get-TextFilesList $Root | Where-Object { Test-FileUnicode $_ } 75 | } 76 | -------------------------------------------------------------------------------- /tests/MyAwesomeColorTheme.psd1: -------------------------------------------------------------------------------- 1 | @{ 2 | Name = 'MyAwesomeTheme' 3 | Types = @{ 4 | Directories = @{ 5 | WellKnown = @{ 6 | tests = '98FB98' 7 | } 8 | } 9 | Files = @{ 10 | WellKnown = @{ 11 | '.ps1' = '98FB98' 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /tests/MyAwesomeIconTheme.psd1: -------------------------------------------------------------------------------- 1 | @{ 2 | Name = 'MyAwesomeTheme' 3 | Types = @{ 4 | Directories = @{ 5 | '' = 'nf-fa-file' 6 | symlink = 'nf-oct-file_symlink_directory' 7 | junction = 'nf-fa-external_link' 8 | WellKnown = @{ 9 | tests = 'nf-fa-gear' 10 | } 11 | } 12 | Files = @{ 13 | '' = 'nf-fa-file' 14 | symlink = 'nf-oct-file_symlink_file' 15 | junction = 'nf-fa-external_link' 16 | WellKnown = @{ 17 | '.ps1' = 'nf-fa-gear' 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /tests/ScriptAnalyzerSettings.psd1: -------------------------------------------------------------------------------- 1 | @{ 2 | ExcludeRules = @('PSUseBOMForUnicodeEncodedFile') 3 | } 4 | -------------------------------------------------------------------------------- /tests/TestItems/.gitattributes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/tests/TestItems/.gitattributes -------------------------------------------------------------------------------- /tests/TestItems/.gitconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/tests/TestItems/.gitconfig -------------------------------------------------------------------------------- /tests/TestItems/LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/tests/TestItems/LICENSE -------------------------------------------------------------------------------- /tests/TestItems/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/tests/TestItems/README.md -------------------------------------------------------------------------------- /tests/TestItems/asdf.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/tests/TestItems/asdf.md -------------------------------------------------------------------------------- /tests/TestItems/asdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/tests/TestItems/asdf.png -------------------------------------------------------------------------------- /tests/TestItems/asdf.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/tests/TestItems/asdf.txt -------------------------------------------------------------------------------- /tests/TestItems/bar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/tests/TestItems/bar.jpg -------------------------------------------------------------------------------- /tests/TestItems/foo.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/tests/TestItems/foo.go -------------------------------------------------------------------------------- /tests/TestItems/for.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devblackops/Terminal-Icons/46866e45a602566bb8a52af5a04dac1d69482c29/tests/TestItems/for.gif -------------------------------------------------------------------------------- /tests/unit/Add-TerminalIconsColorTheme.tests.ps1: -------------------------------------------------------------------------------- 1 | InModuleScope 'Terminal-Icons' { 2 | Describe 'Add-TerminalIconsColorTheme' { 3 | Context 'Themes' { 4 | AfterAll { 5 | $themeStorage = Get-ThemeStoragePath 6 | Set-TerminalIconsTheme -ColorTheme devblackops -IconTheme devblackops 7 | Remove-Item (Join-Path $themeStorage 'MyAwesomeTheme_color.xml') -Force -ErrorAction SilentlyContinue 8 | } 9 | 10 | Mock Export-CliXml {} 11 | 12 | it 'Good theme should be added' { 13 | Add-TerminalIconsColorTheme -Path $PSScriptRoot/../MyAwesomeColorTheme.psd1 # $goodTheme.FullName -Force 14 | $script:userThemeData.Themes.Color['MyAwesomeTheme'] | Should -BeOfType System.Collections.Hashtable 15 | $script:userThemeData.Themes.Color['MyAwesomeTheme'].Name | Should -Be 'MyAwesomeTheme' 16 | } 17 | 18 | it 'Bad theme path should throw' { 19 | $badThemeFile = [guid]::NewGuid().ToString() 20 | {Add-TerminalIconsColorTheme -Path "./$badThemeFile" -ErrorAction Stop} | Should -Throw 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /tests/unit/Add-TerminalIconsIconTheme.tests.ps1: -------------------------------------------------------------------------------- 1 | InModuleScope 'Terminal-Icons' { 2 | Describe 'Add-TerminalIconsIconTheme' { 3 | Context 'Themes' { 4 | AfterAll { 5 | $themeStorage = Get-ThemeStoragePath 6 | Set-TerminalIconsTheme -ColorTheme devblackops -IconTheme devblackops 7 | Remove-Item (Join-Path $themeStorage 'MyAwesomeTheme_icon.xml') -Force -ErrorAction SilentlyContinue 8 | } 9 | 10 | Mock Export-CliXml {} 11 | 12 | it 'Good theme should be added' { 13 | Add-TerminalIconsIconTheme -Path $PSScriptRoot/../MyAwesomeIconTheme.psd1 -Force 14 | $script:userThemeData.Themes.Icon['MyAwesomeTheme'] | Should -BeOfType System.Collections.Hashtable 15 | $script:userThemeData.Themes.Icon['MyAwesomeTheme'].Name | Should -Be 'MyAwesomeTheme' 16 | } 17 | 18 | it 'Bad theme path should throw' { 19 | $badThemeFile = [guid]::NewGuid().ToString() 20 | {Add-TerminalIconsIconTheme -Path "./$badThemeFile" -ErrorAction Stop} | Should -Throw 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /tests/unit/Format-TerminalIcons.tests.ps1: -------------------------------------------------------------------------------- 1 | Describe 'Format-TerminalIcons' { 2 | BeforeAll { 3 | $folderName = [System.IO.Path]::GetRandomFileName().Split('.')[0] 4 | $fileName = [System.IO.Path]::GetRandomFileName().Split('.')[0] + '.someextension' 5 | $folder = New-Item -Path "TestDrive:/$folderName" -Type Directory 6 | $file = New-Item -Path "TestDrive:/$fileName" 7 | } 8 | 9 | Context 'Folder icon resolution' { 10 | It 'Resolves a random directory to a default icon' { 11 | $string = $folder | Format-TerminalIcons 12 | $string | Should -BeLike "*$([char]0xf413)*" 13 | } 14 | } 15 | 16 | Context 'File icon resolution' { 17 | It 'Resolves a random file to a default icon' { 18 | $string = $file | Format-TerminalIcons 19 | $string | Should -BeLike "*$([char]0xf15b)*" 20 | } 21 | } 22 | } 23 | --------------------------------------------------------------------------------