2024-03-04 10:44:38 +00:00
<!doctype html>
2024-05-03 14:21:14 +00:00
< html lang = "en" dir = "ltr" class = "docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-extensions/developing/when-clause-context" data-has-hydrated = "false" >
2024-03-04 10:44:38 +00:00
< head >
< meta charset = "UTF-8" >
2025-01-14 13:36:07 +00:00
< meta name = "generator" content = "Docusaurus v3.7.0" >
2024-05-03 14:21:14 +00:00
< title data-rh = "true" > When clause contexts | Podman Desktop< / title > < meta data-rh = "true" name = "viewport" content = "width=device-width,initial-scale=1" > < meta data-rh = "true" name = "twitter:card" content = "summary_large_image" > < meta data-rh = "true" property = "og:image" content = "https://podman-desktop.io/img/banner_podman-desktop.png" > < meta data-rh = "true" name = "twitter:image" content = "https://podman-desktop.io/img/banner_podman-desktop.png" > < meta data-rh = "true" property = "og:url" content = "https://podman-desktop.io/docs/extensions/developing/when-clause-context" > < meta data-rh = "true" property = "og:locale" content = "en" > < meta data-rh = "true" name = "docusaurus_locale" content = "en" > < meta data-rh = "true" name = "docsearch:language" content = "en" > < meta data-rh = "true" name = "docusaurus_version" content = "current" > < meta data-rh = "true" name = "docusaurus_tag" content = "docs-default-current" > < meta data-rh = "true" name = "docsearch:version" content = "current" > < meta data-rh = "true" name = "docsearch:docusaurus_tag" content = "docs-default-current" > < meta data-rh = "true" property = "og:title" content = "When clause contexts | Podman Desktop" > < meta data-rh = "true" name = "description" content = "Podman Desktop when clause contexts reference" > < meta data-rh = "true" property = "og:description" content = "Podman Desktop when clause contexts reference" > < meta data-rh = "true" name = "keywords" content = "podman desktop,extension,writing,when clause" > < link data-rh = "true" rel = "icon" href = "/img/favicon.ico" > < link data-rh = "true" rel = "canonical" href = "https://podman-desktop.io/docs/extensions/developing/when-clause-context" > < link data-rh = "true" rel = "alternate" href = "https://podman-desktop.io/docs/extensions/developing/when-clause-context" hreflang = "en" > < link data-rh = "true" rel = "alternate" href = "https://podman-desktop.io/docs/extensions/developing/when-clause-context" hreflang = "x-default" > < link data-rh = "true" rel = "preconnect" href = "https://MR01ANKQ9S-dsn.algolia.net" crossorigin = "anonymous" > < link rel = "alternate" type = "application/rss+xml" href = "/blog/rss.xml" title = "Podman Desktop RSS Feed" >
2024-03-04 10:44:38 +00:00
< link rel = "alternate" type = "application/atom+xml" href = "/blog/atom.xml" title = "Podman Desktop Atom Feed" >
< link rel = "alternate" type = "application/json" href = "/blog/feed.json" title = "Podman Desktop JSON Feed" >
2025-01-14 13:36:07 +00:00
2024-03-04 10:44:38 +00:00
< link rel = "search" type = "application/opensearchdescription+xml" title = "Podman Desktop" href = "/opensearch.xml" >
< link rel = "preconnect" href = "https://podman-desktop-website.goatcounter.com" >
2025-05-19 17:14:25 +00:00
< script async src = "//gc.zgo.at/count.js" data-goatcounter = "https://podman-desktop-website.goatcounter.com/count" > < / script > < link rel = "stylesheet" href = "/assets/css/styles.d10e7093.css" >
2025-05-21 05:46:17 +00:00
< script src = "/assets/js/runtime~main.9bed4602.js" defer = "defer" > < / script >
2025-05-19 08:12:44 +00:00
< script src = "/assets/js/main.6e6bba9b.js" defer = "defer" > < / script >
2024-03-04 10:44:38 +00:00
< / head >
< body class = "navigation-with-keyboard" >
2025-05-16 06:24:04 +00:00
< script > ! function ( ) { function t ( t ) { document . documentElement . setAttribute ( "data-theme" , t ) } var e = function ( ) { try { return new URLSearchParams ( window . location . search ) . get ( "docusaurus-theme" ) } catch ( t ) { } } ( ) || function ( ) { try { return window . localStorage . getItem ( "theme" ) } catch ( t ) { } } ( ) ; null !== e ? t ( e ) : window . matchMedia ( "(prefers-color-scheme: dark)" ) . matches ? t ( "dark" ) : window . matchMedia ( "(prefers-color-scheme: light)" ) . matches ? t ( "light" ) : t ( "dark" ) } ( ) , function ( ) { try { const c = new URLSearchParams ( window . location . search ) . entries ( ) ; for ( var [ t , e ] of c ) if ( t . startsWith ( "docusaurus-data-" ) ) { var a = t . replace ( "docusaurus-data-" , "data-" ) ; document . documentElement . setAttribute ( a , e ) } } catch ( t ) { } } ( ) < / script > < div id = "__docusaurus" > < div role = "region" aria-label = "Skip to main content" > < a class = "skipToContent_oPtH" href = "#__docusaurus_skipToContent_fallback" > Skip to main content< / a > < / div > < nav aria-label = "Main" class = "navbar navbar--fixed-top" > < div class = "navbar__inner" > < div class = "navbar__items" > < button aria-label = "Toggle navigation bar" aria-expanded = "false" class = "navbar__toggle clean-btn" type = "button" > < svg width = "30" height = "30" viewBox = "0 0 30 30" aria-hidden = "true" > < path stroke = "currentColor" stroke-linecap = "round" stroke-miterlimit = "10" stroke-width = "2" d = "M4 7h22M4 15h22M4 23h22" > < / path > < / svg > < / button > < a class = "navbar__brand" href = "/" > < div class = "navbar__logo" > < img src = "/img/logo.svg" alt = "Podman Desktop Logo" class = "themedComponent_siVc themedComponent--light_hHel" height = "56" > < img src = "/img/logo.svg" alt = "Podman Desktop Logo" class = "themedComponent_siVc themedComponent--dark_yETr" height = "56" > < / div > < b class = "navbar__title text--truncate" > podman desktop< / b > < / a > < a aria-current = "page" class = "navbar__item navbar__link navbar__link--active" href = "/docs/intro" > Documentation< / a > < a class = "navbar__item navbar__link" href = "/downloads" > Downloads< / a > < a class = "navbar__item navbar__link" href = "/community" > Community< / a > < div class = "navbar__item dropdown dropdown--hoverable" > < a href = "#" aria-haspopup = "true" aria-expanded = "false" role = "button" class = "navbar__link" > Resources< / a > < ul class = "dropdown__menu" > < li > < a class = "dropdown__link" href = "/features" > Features< / a > < / li > < li > < a class = "dropdown__link" href = "/tutorial" > Tutorials< / a > < / li > < li > < a class = "dropdown__link" href = "/extend" > Extend< / a > < / li > < / ul > < / div > < a class = "navbar__item navbar__link" href = "/blog" > Blog< / a > < / div > < div class = "navbar__items navbar__items--right" > < a href = "https://github.com/podman-desktop/podman-desktop" target = "_blank" rel = "noopener noreferrer" class = "hidden lg:flex items-center gap-2 px-4 py-[9px] border border-black dark:border-white rounded-lg navbar__item navbar__link font-medium min-w-[9rem]" > < svg aria-hidden = "true" focusable = "false" data-prefix = "fab" data-icon = "github" class = "svg-inline--fa fa-github" role = "img" xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 496 512" > < path fill = "currentColor" d = "M165.9 397 . 4c0 2-2 . 3 3 . 6-5 . 2 3 . 6-3 . 3 . 3-5 . 6-1 . 3-5 . 6-3 . 6 0-2 2 . 3-3 . 6 5 . 2-3 . 6 3- . 3 5 . 6 1 . 3 5 . 6 3 . 6zm-31 . 1-4 . 5c- . 7 2 1 . 3 4 . 3 4 . 3 4 . 9 2 . 6 1 5 . 6 0 6 . 2-2s-1 . 3-4 . 3-4 . 3-5 . 2c-2 . 6- . 7-5 . 5 . 3-6 . 2 2 . 3zm44 . 2-1 . 7c-2 . 9 . 7-4 . 9 2 . 6-4 . 6 4 . 9 . 3 2 2 . 9 3 . 3 5 . 9 2 . 6 2 . 9- . 7 4 . 9-2 . 6 4 . 6-4 . 6- . 3-1 . 9-3-3 . 2-5 . 9-2 . 9zM244 . 8 8C106 . 1 8 0 113 . 3 0 252c0 110 . 9 69 . 8 205 . 8 169 . 5 239 . 2 12 . 8 2 . 3 17 . 3-5 . 6 17 . 3-12 . 1 0-6 . 2- . 3-40 . 4- . 3-61 . 4 0 0-70 15-84 . 7-29 . 8 0 0-11 . 4-29 . 1-27 . 8-36 . 6 0 0-22 . 9-15 . 7 1 . 6-15 . 4 0 0 24 . 9 2 38 . 6 25 . 8 21 . 9 38 . 6 58 . 6 27 . 5 72 . 9 20 . 9 2 . 3-16 8 . 8-27 . 1 16-33 . 7-55 . 9-6 . 2-112 . 3-14 . 3-112 . 3-110 . 5 0-27 . 5 7 . 6-41 . 3 23 . 6-58 . 9-2 . 6-6 . 5-11 . 1-33 . 3 2 . 6-67 . 9 20 . 9-6 . 5 69 27 69 27 20-5 . 6 41 . 5-8 . 5 62 . 8-8 . 5s42 . 8 2 . 9 62 . 8 8 . 5c0 0 48 . 1-33 . 6 69-27 13 . 7 34 . 7 5 . 2 61 . 4 2 . 6 67 . 9 16 17 . 7 25 . 8 31 . 5 25 . 8 58 . 9 0 96 . 5-58 . 9 104 . 2-114 . 8 110 . 5 9 . 2 7 . 9 17 22 . 9 17 46 . 4 0 33 . 7- . 3 75 . 4- . 3 83 . 6 0 6 . 5 4 . 6 14 . 4 17 . 3 12 . 1C428 . 2 457 . 8 496 362 . 9 496 252 496 113 . 3 383 . 5 8 244 . 8 8zM97 . 2 352 . 9c-1 . 3 1-1 3 . 3 . 7 5 . 2 1 . 6 1 . 6 3 . 9 2 . 3 5 . 2 1 1 . 3-1 1-3 . 3- . 7-5 . 2-1 . 6-1 . 6-3 . 9-2 . 3-5 . 2-1zm-10 . 8-8 . 1c- . 7 1 . 3 . 3 2 . 9 2 . 3 3 . 9 1 . 6 1 3 . 6 . 7 4 . 3- . 7 . 7-1 . 3- . 3-2 . 9-2 . 3-3 . 9-2- . 6-3 . 6- . 3-4 . 3 . 7zm32 . 4 35 . 6c-1 . 6 1 . 3-1 4 . 3 1 . 3 6 . 2 2 . 3 2 . 3 5 . 2 2 . 6 6 . 5 1 1 . 3-1 . 3 . 7-4 . 3-1 . 3-6 . 2-2 . 2-2 . 3-5 . 2-2 . 6-6 . 5-1zm-11 . 4-14 . 7c-1 . 6 1-1 . 6
2024-03-04 10:44:38 +00:00
< p > Podman Desktop uses when clauses to enable or disable extensions command and UI customizations, such as views.< / p >
< p > For example, the Kind extension adds a custom icon to a container that has a label equals to < code > io.x-k8s.kind.cluster< / code > by using the following instruction.< / p >
< div class = "language-json codeBlockContainer_mQmQ theme-code-block" style = "--prism-color:#F8F8F2;--prism-background-color:#282A36" > < div class = "codeBlockContent_D5yF" > < pre tabindex = "0" class = "prism-code language-json codeBlock_RMoD thin-scrollbar" style = "color:#F8F8F2;background-color:#282A36" > < code class = "codeBlockLines_AclH" > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token property" > " views" < / span > < span class = "token operator" > :< / span > < span class = "token plain" > < / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > {< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token plain" > < / span > < span class = "token property" > " icons/containersList" < / span > < span class = "token operator" > :< / span > < span class = "token plain" > < / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > [< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token plain" > < / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > {< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token plain" > < / span > < span class = "token property" > " when" < / span > < span class = "token operator" > :< / span > < span class = "token plain" > < / span > < span class = "token string" style = "color:rgb(255, 121, 198)" > " io.x-k8s.kind.cluster in containerLabelKeys" < / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > ,< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token plain" > < / span > < span class = "token property" > " icon" < / span > < span class = "token operator" > :< / span > < span class = "token plain" > < / span > < span class = "token string" style = "color:rgb(255, 121, 198)" > " ${kind-icon}" < / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token plain" > < / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > }< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token plain" > < / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > ]< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token plain" > < / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > }< / span > < br > < / span > < / code > < / pre > < div class = "buttonGroup_aaMX" > < button type = "button" aria-label = "Copy code to clipboard" title = "Copy" class = "clean-btn" > < span class = "copyButtonIcons_z5j7" aria-hidden = "true" > < svg viewBox = "0 0 24 24" class = "copyButtonIcon_FoOz" > < path fill = "currentColor" d = "M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" > < / path > < / svg > < svg viewBox = "0 0 24 24" class = "copyButtonSuccessIcon_L0B6" > < path fill = "currentColor" d = "M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" > < / path > < / svg > < / span > < / button > < / div > < / div > < / div >
< p > A when clause can consist of a context key (such as < code > isLinux< / code > ) or complex expressions to define a specific state.< / p >
2025-01-24 05:02:01 +00:00
< h3 class = "anchor anchorWithStickyNavbar_JmGV" id = "available-context-keys" > Available context keys< a href = "#available-context-keys" class = "hash-link" aria-label = "Direct link to Available context keys" title = "Direct link to Available context keys" > < / a > < / h3 >
2024-03-04 10:44:38 +00:00
< p > Podman Desktop has a set of context keys that are evaluated to Boolean true/false.< / p >
< table > < thead > < tr > < th > Context key< / th > < th > True when< / th > < / tr > < / thead > < tbody > < tr > < td > < strong > Operating system contexts< / strong > < / td > < td > < / td > < / tr > < tr > < td > isLinux< / td > < td > True when the OS is Linux.< / td > < / tr > < tr > < td > isWindows< / td > < td > True when the OS is Windows.< / td > < / tr > < tr > < td > isMac< / td > < td > True when the OS is macOS.< / td > < / tr > < / tbody > < / table >
< p > Podman Desktop also provides context keys that return values that can be used to create meaningful expressions< / p >
< table > < thead > < tr > < th > Context key< / th > < th > Value in it< / th > < / tr > < / thead > < tbody > < tr > < td > containerLabelKeys< / td > < td > A list of all labels belonging to the current container. Example: < code > " value in containerLabelKeys" < / code > < / td > < / tr > < tr > < td > selectedImageId< / td > < td > The image id which the dashboard/image menu opened belong to. Example < code > " selectedImageId in imagesPushInProgressToKind" < / code > < / td > < / tr > < / tbody > < / table >
2024-08-14 11:49:56 +00:00
< h3 class = "anchor anchorWithStickyNavbar_JmGV" id = "add-a-custom-when-clause-context" > Add a custom when clause context< a href = "#add-a-custom-when-clause-context" class = "hash-link" aria-label = "Direct link to Add a custom when clause context" title = "Direct link to Add a custom when clause context" > < / a > < / h3 >
2024-03-04 10:44:38 +00:00
< p > If you are creating your own extension and none of the existing keys suit your needs, you can set your own context key by calling the function < code > setValue(key: string, value: any, scope?: ' onboarding' )< / code > provided by the < code > context< / code > namespace in the Podman Desktop API.< / p >
< p > The scope, if specified, triggers a custom behavior to avoid any type of collisions between different extensions for that specific scope. Podman Desktop is responsible for handling its state and cleans it accordingly when necessary.< / p >
< p > If omitted, the key/value is set globally. For this reason it is recommended to use the extension id as part of the key to avoid unexpected collisions with other extensions.< / p >
< p > The first example below sets the key < code > " podmanIsInstalled" < / code > to true globally while the second example sets the key < code > " toolInstalled" < / code > to < code > oc.exe< / code > using the onboarding scope.< / p >
2024-07-01 07:14:57 +00:00
< div class = "language-js codeBlockContainer_mQmQ theme-code-block" style = "--prism-color:#F8F8F2;--prism-background-color:#282A36" > < div class = "codeBlockContent_D5yF" > < pre tabindex = "0" class = "prism-code language-js codeBlock_RMoD thin-scrollbar" style = "color:#F8F8F2;background-color:#282A36" > < code class = "codeBlockLines_AclH" > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token plain" > extensionsAPI< / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > .< / span > < span class = "token property-access" > context< / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > .< / span > < span class = "token method function property-access" style = "color:rgb(80, 250, 123)" > setValue< / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > (< / span > < span class = "token string" style = "color:rgb(255, 121, 198)" > ' podmanIsInstalled' < / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > ,< / span > < span class = "token plain" > < / span > < span class = "token boolean" > true< / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > )< / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > ;< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token plain" style = "display:inline-block" > < / span > < br > < / span > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token plain" > extensionsAPI< / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > .< / span > < span class = "token property-access" > context< / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > .< / span > < span class = "token method function property-access" style = "color:rgb(80, 250, 123)" > setValue< / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > (< / span > < span class = "token string" style = "color:rgb(255, 121, 198)" > ' toolInstalled' < / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > ,< / span > < span class = "token plain" > < / span > < span class = "token string" style = "color:rgb(255, 121, 198)" > ' oc.exe' < / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > ,< / span > < span class = "token plain" > < / span > < span class = "token string" style = "color:rgb(255, 121, 198)" > ' onboarding' < / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > )< / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > ;< / span > < br > < / span > < / code > < / pre > < div class = "buttonGroup_aaMX" > < button type = "button" aria-label = "Copy code to clipboard" title = "Copy" class = "clean-btn" > < span class = "copyButtonIcons_z5j7" aria-hidden = "true" > < svg viewBox = "0 0 24 24" class = "copyButtonIcon_FoOz" > < path fill = "currentColor" d = "M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" > < / path > < / svg > < svg viewBox = "0 0 24 24" class = "copyButtonSuccessIcon_L0B6" > < path fill = "currentColor" d = "M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" > < / path > < / svg > < / span > < / button > < / div > < / div > < / div >
2024-03-04 10:44:38 +00:00
< p > After setting the < code > toolInstalled< / code > to < code > oc.exe< / code > , you could use this information in the < code > when< / code > clause to enable something< / p >
< div class = "language-json codeBlockContainer_mQmQ theme-code-block" style = "--prism-color:#F8F8F2;--prism-background-color:#282A36" > < div class = "codeBlockContent_D5yF" > < pre tabindex = "0" class = "prism-code language-json codeBlock_RMoD thin-scrollbar" style = "color:#F8F8F2;background-color:#282A36" > < code class = "codeBlockLines_AclH" > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > {< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token plain" > < / span > < span class = "token property" > " when" < / span > < span class = "token operator" > :< / span > < span class = "token plain" > < / span > < span class = "token string" style = "color:rgb(255, 121, 198)" > " onboardingContext:toolInstalled == oc.exe" < / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#F8F8F2" > < span class = "token plain" > < / span > < span class = "token punctuation" style = "color:rgb(248, 248, 242)" > }< / span > < br > < / span > < / code > < / pre > < div class = "buttonGroup_aaMX" > < button type = "button" aria-label = "Copy code to clipboard" title = "Copy" class = "clean-btn" > < span class = "copyButtonIcons_z5j7" aria-hidden = "true" > < svg viewBox = "0 0 24 24" class = "copyButtonIcon_FoOz" > < path fill = "currentColor" d = "M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" > < / path > < / svg > < svg viewBox = "0 0 24 24" class = "copyButtonSuccessIcon_L0B6" > < path fill = "currentColor" d = "M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" > < / path > < / svg > < / span > < / button > < / div > < / div > < / div >
2024-08-14 11:49:56 +00:00
< h3 class = "anchor anchorWithStickyNavbar_JmGV" id = "conditional-operators" > Conditional operators< a href = "#conditional-operators" class = "hash-link" aria-label = "Direct link to Conditional operators" title = "Direct link to Conditional operators" > < / a > < / h3 >
2024-03-04 10:44:38 +00:00
< p > To create < code > when< / code > clauses a bit more complex Podman Desktop offers a set of operators that can be combined with each other.< / p >
2024-08-14 11:49:56 +00:00
< h4 class = "anchor anchorWithStickyNavbar_JmGV" id = "logical-operators" > Logical operators< a href = "#logical-operators" class = "hash-link" aria-label = "Direct link to Logical operators" title = "Direct link to Logical operators" > < / a > < / h4 >
2024-03-04 10:44:38 +00:00
< p > Logical operators allow combining simple context keys or when-clause expressions that include other operators< / p >
< table > < thead > < tr > < th > Operator< / th > < th > Symbol< / th > < th > Example< / th > < / tr > < / thead > < tbody > < tr > < td > Not< / td > < td > < code > !< / code > < / td > < td > < code > !podmanIsInstalled< / code > or < code > !(podmanIsInstalled & & isWindows)< / code > < / td > < / tr > < tr > < td > And< / td > < td > < code > & & < / code > < / td > < td > < code > podmanIsInstalled & & isWindows< / code > < / td > < / tr > < tr > < td > Or< / td > < td > < code > ||< / code > < / td > < td > < code > isLinux || isWindows< / code > < / td > < / tr > < / tbody > < / table >
2024-08-14 11:49:56 +00:00
< h4 class = "anchor anchorWithStickyNavbar_JmGV" id = "equality-operators" > Equality operators< a href = "#equality-operators" class = "hash-link" aria-label = "Direct link to Equality operators" title = "Direct link to Equality operators" > < / a > < / h4 >
2024-03-04 10:44:38 +00:00
< p > Equality operators allow checking for equality of a context key' s value against a specified value.< / p >
< p > < strong > Note:< / strong > the right side is a value and not considered as a context key, so no value is searched in the context. If it contains whitespaces, it must be wrapped in single-quotes (for example < code > ' my tool.exe' < / code > )< / p >
< table > < thead > < tr > < th > Operator< / th > < th > Symbol< / th > < th > Example< / th > < / tr > < / thead > < tbody > < tr > < td > Equality< / td > < td > < code > ==< / code > < / td > < td > < code > onboardingContext:toolInstalled == oc.exe< / code > < / td > < / tr > < tr > < td > Inequality< / td > < td > < code > !=< / code > < / td > < td > < code > onboardingContext:toolInstalled != oc.exe< / code > < / td > < / tr > < / tbody > < / table >
2024-08-14 11:49:56 +00:00
< h4 class = "anchor anchorWithStickyNavbar_JmGV" id = "comparison-operators" > Comparison operators< a href = "#comparison-operators" class = "hash-link" aria-label = "Direct link to Comparison operators" title = "Direct link to Comparison operators" > < / a > < / h4 >
2024-03-04 10:44:38 +00:00
< p > Comparison operator allow comparing a context key' s value against a number.< / p >
< p > < strong > Note:< / strong > the left and right side of the operator must be separated by whitespace - < code > bar < 2< / code > , but not < code > bar< 2< / code > < / p >
< table > < thead > < tr > < th > Operator< / th > < th > Symbol< / th > < th > Example< / th > < / tr > < / thead > < tbody > < tr > < td > Greater than< / td > < td > < code > > < / code > , < code > > =< / code > < / td > < td > < code > onboardingContext:toolInstalled > 2< / code > < / td > < / tr > < tr > < td > Less than< / td > < td > < code > < < / code > , < code > < =< / code > < / td > < td > < code > onboardingContext:toolInstalled < = 3< / code > < / td > < / tr > < / tbody > < / table >
2024-09-11 13:17:49 +00:00
< h4 class = "anchor anchorWithStickyNavbar_JmGV" id = "in-and-not-in" > In and not in< a href = "#in-and-not-in" class = "hash-link" aria-label = "Direct link to In and not in" title = "Direct link to In and not in" > < / a > < / h4 >
2024-03-04 10:44:38 +00:00
< p > The < code > in< / code > /< code > not in< / code > operators allow checking if a value exists/not exists within the other. The right should be a context key, which value is retrieved in the context. The left can be a value or a context key.< / p >
< table > < thead > < tr > < th > Operator< / th > < th > Symbol< / th > < th > Example< / th > < / tr > < / thead > < tbody > < tr > < td > In< / td > < td > < code > in< / code > < / td > < td > < code > label in containerLabelKeys< / code > < / td > < / tr > < tr > < td > Not< / td > < td > < code > not in< / code > < / td > < td > < code > label not in containerLabelKeys< / code > < / td > < / tr > < / tbody > < / table >
2024-08-14 11:49:56 +00:00
< h4 class = "anchor anchorWithStickyNavbar_JmGV" id = "match-operator" > Match operator< a href = "#match-operator" class = "hash-link" aria-label = "Direct link to Match operator" title = "Direct link to Match operator" > < / a > < / h4 >
2024-03-04 10:44:38 +00:00
< p > The match operator allow treating the right side item as a regular expression literal to match against the left side.< / p >
2025-04-14 17:49:47 +00:00
< table > < thead > < tr > < th > Operator< / th > < th > Symbol< / th > < th > Example< / th > < / tr > < / thead > < tbody > < tr > < td > Matches< / td > < td > < code > =~< / code > < / td > < td > < code > label =~ /podman$/< / code > < / td > < / tr > < / tbody > < / table > < / div > < footer class = "theme-doc-footer docusaurus-mt-lg" > < div class = "row margin-top--sm theme-doc-footer-tags-row" > < div class = "col" > < b > Tags:< / b > < ul class = "tags_Ow0B padding--none margin-left--sm" > < li class = "tag_DFxh" > < a class = "tag_otG2 tagRegular_s0E1" href = "/docs/tags/podman-desktop" > podman-desktop< / a > < / li > < li class = "tag_DFxh" > < a class = "tag_otG2 tagRegular_s0E1" href = "/docs/tags/extension" > extension< / a > < / li > < li class = "tag_DFxh" > < a class = "tag_otG2 tagRegular_s0E1" href = "/docs/tags/writing" > writing< / a > < / li > < li class = "tag_DFxh" > < a class = "tag_otG2 tagRegular_s0E1" href = "/docs/tags/when-clause" > when clause< / a > < / li > < / ul > < / div > < / div > < div class = "row margin-top--sm theme-doc-footer-edit-meta-row" > < div class = "col" > < a href = "https://github.com/podman-desktop/podman-desktop/tree/main/website/docs/extensions/developing/when-clause-context.md" target = "_blank" rel = "noopener noreferrer" class = "theme-edit-this-page" > < svg fill = "currentColor" height = "20" width = "20" viewBox = "0 0 40 40" class = "iconEdit_bHB7" aria-hidden = "true" > < g > < path d = "m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z" > < / path > < / g > < / svg > Edit this page< / a > < / div > < div class = "col lastUpdated_ydrU" > < / div > < / div > < / footer > < / article > < nav class = "pagination-nav docusaurus-mt-lg" aria-label = "Docs pages" > < a class = "pagination-nav__link pagination-nav__link--prev" href = "/docs/extensions/developing/onboarding-workflow" > < div class = "pagination-nav__sublabel" > Previous< / div > < div class = "pagination-nav__label" > Onboarding workflow< / div > < / a > < a class = "pagination-nav__link pagination-nav__link--next" href = "/docs/extensions/developing/adding-icons" > < div class = "pagination-nav__sublabel" > Next< / div > < div class = "pagination-nav__label" > Adding icons< / div > < / a > < / nav > < / div > < / div > < div class = "col col--3" > < div class = "tableOfContents_XG6w thin-scrollbar theme-doc-toc-desktop" > < ul class = "table-of-contents table-of-contents__left-border" > < li > < a href = "#available-context-keys" class = "table-of-contents__link toc-highlight" > Available context keys< / a > < / li > < li > < a href = "#add-a-custom-when-clause-context" class = "table-of-contents__link toc-highlight" > Add a custom when clause context< / a > < / li > < li > < a href = "#conditional-operators" class = "table-of-contents__link toc-highlight" > Conditional operators< / a > < / li > < / ul > < / div > < / div > < / div > < / div > < / main > < / div > < / div > < / div > < footer class = "footer" > < div class = "container container-fluid" > < div class = "row footer__links" > < div class = "col footer__col" > < div class = "footer__title" > Documentation< / div > < ul class = "footer__items clean-list" > < li class = "footer__item" > < a class = "footer__link-item" href = "/docs/installation" > Installing Podman Desktop< / a > < / li > < li class = "footer__item" > < a class = "footer__link-item" href = "/docs/migrating-from-docker" > Migrating from Docker< / a > < / li > < li class = "footer__item" > < a class = "footer__link-item" href = "/docs/kubernetes" > Working with Kubernetes< / a > < / li > < li class = "footer__item" > < a class = "footer__link-item" href = "/docs/troubleshooting" > Troubleshooting< / a > < / li > < / ul > < / div > < div class = "col footer__col" > < div class = "footer__title" > Links< / div > < ul class = "footer__items clean-list" > < li class = "footer__item" > < a href = "https://github.com/podman-desktop/podman-desktop" target = "_blank" rel = "noopener noreferrer" class = "footer__link-item" > GitHub< svg width = "13.5" height = "13.5" aria-hidden = "true" viewBox = "0 0 24 24" class = "iconExternalLink_nPrP" > < path fill = "currentColor" d = "M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z" > < / path > < / svg > < / a > < / li > < li class = "footer__item" > < a href = "https://discord.com/invite/x5GzFF6QH4" target = "_blank" rel = "noopener noreferrer" class = "footer__link-item" > Chat (bridged): #podman-desktop on Discord< svg width = "13.5" height = "13.5" aria-hidden = "true" viewBox = "0 0 24 24" class = "iconExternalLink_nPrP" > < path fill = "currentColor" d = "M21 13v10h-21v-1
< div class = "flex flex-col items-start text-left gap-4" >
< div class = "w-96 mt-8 mb-8" >
< img class = "dark:hidden" alt = "Cloud Native Computing Foundation" src = "/img/cncf-logo.svg" >
< img class = "hidden dark:inline" alt = "Cloud Native Computing Foundation" src = "/img/cncf-logo-dark.svg" >
< / div >
< div class = "text-sm" >
< p class = "mb-1" > We are a < a href = "https://cncf.io/" class = "underline" > Cloud Native Computing Foundation< / a > sandbox project.< / p >
< p class = "mb-1" > © Copyright Podman Desktop Contributors 2025. © 2025 The Linux Foundation. All rights reserved.< / p >
< p class = "mb-1" > The Linux Foundation has registered trademarks and uses trademarks.
For a list of trademarks of The Linux Foundation, please see our
< a href = "https://www.linuxfoundation.org/trademark-usage/" class = "underline" > Trademark Usage< / a > page.< / p >
< / div >
< / div >
< / div > < / div > < / div > < / footer > < / div >
2024-03-04 10:44:38 +00:00
< / body >
< / html >