Path: blob/main/src/vs/base/common/desktopEnvironmentInfo.ts
3292 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { env } from './process.js';67// Define the enumeration for Desktop Environments8enum DesktopEnvironment {9UNKNOWN = 'UNKNOWN',10CINNAMON = 'CINNAMON',11DEEPIN = 'DEEPIN',12GNOME = 'GNOME',13KDE3 = 'KDE3',14KDE4 = 'KDE4',15KDE5 = 'KDE5',16KDE6 = 'KDE6',17PANTHEON = 'PANTHEON',18UNITY = 'UNITY',19XFCE = 'XFCE',20UKUI = 'UKUI',21LXQT = 'LXQT',22}2324const kXdgCurrentDesktopEnvVar = 'XDG_CURRENT_DESKTOP';25const kKDESessionEnvVar = 'KDE_SESSION_VERSION';2627export function getDesktopEnvironment(): DesktopEnvironment {28const xdgCurrentDesktop = env[kXdgCurrentDesktopEnvVar];29if (xdgCurrentDesktop) {30const values = xdgCurrentDesktop.split(':').map(value => value.trim()).filter(value => value.length > 0);31for (const value of values) {32switch (value) {33case 'Unity': {34const desktopSessionUnity = env['DESKTOP_SESSION'];35if (desktopSessionUnity && desktopSessionUnity.includes('gnome-fallback')) {36return DesktopEnvironment.GNOME;37}3839return DesktopEnvironment.UNITY;40}41case 'Deepin':42return DesktopEnvironment.DEEPIN;43case 'GNOME':44return DesktopEnvironment.GNOME;45case 'X-Cinnamon':46return DesktopEnvironment.CINNAMON;47case 'KDE': {48const kdeSession = env[kKDESessionEnvVar];49if (kdeSession === '5') { return DesktopEnvironment.KDE5; }50if (kdeSession === '6') { return DesktopEnvironment.KDE6; }51return DesktopEnvironment.KDE4;52}53case 'Pantheon':54return DesktopEnvironment.PANTHEON;55case 'XFCE':56return DesktopEnvironment.XFCE;57case 'UKUI':58return DesktopEnvironment.UKUI;59case 'LXQt':60return DesktopEnvironment.LXQT;61}62}63}6465const desktopSession = env['DESKTOP_SESSION'];66if (desktopSession) {67switch (desktopSession) {68case 'deepin':69return DesktopEnvironment.DEEPIN;70case 'gnome':71case 'mate':72return DesktopEnvironment.GNOME;73case 'kde4':74case 'kde-plasma':75return DesktopEnvironment.KDE4;76case 'kde':77if (kKDESessionEnvVar in env) {78return DesktopEnvironment.KDE4;79}80return DesktopEnvironment.KDE3;81case 'xfce':82case 'xubuntu':83return DesktopEnvironment.XFCE;84case 'ukui':85return DesktopEnvironment.UKUI;86}87}8889if ('GNOME_DESKTOP_SESSION_ID' in env) {90return DesktopEnvironment.GNOME;91}92if ('KDE_FULL_SESSION' in env) {93if (kKDESessionEnvVar in env) {94return DesktopEnvironment.KDE4;95}96return DesktopEnvironment.KDE3;97}9899return DesktopEnvironment.UNKNOWN;100}101102103