Skip to content

Commit

Permalink
feat(widget/server_monitor): add server monitor widget with configura…
Browse files Browse the repository at this point in the history
…tion options

Introduces a new server monitor widget that allows users to track server statuses with customizable settings. The widget includes options for SSL checks, desktop notifications, and various UI configurations.
  • Loading branch information
amnweb committed Jan 20, 2025
1 parent fa4e105 commit 1c72775
Show file tree
Hide file tree
Showing 3 changed files with 878 additions and 0 deletions.
Binary file added src/assets/images/app_transparent.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
225 changes: 225 additions & 0 deletions src/core/validation/widgets/yasb/server_monitor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
DEFAULTS = {
'label': '{icon}',
'label_alt': '{online}/{offline} of {total} servers',
'update_interval': 300,
'tooltip': True,
'servers': [''],
'ssl_check': True,
'ssl_warning': 30,
'ssl_verify': True,
'desktop_notifications': {
'ssl': False,
'offline': False
},
'timeout': 5,
'menu': {
'blur': True,
'round_corners': True,
'round_corners_type': 'normal',
'border_color': 'System',
'alignment': 'right',
'direction': 'down',
'distance': 6
},
'icons': {
'online': '\uf444',
'offline': '\uf4c3',
'warning': '\uf4c3',
'reload': '\udb81\udc50'
},
'animation': {
'enabled': True,
'type': 'fadeInOut',
'duration': 200
},
'container_padding': {'top': 0, 'left': 0, 'bottom': 0, 'right': 0},
'callbacks': {
'on_left': 'toggle_label',
'on_middle': 'do_nothing',
'on_right': 'do_nothing'
}
}

VALIDATION_SCHEMA = {
'label': {
'type': 'string',
'default': DEFAULTS['label']
},
'label_alt': {
'type': 'string',
'default': DEFAULTS['label_alt']
},
'update_interval': {
'type': 'integer',
'default': DEFAULTS['update_interval'],
'min': 10,
'max': 36000
},
'tooltip': {
'type': 'boolean',
'required': False,
'default': DEFAULTS['tooltip']
},
'servers': {
'type': 'list',
'schema': {
'type': 'string'
},
'default': DEFAULTS['servers']
},
'ssl_check': {
'type': 'boolean',
'required': False,
'default': DEFAULTS['ssl_check']
},
'ssl_verify': {
'type': 'boolean',
'required': False,
'default': DEFAULTS['ssl_verify']
},
'ssl_warning': {
'type': 'integer',
'default': DEFAULTS['ssl_warning'],
'min': 1,
'max': 365
},
'desktop_notifications': {
'type': 'dict',
'required': False,
'schema': {
'ssl': {
'type': 'boolean',
'default': DEFAULTS['desktop_notifications']['ssl']
},
'offline': {
'type': 'boolean',
'default': DEFAULTS['desktop_notifications']['offline']
}
},
'default': DEFAULTS['desktop_notifications']
},
'timeout': {
'type': 'integer',
'default': DEFAULTS['timeout'],
'min': 1,
'max': 30
},
'menu': {
'type': 'dict',
'required': False,
'schema': {
'blur': {
'type': 'boolean',
'default': DEFAULTS['menu']['blur']
},
'round_corners': {
'type': 'boolean',
'default': DEFAULTS['menu']['round_corners']
},
'round_corners_type': {
'type': 'string',
'default': DEFAULTS['menu']['round_corners_type']
},
'border_color': {
'type': 'string',
'default': DEFAULTS['menu']['border_color']
},
'alignment': {
'type': 'string',
'default': DEFAULTS['menu']['alignment']
},
'direction': {
'type': 'string',
'default': DEFAULTS['menu']['direction']
},
'distance': {
'type': 'integer',
'default': DEFAULTS['menu']['distance']
}
},
'default': DEFAULTS['menu']
},
'icons': {
'type': 'dict',
'required': False,
'schema': {
'online': {
'type': 'string',
'default': DEFAULTS['icons']['online']
},
'offline': {
'type': 'string',
'default': DEFAULTS['icons']['offline']
},
'warning': {
'type': 'string',
'default': DEFAULTS['icons']['warning']
},
'reload': {
'type': 'string',
'default': DEFAULTS['icons']['reload']
}
},
'default': DEFAULTS['icons']
},
'animation': {
'type': 'dict',
'required': False,
'schema': {
'enabled': {
'type': 'boolean',
'default': DEFAULTS['animation']['enabled']
},
'type': {
'type': 'string',
'default': DEFAULTS['animation']['type']
},
'duration': {
'type': 'integer',
'default': DEFAULTS['animation']['duration']
}
},
'default': DEFAULTS['animation']
},
'container_padding': {
'type': 'dict',
'required': False,
'schema': {
'top': {
'type': 'integer',
'default': DEFAULTS['container_padding']['top']
},
'left': {
'type': 'integer',
'default': DEFAULTS['container_padding']['left']
},
'bottom': {
'type': 'integer',
'default': DEFAULTS['container_padding']['bottom']
},
'right': {
'type': 'integer',
'default': DEFAULTS['container_padding']['right']
}
},
'default': DEFAULTS['container_padding']
},
'callbacks': {
'type': 'dict',
'schema': {
'on_left': {
'type': 'string',
'default': DEFAULTS['callbacks']['on_left'],
},
'on_middle': {
'type': 'string',
'default': DEFAULTS['callbacks']['on_middle'],
},
'on_right': {
'type': 'string',
'default': DEFAULTS['callbacks']['on_right'],
}
},
'default': DEFAULTS['callbacks']
}
}
Loading

0 comments on commit 1c72775

Please sign in to comment.