{ "type": "object", "required": [ "sections" ], "additionalProperties": false, "properties": { "pageInfo": { "type": "object", "properties": { "title": { "type": "string", "description": "Title and heading for the app" }, "description": { "type": "string", "description": "Sub-title, displayed in header" }, "navLinks": { "type": "array", "maxItems": 6, "description": "Quick access links, displayed in header", "items": { "type": "object", "additionalProperties": false, "required": [ "title", "path" ], "properties": { "title": { "type": "string" }, "path": { "type": "string" } } } }, "footerText": { "type": "string" } }, "required": [ "title" ], "additionalProperties": false }, "appConfig": { "type": "object", "description": "Application configuration", "properties": { "backgroundImg": { "type": "string", "description": "A URL to an image asset to be displayed as background" }, "language": { "type": "string", "description": "The ISO code of your desired language, must have translations present, check docs for more info" }, "theme": { "type": "string", "default": "callisto", "description": "A theme to be applied by default on first load", "examples": [ "callisto", "thebe", "dracula", "material", "material-dark", "colorful", "nord", "nord-frost", "minimal-dark", "minimal-light", "matrix", "matrix-red", "hacker-girl", "raspberry-jam", "bee", "tiger", "material-original", "material-dark-original", "vaporware", "high-contrast-dark", "high-contrast-light" ] }, "enableFontAwesome": { "type": "boolean", "default": true, "description": "Should load font-awesome assets" }, "fontAwesomeKey": { "type": "string", "pattern": "^[a-z0-9]{10}$", "description": "API key for font-awesome" }, "faviconApi": { "enum": [ "local", "faviconkit", "google", "clearbit", "webmasterapi", "allesedv" ], "default": "faviconkit", "description": "Which service to use to resolve favicons. Set to local to do this locally instead" }, "layout": { "enum": [ "horizontal", "vertical", "auto", "sidebar" ], "default": "auto", "description": "Specifies sections layout orientation on the home screen" }, "iconSize": { "enum": [ "small", "medium", "large" ], "default": "medium", "description": "The size of each link item / icon" }, "hideComponents": { "type": "object", "description": "Hide individual parts of the page. If not set, all components are visible by default", "properties": { "hideHeading": { "type": "boolean", "default": "false", "description": "If set to true, the page heading & subtitle will be hidden" }, "hideNav": { "type": "boolean", "default": "false", "description": "If set to true, the navigation menu will be hidden" }, "hideSearch": { "type": "boolean", "default": "false", "description": "If set to true, the search bar will be hidden" }, "hideSettings": { "type": "boolean", "default": "false", "description": "If set to true, the settings buttons will be hidden" }, "hideFooter": { "type": "boolean", "default": "false", "description": "If set to true, the page footer will be hidden" }, "hideSplashScreen": { "type": "boolean", "default": "true", "description": "If set to true, the loading / splash screen will not be shown" } } }, "cssThemes": { "type": "array", "description": "Theme names to be added to the dropdown", "items": { "type": "string" } }, "customColors": { "type": "object", "description": "Set a custom color palette for any theme" }, "externalStyleSheet": { "description": "URL or URLs of external stylesheets to add to dropdown/ load", "type": [ "string", "array" ], "items": { "type": "string" } }, "customCss": { "type": "string", "description": "Any custom CSS overides, must be minified" }, "statusCheck": { "type": "boolean", "default": false, "description": "Displays an online/ offline status for each of your services" }, "statusCheckInterval": { "type": "number", "default": 0, "description": "How often to recheck statuses. If set to 0, status will only be checked on page load" }, "auth": { "type": "array", "description": "Usernames and hashed credentials for frontend authentication", "items": { "type": "object", "additionalProperties": false, "required": [ "user", "hash" ], "properties": { "user": { "type": "string", "description": "The username for a user" }, "hash": { "type": "string", "description": "A SHA-256 hashed password for that user", "minLength": 64, "maxLength": 64 }, "type": { "enum": [ "admin", "normal" ], "description": "User type, denoting privilege level, either admin or normal", "default": "normal" } } } }, "allowConfigEdit": { "type": "boolean", "default": true, "description": "Can user write changes to conf.yml file from the UI. If set to false, preferences are only stored locally" }, "disableServiceWorker": { "type": "boolean", "default": false, "description": "If set to true, then service workers will not be used to cache page contents" }, "disableContextMenu": { "type": "boolean", "default": false, "description": "If set to true, custom right-click context menu will be disabled" }, "disableUpdateChecks": { "type": "boolean", "default": false, "description": "Prevents Dashy from checking for updates" } }, "additionalProperties": false }, "sections": { "type": "array", "description": "Array of sections, containing items", "items": { "type": "object", "required": [ "name", "items" ], "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Title/ heading for a section" }, "icon": { "type": "string", "description": "Icon will be displayed next to title" }, "displayData": { "type": "object", "additionalProperties": false, "description": "Optional meta data for customizing a section", "properties": { "collapsed": { "type": "boolean", "default": false, "description": "If true, section needs to be clicked to open" }, "color": { "type": "string", "description": "Hex code, or HTML color for section fill" }, "customStyles": { "type": "string", "description": "CSS overides for section container" }, "itemSize": { "enum": [ "small", "medium", "large" ], "default": "medium", "description": "Size of items within the section" }, "rows": { "type": "number", "minimum": 1, "maximum": 5, "default": 1, "description": "The amount of space that the section spans vertically" }, "cols": { "type": "number", "minimum": 1, "maximum": 5, "default": 1, "description": "The amount of space that the section spans horizontally" }, "sectionLayout": { "enum": [ "grid", "auto" ], "default": "auto", "description": "If set to grid, items have uniform width, and itemCount can be set" }, "itemCountX": { "type": "number", "minimum": 1, "maximum": 12, "description": "Number of items per column" }, "itemCountY": { "type": "number", "minimum": 1, "maximum": 12, "description": "Number of items per row" } } }, "items": { "type": "array", "description": "Array of items to display with a section", "items": { "type": "object", "additionalProperties": false, "required": [ "title" ], "properties": { "title": { "type": "string", "description": "Text shown on the item" }, "description": { "type": "string", "nullable": true, "description": "Short description, shown on hover or in a tooltip" }, "icon": { "type": "string", "nullable": true, "description": "An icon, either as a font-awesome identifier, local or remote URL, or the word favicon or generative" }, "url": { "type": "string", "description": "The destination to navigate to when item is clicked" }, "target": { "enum": [ "newtab", "sametab", "modal", "workspace" ], "default": "newtab", "description": "Opening method, when item is clicked" }, "hotkey": { "type": "number", "description": "A numeric shortcut key, between 0 and 9. Useful for quickly launching frequently used applications" }, "color": { "type": "string", "description": "A custom fill color of the item" }, "provider": { "type": "string", "description": "Provider name, e.g. Microsoft" }, "statusCheck": { "type": "boolean", "default": false, "description": "Whether or not to display online/ offline status for this service. Will override appConfig.statusCheck" }, "statusCheckUrl": { "type": "string", "description": "If you've enabled statusCheck, and want to use a different URL to what is defined under the item, then specify it here" }, "statusCheckHeaders": { "type": "object", "description": " If you're endpoint requires any specific headers for the status checking, then define them here" } } } } } } } } }