diff --git a/LICENSE b/LICENSE index 8b23445..7adda85 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 +Copyright 2021 Weilbyte Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/PVEDiscordDark.py b/PVEDiscordDark.py deleted file mode 100644 index 9e7729d..0000000 --- a/PVEDiscordDark.py +++ /dev/null @@ -1,191 +0,0 @@ -#!/usr/bin/python3 - -import os -import sys -import time -import subprocess -import urllib.request -import os.path -import shutil -import argparse - -ACTION = None - -images = [ - 'dd_cephblurp.png', 'dd_cephwhite.png', - 'dd_icon-cpu.png', 'dd_icon-hdd.png', - 'dd_icon-ram.png', 'dd_icon-swap.png', - 'dd_icon-cd.png', 'dd_icon-display.png', - 'dd_icon-network.png', 'dd_icon-cloud.png', - 'dd_icon-serial.png', 'dd_icon-usb.png', - 'dd_icon-pci.png', 'dd_logo.png', - 'dd_mini-bottom.png', 'dd_mini-top.png', - 'dd_readme', '/dd_tool-sprites.png', - 'dd_trigger.png', 'dd_loading.svg', - 'dd_icon-die.svg', 'dd_clear-trigger.png'] - -class colors: - HEADER = '\033[95m' - OKBLUE = '\033[94m' - OKGREEN = '\033[92m' - WARNING = '\033[93m' - FAIL = '\033[91m' - NORMAL = '\033[0m' - BOLD = '\033[1m' - UNDERLINE = '\033[4m' - -def clear(): - if ACTION == None: - print("\033c", end="") - -def cprint(color, text, bold=False, inline=False): - endc = '\n' - if inline: - endc = '' - if bold: - print(colors.BOLD) - print(color + text + colors.NORMAL, end=endc) - -def getPVEVersion(): - pv = subprocess.check_output('pveversion --verbose | grep pve-manager | cut -c 14- | cut -c -6', shell=True, stderr=open(os.devnull, 'w')) - pv = pv.decode('ascii').replace(" ", "").replace("\n","") - if (('/bin/' in pv) or (len(pv) > 7)): - return "" - else: - return pv - -def checkPVE(): - ver = getPVEVersion() - if (len(ver) < 1): - cprint(colors.FAIL, 'Unable to detect Proxmox.', True) - cprint(colors.NORMAL, 'A Proxmox installation could not be detected.') - exit(1) - else: - cprint(colors.OKGREEN, '\nPVE ' + ver + ' detected.') - -def checkConn(): - try: - urllib.request.urlopen('http://github.com') - return - except: - cprint(colors.FAIL, 'An Internet connection is required to install PVEDiscordDark.', True) - cprint(colors.NORMAL, 'Connect to the Internet and try again.') - exit(1) - -def themeIsInstalled(): - tplUsesTheme = False - tplFile = open('/usr/share/pve-manager/index.html.tpl') - tplLines = tplFile.readlines() - for line in tplLines: - if ("" in line or "" in line): - tplUsesTheme = True - if (os.path.isfile('/usr/share/pve-manager/css/dd_style.css') or tplUsesTheme): - return True - return False - -def installTheme(): - clear() - doHeader() - baseURL = os.getenv('BASEURL', 'https://github.com/Weilbyte/PVEDiscordDark/raw/' + os.getenv("BRANCH", "master")) - cprint(colors.NORMAL, '\nBacking up index template file..') - shutil.copyfile('/usr/share/pve-manager/index.html.tpl', '/usr/share/pve-manager/index.html.tpl.bak') - cprint(colors.NORMAL, 'Downloading stylesheet..') - urllib.request.urlretrieve(baseURL + '/PVEDiscordDark/sass/PVEDiscordDark.css', '/usr/share/pve-manager/css/dd_style.css') - cprint(colors.NORMAL, 'Downloading patcher..') - urllib.request.urlretrieve(baseURL + '/PVEDiscordDark/js/PVEDiscordDark.js', '/usr/share/pve-manager/js/dd_patcher.js') - cprint(colors.NORMAL, 'Applying stylesheet and patcher..') - with open('/usr/share/pve-manager/index.html.tpl', 'a') as tplFile: - tplFile.write("") - tplFile.write("") - for index, image in enumerate(images): - imageCurrent = index + 1 - cprint(colors.NORMAL, 'Downloading images [' + str(imageCurrent) + '/' + str(len(images)) + ']..\r', False, True) - urllib.request.urlretrieve(baseURL + '/PVEDiscordDark/images/' + image, '/usr/share/pve-manager/images/' + image) - cprint(colors.OKGREEN, '\nTheme installed successfully!', True) - if ACTION == None: - cprint(colors.NORMAL, 'Press [ENTER] to go back.') - input('') - doMainMenu() - -def uninstallTheme(): - clear() - doHeader() - cprint(colors.NORMAL, '\nCleaning up index template file..') - with open('/usr/share/pve-manager/index.html.tpl', 'r+') as tplFile: - tplLines = tplFile.readlines() - tplFile.seek(0) - for line in tplLines: - if ("" not in line or "" not in line): - tplFile.write(line) - tplFile.truncate() - if os.path.exists('/usr/share/javascript/extjs/charts.js.bak'): - cprint(colors.NORMAL, 'Reverting charts.js replacement..') - os.remove('/usr/share/javascript/extjs/charts.js') - shutil.copyfile('/usr/share/javascript/extjs/charts.js.bak', '/usr/share/javascript/extjs/charts.js') - os.remove('/usr/share/javascript/extjs/charts.js.bak') - if os.path.exists('/usr/share/pve-manager/css/dd_style.css'): - cprint(colors.NORMAL, 'Removing stylesheet..') - os.remove('/usr/share/pve-manager/css/dd_style.css') - if os.path.exists('/usr/share/pve-manager/js/dd_patcher.js'): - cprint(colors.NORMAL, 'Removing patcher..') - os.remove('/usr/share/pve-manager/js/dd_patcher.js') - cprint(colors.NORMAL, 'Removing images..') - for asset in os.listdir('/usr/share/pve-manager/images/'): - if asset.startswith('dd_'): - os.remove('/usr/share/pve-manager/images/' + asset) - cprint(colors.OKGREEN, '\n\nTheme uninstalled successfully!', True) - if ACTION == None: - cprint(colors.NORMAL, 'Press [ENTER] to go back.') - input('') - doMainMenu() - -def doHeader(): - cprint(colors.HEADER, '[~]', True, True) - cprint(colors.NORMAL, ' PVEDiscordDark Utility (DEPRECATED)\nThis installer is now deprecated, please use PVEDiscordDark.sh\n', False, True) - -def doMainMenu(): - clear() - doHeader() - isInstalled = themeIsInstalled() - cprint(colors.NORMAL, '[I]', True, True) - cprint(colors.NORMAL, ' Install theme', False, True) - if isInstalled: - cprint(colors.NORMAL, '[U]', True, True) - cprint(colors.NORMAL, ' Uninstall theme', False, True) - cprint(colors.NORMAL, '[Q]', True, True) - cprint(colors.NORMAL, ' Exit', False, True) - choice = input('\n\n>? ') - choice = choice.upper().replace(" ", "") - if choice == 'I': - installTheme() - elif (choice == 'U' and isInstalled): - uninstallTheme() - elif choice == 'Q': - exit(0) - else: - doMainMenu() - -def main(): - parser = argparse.ArgumentParser(description='PVEDiscordDark Theme Utility (DEPRECATED)') - parser.add_argument('--action', '-a', choices=['install', 'uninstall'], help='action for unattended mode') - args = parser.parse_args() - global ACTION - ACTION = args.action - checkPVE() - checkConn() - time.sleep(0.5) - if ACTION == None: - try: - doMainMenu() - except KeyboardInterrupt: - print('\n') - exit(0) - else: - if ACTION == 'install': - installTheme() - else: - if themeIsInstalled(): - uninstallTheme() - -if __name__ == "__main__": - main() diff --git a/PVEDiscordDark/images/dd_date-trigger.png b/PVEDiscordDark/images/dd_date-trigger.png new file mode 100644 index 0000000..dc445c7 Binary files /dev/null and b/PVEDiscordDark/images/dd_date-trigger.png differ diff --git a/PVEDiscordDark/sass/PVEDiscordDark.css b/PVEDiscordDark/sass/PVEDiscordDark.css index ee057cd..a45edf2 100644 --- a/PVEDiscordDark/sass/PVEDiscordDark.css +++ b/PVEDiscordDark/sass/PVEDiscordDark.css @@ -1 +1 @@ -.x-body{color:#fff;font-size:13px;line-height:17px;font-weight:300;font-family:'helvetica', 'arial', 'verdana', 'sans-serif';background:#fff}.x-form-text-default{color:#818082;background-color:#4A4D53;font:300 13px/17px 'helvetica', 'arial', 'verdana', 'sans-serif';min-height:22px;padding:0 6px 2px}.x-form-trigger-wrap-default{border-color:#cfcfcf;border-style:solid;border-width:0}.x-form-trigger-default{width:22px;background:0 center #72767d url("/pve2/images/dd_trigger.png") no-repeat}.pmx-clear-trigger{background-image:url("/pve2/images/dd_clear-trigger.png")}.x-form-display-field{color:#707c80}.x-form-text{color:#fff}.x-form-item-label-inner-default{color:#fff}.x-form-item-body.x-form-item-body-default.x-form-display-field-body.x-form-display-field-body-default{border-radius:6px;padding:2px}.x-field.x-form-item.x-form-item-default.x-form-readonly.x-form-type-text{border-radius:6px}.x-form-cb-label-default{color:inherit}.x-grid-cell-inner{background:transparent;color:#fff}.x-grid-cell-rowbody{background:#2C2F33;color:#fff}.x-grid-item{background:#2C2F33;border-width:0 !important}.x-grid-item:hover,.x-grid-item.x-grid-item-selected{background-color:#4A4D53}.x-grid-item-alt{background:#23272a;border-width:0 !important}.x-grid-header-ct{background:#2C2F33;border-width:0 !important}.proxmox-apt-repos .x-grid-group-title,.x-grid-group-title{color:#fff}.x-grid-row-loading{background-image:url("/pve2/images/dd_loading.svg");background-size:32px}.x-grid-group-hd.x-grid-group-hd-collapsible{background:#23272a;color:#fff;border-width:0}.x-grid-icon-custom:after{text-shadow:0 0 0 #2C2F33}.x-grid-icon-custom.lock-migrate:after{color:#faa61a}.x-grid-empty{background-color:inherit;color:#fff}.x-box-scroller{background:#2C2F33 !important}.x-box-scroller-body-vertical{background:#2C2F33 !important}.x-box-inner{overflow:hidden;position:relative;left:0;top:0;top-background:#23272a}.x-treelist-item-leaf{background:#2C2F33;color:#fff}.x-treelist-container{background:#2C2F33;color:#fff}.x-treelist-row{background:#2C2F33;color:#fff}.x-treelist-row-with-icon{background:#2C2F33;color:#fff}.x-treelist-item-expandable{background:#2C2F33;color:#fff}.x-treelist-item-wrap{background:#2C2F33;color:#fff}.x-treelist-item-text{background:#2C2F33;color:#fff}.x-treelist-item-icon{background:#2C2F33;color:#fff}.x-treelist-row-over{color:#ff0}.x-treelist-row-over>*>.x-treelist-item-text{color:#7289da;-webkit-transition:color .5s;transition:color .5s}.x-treelist-row-over>*>.x-treelist-item-icon{color:#7289da;-webkit-transition:color .5s;transition:color .5s}.x-treelist-row-over>*>.x-treelist-item-icon.pve-itype-treelist-item-icon-cdrom{content:' ';background:url("/pve2/images/dd_icon-cdblurp.png") no-repeat;background-size:16px 16px;-webkit-transition:background .5s;transition:background .5s;height:16px;top:50%}.x-treelist-row-over>*>.fa-ceph:before{background-image:url("/pve2/images/dd_cephblurp.png");background-size:14px 14px;-webkit-transition:background-image .5s;transition:background-image .5s}.x-treelist-item-selected>.x-treelist-row{background-color:#23272a}.x-treelist-item-selected>div>div>.pve-itype-treelist-item-icon-cdrom{content:' ';background:url("/pve2/images/dd_icon-cdblurp.png") no-repeat;background-size:16px 16px;-webkit-transition:background .5s;transition:background .5s;height:16px;top:50%}.x-treelist-item-selected>div>div>.x-treelist-item-icon.fa.fa-ceph:before{background-image:url("/pve2/images/dd_cephblurp.png");background-size:14px 14px;-webkit-transition:background-image .5s;transition:background-image .5s}.x-treelist-item-selected>div>div>div{color:#7289da}.x-legend-item{background:#2C2F33;color:#fff;border-width:0}.x-legend-container{background:#2C2F33;border-radius:0;-webkit-box-shadow:rgba(0,0,0,0) 0 0 0;box-shadow:rgba(0,0,0,0) 0 0 0;border-width:0}.x-legend.x-docked-top .x-legend-item{border-left:0;border-bottom:0}.x-legend.x-docked-bottom .x-legend-item{border-left:0;border-bottom:0}.x-legend-panel.x-docked-top .x-legend-item{border-left:0;border-bottom:0}.x-legend-panel.x-docked-bottom .x-legend-item{border-left:0;border-bottom:0}.x-panel-header{background:#23272a;border:0}.x-panel-body-default{background:#2C2F33;color:#fff;font-size:13px;font-weight:300;font-family:'helvetica', 'arial', 'verdana', 'sans-serif';border-color:#fff;border-style:solid;border-width:0}.x-toolbar-default{background-color:#2C2F33;border-width:0}.x-toolbar{background:#2C2F33}.x-toolbar-vertical-scroller{background:#2C2F33 !important}.x-toolbar-default-vertical-scroller{background:#2C2F33 !important}.x-toolbar-text.x-box-item.x-toolbar-item.x-toolbar-text-default{color:#fff}.x-btn{background:#7289da;border-width:0}.x-btn.x-unselectable.x-box-item.x-toolbar-item.x-btn-default-toolbar-small.x-btn-over,.x-btn.x-unselectable.x-box-item.x-toolbar-item.x-btn-default-toolbar-small.x-btn-menu-active{background-color:#677bc4}.x-btn.x-unselectable.x-box-item.x-btn-default-small.x-btn-over{background-color:#677bc4}.x-btn.x-btn-menu-active.x-btn-default-toolbar-small,.x-btn.x-btn.x-btn-pressed.x-btn-default-toolbar-small{background-color:#677bc4}.x-btn-over.x-btn-default-toolbar-small{background-color:#677bc4}.x-keyboard-mode .x-btn-focus.x-btn-default-toolbar-small,.x-btn-focus.x-btn-default-toolbar-small{background-color:#7289da}.x-btn-inner{color:#fff}.x-btn-inner.x-btn-inner-default-small{color:#fff}.x-btn-inner.x-btn-inner-default-toolbar-small{color:#fff}.x-btn-disabled{background-image:none;background-color:#737fab !important}.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-undo,.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-terminal,.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-send-o,.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-fw.fa-ellipsis-v,.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-refresh{color:#fff}.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-play{color:#43b581}.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-power-off{color:#d23d3f}.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.x-btn-icon-el-default-toolbar-small.fa.fa-question-circle{color:#fff}.x-btn-icon-el.x-btn-icon-el-default-small.fa.fa-book.x-btn-icon-el-default-toolbar-small,.x-btn-icon-el.x-btn-icon-el-default-small.fa.black.fa-gear{color:#fff}.x-btn-wrap-default-toolbar-small.x-btn-arrow-right:after{background-image:url("/pve2/images/dd_default-toolbar-small-arrow.png")}.x-btn-wrap-default-toolbar-small.x-btn-split-right:after{background-image:url("/pve2/images/dd_default-toolbar-small-s-arrow.png")}.x-column-header-inner{background:#23272a;border-width:0 !important}.x-column-header-default{background:#2C2F33;border-width:0 !important}.x-column-header-text-inner{color:#fff}.x-column-header-trigger{border-color:#23272a}.x-tab{background:#737fab;color:#fff;border-width:0}.x-tab-inner{color:#fff}.x-tab-active{background:#7289da !important;border-width:0 !important}.x-tab-over{background:#7289da !important;border-width:0 !important}.x-tab-default-focus{background:#7289da !important;border-width:0 !important}.x-tab-focus{background:#7289da !important;border-width:0 !important}.x-tab-bar-body{background:#23272a}.x-tab-disabled{background:#737fab !important}.x-window-body{background:#23272a;border-bottom-width:0;border-right-width:0}.x-window-default{border-radius:0;background-color:#23272a;-webkit-box-shadow:none;box-shadow:none;border-color:#23272a;border-style:none;border-width:0;padding:0}.x-window-default-mc{background-color:#23272a}.x-window-body-default{color:white;border-width:0 !important}.x-window-header-default-top{border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important;background-color:#23272a;border-width:0 !important;padding:9px}.x-window-text{color:#fff}.x-window-header.x-header.x-header-draggable.x-docked.x-unselectable.x-window-header-default.x-horizontal.x-window-header-horizontal.x-window-header-default-horizontal.x-top.x-window-header-top.x-window-header-default-top.x-box-layout-ct{background:#23272a;border-bottom-width:0;border-right-width:0}.x-message-box .x-window-body{background-color:#2C2F33}.x-viewport{background:#23272a}.x-viewport>.x-body{background:#23272a}.x-menu-item-focus{background-color:#677bc4}.x-menu-item{background:#7289da;border-style:none;border-width:0}.x-menu-default{background:#7289da;border:1px solid #23272a}.x-menu-item-text{color:#fff}.x-menu-header{border-radius:1px;background:#23272a;border-width:0}.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-building,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-folder,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-floppy-o,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-file-o,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-clone,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-send-o,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-group,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-user,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-user-o,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-bar-chart,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-address-book-o{color:#fff}.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-play{color:#43b581}.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-stop,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-power-off{color:#d23d3f}.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-pause,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-download{color:#faa61a}.x-menu-item-icon-default.x-menu-item-icon.fa.fa-heartbeat,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-cube,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-terminal,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-desktop,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-trash-o{color:#fff}.x-menu-item-icon-default.x-menu-item-icon.fa.fa-stop{color:#d23d3f}.x-menu-item-default.x-menu-item-separator{height:0;border-top-width:0;margin:0;padding:0}div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(2)>div>div[class*="x-menu-item"],div[aria-labelledby^="nodeCmdMenu-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(2)>div>div[class*="x-menu-item"],div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div>div:nth-child(2)>div>div[class*="x-menu-item"],div[aria-labelledby^="nodeCmdMenu-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div>div:nth-child(2)>div>div[class*="x-menu-item"]{background:#2C2F33}div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(2)>div>div[class*="x-menu-item"]>a[class*="x-menu-item-focus"],div[aria-labelledby^="nodeCmdMenu-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(2)>div>div[class*="x-menu-item"]>a[class*="x-menu-item-focus"],div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div>div:nth-child(2)>div>div[class*="x-menu-item-focus"]>a,div[aria-labelledby^="nodeCmdMenu-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div>div:nth-child(2)>div>div[class*="x-menu-item-focus"]>a{background:#23272a}div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(2)>div>div[class*="x-menu-item"]>a[aria-disabled="true"],div[aria-labelledby^="nodeCmdMenu-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(2)>div>div[class*="x-menu-item"]>a[aria-disabled="true"],div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div>div:nth-child(2)>div>div[class*="x-menu-item"]>a[aria-disabled="true"],div[aria-labelledby^="nodeCmdMenu-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div>div:nth-child(2)>div>div[class*="x-menu-item"]>a[aria-disabled="true"]{opacity:0.5;background:#23272a}div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(3)>div:nth-child(1)>div[class*="x-menu-item"]{background:inherit}div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(3)>div:nth-child(1)>div[class*="x-menu-item"]>a[class*="x-menu-item-focus"]{background:#23272a}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent-expanded.fa.fa-server{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent-expanded.fa.fa-building{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent-expanded.fa.fa-database{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent-expanded.fa.fa-desktop{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent-expanded.fa.fa-cube{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent.fa.fa-server{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent.fa.fa-building{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent.fa.fa-cube{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent.fa.fa-desktop{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent.fa.fa-database{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-cube{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-cube.running{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-fw.fa-unlock{color:white}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-desktop{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-database{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-file-o:before{color:rgba(114,137,218,0.6)}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-file-o:after{color:#7289da;background:transparent;text-shadow:none}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-building.online:before{color:#7289da}.x-tree-icon.x-tree-icon-custom.lock-migrate:after{color:#faa61a}.x-tree-icon-parent-expanded:not(.x-tree-icon-custom):before,.x-tree-icon-parent:not(.x-tree-icon-custom):before{color:white}.x-tree-icon-custom:after{text-shadow:0 0 0 #2C2F33}.x-tree-arrows .x-tree-expander{background-image:url("/pve2/images/dd_arrows.png")}.x-progress{background:#2C2F33}.x-progress-default .x-progress-bar-default{background-color:#43b581}.x-progress-text{color:#fff !important}.x-progress-text.x-progress-text-back{color:#fff !important}.x-tip-default{background-color:#7289da;color:#fff;border-radius:0;border-width:0}.x-component{color:#fff}.x-component.x-box-item.x-component-default{background-color:transparent}.x-component.x-fieldset-header-text.x-component-default{color:#fff}.x-autocontainer-innerCt{background:#2C2F33}.x-title-text{color:#7289da}.x-mask{background-color:rgba(26,26,29,0.27)}.x-surface-canvas{border-radius:3px}.x-fieldset-default{border:1px solid #7289da}.x-vertical-scroller{background:#2C2F33 !important}.x-css-shadow{display:none}.critical{color:#ba2b2d}.warning{color:#faa61a}.proxmox-warning-row{background-color:rgba(250,166,26,0.35)}.install-mask{color:white;background-color:#23272a}.x-splitter{background:#23272a}.x-splitter-collapsed .x-layout-split-bottom{background-image:url("/pve2/images/dd_mini-top.png")}.x-boundlist-item{color:white;background-color:#2C2F33;border:none}.x-boundlist-item:hover{background-color:#4A4D53}.x-boundlist-item.x-boundlist-selected{background-color:#4A4D53}.x-boundlist{border-color:#23272a}.x-datepicker-column-header-inner{background-color:#2C2F33;color:white}.x-datepicker{border:none}.x-datepicker-date{background-color:#2C2F33;color:white;border:none}.x-datepicker-cell{border:0.5px solid #4A4D53}.x-datepicker-header{background-color:#23272a}.x-datepicker-footer{background-color:#2C2F33}.x-monthpicker,.x-monthpicker-buttons{color:white;border:none;background-color:#2C2F33}.x-monthpicker-item-inner{color:white;border:none;opacity:0.9}.x-monthpicker-months{border-color:#23272a}.x-monthpicker-selected,.x-datepicker-selected div.x-datepicker-date{border:none !important;color:white !important;opacity:1;background-color:#4A4D53 !important}div[id^="pveDcHealth-"][id$="-body"],div[id^="pveDcGuests-"][id$="-body"],div[id^="pveDcSummary-"][id$="-innerCt"]>div:nth-child(3)>div:nth-child(2),div[id^="pveDcSummary-"][id$="-innerCt"]>div:nth-child(5)>div:nth-child(2)>div>div{background-color:#23272a}div[id^="pveDcSummary-"][id$="-innerCt"]>div:nth-child(4)>div:nth-child(3){border:1px solid #23272a}div[id^="proxmoxRRDChart-"]>div:nth-child(3)>div{background-color:#23272a}div[id^="pveCephInstallWindow-"][id$="-innerCt"] div div div div{background:#23272a}#toolbar-1069-innerCt{background:#2C2F33}#button-1030{background:#23272a;border:1px solid #d23d3f}#menuitem-1030-iconEl{color:white}#menuitem-1031-iconEl{color:white}#menuitem-1032-iconEl{color:white}#menuitem-1034-iconEl{color:#c52d2f}[id^="pveNodeStatus"]{background:#23272a}div[id^="toolbar-"][id$="-innerCt"] div[id^="toolbar-"][id$="-targetEl"] div ul li div{background-color:#2C2F33}div[id^="pveGuestStatusView-"][id$="-body"]{background:#23272a}div[id^="pveStorageStatusView-"][id$="-body"]{background:#23272a}div[id^="pveNotesView-"][id$="-innerCt"]{background:#23272a}[id^="versioninfo"]{background:#23272a}[id^="proxmoxGauge"]{background:#23272a}[id^="tooltip"]{background:#7289da;color:#fff;border-width:0}[id^="ext-quicktips-tip-body"]{background-color:#7289da;color:#fff;border-radius:0;border-width:0}[id^="ext-quicktips-tip-innerCt"]{background-color:#7289da;color:#fff;border-radius:0;border-width:0}[id^="ext-quicktips-tip-ext-quicktips-tip-outerCt"]{background-color:#7289da;color:#fff;border-radius:0;border-width:0}[id^="ext-form-error"]{background-color:#7289da;color:#fff;border-radius:0;border-width:0}[id^="toolbar"]{background:#2C2F33}[id^="legend"]{background:#23272a;border-color:red}a[id^="menuitem-"][id$="-itemEl"] div[class*="fa-refresh"]:before,span[id^="proxmoxButton-"][id$="-btnEl"] span[class*="fa-undo"]:before{color:#faa61a}a[id^="menuitem-"][id$="-itemEl"] div[class*="fa-trash-o"]:before{color:#ba2b2d}#userinfo.x-btn{background-color:transparent !important;border:1px solid #d23d3f !important}div[id="menu-1029-targetEl"]>div[class*="x-menu-item"]{background:#2C2F33}div[id="menu-1029-targetEl"]>div[class*="x-menu-item"]>a[class*="x-menu-item-focus"]{background:#23272a}div[id="menu-1029-targetEl"]>div[class*="x-menu-item"]>div[class*="x-menu-item"]>a[aria-disabled="true"]{opacity:0.5;background:#23272a}.pve-itype-icon-processor,.pmx-itype-icon-processor{background-image:url("/pve2/images/dd_icon-cpu.png")}.pve-itype-icon-memory,.pmx-itype-icon-memory{background-image:url("/pve2/images/dd_icon-ram.png")}.pve-itype-icon-storage{background-image:url("/pve2/images/dd_icon-hdd.png")}.pve-itype-icon-swap{background-image:url("/pve2/images/dd_icon-swap.png")}.pve-itype-icon-display{background-image:url("/pve2/images/dd_icon-display.png")}.x-grid-row-console{background-image:url("/pve2/images/dd_icon-display.png")}.pve-itype-icon-cdrom{background-image:url("/pve2/images/dd_icon-cd.png")}.pve-itype-treelist-item-icon-cdrom{content:' ';background:url("/pve2/images/dd_icon-cd.png") no-repeat;background-size:16px 16px;-webkit-transition:background 2s;transition:background 2s;height:16px;top:50%}.pve-itype-icon-network{background-image:url("/pve2/images/dd_icon-network.png")}.pve-itype-icon-pci{background-image:url("/pve2/images/dd_icon-pci.png")}.pve-itype-icon-usb{background-image:url("/pve2/images/dd_icon-usb.png")}.pve-itype-icon-serial{background-image:url("/pve2/images/dd_icon-serial.png")}.pve-itype-icon-cloud{background-image:url("/pve2/images/dd_icon-cloud.png")}.pve-itype-icon-die{background-image:url("/pve2/images/dd_icon-die.svg")}.fa-exchange:before{color:white}.fa-usb:before{color:white}.fa-hdd-o:before{color:white}.fa-cloud:before{color:white}.x-treelist-item-icon.fa:before{color:inherit}.fa-volume-up:before{color:white}.fa-ceph:before{background-image:url("/pve2/images/dd_cephwhite.png")}.fa-sign-out:before{color:#ba2b2d}.fa-language:before{color:white}.fa-building.online{color:#7289da !important}.fa-window-restore:before{color:white}.fa-fw.x-grid-icon-custom.fa.fa-database{color:#7289da}.fa-fw.x-grid-icon-custom.fa.fa-desktop{color:#7289da}.fa-fw.x-grid-icon-custom.fa.fa-cube{color:#7289da}.fa-fw.x-grid-icon-custom.fa.fa-file-o:before{color:rgba(114,137,218,0.6)}.fa-fw.x-grid-icon-custom.fa.fa-file-o:after{color:#7289da;background:transparent;text-shadow:none}.lxc:after{background:transparent !important;color:#7289da;text-shadow:0 0 0 #2C2F33 !important}.qemu:after{background:transparent !important;color:#7289da;text-shadow:0 0 0 #2C2F33 !important}.proxmox-invalid-row{background-color:#401314}.usage{background-color:#7289da}.usage-wrapper{border:1px solid #7289da}.x-tool-img{background-image:url("/pve2/images/dd_tool-sprites.png") !important}.x-layout-split-bottom{background-image:url("/pve2/images/dd_mini-bottom.png") !important}.pmx-hint{color:#faa61a;background-color:transparent}div[id^="PVE-lxc-Config-"]:not([id$="-body"])>div:nth-child(1),div[id^="PVE-qemu-Config-"]:not([id$="-body"])>div:nth-child(1),div[id^="PVE-node-Config-"]:not([id$="-body"])>div:nth-child(1),div[id^="PVE-dc-Config-"]:not([id$="-body"])>div:nth-child(1),div[id^="PVE-storage-Browser"]:not([id$="-body"])>div:nth-child(1),div[id^="pvePanelConfig"]:not([id$="-body"])>div:nth-child(1){border-bottom:3px solid #23272a !important}div[id^="PVE-node-Config-"][id$="-body"],div[id^="PVE-dc-Config-"][id$="-body"],div[id^="PVE-qemu-Config-"][id$="-body"],div[id^="PVE-lxc-Config-"][id$="-body"],div[id^="PVE-storage-Browser"][id$="-body"],div[id^="pvePanelConfig"][id$="-body"]{border-left:3px solid #23272a !important}.x-legend-horizontal .x-legend-item,.x-legend-horizontal .x-legend-item:first-child,.x-legend-horizontal .x-legend-item:last-child,.x-legend-vertical .x-legend-item,.x-legend-vertical .x-legend-item:first-child,.x-legend-vertical .x-legend-item:last-child{border:none}html{overflow:scroll;overflow-x:hidden}*{font-weight:350}::-webkit-scrollbar{width:0;height:6px;background:#4A4D53}::-webkit-scrollbar:hover{background:#23272a}a{color:white} +.x-body{color:#fff;font-size:13px;line-height:17px;font-weight:300;font-family:'helvetica', 'arial', 'verdana', 'sans-serif';background:#fff}.x-form-text-default{color:#818082;background-color:#4A4D53;font:300 13px/17px 'helvetica', 'arial', 'verdana', 'sans-serif';min-height:22px;padding:0 6px 2px}.x-form-trigger-wrap-default{border-color:#cfcfcf;border-style:solid;border-width:0}.x-form-trigger-default{width:22px;background:0 center #72767d url("/pve2/images/dd_trigger.png") no-repeat}.pmx-clear-trigger{background-image:url("/pve2/images/dd_clear-trigger.png")}.x-form-display-field{color:#707c80}.x-form-text{color:#fff}.x-form-item-label-inner-default{color:#fff}.x-form-item-body.x-form-item-body-default.x-form-display-field-body.x-form-display-field-body-default{border-radius:6px;padding:2px}.x-field.x-form-item.x-form-item-default.x-form-readonly.x-form-type-text{border-radius:6px}.x-form-cb-label-default{color:inherit}.x-form-field-date .x-form-date-trigger{background-image:url("/pve2/images/dd_date-trigger.png")}.x-grid-cell-inner{background:transparent;color:#fff}.x-grid-cell-rowbody{background:#2C2F33;color:#fff}.x-grid-item{background:#2C2F33;border-width:0 !important}.x-grid-item:hover,.x-grid-item.x-grid-item-selected{background-color:#4A4D53}.x-grid-item-alt{background:#23272a;border-width:0 !important}.x-grid-header-ct{background:#2C2F33;border-width:0 !important}.proxmox-apt-repos .x-grid-group-title,.x-grid-group-title{color:#fff}.x-grid-row-loading{background-image:url("/pve2/images/dd_loading.svg");background-size:32px}.x-grid-group-hd.x-grid-group-hd-collapsible{background:#23272a;color:#fff;border-width:0}.x-grid-icon-custom:after{text-shadow:0 0 0 #2C2F33}.x-grid-icon-custom.lock-migrate:after{color:#faa61a}.x-grid-empty{background-color:inherit;color:#fff}.x-box-scroller{background:#2C2F33 !important}.x-box-scroller-body-vertical{background:#2C2F33 !important}.x-box-inner{overflow:hidden;position:relative;left:0;top:0;top-background:#23272a}.x-treelist-item-leaf{background:#2C2F33;color:#fff}.x-treelist-container{background:#2C2F33;color:#fff}.x-treelist-row{background:#2C2F33;color:#fff}.x-treelist-row-with-icon{background:#2C2F33;color:#fff}.x-treelist-item-expandable{background:#2C2F33;color:#fff}.x-treelist-item-wrap{background:#2C2F33;color:#fff}.x-treelist-item-text{background:#2C2F33;color:#fff}.x-treelist-item-icon{background:#2C2F33;color:#fff}.x-treelist-row-over{color:#ff0}.x-treelist-row-over>*>.x-treelist-item-text{color:#7289da;-webkit-transition:color .5s;transition:color .5s}.x-treelist-row-over>*>.x-treelist-item-icon{color:#7289da;-webkit-transition:color .5s;transition:color .5s}.x-treelist-row-over>*>.x-treelist-item-icon.pve-itype-treelist-item-icon-cdrom{content:' ';background:url("/pve2/images/dd_icon-cdblurp.png") no-repeat;background-size:16px 16px;-webkit-transition:background .5s;transition:background .5s;height:16px;top:50%}.x-treelist-row-over>*>.fa-ceph:before{background-image:url("/pve2/images/dd_cephblurp.png");background-size:14px 14px;-webkit-transition:background-image .5s;transition:background-image .5s}.x-treelist-item-selected>.x-treelist-row{background-color:#23272a}.x-treelist-item-selected>div>div>.pve-itype-treelist-item-icon-cdrom{content:' ';background:url("/pve2/images/dd_icon-cdblurp.png") no-repeat;background-size:16px 16px;-webkit-transition:background .5s;transition:background .5s;height:16px;top:50%}.x-treelist-item-selected>div>div>.x-treelist-item-icon.fa.fa-ceph:before{background-image:url("/pve2/images/dd_cephblurp.png");background-size:14px 14px;-webkit-transition:background-image .5s;transition:background-image .5s}.x-treelist-item-selected>div>div>div{color:#7289da}.x-legend-item{background:#2C2F33;color:#fff;border-width:0}.x-legend-container{background:#2C2F33;border-radius:0;-webkit-box-shadow:rgba(0,0,0,0) 0 0 0;box-shadow:rgba(0,0,0,0) 0 0 0;border-width:0}.x-legend.x-docked-top .x-legend-item{border-left:0;border-bottom:0}.x-legend.x-docked-bottom .x-legend-item{border-left:0;border-bottom:0}.x-legend-panel.x-docked-top .x-legend-item{border-left:0;border-bottom:0}.x-legend-panel.x-docked-bottom .x-legend-item{border-left:0;border-bottom:0}.x-panel-header{background:#23272a;border:0}.x-panel-body-default{background:#2C2F33;color:#fff;font-size:13px;font-weight:300;font-family:'helvetica', 'arial', 'verdana', 'sans-serif';border-color:#fff;border-style:solid;border-width:0}.x-toolbar-default{background-color:#2C2F33;border-width:0}.x-toolbar{background:#2C2F33}.x-toolbar-vertical-scroller{background:#2C2F33 !important}.x-toolbar-default-vertical-scroller{background:#2C2F33 !important}.x-toolbar-text.x-box-item.x-toolbar-item.x-toolbar-text-default{color:#fff}.x-btn{background:#7289da;border-width:0}.x-btn.x-unselectable.x-box-item.x-toolbar-item.x-btn-default-toolbar-small.x-btn-over,.x-btn.x-unselectable.x-box-item.x-toolbar-item.x-btn-default-toolbar-small.x-btn-menu-active{background-color:#677bc4}.x-btn.x-unselectable.x-box-item.x-btn-default-small.x-btn-over{background-color:#677bc4}.x-btn.x-btn-menu-active.x-btn-default-toolbar-small,.x-btn.x-btn.x-btn-pressed.x-btn-default-toolbar-small{background-color:#677bc4}.x-btn-over.x-btn-default-toolbar-small{background-color:#677bc4}.x-keyboard-mode .x-btn-focus.x-btn-default-toolbar-small,.x-btn-focus.x-btn-default-toolbar-small{background-color:#7289da}.x-btn-inner{color:#fff}.x-btn-inner.x-btn-inner-default-small{color:#fff}.x-btn-inner.x-btn-inner-default-toolbar-small{color:#fff}.x-btn-disabled{background-image:none;background-color:#737fab !important}.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-undo,.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-terminal,.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-send-o,.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-fw.fa-ellipsis-v,.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-refresh{color:#fff}.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-play{color:#43b581}.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.fa.fa-power-off{color:#d23d3f}.x-btn-icon-el.x-btn-icon-el-default-toolbar-small.x-btn-icon-el-default-toolbar-small.fa.fa-question-circle{color:#fff}.x-btn-icon-el.x-btn-icon-el-default-small.fa.fa-book.x-btn-icon-el-default-toolbar-small,.x-btn-icon-el.x-btn-icon-el-default-small.fa.black.fa-gear{color:#fff}.x-btn-wrap-default-toolbar-small.x-btn-arrow-right:after{background-image:url("/pve2/images/dd_default-toolbar-small-arrow.png")}.x-btn-wrap-default-toolbar-small.x-btn-split-right:after{background-image:url("/pve2/images/dd_default-toolbar-small-s-arrow.png")}.x-column-header-inner{background:#23272a;border-width:0 !important}.x-column-header-default{background:#2C2F33;border-width:0 !important}.x-column-header-text-inner{color:#fff}.x-column-header-trigger{border-color:#23272a}.x-tab{background:#737fab;color:#fff;border-width:0}.x-tab-inner{color:#fff}.x-tab-active{background:#7289da !important;border-width:0 !important}.x-tab-over{background:#7289da !important;border-width:0 !important}.x-tab-default-focus{background:#7289da !important;border-width:0 !important}.x-tab-focus{background:#7289da !important;border-width:0 !important}.x-tab-bar-body{background:#23272a}.x-tab-disabled{background:#737fab !important}.x-window-body{background:#23272a;border-bottom-width:0;border-right-width:0}.x-window-default{border-radius:0;background-color:#23272a;-webkit-box-shadow:none;box-shadow:none;border-color:#23272a;border-style:none;border-width:0;padding:0}.x-window-default-mc{background-color:#23272a}.x-window-body-default{color:white;border-width:0 !important}.x-window-header-default-top{border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important;background-color:#23272a;border-width:0 !important;padding:9px}.x-window-text{color:#fff}.x-window-header.x-header.x-header-draggable.x-docked.x-unselectable.x-window-header-default.x-horizontal.x-window-header-horizontal.x-window-header-default-horizontal.x-top.x-window-header-top.x-window-header-default-top.x-box-layout-ct{background:#23272a;border-bottom-width:0;border-right-width:0}.x-message-box .x-window-body{background-color:#2C2F33}.x-viewport{background:#23272a}.x-viewport>.x-body{background:#23272a}.x-menu-item-focus{background-color:#677bc4}.x-menu-item{background:#7289da;border-style:none;border-width:0}.x-menu-default{background:#7289da;border:1px solid #23272a}.x-menu-item-text{color:#fff}.x-menu-header{border-radius:1px;background:#23272a;border-width:0}.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-building,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-folder,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-floppy-o,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-file-o,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-clone,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-send-o,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-group,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-user,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-user-o,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-bar-chart,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-address-book-o{color:#fff}.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-play{color:#43b581}.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-stop,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-power-off{color:#d23d3f}.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-pause,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-fw.fa-download{color:#faa61a}.x-menu-item-icon-default.x-menu-item-icon.fa.fa-heartbeat,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-cube,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-terminal,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-desktop,.x-menu-item-icon-default.x-menu-item-icon.fa.fa-trash-o{color:#fff}.x-menu-item-icon-default.x-menu-item-icon.fa.fa-stop{color:#d23d3f}.x-menu-item-default.x-menu-item-separator{height:0;border-top-width:0;margin:0;padding:0}div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(2)>div>div[class*="x-menu-item"],div[aria-labelledby^="nodeCmdMenu-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(2)>div>div[class*="x-menu-item"],div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div>div:nth-child(2)>div>div[class*="x-menu-item"],div[aria-labelledby^="nodeCmdMenu-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div>div:nth-child(2)>div>div[class*="x-menu-item"]{background:#2C2F33}div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(2)>div>div[class*="x-menu-item"]>a[class*="x-menu-item-focus"],div[aria-labelledby^="nodeCmdMenu-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(2)>div>div[class*="x-menu-item"]>a[class*="x-menu-item-focus"],div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div>div:nth-child(2)>div>div[class*="x-menu-item-focus"]>a,div[aria-labelledby^="nodeCmdMenu-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div>div:nth-child(2)>div>div[class*="x-menu-item-focus"]>a{background:#23272a}div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(2)>div>div[class*="x-menu-item"]>a[aria-disabled="true"],div[aria-labelledby^="nodeCmdMenu-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(2)>div>div[class*="x-menu-item"]>a[aria-disabled="true"],div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div>div:nth-child(2)>div>div[class*="x-menu-item"]>a[aria-disabled="true"],div[aria-labelledby^="nodeCmdMenu-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div>div:nth-child(2)>div>div[class*="x-menu-item"]>a[aria-disabled="true"]{opacity:0.5;background:#23272a}div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(3)>div:nth-child(1)>div[class*="x-menu-item"]{background:inherit}div[aria-labelledby^="ext-comp-"][aria-labelledby$="_header-title-textEl"]>div:nth-child(2)>div:nth-child(3)>div:nth-child(1)>div[class*="x-menu-item"]>a[class*="x-menu-item-focus"]{background:#23272a}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent-expanded.fa.fa-server{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent-expanded.fa.fa-building{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent-expanded.fa.fa-database{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent-expanded.fa.fa-desktop{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent-expanded.fa.fa-cube{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent.fa.fa-server{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent.fa.fa-building{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent.fa.fa-cube{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent.fa.fa-desktop{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-parent.fa.fa-database{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-cube{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-cube.running{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-fw.fa-unlock{color:white}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-desktop{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-database{color:#7289da !important}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-file-o:before{color:rgba(114,137,218,0.6)}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-file-o:after{color:#7289da;background:transparent;text-shadow:none}.x-tree-icon.x-tree-icon-custom.x-tree-icon-leaf.fa.fa-building.online:before{color:#7289da}.x-tree-icon.x-tree-icon-custom.lock-migrate:after{color:#faa61a}.x-tree-icon-parent-expanded:not(.x-tree-icon-custom):before,.x-tree-icon-parent:not(.x-tree-icon-custom):before{color:white}.x-tree-icon-custom:after{text-shadow:0 0 0 #2C2F33}.x-tree-arrows .x-tree-expander{background-image:url("/pve2/images/dd_arrows.png")}.x-progress{background:#2C2F33}.x-progress-default .x-progress-bar-default{background-color:#43b581}.x-progress-text{color:#fff !important}.x-progress-text.x-progress-text-back{color:#fff !important}.x-tip-default{background-color:#7289da;color:#fff;border-radius:0;border-width:0}.x-component{color:#fff}.x-component.x-box-item.x-component-default{background-color:transparent}.x-component.x-fieldset-header-text.x-component-default{color:#fff}.x-autocontainer-innerCt{background:#2C2F33}.x-title-text{color:#7289da}.x-mask{background-color:rgba(26,26,29,0.27)}.x-surface-canvas{border-radius:3px}.x-fieldset-default{border:1px solid #7289da}.x-vertical-scroller{background:#2C2F33 !important}.x-css-shadow{display:none}.critical{color:#ba2b2d}.warning{color:#faa61a}.proxmox-warning-row{background-color:rgba(250,166,26,0.35)}.install-mask{color:white;background-color:#23272a}hr[class*="x-component"]{border-width:1px;border-bottom-width:0px;border-color:rgba(114,137,218,0.35)}.x-splitter{background:#23272a}.x-splitter-collapsed .x-layout-split-bottom{background-image:url("/pve2/images/dd_mini-top.png")}.x-boundlist-item{color:white;background-color:#2C2F33;border:none}.x-boundlist-item:hover{background-color:#4A4D53}.x-boundlist-item.x-boundlist-selected{background-color:#4A4D53}.x-boundlist{border-color:#23272a}.x-datepicker-column-header-inner{background-color:#2C2F33;color:white}.x-datepicker{border:none}.x-datepicker-date{background-color:#2C2F33;color:white;border:none}.x-datepicker-cell{border:0.5px solid #4A4D53}.x-datepicker-header{background-color:#23272a}.x-datepicker-footer{background-color:#2C2F33}.x-monthpicker,.x-monthpicker-buttons{color:white;border:none;background-color:#2C2F33}.x-monthpicker-item-inner{color:white;border:none;opacity:0.9}.x-monthpicker-months{border-color:#23272a}.x-monthpicker-selected,.x-datepicker-selected div.x-datepicker-date{border:none !important;color:white !important;opacity:1;background-color:#4A4D53 !important}div[id^="pveDcHealth-"][id$="-body"],div[id^="pveDcGuests-"][id$="-body"],div[id^="pveDcSummary-"][id$="-innerCt"]>div:nth-child(3)>div:nth-child(2),div[id^="pveDcSummary-"][id$="-innerCt"]>div:nth-child(5)>div:nth-child(2)>div>div,div[id^="pveDcSummary-"][id$="-innerCt"]>div:nth-child(3)>div:nth-child(2)>div{background-color:#23272a}div[id^="pveDcSummary-"][id$="-innerCt"]>div:nth-child(4)>div:nth-child(3){border:1px solid #23272a}div[id^="proxmoxRRDChart-"]>div:nth-child(3)>div{background-color:#23272a}div[id^="pveCephInstallWindow-"][id$="-innerCt"] div div div div{background:#23272a}#toolbar-1069-innerCt{background:#2C2F33}#button-1030{background:#23272a;border:1px solid #d23d3f}#menuitem-1030-iconEl{color:white}#menuitem-1031-iconEl{color:white}#menuitem-1032-iconEl{color:white}#menuitem-1034-iconEl{color:#c52d2f}[id^="pveNodeStatus"]{background:#23272a}div[id^="toolbar-"][id$="-innerCt"] div[id^="toolbar-"][id$="-targetEl"] div ul li div{background-color:#2C2F33}div[id^="pveGuestStatusView-"][id$="-body"]{background:#23272a}div[id^="pveStorageStatusView-"][id$="-body"]{background:#23272a}div[id^="pveNotesView-"][id$="-innerCt"]{background:#23272a}[id^="versioninfo"]{background:#23272a}[id^="proxmoxGauge"]{background:#23272a}[id^="tooltip"]{background:#7289da;color:#fff;border-width:0}[id^="ext-quicktips-tip-body"]{background-color:#7289da;color:#fff;border-radius:0;border-width:0}[id^="ext-quicktips-tip-innerCt"]{background-color:#7289da;color:#fff;border-radius:0;border-width:0}[id^="ext-quicktips-tip-ext-quicktips-tip-outerCt"]{background-color:#7289da;color:#fff;border-radius:0;border-width:0}[id^="ext-form-error"]{background-color:#7289da;color:#fff;border-radius:0;border-width:0}[id^="toolbar"]{background:#2C2F33}[id^="legend"]{background:#23272a;border-color:red}a[id^="menuitem-"][id$="-itemEl"] div[class*="fa-refresh"]:before,span[id^="proxmoxButton-"][id$="-btnEl"] span[class*="fa-undo"]:before{color:#faa61a}a[id^="menuitem-"][id$="-itemEl"] div[class*="fa-trash-o"]:before{color:#ba2b2d}#userinfo.x-btn{background-color:transparent !important;border:1px solid #d23d3f !important}div[id="menu-1029-targetEl"]>div[class*="x-menu-item"]{background:#2C2F33}div[id="menu-1029-targetEl"]>div[class*="x-menu-item"]>a[class*="x-menu-item-focus"]{background:#23272a}div[id="menu-1029-targetEl"]>div[class*="x-menu-item"]>div[class*="x-menu-item"]>a[aria-disabled="true"]{opacity:0.5;background:#23272a}div[id^="form-"][id$="-innerCt"][style="height: 160px; width: 356px;"],div[id^="fieldset-"][id$="-innerCt"]{background:#23272a}.pve-itype-icon-processor,.pmx-itype-icon-processor{background-image:url("/pve2/images/dd_icon-cpu.png")}.pve-itype-icon-memory,.pmx-itype-icon-memory{background-image:url("/pve2/images/dd_icon-ram.png")}.pve-itype-icon-storage{background-image:url("/pve2/images/dd_icon-hdd.png")}.pve-itype-icon-swap{background-image:url("/pve2/images/dd_icon-swap.png")}.pve-itype-icon-display{background-image:url("/pve2/images/dd_icon-display.png")}.x-grid-row-console{background-image:url("/pve2/images/dd_icon-display.png")}.pve-itype-icon-cdrom{background-image:url("/pve2/images/dd_icon-cd.png")}.pve-itype-treelist-item-icon-cdrom{content:' ';background:url("/pve2/images/dd_icon-cd.png") no-repeat;background-size:16px 16px;-webkit-transition:background 2s;transition:background 2s;height:16px;top:50%}.pve-itype-icon-network{background-image:url("/pve2/images/dd_icon-network.png")}.pve-itype-icon-pci{background-image:url("/pve2/images/dd_icon-pci.png")}.pve-itype-icon-usb{background-image:url("/pve2/images/dd_icon-usb.png")}.pve-itype-icon-serial{background-image:url("/pve2/images/dd_icon-serial.png")}.pve-itype-icon-cloud{background-image:url("/pve2/images/dd_icon-cloud.png")}.pve-itype-icon-die{background-image:url("/pve2/images/dd_icon-die.svg")}.fa-exchange:before{color:white}.fa-usb:before{color:white}.fa-object-group:before{color:white}.fa-hdd-o:before{color:white}.fa-cloud:before{color:white}.x-treelist-item-icon.fa:before{color:inherit}.fa-volume-up:before{color:white}.fa-ceph:before{background-image:url("/pve2/images/dd_cephwhite.png")}.fa-sign-out:before{color:#ba2b2d}.fa-language:before{color:white}.fa-building.online{color:#7289da !important}.fa-window-restore:before{color:white}.fa-fw.x-grid-icon-custom.fa.fa-database{color:#7289da}.fa-fw.x-grid-icon-custom.fa.fa-desktop{color:#7289da}.fa-fw.x-grid-icon-custom.fa.fa-cube{color:#7289da}.fa-fw.x-grid-icon-custom.fa.fa-file-o:before{color:rgba(114,137,218,0.6)}.fa-fw.x-grid-icon-custom.fa.fa-file-o:after{color:#7289da;background:transparent;text-shadow:none}.lxc:after{background:transparent !important;color:#7289da;text-shadow:0 0 0 #2C2F33 !important}.qemu:after{background:transparent !important;color:#7289da;text-shadow:0 0 0 #2C2F33 !important}.proxmox-invalid-row{background-color:#401314}.usage{background-color:#7289da}.usage-wrapper{border:1px solid #7289da}.x-tool-img{background-image:url("/pve2/images/dd_tool-sprites.png") !important}.x-layout-split-bottom{background-image:url("/pve2/images/dd_mini-bottom.png") !important}.pmx-hint{color:#faa61a;background-color:transparent}div[id^="PVE-lxc-Config-"]:not([id$="-body"])>div:nth-child(1),div[id^="PVE-qemu-Config-"]:not([id$="-body"])>div:nth-child(1),div[id^="PVE-node-Config-"]:not([id$="-body"])>div:nth-child(1),div[id^="PVE-dc-Config-"]:not([id$="-body"])>div:nth-child(1),div[id^="PVE-storage-Browser"]:not([id$="-body"])>div:nth-child(1),div[id^="pvePanelConfig"]:not([id$="-body"])>div:nth-child(1){border-bottom:3px solid #23272a !important}div[id^="PVE-node-Config-"][id$="-body"],div[id^="PVE-dc-Config-"][id$="-body"],div[id^="PVE-qemu-Config-"][id$="-body"],div[id^="PVE-lxc-Config-"][id$="-body"],div[id^="PVE-storage-Browser"][id$="-body"],div[id^="pvePanelConfig"][id$="-body"]{border-left:3px solid #23272a !important}.x-legend-horizontal .x-legend-item,.x-legend-horizontal .x-legend-item:first-child,.x-legend-horizontal .x-legend-item:last-child,.x-legend-vertical .x-legend-item,.x-legend-vertical .x-legend-item:first-child,.x-legend-vertical .x-legend-item:last-child{border:none}html{overflow:scroll;overflow-x:hidden}*{font-weight:350}::-webkit-scrollbar{width:0;height:6px;background:#4A4D53}::-webkit-scrollbar:hover{background:#23272a}a{color:white} diff --git a/PVEDiscordDark/sass/proxmox/_pveDc.sass b/PVEDiscordDark/sass/proxmox/_pveDc.sass index e5f78f0..f7fcb96 100644 --- a/PVEDiscordDark/sass/proxmox/_pveDc.sass +++ b/PVEDiscordDark/sass/proxmox/_pveDc.sass @@ -1,5 +1,7 @@ -div[id^="pveDcHealth-"][id$="-body"], div[id^="pveDcGuests-"][id$="-body"], div[id^="pveDcSummary-"][id$="-innerCt"] > div:nth-child(3) > div:nth-child(2), div[id^="pveDcSummary-"][id$="-innerCt"] > div:nth-child(5) > div:nth-child(2) > div > div +div[id^="pveDcHealth-"][id$="-body"], div[id^="pveDcGuests-"][id$="-body"], +div[id^="pveDcSummary-"][id$="-innerCt"] > div:nth-child(3) > div:nth-child(2), div[id^="pveDcSummary-"][id$="-innerCt"] > div:nth-child(5) > div:nth-child(2) > div > div, +div[id^="pveDcSummary-"][id$="-innerCt"] > div:nth-child(3) > div:nth-child(2) > div background-color: $darker div[id^="pveDcSummary-"][id$="-innerCt"] > div:nth-child(4) > div:nth-child(3) - border: 1px solid $darker + border: 1px solid $darker diff --git a/PVEDiscordDark/sass/special/_icons.sass b/PVEDiscordDark/sass/special/_icons.sass index e1b41af..89e0c3d 100644 --- a/PVEDiscordDark/sass/special/_icons.sass +++ b/PVEDiscordDark/sass/special/_icons.sass @@ -52,6 +52,9 @@ .fa-usb:before color: white +.fa-object-group:before + color: white + .fa-hdd-o:before color: white diff --git a/PVEDiscordDark/sass/special/_specific.sass b/PVEDiscordDark/sass/special/_specific.sass index 2da52da..e2960af 100644 --- a/PVEDiscordDark/sass/special/_specific.sass +++ b/PVEDiscordDark/sass/special/_specific.sass @@ -21,7 +21,7 @@ background: $darker div[id^="toolbar-"][id$="-innerCt"] div[id^="toolbar-"][id$="-targetEl"] div ul li div - background-color: $dark + background-color: $dark div[id^="pveGuestStatusView-"][id$="-body"] background: $darker @@ -89,9 +89,13 @@ a[id^="menuitem-"][id$="-itemEl"] div[class*="fa-trash-o"]:before background-color: transparent !important border: 1px solid #d23d3f !important div[id="menu-1029-targetEl"] > div[class*="x-menu-item"] - background: $dark + background: $dark div[id="menu-1029-targetEl"] > div[class*="x-menu-item"] > a[class*="x-menu-item-focus"] - background: $darker + background: $darker div[id="menu-1029-targetEl"] > div[class*="x-menu-item"] > div[class*="x-menu-item"] > a[aria-disabled="true"] - opacity: 0.5 - background: $darker \ No newline at end of file + opacity: 0.5 + background: $darker + +// Panels on "My Settings" +div[id^="form-"][id$="-innerCt"][style="height: 160px; width: 356px;"], div[id^="fieldset-"][id$="-innerCt"] + background: $darker diff --git a/PVEDiscordDark/sass/x/_form.sass b/PVEDiscordDark/sass/x/_form.sass index 2891f09..6ef8b33 100644 --- a/PVEDiscordDark/sass/x/_form.sass +++ b/PVEDiscordDark/sass/x/_form.sass @@ -37,3 +37,6 @@ .x-form-cb-label-default color: inherit + +.x-form-field-date .x-form-date-trigger + background-image: url('/pve2/images/dd_date-trigger.png') diff --git a/PVEDiscordDark/sass/x/_misc.sass b/PVEDiscordDark/sass/x/_misc.sass index 3ff2932..9285682 100644 --- a/PVEDiscordDark/sass/x/_misc.sass +++ b/PVEDiscordDark/sass/x/_misc.sass @@ -23,3 +23,8 @@ .install-mask color: white background-color: $darker + +hr[class*="x-component"] + border-width: 1px + border-bottom-width: 0px + border-color: rgba($blurple, 0.35) diff --git a/PVEDiscordDark/serve.py b/PVEDiscordDark/serve.py new file mode 100644 index 0000000..477166c --- /dev/null +++ b/PVEDiscordDark/serve.py @@ -0,0 +1,61 @@ +# Script to assist with PVEDiscordDark development +# +# By default serves HTTP on port 3000, any *.js request gets the JS script, any *.css request gets the CSS file and any image request gets corresponding image +# Meant to be used with the "Requestly" browser extension to redirect PVEDD requests from PVE server to localhost:3000 +# + +from http.server import HTTPServer, BaseHTTPRequestHandler +import json +import os + +PORT = 3000 +DIR_SASS = os.path.join(os.path.dirname(__file__), "sass") +DIR_IMAGES = os.path.join(os.path.dirname(__file__), "images") +DIR_JS = os.path.join(os.path.dirname(__file__), "js") + + +class Server(BaseHTTPRequestHandler): + def log_message(self, format, *args): + return + + def _set_headers(self, status, type): + self.send_response(status) + self.send_header("Content-type", type) + self.end_headers() + + def do_GET(self): + status = 200 + type = "application/json" + data = None + + file = self.path.rpartition("/")[2] + ext = file.rpartition(".")[2] + + if ext == "css": + data = open(os.path.join(DIR_SASS, "PVEDiscordDark.css"), "rb").read() + type = "text/css" + elif ext == "js": + data = open(os.path.join(DIR_JS, "PVEDiscordDark.js"), "rb").read() + type = "application/javascript" + elif ext == "png" or ext == "jpg" or ext == "jpeg": + try: + data = open(os.path.join(DIR_IMAGES, file), "rb").read() + type = f"image/{ext}" + except FileNotFoundError: + status = 404 + else: + status = 400 + self._set_headers(status, type) + if status == 200: + self.wfile.write(data) + else: + self.wfile.write(json.dumps({"error": status}).encode()) + + +if __name__ == "__main__": + print(f"Serving on localhost:{PORT}") + server = HTTPServer(server_address=("", PORT), RequestHandlerClass=Server) + try: + server.serve_forever() + except KeyboardInterrupt: + quit() diff --git a/UtilityUpdater.sh b/UtilityUpdater.sh deleted file mode 100644 index a9c85fa..0000000 --- a/UtilityUpdater.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash -#Script by RisedSky to allow users to update their python script of ProxmoxDiscordDark -#Created : 05/12/2020 - - -currentuser=`whoami | grep 'root'` -default="\e[39m" -green="\e[32m" -red="\e[91m" -yellow="\e[93m" - -clear -echo -ne "Verifying that you're root to prevent perm errors \r" -sleep 1 -if [ -z "$currentuser" ] -then - echo -ne "Verifying that you're root to prevent perm errors$red [ERROR] $default \r" - echo -ne "\nYou are not root !" - exit 1 -fi - -echo -ne "Verifying that you're root to prevent perm errors$green [OK] $default \r" -echo -ne '\n' - -sleep 1 -echo -ne '\n' - -sleep 1 -echo -ne '# (0%) Checking the latestversion\r' -latestversion=`curl -s "https://api.github.com/repos/Weilbyte/PVEDiscordDark/releases/latest" | awk -F '"' '/tag_name/{print $4}'` -echo -ne '####################### (100%) Checking the latestversion\r' -sleep 1 -echo -ne '\n' - -file="./currentversion.txt" -currentversion="" -if [ ! -f "$file" ] -then - echo "$latestversion" > "$file" - currentversion="$latestversion" -else - currentversion=`cat $file` -fi - -echo "Your version : $currentversion" -echo "Latest version : $latestversion" - -if [ ! "$currentversion" = "$latestversion" ] -then - #Not up tp date - read -p "$(echo -e $yellow)[Warning] Your version is different, would you like to update ? $(echo -e $default)[y/n]" -n 1 -r - echo "" # (optional) move to a new line - if [[ $REPLY =~ ^[YyOo]$ ]] - then - echo -ne "Downloading...\n" - wget -O "PVEDiscordDark.py" "https://raw.githubusercontent.com/Weilbyte/PVEDiscordDark/master/PVEDiscordDark.py" - echo "$latestversion" > $file - read -p "$(echo -e $yellow)[Warning] Start the updated script ? $(echo -e $default)[y/n]" -n 1 -r - echo "" # (optional) move to a new line - if [[ $REPLY =~ ^[YyOo]$ ]] - then - python3 PVEDiscordDark.py - exit 0 - fi - else - echo -ne "Exiting...\n" - exit 0 - fi -else - #Up to date - echo -e "$green""You have the latest version of the script ! $default" - exit 0 -fi \ No newline at end of file diff --git a/meta/imagelist b/meta/imagelist index cce65e8..f90103a 100644 --- a/meta/imagelist +++ b/meta/imagelist @@ -1 +1 @@ -dd_cephblurp.png dd_cephwhite.png dd_icon-cpu.png dd_icon-hdd.png dd_icon-ram.png dd_icon-swap.png dd_icon-cd.png dd_icon-display.png dd_icon-network.png dd_icon-cloud.png dd_icon-serial.png dd_icon-usb.png dd_icon-pci.png dd_logo.png dd_mini-bottom.png dd_mini-top.png dd_tool-sprites.png dd_trigger.png dd_loading.svg dd_icon-die.svg dd_arrows.png dd_default-toolbar-small-arrow.png dd_default-toolbar-small-s-arrow.png dd_icon-cdblurp.png \ No newline at end of file +dd_cephblurp.png dd_cephwhite.png dd_icon-cpu.png dd_icon-hdd.png dd_icon-ram.png dd_icon-swap.png dd_icon-cd.png dd_icon-display.png dd_icon-network.png dd_icon-cloud.png dd_icon-serial.png dd_icon-usb.png dd_icon-pci.png dd_logo.png dd_mini-bottom.png dd_mini-top.png dd_tool-sprites.png dd_trigger.png dd_loading.svg dd_icon-die.svg dd_arrows.png dd_default-toolbar-small-arrow.png dd_default-toolbar-small-s-arrow.png dd_icon-cdblurp.png dd_date-trigger.png \ No newline at end of file