Added kando
1
.config/kando/SingletonCookie
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
1840225582167052180
|
||||||
1
.config/kando/SingletonLock
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
nixos-5403
|
||||||
1
.config/kando/SingletonSocket
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/tmp/scoped_dirSpGAv4/SingletonSocket
|
||||||
52
.config/kando/config.json
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
{
|
||||||
|
"locale": "auto",
|
||||||
|
"showIntroductionDialog": false,
|
||||||
|
"menuTheme": "default",
|
||||||
|
"darkMenuTheme": "default",
|
||||||
|
"menuThemeColors": {
|
||||||
|
"neon-lights": {
|
||||||
|
"glow-color": "rgb(203 166 247 / 0.75)",
|
||||||
|
"connector-color": "rgb(180 190 254 / 0.75)"
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"background-color": "rgb(30 30 46)",
|
||||||
|
"text-color": "rgb(205 214 244)",
|
||||||
|
"border-color": "rgb(69 71 90)",
|
||||||
|
"hover-color": "rgb(180 190 254)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"darkMenuThemeColors": {},
|
||||||
|
"enableDarkModeForMenuThemes": false,
|
||||||
|
"soundTheme": "simple-clicks",
|
||||||
|
"soundVolume": 0.5,
|
||||||
|
"ignoreWriteProtectedConfigFiles": false,
|
||||||
|
"settingsWindowColorScheme": "system",
|
||||||
|
"settingsWindowFlavor": "sakura-system",
|
||||||
|
"trayIconFlavor": "color",
|
||||||
|
"lazyInitialization": false,
|
||||||
|
"enableVersionCheck": true,
|
||||||
|
"zoomFactor": 1.3,
|
||||||
|
"centerDeadZone": 50,
|
||||||
|
"minParentDistance": 150,
|
||||||
|
"dragThreshold": 15,
|
||||||
|
"fadeInDuration": 150,
|
||||||
|
"fadeOutDuration": 200,
|
||||||
|
"keepInputFocus": false,
|
||||||
|
"enableMarkingMode": true,
|
||||||
|
"enableTurboMode": true,
|
||||||
|
"warpMouse": true,
|
||||||
|
"hoverModeNeedsConfirmation": false,
|
||||||
|
"gestureMinStrokeLength": 250,
|
||||||
|
"gestureMinStrokeAngle": 20,
|
||||||
|
"gestureJitterThreshold": 10,
|
||||||
|
"gesturePauseTimeout": 10,
|
||||||
|
"fixedStrokeLength": 0,
|
||||||
|
"rmbSelectsParent": false,
|
||||||
|
"enableGamepad": true,
|
||||||
|
"gamepadBackButton": 1,
|
||||||
|
"gamepadCloseButton": 2,
|
||||||
|
"sameShortcutBehavior": "nothing",
|
||||||
|
"useDefaultOsShowSettingsHotkey": true,
|
||||||
|
"hideSettingsButton": true,
|
||||||
|
"settingsButtonPosition": "bottom-right"
|
||||||
|
}
|
||||||
10
.config/kando/menu-themes/adwaita-circles/REUSE.toml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
# SPDX-FileCopyrightText: Nils277 <https://github.com/Nils277>
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
version = 1
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = ["preview.jpg"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "Nils277 <https://github.com/Nils277>"
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
BIN
.config/kando/menu-themes/adwaita-circles/preview.jpg
Normal file
|
After Width: | Height: | Size: 62 KiB |
213
.config/kando/menu-themes/adwaita-circles/theme.css
Normal file
|
|
@ -0,0 +1,213 @@
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
/* _ _ ____ _ _ ___ ____ */
|
||||||
|
/* |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform */
|
||||||
|
/* | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando */
|
||||||
|
/* */
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
/* SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> */
|
||||||
|
/* SPDX-FileCopyrightText: Nils277 <https://github.com/Nils277> */
|
||||||
|
/* SPDX-License-Identifier: CC0-1.0 */
|
||||||
|
|
||||||
|
.menu-node {
|
||||||
|
/* Center */
|
||||||
|
--center-size: 64px;
|
||||||
|
/* Children */
|
||||||
|
--child-size: 42px;
|
||||||
|
--child-distance: 72px;
|
||||||
|
/* Labels */
|
||||||
|
--label-height: 34px;
|
||||||
|
/* Grandchildren */
|
||||||
|
--grandchild-size: 32px;
|
||||||
|
--grandchild-distance: 0px;
|
||||||
|
/* Connector */
|
||||||
|
--connector-width: 6px;
|
||||||
|
/* Transitions */
|
||||||
|
--menu-transition: transform 200ms ease, left 200ms ease, top 200ms ease, width 200ms ease, height 200ms ease, margin 180ms ease, padding 180ms ease, opacity 160ms ease;
|
||||||
|
--label-transition: opacity 200ms ease;
|
||||||
|
--connector-transition: width 100ms ease, opacity 200ms ease;
|
||||||
|
--color-transition: background-color 160ms ease, border 160ms ease, color 160ms ease, box-shadow 160ms ease, outline 160ms ease;
|
||||||
|
--label-tooltop-delay: 400ms;
|
||||||
|
|
||||||
|
/* Calculation of label position (reduce the angle in the horizontal to 50%) */
|
||||||
|
/* This calculation could be simplified with the abs() and sign() methods but this version of css does not support it */
|
||||||
|
--angle_signed: calc(var(--angle) - 180deg);
|
||||||
|
--angle_signed_pos: calc(max(0deg, ((var(--angle_signed) - 90deg) * 0.5) + min( 90deg, 90 * var(--angle_signed))));
|
||||||
|
--angle_signed_neg: calc(min(0deg, ((var(--angle_signed) + 90deg) * 0.5) + max(-90deg, 90 * var(--angle_signed))));
|
||||||
|
--angle_label: 90deg + var(--angle_signed_pos) + var(--angle_signed_neg);
|
||||||
|
--label-x: calc(cos(var(--angle_label)));
|
||||||
|
--label-y: calc(sin(var(--angle_label)));
|
||||||
|
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
|
||||||
|
/* Positioning ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Child items are positioned around the active node. */
|
||||||
|
&.child {
|
||||||
|
transform: translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grandchild items are positioned around the child items. */
|
||||||
|
&.grandchild {
|
||||||
|
transform: translate(calc(var(--grandchild-distance) * var(--dir-x)),
|
||||||
|
calc(var(--grandchild-distance) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Theme Layers --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* We hide all icons by default. They will be shown further down in this
|
||||||
|
file for the the child items. */
|
||||||
|
.icon-container {
|
||||||
|
position: relative;
|
||||||
|
opacity: 0;
|
||||||
|
width: 100%;
|
||||||
|
clip-path: circle(45% at 50% 50%);
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-layer,
|
||||||
|
.icon-layer {
|
||||||
|
position: absolute;
|
||||||
|
box-shadow: 0 0 16px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-layer {
|
||||||
|
transform: translate(calc(var(--child-size) * var(--label-x)), calc(var(--child-size) * var(--label-y)));
|
||||||
|
opacity: 0;
|
||||||
|
background-color: var(--label-background);
|
||||||
|
color: var(--label-text);
|
||||||
|
white-space: nowrap;
|
||||||
|
height: var(--label-height);
|
||||||
|
border-radius: var(--label-height);
|
||||||
|
border: 1px solid color-mix(in lab, var(--label-background) 66%, #808080 100%);
|
||||||
|
top: calc(-1 * var(--label-height) / 2);
|
||||||
|
padding: 7px 12px;
|
||||||
|
font-size: 15px;
|
||||||
|
box-shadow: none;
|
||||||
|
transition-delay: 0;
|
||||||
|
transition: var(--label-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.right>.label-layer {
|
||||||
|
left: calc(-0.35 * var(--child-size));
|
||||||
|
}
|
||||||
|
|
||||||
|
&.left>.label-layer {
|
||||||
|
right: calc(-0.35 * var(--child-size));
|
||||||
|
}
|
||||||
|
|
||||||
|
&.top>.label-layer {
|
||||||
|
bottom: calc(0.65 * var(--child-size));
|
||||||
|
top: inherit;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.bottom>.label-layer {
|
||||||
|
top: calc(0.65 * var(--child-size));
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-layer {
|
||||||
|
top: calc(-0.5 * var(--child-size));
|
||||||
|
left: calc(-0.5 * var(--child-size));
|
||||||
|
width: var(--child-size);
|
||||||
|
height: var(--child-size);
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: var(--circle-background);
|
||||||
|
color: var(--icon);
|
||||||
|
z-index: 1;
|
||||||
|
padding: 3px;
|
||||||
|
transition: var(--color-transition), var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hovered>.icon-layer {
|
||||||
|
background-color: var(--circle-background-hovered);
|
||||||
|
color: var(--icon-hovered);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active>.icon-layer {
|
||||||
|
top: calc(-1 * var(--center-size) / 2);
|
||||||
|
left: calc(-1 * var(--center-size) / 2);
|
||||||
|
width: var(--center-size);
|
||||||
|
height: var(--center-size);
|
||||||
|
box-shadow: 0 0 12px rgba(0, 0, 0, 0.3);
|
||||||
|
color: var(--icon);
|
||||||
|
background-color: var(--center-background-hovered);
|
||||||
|
transition: var(--menu-transition), var(--color-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active:has(>.hovered)>.icon-layer {
|
||||||
|
background-color: var(--center-background);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.grandchild>.icon-layer {
|
||||||
|
top: calc(-0.50 * var(--grandchild-size));
|
||||||
|
left: calc(-0.50 * var(--grandchild-size));
|
||||||
|
width: var(--grandchild-size);
|
||||||
|
height: var(--grandchild-size);
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: transparent ;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* When the center is hovered, set the color of the parent too */
|
||||||
|
&.type-submenu.parent:not(.active).hovered>.icon-layer {
|
||||||
|
background-color: var(--center-background-hovered);
|
||||||
|
color: var(--icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The active menu item is the center of the menu. */
|
||||||
|
&.child.hovered>.label-layer {
|
||||||
|
transition: var(--label-transition);
|
||||||
|
transition-delay: var(--label-tooltop-delay);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Show the icons of the parent and child items. */
|
||||||
|
&.active>.icon-layer>.icon-container,
|
||||||
|
&.parent>.icon-layer>.icon-container,
|
||||||
|
&.child>.icon-layer>.icon-container {
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We disable any transition for dragged submenu items. */
|
||||||
|
&.dragged.type-submenu {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Connectors ----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.connector {
|
||||||
|
transition: var(--connector-transition);
|
||||||
|
height: var(--connector-width);
|
||||||
|
top: calc(-1 * var(--connector-width) / 2);
|
||||||
|
background-color: var(--connector);
|
||||||
|
opacity: 0;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(>.parent).hovered>.connector,
|
||||||
|
&:has(>.active.type-submenu).hovered>.connector,
|
||||||
|
&:has(>.dragged.type-submenu).hovered>.connector {
|
||||||
|
background-color: color-mix(in srgb, var(--connector) 100%, var(--center-background-hovered) 90%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(>.dragged)>.connector,
|
||||||
|
&:has(>.clicked)>.connector {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(>.parent)>.connector,
|
||||||
|
&:has(>.active.type-submenu)>.connector,
|
||||||
|
&:has(>.dragged.type-submenu)>.connector {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center Text ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
.center-text {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
52
.config/kando/menu-themes/adwaita-circles/theme.json5
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// _ _ ____ _ _ ___ ____ //
|
||||||
|
// |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform //
|
||||||
|
// | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando //
|
||||||
|
// //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
// SPDX-FileCopyrightText: Nils277 <https://github.com/Nils277>
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
{
|
||||||
|
name: 'Adwaita Circles',
|
||||||
|
author: 'Simon Schneegans, Nils277',
|
||||||
|
license: 'CC0-1.0',
|
||||||
|
themeVersion: '1.0',
|
||||||
|
|
||||||
|
// This theme was created for Kando's theme engine version 1. Kando will use this to
|
||||||
|
// check if the theme is compatible with the current version of Kando.
|
||||||
|
engineVersion: 1,
|
||||||
|
|
||||||
|
// When a menu is opened too close to a screen's edge, it is moved away from the edge
|
||||||
|
// by this amount of pixels.
|
||||||
|
maxMenuRadius: 128,
|
||||||
|
|
||||||
|
// These colors can be configured by the user and are vailable in the CSS file as CSS
|
||||||
|
// variables. The default values are used if the user does not provide any values.
|
||||||
|
colors: {
|
||||||
|
//center
|
||||||
|
'center-background' : '#F5F5F5',
|
||||||
|
'center-background-hovered' : '#D0D0D0',
|
||||||
|
// Circle
|
||||||
|
'circle-background' : '#F5F5F5',
|
||||||
|
'circle-background-hovered': '#3584E4',
|
||||||
|
// Icons
|
||||||
|
'icon': '#222226',
|
||||||
|
'icon-hovered': '#FFFFFF',
|
||||||
|
// Label
|
||||||
|
'label-background': '#030408',
|
||||||
|
'label-text': '#FFFFFF',
|
||||||
|
// Connector
|
||||||
|
'connector': '#FFFFFF'
|
||||||
|
},
|
||||||
|
|
||||||
|
// This theme uses two layers, one for the icon and the background and one
|
||||||
|
// for the texts which appear next to the hovered item.
|
||||||
|
layers: [
|
||||||
|
{ class: 'icon-layer', content: 'icon' },
|
||||||
|
{ class: 'label-layer', content: 'name' },
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
10
.config/kando/menu-themes/evntech-vache/REUSE.toml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
# SPDX-FileCopyrightText: EVNTech Vache <https://discord.com/users/569168465030676497>
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
version = 1
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = ["*.jpg", "*.png"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "EVNTech Vache <https://discord.com/users/569168465030676497>"
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
BIN
.config/kando/menu-themes/evntech-vache/preview.jpg
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
177
.config/kando/menu-themes/evntech-vache/theme.css
Normal file
|
|
@ -0,0 +1,177 @@
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
/* _ _ ____ _ _ ___ ____ */
|
||||||
|
/* |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform */
|
||||||
|
/* | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando */
|
||||||
|
/* */
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
/* SPDX-FileCopyrightText: EVNTech Vache <https://discord.com/users/569168465030676497> */
|
||||||
|
/* SPDX-License-Identifier: CC0-1.0 */
|
||||||
|
|
||||||
|
.menu-node {
|
||||||
|
--child-distance: 90px;
|
||||||
|
--grandchild-distance: 25px;
|
||||||
|
--grandchild-size: 16px;
|
||||||
|
--center-size: 80px;
|
||||||
|
--icon-size: 40px;
|
||||||
|
--connector-width: 10px;
|
||||||
|
--menu-transition: transform 200ms ease, opacity 200ms ease;
|
||||||
|
--connector-transition: width 200ms ease, opacity 200ms ease;
|
||||||
|
|
||||||
|
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
|
||||||
|
/* Positioning ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Child items are positioned around the active node. */
|
||||||
|
&.child.type-submenu {
|
||||||
|
transform: translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
&.child:not(.type-submenu) {
|
||||||
|
transform: translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y))) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grandchild items are positioned around the child items. */
|
||||||
|
&.grandchild {
|
||||||
|
transform: translate(calc(var(--grandchild-distance) * var(--dir-x)),
|
||||||
|
calc(var(--grandchild-distance) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Theme Layers --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* We hide all icons by default. They will be shown further down in this file for the
|
||||||
|
the child items. */
|
||||||
|
.icon-container {
|
||||||
|
position: relative;
|
||||||
|
top: 0px;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
opacity: 90%;
|
||||||
|
clip-path: circle(45% at 50% 50%);
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
color: var(--accent-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-layer,
|
||||||
|
.icon-layer {
|
||||||
|
position: absolute;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-layer {
|
||||||
|
transform: translate(calc(45px * var(--dir-x)), calc(45px * var(--dir-y)));
|
||||||
|
opacity: 0;
|
||||||
|
background-color: var(--label-background-color);
|
||||||
|
color: var(--text-color);
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
white-space: nowrap;
|
||||||
|
height: var(--icon-size);
|
||||||
|
border-radius: var(--icon-size);
|
||||||
|
top: calc(-1 * var(--icon-size) / 2);
|
||||||
|
padding: calc(var(--icon-size) / 5) calc(var(--icon-size) / 3);
|
||||||
|
font-size: calc(var(--icon-size) / 2.7);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The active menu item is the center of the menu. */
|
||||||
|
&.child>.label-layer {
|
||||||
|
box-shadow: 0 0 2px rgba(0, 0, 0, 0.6);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hovered>.label-layer {
|
||||||
|
color: var(--hover-color);
|
||||||
|
border-color: var(--hover-color);
|
||||||
|
box-shadow: 0 0 10px var(--hover-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.right>.label-layer {
|
||||||
|
left: calc(-1 * var(--icon-size)/2);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.left>.label-layer {
|
||||||
|
right: calc(-1 * var(--icon-size)/2);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.top>.label-layer {
|
||||||
|
bottom: calc(0.4 * var(--icon-size));
|
||||||
|
top: inherit;
|
||||||
|
transform: translate(-50%, -10px);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.bottom>.label-layer {
|
||||||
|
top: calc(0.4 * var(--icon-size));
|
||||||
|
transform: translate(-50%, 10px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-layer {
|
||||||
|
top: calc(-1 * var(--icon-size) / 2);
|
||||||
|
left: calc(-1 * var(--icon-size) / 2);
|
||||||
|
width: var(--icon-size);
|
||||||
|
height: var(--icon-size);
|
||||||
|
border-radius: 50%;
|
||||||
|
box-shadow: 0px 0 3px rgba(0, 0, 0, 0.6);
|
||||||
|
background-color: var(--circle-color);
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active>.icon-layer {
|
||||||
|
top: calc(-1 * var(--center-size) / 2);
|
||||||
|
left: calc(-1 * var(--center-size) / 2);
|
||||||
|
width: var(--center-size);
|
||||||
|
height: var(--center-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.grandchild>.icon-layer {
|
||||||
|
top: calc(-1 * var(--grandchild-size) / 2);
|
||||||
|
left: calc(-1 * var(--grandchild-size) / 2);
|
||||||
|
width: var(--grandchild-size);
|
||||||
|
height: var(--grandchild-size);
|
||||||
|
box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.6);
|
||||||
|
opacity: 90%;
|
||||||
|
background-color: var(--border-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Show the icons of the parent and child items. */
|
||||||
|
|
||||||
|
&.parent>.icon-layer>.icon-container,
|
||||||
|
&.child>.icon-layer>.icon-container {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We disable any transition for dragged submenu items. */
|
||||||
|
&.dragged.type-submenu {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Connectors ----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.connector {
|
||||||
|
transition: var(--connector-transition);
|
||||||
|
height: var(--connector-width);
|
||||||
|
top: calc(-1 * var(--connector-width) / 2);
|
||||||
|
background-color: var(--connector-color);
|
||||||
|
opacity: 0;
|
||||||
|
box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(>.dragged)>.connector,
|
||||||
|
&:has(>.clicked)>.connector {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(>.parent)>.connector,
|
||||||
|
&:has(>.active.type-submenu)>.connector,
|
||||||
|
&:has(>.dragged.type-submenu)>.connector {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center Text ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
.center-text {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
46
.config/kando/menu-themes/evntech-vache/theme.json5
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// _ _ ____ _ _ ___ ____ //
|
||||||
|
// |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform //
|
||||||
|
// | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando //
|
||||||
|
// //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// SPDX-FileCopyrightText: EVNTech Vache <https://discord.com/users/569168465030676497> */
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "EVNTech Vache",
|
||||||
|
author: "EVNTech Vache",
|
||||||
|
license: "CC0-1.0",
|
||||||
|
themeVersion: "1.0",
|
||||||
|
|
||||||
|
// This theme was created for Kando's theme engine version 1. Kando will use this to
|
||||||
|
// check if the theme is compatible with the current version of Kando.
|
||||||
|
engineVersion: 1,
|
||||||
|
|
||||||
|
// When a menu is opened too close to a screen's edge, it is moved away from the edge
|
||||||
|
// by this amount of pixels.
|
||||||
|
maxMenuRadius: 160,
|
||||||
|
|
||||||
|
// This theme draws child items below their parent items.
|
||||||
|
drawChildrenBelow: false,
|
||||||
|
|
||||||
|
// These colors can be configured by the user and are vailable in the CSS file as CSS
|
||||||
|
// variables. The default values are used if the user does not provide any values.
|
||||||
|
colors: {
|
||||||
|
"accent-color": "#007AFF",
|
||||||
|
"hover-color": "#54c474",
|
||||||
|
"connector-color": "#f5f5f5",
|
||||||
|
"circle-color": "#f5f5f5",
|
||||||
|
"border-color": "#f5f5f5",
|
||||||
|
"label-background-color": "#f5f5f5",
|
||||||
|
"text-color": "#1F1F1F",
|
||||||
|
},
|
||||||
|
|
||||||
|
// This theme uses two layers, one for the icon and the background and one for the arrow
|
||||||
|
// which points to the hovered item.
|
||||||
|
layers: [
|
||||||
|
{ class: "icon-layer", content: "icon" },
|
||||||
|
{ class: "label-layer", content: "name" },
|
||||||
|
],
|
||||||
|
}
|
||||||
16
.config/kando/menu-themes/hexperiment/REUSE.toml
Executable file
|
|
@ -0,0 +1,16 @@
|
||||||
|
# SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
version = 1
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = "preview.jpg"
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "Simon Schneegans <code@simonschneegans.de>"
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = "border.svg"
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "Simon Schneegans <code@simonschneegans.de>"
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
89
.config/kando/menu-themes/hexperiment/border.svg
Executable file
|
|
@ -0,0 +1,89 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
viewBox="0 0 16.933333 16.933333"
|
||||||
|
version="1.1"
|
||||||
|
id="svg689"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
sodipodi:docname="border.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview691"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#111111"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="1"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="20.70196"
|
||||||
|
inkscape:cx="37.460221"
|
||||||
|
inkscape:cy="35.358971"
|
||||||
|
inkscape:window-width="3840"
|
||||||
|
inkscape:window-height="2123"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs686">
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter851"
|
||||||
|
x="-0.072925616"
|
||||||
|
y="-0.064715923"
|
||||||
|
width="1.1458512"
|
||||||
|
height="1.1294318">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.18183391"
|
||||||
|
id="feGaussianBlur853" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<path
|
||||||
|
sodipodi:type="star"
|
||||||
|
style="mix-blend-mode:normal;fill:none;fill-opacity:0.809856;stroke:#000000;stroke-width:0.165901;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter851);stop-color:#000000"
|
||||||
|
id="path849"
|
||||||
|
inkscape:flatsided="true"
|
||||||
|
sodipodi:sides="6"
|
||||||
|
sodipodi:cx="0"
|
||||||
|
sodipodi:cy="0"
|
||||||
|
sodipodi:r1="4.1116958"
|
||||||
|
sodipodi:r2="3.560833"
|
||||||
|
sodipodi:arg1="0.52359878"
|
||||||
|
sodipodi:arg2="1.0471976"
|
||||||
|
inkscape:rounded="0"
|
||||||
|
inkscape:randomized="0"
|
||||||
|
d="M 3.560833,2.0558479 -1.8098456e-8,4.1116958 -3.560833,2.0558479 l 0,-4.1116958 L 1.8098456e-8,-4.1116958 3.560833,-2.0558479 Z"
|
||||||
|
transform="matrix(0,1.8223353,-1.8223353,0,8.4666667,8.4666667)" />
|
||||||
|
<path
|
||||||
|
sodipodi:type="star"
|
||||||
|
style="fill:none;fill-opacity:0.809856;stroke:#000000;stroke-width:0.165901;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="path2364"
|
||||||
|
inkscape:flatsided="true"
|
||||||
|
sodipodi:sides="6"
|
||||||
|
sodipodi:cx="0"
|
||||||
|
sodipodi:cy="0"
|
||||||
|
sodipodi:r1="4.1116958"
|
||||||
|
sodipodi:r2="3.560833"
|
||||||
|
sodipodi:arg1="0.52359878"
|
||||||
|
sodipodi:arg2="1.0471976"
|
||||||
|
inkscape:rounded="0"
|
||||||
|
inkscape:randomized="0"
|
||||||
|
d="M 3.560833,2.0558479 -1.8098456e-8,4.1116958 -3.560833,2.0558479 l 0,-4.1116958 L 1.8098456e-8,-4.1116958 3.560833,-2.0558479 Z"
|
||||||
|
transform="matrix(0,1.8223353,-1.8223353,0,8.4666667,8.4666667)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3 KiB |
BIN
.config/kando/menu-themes/hexperiment/preview.jpg
Executable file
|
After Width: | Height: | Size: 106 KiB |
153
.config/kando/menu-themes/hexperiment/theme.css
Executable file
|
|
@ -0,0 +1,153 @@
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
/* _ _ ____ _ _ ___ ____ */
|
||||||
|
/* |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform */
|
||||||
|
/* | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando */
|
||||||
|
/* */
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
/* SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> */
|
||||||
|
/* SPDX-License-Identifier: CC0-1.0 */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This theme is a hexagonal menu with a glowing effect. It is kind of a special theme
|
||||||
|
* because it only works up to 6 items. Also, if you have fewer, you should ensure that
|
||||||
|
* all items are arranged in the six cardinal directions. Otherwise, the menu will look
|
||||||
|
* weird.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.menu-node {
|
||||||
|
--tile-size: 130px;
|
||||||
|
--tile-offset: calc(var(--tile-size) * 0.5 * 1.732050808);
|
||||||
|
--hexagon: 0% 50%, 25% 6.7%, 75% 6.7%, 100% 50%, 75% 93.3%, 25% 93.3%, 0% 50%;
|
||||||
|
--menu-transition: all 200ms ease;
|
||||||
|
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
|
||||||
|
/* Positioning ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Child items are positioned around the active node. */
|
||||||
|
&.child {
|
||||||
|
transform: translate(calc(var(--tile-offset) * var(--dir-x)), calc(var(--tile-offset) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grandchild items are positioned around the child items. */
|
||||||
|
&.grandchild {
|
||||||
|
transform: translate(calc(var(--tile-offset) * var(--dir-x) / 3), calc(var(--tile-offset) * var(--dir-y) / 3));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Theme Layers --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.icon-container {
|
||||||
|
color: var(--text-color);
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
margin: 15%;
|
||||||
|
width: 70% !important;
|
||||||
|
height: 70% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-layer,
|
||||||
|
.glow-layer {
|
||||||
|
position: absolute;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-layer {
|
||||||
|
clip-path: polygon(var(--hexagon));
|
||||||
|
background-color: var(--background-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.glow-layer {
|
||||||
|
transform: scale(1.13);
|
||||||
|
filter: drop-shadow(0 0 5px var(--glow-color));
|
||||||
|
z-index: 10;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
mask: url('border.svg') no-repeat center / contain;
|
||||||
|
background: var(--line-color)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active>.icon-layer,
|
||||||
|
&.active>.glow-layer {
|
||||||
|
top: calc(-1 * var(--tile-size) / 2);
|
||||||
|
left: calc(-1 * var(--tile-size) / 2);
|
||||||
|
width: var(--tile-size);
|
||||||
|
height: var(--tile-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active>.icon-layer>.icon-container {
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Hovered nodes are highlighted. If a child is highlighted, we also highlight all of
|
||||||
|
its grandchildren. If the parent is highlighted, we also highlight all of its non-
|
||||||
|
active children. */
|
||||||
|
&.active.hovered>.icon-layer,
|
||||||
|
&.parent.hovered>.icon-layer,
|
||||||
|
&.parent.hovered>.grandchild>.icon-layer,
|
||||||
|
&.child.hovered .icon-layer {
|
||||||
|
background-color: var(--hover-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Child items are displayed around the active node. The parent node of the active
|
||||||
|
node is displayed in a similar style. */
|
||||||
|
&.parent>.icon-layer,
|
||||||
|
&.parent>.glow-layer,
|
||||||
|
&.child>.icon-layer,
|
||||||
|
&.child>.glow-layer {
|
||||||
|
top: calc(-1 * var(--tile-size) / 2);
|
||||||
|
left: calc(-1 * var(--tile-size) / 2);
|
||||||
|
width: var(--tile-size);
|
||||||
|
height: var(--tile-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.parent.type-submenu>.icon-layer,
|
||||||
|
&.parent.type-submenu>.glow-layer,
|
||||||
|
&.child.type-submenu>.icon-layer,
|
||||||
|
&.child.type-submenu>.glow-layer,
|
||||||
|
&.grandchild>.icon-layer,
|
||||||
|
&.grandchild>.glow-layer {
|
||||||
|
top: calc(-1 * var(--tile-size) / 6);
|
||||||
|
left: calc(-1 * var(--tile-size) / 6);
|
||||||
|
width: calc(var(--tile-size) / 3);
|
||||||
|
height: calc(var(--tile-size) / 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We disable any transition for dragged items. */
|
||||||
|
&.dragged {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Connectors ----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.connector {
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
height: 14px;
|
||||||
|
background: var(--line-color);
|
||||||
|
top: -7px;
|
||||||
|
box-shadow: 0 0 5px var(--line-color), 0 0 15px var(--glow-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(.dragged)>.connector {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center Text ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
.center-text {
|
||||||
|
color: var(--text-color);
|
||||||
|
transition: var(--opacity-transition);
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
text-shadow: 0 0 5px var(--glow-color);
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
43
.config/kando/menu-themes/hexperiment/theme.json5
Executable file
|
|
@ -0,0 +1,43 @@
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// _ _ ____ _ _ ___ ____ //
|
||||||
|
// |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform //
|
||||||
|
// | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando //
|
||||||
|
// //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
{
|
||||||
|
name: 'Hexperiment',
|
||||||
|
author: 'Simon Schneegans',
|
||||||
|
license: 'CC0-1.0',
|
||||||
|
themeVersion: '1.0',
|
||||||
|
|
||||||
|
// This theme was created for Kando's theme engine version 1. Kando will use this to
|
||||||
|
// check if the theme is compatible with the current version of Kando.
|
||||||
|
engineVersion: 1,
|
||||||
|
|
||||||
|
// When a menu is opened too close to a screen's edge, it is moved away from the edge
|
||||||
|
// by this amount of pixels.
|
||||||
|
maxMenuRadius: 160,
|
||||||
|
|
||||||
|
// The width at which the center text is wrapped.
|
||||||
|
centerTextWrapWidth: 90,
|
||||||
|
|
||||||
|
// This theme draws child items below their parent items.
|
||||||
|
drawChildrenBelow: false,
|
||||||
|
|
||||||
|
// These colors can be configured by the user and are vailable in the CSS file as CSS
|
||||||
|
// variables. The default values are used if the user does not provide any values.
|
||||||
|
colors: {
|
||||||
|
'background-color': 'rgb(0, 0, 0)',
|
||||||
|
'text-color': 'rgb(255, 255, 255)',
|
||||||
|
'line-color': 'rgb(255, 227, 233)',
|
||||||
|
'glow-color': 'rgba(255, 30, 195, 0.85)',
|
||||||
|
'hover-color': 'rgb(60, 28, 64)',
|
||||||
|
},
|
||||||
|
|
||||||
|
// This theme is very simple and only uses one layer for the menu items.
|
||||||
|
layers: [{ class: 'glow-layer' }, { class: 'icon-layer', content: 'icon' }],
|
||||||
|
}
|
||||||
17
.config/kando/menu-themes/knight-forge/REUSE.toml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# SPDX-FileCopyrightText: yar2000T <https://github.com/yar2000T>
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
version = 1
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = ["*.jpg", "*.png"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "yar2000T <https://github.com/yar2000T>"
|
||||||
|
SPDX-License-Identifier = "CC-BY-4.0"
|
||||||
|
|
||||||
|
# Font downloaded from: https://www.nerdfonts.com/font-downloads
|
||||||
|
[[annotations]]
|
||||||
|
path = ["0xProtoNerdFontPropo-Regular.otf"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "(c) 2023, 0xType Project Authors (https://github.com/0xType)"
|
||||||
|
SPDX-License-Identifier = "OFL-1.1"
|
||||||
BIN
.config/kando/menu-themes/knight-forge/connector.png
Normal file
|
After Width: | Height: | Size: 352 B |
BIN
.config/kando/menu-themes/knight-forge/icon-highlight.png
Normal file
|
After Width: | Height: | Size: 842 B |
BIN
.config/kando/menu-themes/knight-forge/icon.png
Normal file
|
After Width: | Height: | Size: 844 B |
BIN
.config/kando/menu-themes/knight-forge/preview.jpg
Normal file
|
After Width: | Height: | Size: 33 KiB |
170
.config/kando/menu-themes/knight-forge/theme.css
Normal file
|
|
@ -0,0 +1,170 @@
|
||||||
|
/* SPDX-FileCopyrightText: yar2000T <https://github.com/yar2000T> */
|
||||||
|
/* SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> */
|
||||||
|
/* SPDX-License-Identifier: CC-BY-4.0 */
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'ProtoNerdPropo-Regular';
|
||||||
|
src: url('0xProtoNerdFontPropo-Regular.otf');
|
||||||
|
}
|
||||||
|
|
||||||
|
#kando-menu {
|
||||||
|
.menu-node {
|
||||||
|
color: transparent;
|
||||||
|
|
||||||
|
--child-distance: 100px;
|
||||||
|
--child-size: 60px;
|
||||||
|
|
||||||
|
--fade-distance: 80px;
|
||||||
|
--fade-size: 45px;
|
||||||
|
|
||||||
|
--connector-width: 10px;
|
||||||
|
--center-size: 120px;
|
||||||
|
|
||||||
|
--menu-transition: 150ms ease;
|
||||||
|
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
--center-size: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.child {
|
||||||
|
transform: translate(
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.grandchild {
|
||||||
|
transform: translate(
|
||||||
|
calc(var(--fade-distance) * var(--dir-x)),
|
||||||
|
calc(var(--fade-distance) * var(--dir-y))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active:has(.hovered) > .child {
|
||||||
|
transform: scale(calc(1.15 - pow(var(--angle-diff) / 180, 0.25) * 0.15))
|
||||||
|
translate(
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y))
|
||||||
|
);
|
||||||
|
|
||||||
|
&.hovered {
|
||||||
|
transform: scale(1.15)
|
||||||
|
translate(
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-container {
|
||||||
|
color: var(--text-color);
|
||||||
|
margin: 10px;
|
||||||
|
width: calc(100% - 20px);
|
||||||
|
image-rendering: pixelated;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hovered.clicked > .icon-layer {
|
||||||
|
transform: scale(0.95);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active > .icon-layer {
|
||||||
|
position: absolute;
|
||||||
|
top: calc(-1 * var(--center-size) / 2);
|
||||||
|
left: calc(-1 * var(--center-size) / 2);
|
||||||
|
width: var(--center-size);
|
||||||
|
height: var(--center-size);
|
||||||
|
background-image: url('icon.png');
|
||||||
|
background-size: contain;
|
||||||
|
image-rendering: high-quality;
|
||||||
|
box-shadow: 0 0 8px var(--hover-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.parent > .icon-layer,
|
||||||
|
&.child > .icon-layer {
|
||||||
|
position: absolute;
|
||||||
|
top: calc(-1 * var(--child-size) / 2);
|
||||||
|
left: calc(-1 * var(--child-size) / 2);
|
||||||
|
width: var(--child-size);
|
||||||
|
height: var(--child-size);
|
||||||
|
background-image: url('icon.png');
|
||||||
|
background-size: contain;
|
||||||
|
image-rendering: high-quality;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.grandchild > .icon-layer {
|
||||||
|
position: absolute;
|
||||||
|
top: calc(-1 * var(--fade-size) / 2);
|
||||||
|
left: calc(-1 * var(--fade-size) / 2);
|
||||||
|
width: var(--fade-size);
|
||||||
|
height: var(--fade-size);
|
||||||
|
background-image: url('icon.png');
|
||||||
|
background-size: contain;
|
||||||
|
image-rendering: high-quality;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.parent.hovered > .icon-layer,
|
||||||
|
&.child.hovered > .icon-layer {
|
||||||
|
background-image: url('icon-highlight.png');
|
||||||
|
image-rendering: high-quality;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.grandchild {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.dragged {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.connector {
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
height: var(--connector-width);
|
||||||
|
top: calc(-1 * var(--connector-width) / 2);
|
||||||
|
|
||||||
|
border-width: 5px 60px 5px 60px;
|
||||||
|
border-style: solid;
|
||||||
|
border-image: url('connector.png');
|
||||||
|
border-image-slice: 5 60 5 60;
|
||||||
|
border-image-repeat: round;
|
||||||
|
image-rendering: high-quality;
|
||||||
|
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(.dragged) > .connector,
|
||||||
|
&:has(.clicked) > .connector {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.parent > .connector,
|
||||||
|
&:has(.dragged) > .connector,
|
||||||
|
&:has(.clicked) > .connector {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.center-text {
|
||||||
|
font-family: 'ProtoNerdPropo-Regular', sans-serif;
|
||||||
|
text-shadow: 2px 2px 0px black;
|
||||||
|
color: var(--text-color);
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.selection-wedges {
|
||||||
|
mask: radial-gradient(circle at var(--center-x) var(--center-y), black 100px, transparent 50%);
|
||||||
|
|
||||||
|
&.hovered {
|
||||||
|
--width: calc(var(--end-angle) - var(--start-angle));
|
||||||
|
background: conic-gradient(
|
||||||
|
from calc(var(--start-angle)) at var(--center-x) var(--center-y),
|
||||||
|
var(--wedge-highlight-color) var(--width),
|
||||||
|
var(--wedge-color) var(--width)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
background: var(--wedge-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
28
.config/kando/menu-themes/knight-forge/theme.json5
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
// SPDX-FileCopyrightText: yar2000T <https://github.com/yar2000T>
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "KnightForge",
|
||||||
|
author: "yar2000T",
|
||||||
|
license: "CC-BY-4.0",
|
||||||
|
themeVersion: "1.0",
|
||||||
|
|
||||||
|
engineVersion: 1,
|
||||||
|
|
||||||
|
maxMenuRadius: 160,
|
||||||
|
|
||||||
|
centerTextWrapWidth: 120,
|
||||||
|
|
||||||
|
drawChildrenBelow: true,
|
||||||
|
|
||||||
|
drawSelectionWedges: true,
|
||||||
|
|
||||||
|
colors: {
|
||||||
|
"text-color": "rgb(255, 255, 255)",
|
||||||
|
"wedge-highlight-color": "rgba(0, 0, 0, 0.1)",
|
||||||
|
"wedge-color": "rgba(0, 0, 0, 0.2)",
|
||||||
|
},
|
||||||
|
|
||||||
|
layers: [{ class: 'label-layer', content: 'name' },
|
||||||
|
],
|
||||||
|
}
|
||||||
BIN
.config/kando/menu-themes/minecraft/MinecraftRegular-Bmg3.otf
Executable file
17
.config/kando/menu-themes/minecraft/REUSE.toml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
version = 1
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = ["*.jpg", "*.png"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "Simon Schneegans <code@simonschneegans.de>"
|
||||||
|
SPDX-License-Identifier = "CC-BY-4.0"
|
||||||
|
|
||||||
|
# Font downloaded from: https://www.fontspace.com/minecraft-font-f28180
|
||||||
|
[[annotations]]
|
||||||
|
path = ["MinecraftRegular-Bmg3.otf"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "JDGraphics"
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
BIN
.config/kando/menu-themes/minecraft/connector.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
.config/kando/menu-themes/minecraft/icon-highlight.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
.config/kando/menu-themes/minecraft/icon.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
.config/kando/menu-themes/minecraft/preview.jpg
Normal file
|
After Width: | Height: | Size: 70 KiB |
141
.config/kando/menu-themes/minecraft/theme.css
Normal file
|
|
@ -0,0 +1,141 @@
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
/* _ _ ____ _ _ ___ ____ */
|
||||||
|
/* |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform */
|
||||||
|
/* | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando */
|
||||||
|
/* */
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
/* SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> */
|
||||||
|
/* SPDX-License-Identifier: CC-BY-4.0 */
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Minecraft';
|
||||||
|
src: url(MinecraftRegular-Bmg3.otf);
|
||||||
|
}
|
||||||
|
|
||||||
|
#kando-menu {
|
||||||
|
|
||||||
|
.menu-node {
|
||||||
|
--child-distance: 100px;
|
||||||
|
--child-size: 60px;
|
||||||
|
|
||||||
|
--fade-distance: 80px;
|
||||||
|
--fade-size: 45px;
|
||||||
|
|
||||||
|
--connector-width: 10px;
|
||||||
|
|
||||||
|
--menu-transition: 150ms ease;
|
||||||
|
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
|
||||||
|
/* Positioning -------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Child items are positioned around the active node. */
|
||||||
|
&.child {
|
||||||
|
transform: translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grandchild items are positioned around the child items. They are not visible in
|
||||||
|
this theme, but we still need to position them so that child items can be properly
|
||||||
|
faded in and out. */
|
||||||
|
&.grandchild {
|
||||||
|
transform: translate(calc(var(--fade-distance) * var(--dir-x)),
|
||||||
|
calc(var(--fade-distance) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Theme Layers ------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* This theme comes with only one layer. This contains the icon of the menu item. */
|
||||||
|
|
||||||
|
/* Icons are drawn pixelated. */
|
||||||
|
.icon-container {
|
||||||
|
color: var(--text-color);
|
||||||
|
margin: 10px;
|
||||||
|
width: calc(100% - 20px);
|
||||||
|
image-rendering: pixelated;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If a node is clicked, we scale it down a bit. */
|
||||||
|
&.hovered.clicked>.icon-layer {
|
||||||
|
transform: scale(0.95);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Child items are displayed around the active node. The parent node of the active
|
||||||
|
node is displayed in a similar style. */
|
||||||
|
&.active>.icon-layer,
|
||||||
|
&.parent>.icon-layer,
|
||||||
|
&.child>.icon-layer,
|
||||||
|
&.grandchild>.icon-layer {
|
||||||
|
position: absolute;
|
||||||
|
top: calc(-1 * var(--child-size) / 2);
|
||||||
|
left: calc(-1 * var(--child-size) / 2);
|
||||||
|
width: var(--child-size);
|
||||||
|
height: var(--child-size);
|
||||||
|
background-image: url('icon.png');
|
||||||
|
background-size: contain;
|
||||||
|
image-rendering: pixelated;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.grandchild>.icon-layer {
|
||||||
|
top: calc(-1 * var(--fade-size) / 2);
|
||||||
|
left: calc(-1 * var(--fade-size) / 2);
|
||||||
|
width: var(--fade-size);
|
||||||
|
height: var(--fade-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hovered child or parent items are highlighted. */
|
||||||
|
&.parent.hovered>.icon-layer,
|
||||||
|
&.child.hovered>.icon-layer {
|
||||||
|
background-image: url('icon-highlight.png');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grandchild items are transparent. */
|
||||||
|
&.grandchild {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We disable any transition for dragged items. */
|
||||||
|
&.dragged {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Connectors --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.connector {
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
height: var(--connector-width);
|
||||||
|
top: calc(-1 * var(--connector-width) / 2);
|
||||||
|
|
||||||
|
border-width: 5px 60px 5px 60px;
|
||||||
|
border-style: solid;
|
||||||
|
border-image: url('connector.png');
|
||||||
|
border-image-slice: 5 60 5 60;
|
||||||
|
border-image-repeat: round;
|
||||||
|
image-rendering: pixelated;
|
||||||
|
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(.dragged)>.connector,
|
||||||
|
&:has(.clicked)>.connector {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.parent>.connector,
|
||||||
|
&:has(.dragged)>.connector,
|
||||||
|
&:has(.clicked)>.connector {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center Text ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.center-text {
|
||||||
|
font-family: 'Minecraft', sans-serif;
|
||||||
|
text-shadow: 2px 2px 0px black;
|
||||||
|
color: var(--text-color);
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
39
.config/kando/menu-themes/minecraft/theme.json5
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// _ _ ____ _ _ ___ ____ //
|
||||||
|
// |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform //
|
||||||
|
// | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando //
|
||||||
|
// //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Minecraft",
|
||||||
|
author: "Simon Schneegans",
|
||||||
|
license: "CC-BY-4.0",
|
||||||
|
themeVersion: "1.0",
|
||||||
|
|
||||||
|
// This theme was created for Kando's theme engine version 1. Kando will use this to
|
||||||
|
// check if the theme is compatible with the current version of Kando.
|
||||||
|
engineVersion: 1,
|
||||||
|
|
||||||
|
// When a menu is opened too close to a screen's edge, it is moved away from the edge
|
||||||
|
// by this amount of pixels.
|
||||||
|
maxMenuRadius: 160,
|
||||||
|
|
||||||
|
// The width at which the center text is wrapped.
|
||||||
|
centerTextWrapWidth: 120,
|
||||||
|
|
||||||
|
// This theme draws child items below their parent items.
|
||||||
|
drawChildrenBelow: true,
|
||||||
|
|
||||||
|
// These colors can be configured by the user and are vailable in the CSS file as CSS
|
||||||
|
// variables. The default values are used if the user does not provide any values.
|
||||||
|
colors: {
|
||||||
|
"text-color": "rgb(255, 255, 255)",
|
||||||
|
},
|
||||||
|
|
||||||
|
// This theme is very simple and only uses one layer for the menu items.
|
||||||
|
layers: [{ class: "icon-layer", content: "icon" }],
|
||||||
|
}
|
||||||
6
.config/kando/menu-themes/modified-bent-photon/README.md
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: reass <https://github.com/reassDev>
|
||||||
|
SPDX-License-Identifier: CC-BY-4.0
|
||||||
|
-->
|
||||||
|
|
||||||
|
Modified version of Bent Photon by Neigh to include text and icon color customization.
|
||||||
17
.config/kando/menu-themes/modified-bent-photon/REUSE.toml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# SPDX-FileCopyrightText: reass <https://github.com/reassDev>
|
||||||
|
# SPDX-License-Identifier: CC-BY-4.0
|
||||||
|
|
||||||
|
version = 1
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = ["*.jpg", "*.png"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "reass <https://github.com/reassDev>"
|
||||||
|
SPDX-License-Identifier = "CC-BY-4.0"
|
||||||
|
|
||||||
|
# Font from: https://fonts.google.com/specimen/Space+Grotesk
|
||||||
|
[[annotations]]
|
||||||
|
path = ["SpaceGrotesk-Bold.otf"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "Copyright 2020 The Space Grotesk Project Authors (https://github.com/floriankarsten/space-grotesk)"
|
||||||
|
SPDX-License-Identifier = "OFL-1.1"
|
||||||
BIN
.config/kando/menu-themes/modified-bent-photon/preview.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
314
.config/kando/menu-themes/modified-bent-photon/theme.css
Normal file
|
|
@ -0,0 +1,314 @@
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
/* _ _ ____ _ _ ___ ____ */
|
||||||
|
/* |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform */
|
||||||
|
/* | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando */
|
||||||
|
/* */
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
/* SPDX-FileCopyrightText: reass <https://github.com/reassDev> */
|
||||||
|
/* SPDX-FileCopyrightText: Copyright (c) 2024 NeighNeighNeigh */
|
||||||
|
/* SPDX-License-Identifier: MIT */
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'SpaceGrotesk-Bold';
|
||||||
|
src: url('SpaceGrotesk-Bold.otf') format('opentype');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#kando-menu {
|
||||||
|
--dots-spacing: 3px;
|
||||||
|
--dots-size: 1px;
|
||||||
|
background-color: var(--canvas-color);
|
||||||
|
background-image: radial-gradient(var(--dots-color) var(--dots-size), transparent 0);
|
||||||
|
background-size: var(--dots-spacing) var(--dots-spacing);
|
||||||
|
background-position: calc(var(--dots-spacing)-var(--dots-size)) calc(var(--dots-spacing)-var(--dots-size));
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-node {
|
||||||
|
--child-distance: 90px;
|
||||||
|
--grandchild-distance: 60px;
|
||||||
|
--center-size: 140px;
|
||||||
|
--icon-size: 32px;
|
||||||
|
--connector-width: 10px;
|
||||||
|
--menu-transition: transform 120ms ease-out, opacity 120ms ease-out;
|
||||||
|
--number-padding-left: 20px;
|
||||||
|
--box-height: 36px;
|
||||||
|
|
||||||
|
|
||||||
|
transform-origin: left top;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Positioning ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Child items are positioned around the active node. */
|
||||||
|
&.child {
|
||||||
|
transform: translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grandchild items are positioned around the child items. */
|
||||||
|
&.grandchild {
|
||||||
|
transform: translate(calc(var(--grandchild-distance) * var(--dir-x)),
|
||||||
|
calc(var(--grandchild-distance) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* If there is a hovered child node, we scale all children up a bit to create a cool
|
||||||
|
zoom effect. The hovered child itself is scaled up even more. */
|
||||||
|
&.active:has(.hovered)>.child {
|
||||||
|
transform: scale(calc(1.15 - pow(var(--angle-diff) / 180, 0.25) * 0.15)) translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
|
||||||
|
&.hovered {
|
||||||
|
transform: scale(1.15) translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Theme Layers --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* We hide all icons by default. They will be shown further down in this file for the
|
||||||
|
the child items. */
|
||||||
|
.icon-container {
|
||||||
|
position: relative;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
opacity: 0;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
color: var(--icon-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.label-layer,
|
||||||
|
.icon-layer {
|
||||||
|
position: relative;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-layer {
|
||||||
|
width: var(--icon-size);
|
||||||
|
height: var(--icon-size);
|
||||||
|
margin-top: 2px;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-layer {
|
||||||
|
opacity: 0;
|
||||||
|
background-color: var(--lowlight-color);
|
||||||
|
color: var(--text-color);
|
||||||
|
font-size: 14px;
|
||||||
|
letter-spacing: 0.12em; /* Adjust this value as needed */
|
||||||
|
font-family: SpaceGrotesk-Bold;
|
||||||
|
line-height: var(--box-height);
|
||||||
|
border-radius: 5px;
|
||||||
|
white-space: nowrap;
|
||||||
|
height: var(--box-height);
|
||||||
|
padding: 0px 12px 0px var(--icon-size);
|
||||||
|
/* box-shadow: 0 2px 5px color-mix(in srgb, var(--lowlight-color) 50%, transparent);*/
|
||||||
|
text-transform: uppercase;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
padding-left: var(--number-padding-left);
|
||||||
|
color: var(--number-unhovered-color);
|
||||||
|
/* mix-blend-mode: overlay;*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-last-child(4)>.label-layer::after {
|
||||||
|
content: "1";
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-last-child(5)>.label-layer::after {
|
||||||
|
content: "2";
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-last-child(6)>.label-layer::after {
|
||||||
|
content: "3";
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-last-child(7)>.label-layer::after {
|
||||||
|
content: "4";
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-last-child(8)>.label-layer::after {
|
||||||
|
content: "5";
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-last-child(9)>.label-layer::after {
|
||||||
|
content: "6";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-last-child(10)>.label-layer::after {
|
||||||
|
content: "7";
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-last-child(11)>.label-layer::after {
|
||||||
|
content: "8";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-last-child(12)>.label-layer::after {
|
||||||
|
content: "9";
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-last-child(13)>.label-layer::after {
|
||||||
|
content: "a";
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-last-child(14)>.label-layer::after {
|
||||||
|
content: "b";
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-last-child(15)>.label-layer::after {
|
||||||
|
content: "c";
|
||||||
|
}
|
||||||
|
|
||||||
|
&.left>.label-layer {
|
||||||
|
top: calc(-1 * var(--icon-size) / 2);
|
||||||
|
left: -100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.left>.icon-layer {
|
||||||
|
top: calc(-1 * var(--icon-size) / 2);
|
||||||
|
left: calc(-100% + var(--icon-size));
|
||||||
|
}
|
||||||
|
|
||||||
|
&.top>.label-layer {
|
||||||
|
top: calc(-2 * var(--icon-size) / 2);
|
||||||
|
left: calc(-50% - var(--icon-size) / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.top>.icon-layer {
|
||||||
|
top: calc(-2 * var(--icon-size) / 2);
|
||||||
|
left: calc(-50% + var(--icon-size) / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.bottom>.label-layer {
|
||||||
|
top: 0;
|
||||||
|
left: calc(-50% - var(--icon-size) / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.bottom>.icon-layer {
|
||||||
|
top: 0;
|
||||||
|
left: calc(-50% + var(--icon-size) / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.right>.label-layer {
|
||||||
|
top: calc(-1 * var(--icon-size) / 2);
|
||||||
|
left: calc(-1 * var(--icon-size));
|
||||||
|
}
|
||||||
|
|
||||||
|
&.right>.icon-layer {
|
||||||
|
top: calc(-1 * var(--icon-size) / 2);
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active>.icon-layer {
|
||||||
|
top: calc(-1 * var(--center-size) / 2);
|
||||||
|
left: calc(-1 * var(--center-size) / 2);
|
||||||
|
width: var(--center-size);
|
||||||
|
height: var(--center-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The active menu item is the center of the menu. */
|
||||||
|
&.child>.label-layer {
|
||||||
|
opacity: 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&.parent>.icon-layer {
|
||||||
|
top: calc(-1 * var(--icon-size) / 2);
|
||||||
|
left: calc(-1 * var(--icon-size) / 2);
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Show the icons of the parent and child items. */
|
||||||
|
&.active>.icon-layer>.icon-container,
|
||||||
|
&.parent>.icon-layer>.icon-container,
|
||||||
|
&.child>.icon-layer>.icon-container {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We disable any transition for dragged submenu items. */
|
||||||
|
&.dragged {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.grandchild {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hovered>.label-layer {
|
||||||
|
background-color: var(--highlight-color);
|
||||||
|
color: var(--text-color);
|
||||||
|
/* box-shadow: 0 3px 6px rgba(0, 0, 0, 0.35);*/
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
padding-left: var(--number-padding-left);
|
||||||
|
color: color-mix(in srgb, var(--text-color) 50%, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hovered>.icon-layer>.icon-container {
|
||||||
|
color: var(--text-color)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Connectors ----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.connector {
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
height: var(--connector-width);
|
||||||
|
top: calc(-1 * var(--connector-width) / 2);
|
||||||
|
background: transparent;
|
||||||
|
opacity: 1;
|
||||||
|
border-radius: var(--connector-width);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.connector::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
width: calc(100% - (var(--center-size)*1)); /* Adjust how close the connector gets to the icon */
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(to right, color-mix(in srgb, var(--highlight-color) 0%, transparent) 0%, var(--highlight-color) 100%);
|
||||||
|
border-radius: calc(var(--connector-width) / 2);
|
||||||
|
opacity: 1;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(>.dragged)>.connector,
|
||||||
|
&:has(>.clicked)>.connector {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(>.parent)>.connector,
|
||||||
|
&:has(>.active)>.connector,
|
||||||
|
&:has(>.dragged)>.connector {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center Text ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
.center-text {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
46
.config/kando/menu-themes/modified-bent-photon/theme.json5
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// _ _ ____ _ _ ___ ____ //
|
||||||
|
// |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform //
|
||||||
|
// | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando //
|
||||||
|
// //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// SPDX-FileCopyrightText: reass <https://github.com/reassDev>
|
||||||
|
// SPDX-FileCopyrightText: Copyright (c) 2024 NeighNeighNeigh
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Bent Photon Modified",
|
||||||
|
author: "reass and Neigh",
|
||||||
|
license: "CC0-1.0",
|
||||||
|
themeVersion: "1.0",
|
||||||
|
|
||||||
|
// This theme was created for Kando's theme engine version 1. Kando will use this to
|
||||||
|
// check if the theme is compatible with the current version of Kando.
|
||||||
|
engineVersion: 1,
|
||||||
|
|
||||||
|
// When a menu is opened too close to a screen's edge, it is moved away from the edge
|
||||||
|
// by this amount of pixels.
|
||||||
|
maxMenuRadius: 160,
|
||||||
|
|
||||||
|
// This theme draws child items below their parent items.
|
||||||
|
drawChildrenBelow: true,
|
||||||
|
|
||||||
|
// These colors can be configured by the user and are vailable in the CSS file as CSS
|
||||||
|
// variables. The default values are used if the user does not provide any values.
|
||||||
|
colors: {
|
||||||
|
'lowlight-color': 'oklch(63.11% 0.2546 22.82 / 56%)',
|
||||||
|
'highlight-color': 'oklch(57.52% 0.2358 28.95)',
|
||||||
|
'text-color': 'oklch(84.38% 0.0173 45.4)',
|
||||||
|
'icon-color': 'oklch(84.38% 0.0173 45.4)',
|
||||||
|
'number-unhovered-color': 'oklch(91.11% 0.0295 4.56 / 84%)',
|
||||||
|
'canvas-color': 'oklch(50.76% 0.2933 286.69 / 7%)',
|
||||||
|
'dots-color': 'oklch(100% 0% 0deg / 0%)',
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
layers: [
|
||||||
|
{ class: "label-layer", content: "name" },
|
||||||
|
{ class: "icon-layer", content: "icon" },
|
||||||
|
],
|
||||||
|
}
|
||||||
17
.config/kando/menu-themes/navigation/REUSE.toml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
# SPDX-FileCopyrightText: 2025 Rena and LCG
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
version = 1
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = ["theme.css", "theme.json5"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = ["Simon Schneegans <code@simonschneegans.de>", "2025 Rena and LCG"]
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = "preview.jpg"
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "2025 Rena and LCG"
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
BIN
.config/kando/menu-themes/navigation/preview.jpg
Normal file
|
After Width: | Height: | Size: 110 KiB |
678
.config/kando/menu-themes/navigation/theme.css
Normal file
|
|
@ -0,0 +1,678 @@
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
/* _ _ ____ _ _ ___ ____ */
|
||||||
|
/* |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform */
|
||||||
|
/* | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando */
|
||||||
|
/* */
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
|
||||||
|
/* SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> */
|
||||||
|
/* SPDX-FileCopyrightText: 2025 Rena and LCG */
|
||||||
|
/* SPDX-License-Identifier: CC0-1.0 */
|
||||||
|
|
||||||
|
/* 🧭 Navigation Theme - Modern minimalist ring navigation theme */
|
||||||
|
/* 🔧 v6.4: Simplified sector effects, removed sector-glow, retained core visuals */
|
||||||
|
|
||||||
|
/* === 🌈 New: Dual Background Layer System === */
|
||||||
|
/* 🌟 Left half screen background layer */
|
||||||
|
body::before {
|
||||||
|
content: '';
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 50%;
|
||||||
|
height: 100%;
|
||||||
|
background: var(--background-layer-left);
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: -10;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 🌟 Right half screen background layer */
|
||||||
|
body::after {
|
||||||
|
content: '';
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 50%;
|
||||||
|
width: 50%;
|
||||||
|
height: 100%;
|
||||||
|
background: var(--background-layer-right);
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: -10;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🎨 Canvas Gradient Background === */
|
||||||
|
#kando-menu canvas {
|
||||||
|
background: linear-gradient(135deg,
|
||||||
|
#8B5CF6 0%, /* Blue-purple */
|
||||||
|
#A855F7 20%, /* Purple */
|
||||||
|
#EC4899 40%, /* Pink */
|
||||||
|
#F97316 60%, /* Orange */
|
||||||
|
#EAB308 80%, /* Yellow */
|
||||||
|
#F59E0B 100% /* Golden yellow */
|
||||||
|
) !important;
|
||||||
|
|
||||||
|
/* Disable all transition animations */
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🎯 Menu Container Position Control: Disable Position Movement Animation === */
|
||||||
|
/* Solution: Disable unnecessary position movement animations when returning from submenu to parent */
|
||||||
|
#kando-menu {
|
||||||
|
/* 🚫 Disable menu container position movement animation, implementing "jump" instead of "move" */
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 🔧 More precise control: disable main menu node position animations */
|
||||||
|
.menu-node.active {
|
||||||
|
/* 🚫 Disable menu node position movement animation */
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 🔧 Globally disable menu node transform animations (except child icons) */
|
||||||
|
.menu-node:not(.child) {
|
||||||
|
/* 🚫 Disable transform animations for non-child icons */
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🎨 Background Color Overlay === */
|
||||||
|
#kando-menu::before {
|
||||||
|
content: '';
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: var(--canvas-bg);
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: -1;
|
||||||
|
|
||||||
|
/* Disable all transition animations */
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 📐 Core Layout Parameters === */
|
||||||
|
.menu-node {
|
||||||
|
--child-distance: 110px; /* Ring center radius - compact for tighter icon spacing */
|
||||||
|
--child-size: 60px; /* Icon container size */
|
||||||
|
--ring-inner-radius: 70px; /* Ring inner radius - continue shrinking for thick ring */
|
||||||
|
--ring-outer-radius: 150px; /* Ring outer radius */
|
||||||
|
--ring-width: 80px; /* Ring width - continue increasing for thick ring */
|
||||||
|
--menu-transition: transform 200ms cubic-bezier(0.4, 0.0, 0.2, 1);
|
||||||
|
|
||||||
|
/* 🚫 Default disable menu node transform animations (child icons will be overridden separately) */
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🎯 Submenu Icon Layout === */
|
||||||
|
.menu-node.child {
|
||||||
|
/* Ring position - ensure icons are on ring centerline */
|
||||||
|
transform: translate(
|
||||||
|
calc(var(--child-distance) * var(--dir-x)),
|
||||||
|
calc(var(--child-distance) * var(--dir-y))
|
||||||
|
) !important;
|
||||||
|
|
||||||
|
/* ✅ Maintain icon expand animation (override to ensure priority) - Natural sway: like falling leaves natural sway */
|
||||||
|
transition: transform 400ms cubic-bezier(0.23, 1, 0.32, 1.2) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🎨 Icon Layer Styles === */
|
||||||
|
.menu-node .icon-layer {
|
||||||
|
position: absolute;
|
||||||
|
border-radius: 50%;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🕳️ Center Area - Complete Void === */
|
||||||
|
.menu-node.active > .icon-layer {
|
||||||
|
background: transparent;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === ⭕ Submenu Icon Container === */
|
||||||
|
.menu-node.child > .icon-layer {
|
||||||
|
/* 🔧 Fix 1: Precise center alignment */
|
||||||
|
top: calc(-1 * var(--child-size) / 2);
|
||||||
|
left: calc(-1 * var(--child-size) / 2);
|
||||||
|
width: var(--child-size);
|
||||||
|
height: var(--child-size);
|
||||||
|
background: transparent;
|
||||||
|
position: relative;
|
||||||
|
z-index: 10;
|
||||||
|
|
||||||
|
/* 🎯 Ensure transform center point is at geometric center */
|
||||||
|
transform-origin: center center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🎯 Sector Highlight Background - 🔧 Layered Solution === */
|
||||||
|
/* 🌌 Glow layer - below sector, responsible for sector-glow effect */
|
||||||
|
.menu-node.child.hovered::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
/* Same position and size as sector */
|
||||||
|
top: calc(-1 * var(--ring-outer-radius) - var(--child-distance) * var(--dir-y));
|
||||||
|
left: calc(-1 * var(--ring-outer-radius) - var(--child-distance) * var(--dir-x));
|
||||||
|
width: calc(var(--ring-outer-radius) * 2);
|
||||||
|
height: calc(var(--ring-outer-radius) * 2);
|
||||||
|
|
||||||
|
border-radius: 50%;
|
||||||
|
background: transparent;
|
||||||
|
|
||||||
|
/* 🌟 Glow layer has removed sector-glow effect */
|
||||||
|
/* Preserve basic structure for future expansion */
|
||||||
|
opacity: 0;
|
||||||
|
|
||||||
|
z-index: 4; /* Below sector */
|
||||||
|
pointer-events: none;
|
||||||
|
transform-origin: center;
|
||||||
|
transition: opacity 200ms ease-out;
|
||||||
|
|
||||||
|
/* Use same mask to cut into sector shape, but glow will overflow */
|
||||||
|
mask:
|
||||||
|
radial-gradient(circle at center, transparent calc(var(--ring-inner-radius) - 1px), black var(--ring-inner-radius)),
|
||||||
|
conic-gradient(from calc(var(--angle) - 22.5deg), black 0deg, black 45deg, transparent 45deg);
|
||||||
|
mask-composite: intersect;
|
||||||
|
-webkit-mask:
|
||||||
|
radial-gradient(circle at center, transparent calc(var(--ring-inner-radius) - 1px), black var(--ring-inner-radius)),
|
||||||
|
conic-gradient(from calc(var(--angle) - 22.5deg), black 0deg, black 45deg, transparent 45deg);
|
||||||
|
-webkit-mask-composite: source-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 🎯 Sector main body - responsible for precise sector shape and background color */
|
||||||
|
.menu-node.child.hovered::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
/* 🔧 Key fix: correctly calculate sector position, ensure concentric with ring */
|
||||||
|
/* From each child position, offset back to menu center, then position sector */
|
||||||
|
top: calc(-1 * var(--ring-outer-radius) - var(--child-distance) * var(--dir-y));
|
||||||
|
left: calc(-1 * var(--ring-outer-radius) - var(--child-distance) * var(--dir-x));
|
||||||
|
|
||||||
|
width: calc(var(--ring-outer-radius) * 2);
|
||||||
|
height: calc(var(--ring-outer-radius) * 2);
|
||||||
|
|
||||||
|
/* 🌨️ Sector background and inner glow effect */
|
||||||
|
background: var(--sector-highlight);
|
||||||
|
|
||||||
|
/* 🌟 Only preserve inner glow, outer glow handled by ::after layer */
|
||||||
|
box-shadow:
|
||||||
|
/* Inner glow - using sector-inner-glow */
|
||||||
|
inset 0 0 15px var(--sector-inner-glow),
|
||||||
|
inset 0 0 30px var(--sector-inner-glow),
|
||||||
|
inset 0 0 45px var(--sector-inner-glow),
|
||||||
|
inset 0 0 60px var(--sector-inner-glow),
|
||||||
|
inset 0 0 75px var(--sector-inner-glow);
|
||||||
|
|
||||||
|
border-radius: 50%;
|
||||||
|
z-index: 5; /* 🔧 Restore normal level, sector-glow verified effective */
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
/* Transform center point */
|
||||||
|
transform-origin: center;
|
||||||
|
|
||||||
|
/* Add animation transition - modified to 200ms sync */
|
||||||
|
transition: opacity 200ms ease-out;
|
||||||
|
|
||||||
|
/* Create sector: use mask to hollow inner circle and limit angle - ✅ Sector main body restore mask */
|
||||||
|
mask:
|
||||||
|
/* Outer circle - precisely match ring inner radius, no gap */
|
||||||
|
radial-gradient(circle at center, transparent calc(var(--ring-inner-radius) - 1px), black var(--ring-inner-radius)),
|
||||||
|
/* Sector angle limit - solid sector */
|
||||||
|
conic-gradient(from calc(var(--angle) - 22.5deg), black 0deg, black 45deg, transparent 45deg);
|
||||||
|
mask-composite: intersect;
|
||||||
|
-webkit-mask:
|
||||||
|
radial-gradient(circle at center, transparent calc(var(--ring-inner-radius) - 1px), black var(--ring-inner-radius)),
|
||||||
|
conic-gradient(from calc(var(--angle) - 22.5deg), black 0deg, black 45deg, transparent 45deg);
|
||||||
|
-webkit-mask-composite: source-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 🌟 Enhanced glow effect on hover - precise control version */
|
||||||
|
.menu-node.child.hovered:hover::before {
|
||||||
|
/* Enhanced glow on hover, expand inner glow range to middle position */
|
||||||
|
box-shadow:
|
||||||
|
/* Enhanced inner glow - sector-inner-glow, greatly expanded range */
|
||||||
|
inset 0 0 12px var(--sector-inner-glow),
|
||||||
|
inset 0 0 24px var(--sector-inner-glow),
|
||||||
|
inset 0 0 36px var(--sector-inner-glow),
|
||||||
|
inset 0 0 48px var(--sector-inner-glow),
|
||||||
|
inset 0 0 60px var(--sector-inner-glow),
|
||||||
|
inset 0 0 72px var(--sector-inner-glow),
|
||||||
|
inset 0 0 84px var(--sector-inner-glow);
|
||||||
|
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 🚑 Fix: immediately hide sector highlight when not hovering */
|
||||||
|
.menu-node.child:not(.hovered)::before {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🔵 Ring Background - 🌟 Add Multi-layer Glow Effects === */
|
||||||
|
.menu-node.active::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
/* 🔧 Fix 4: Ring position precisely centered */
|
||||||
|
top: calc(-1 * var(--ring-outer-radius));
|
||||||
|
left: calc(-1 * var(--ring-outer-radius));
|
||||||
|
width: calc(var(--ring-outer-radius) * 2);
|
||||||
|
height: calc(var(--ring-outer-radius) * 2);
|
||||||
|
|
||||||
|
border-radius: 50%;
|
||||||
|
background: var(--ring-color);
|
||||||
|
|
||||||
|
/* 🌟 Ring inner glow effect (only preserve inset) */
|
||||||
|
box-shadow:
|
||||||
|
/* Inner glow - soft glow along ring inner edge */
|
||||||
|
inset 0 0 8px var(--ring-glow-inner),
|
||||||
|
inset 0 0 16px var(--ring-glow-inner),
|
||||||
|
inset 0 0 24px var(--ring-glow-inner);
|
||||||
|
|
||||||
|
z-index: -2; /* Ensure ring body is below icons */
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
/* ✅ Enable ring body ripple effect - expanding from center outward */
|
||||||
|
transition: transform 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94), opacity 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
|
||||||
|
animation: ring-ripple-expand 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
|
||||||
|
|
||||||
|
/* 🔧 Fix 5: Ensure transform center point is precisely centered */
|
||||||
|
transform-origin: 50% 50%;
|
||||||
|
|
||||||
|
/* Use mask to hollow inner circle creating ring */
|
||||||
|
mask: radial-gradient(circle at center, transparent var(--ring-inner-radius), black calc(var(--ring-inner-radius) + 1px));
|
||||||
|
-webkit-mask: radial-gradient(circle at center, transparent var(--ring-inner-radius), black calc(var(--ring-inner-radius) + 1px));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 🌟 Ring outer glow effect - separate element to avoid mask interference */
|
||||||
|
.menu-node.active::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
/* Same position and size as ring */
|
||||||
|
top: calc(-1 * var(--ring-outer-radius));
|
||||||
|
left: calc(-1 * var(--ring-outer-radius));
|
||||||
|
width: calc(var(--ring-outer-radius) * 2);
|
||||||
|
height: calc(var(--ring-outer-radius) * 2);
|
||||||
|
|
||||||
|
border-radius: 50%;
|
||||||
|
background: transparent;
|
||||||
|
|
||||||
|
/* 🌟 Main glow and outer diffuse glow - not affected by mask */
|
||||||
|
box-shadow:
|
||||||
|
/* Main glow - primary glow effect around ring */
|
||||||
|
0 0 6px var(--ring-glow),
|
||||||
|
0 0 12px var(--ring-glow),
|
||||||
|
0 0 18px var(--ring-glow),
|
||||||
|
0 0 24px var(--ring-glow),
|
||||||
|
|
||||||
|
/* Outer diffuse glow - greatly enhanced visibility */
|
||||||
|
0 0 40px var(--ring-glow-outer),
|
||||||
|
0 0 60px var(--ring-glow-outer),
|
||||||
|
0 0 80px var(--ring-glow-outer),
|
||||||
|
0 0 120px var(--ring-glow-outer);
|
||||||
|
|
||||||
|
z-index: -3; /* Below ring body */
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
/* ✅ Ring outer glow ripple effect animation - synchronized expansion with ring body */
|
||||||
|
transition: transform 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94),
|
||||||
|
opacity 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94),
|
||||||
|
box-shadow 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
|
||||||
|
animation: ring-ripple-glow-expand 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
|
||||||
|
|
||||||
|
transform-origin: 50% 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 🍳 Ring inner hole glow effect - new element */
|
||||||
|
.menu-node.active > .icon-layer::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
/* Inner hole position and size */
|
||||||
|
top: calc(-1 * var(--ring-inner-radius));
|
||||||
|
left: calc(-1 * var(--ring-inner-radius));
|
||||||
|
width: calc(var(--ring-inner-radius) * 2);
|
||||||
|
height: calc(var(--ring-inner-radius) * 2);
|
||||||
|
|
||||||
|
border-radius: 50%;
|
||||||
|
background: transparent;
|
||||||
|
|
||||||
|
/* 🌟 Ring inner hole multi-layer glow effect - converging toward center */
|
||||||
|
box-shadow:
|
||||||
|
/* Inner glow - main effect converging from edge to center */
|
||||||
|
inset 0 0 8px var(--ring-inner-hole-glow),
|
||||||
|
inset 0 0 16px var(--ring-inner-hole-glow),
|
||||||
|
inset 0 0 24px var(--ring-inner-hole-glow),
|
||||||
|
inset 0 0 32px var(--ring-inner-hole-glow),
|
||||||
|
|
||||||
|
/* Inner glow depth enhancement - enhance center convergence effect */
|
||||||
|
inset 0 0 40px var(--ring-inner-hole-glow-inner),
|
||||||
|
inset 0 0 50px var(--ring-inner-hole-glow-inner),
|
||||||
|
inset 0 0 60px var(--ring-inner-hole-glow-inner),
|
||||||
|
|
||||||
|
/* Slight outer boundary glow - only at edge position */
|
||||||
|
0 0 4px var(--ring-inner-hole-glow-outer),
|
||||||
|
0 0 8px var(--ring-inner-hole-glow-outer);
|
||||||
|
|
||||||
|
z-index: -1; /* Below center text, but above ring */
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
/* ✅ Ring inner hole glow ripple effect animation - synchronized expansion with ring body */
|
||||||
|
transition: transform 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94), opacity 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
|
||||||
|
animation: ring-ripple-inner-glow 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
|
||||||
|
|
||||||
|
transform-origin: 50% 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🎯 Add Parent Direction Indicator on Ring - 🔧 v3.3 Fixed Version: Strictly Limit Display Range === */
|
||||||
|
/* Only display parent direction indicator on non-root menu main containers, not on child icons */
|
||||||
|
/* 🔧 Key fix: use more precise selector to avoid display in submenus */
|
||||||
|
.menu-node.active:not(.level-0):not(.child) > .icon-layer::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
/* 🔧 Simplified positioning logic, use fixed position */
|
||||||
|
top: calc(-1 * var(--child-distance) - 8px);
|
||||||
|
left: calc(-8px);
|
||||||
|
|
||||||
|
/* 📝 Simple arrow design: CSS-drawn arrow pointing to parent */
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border-left: 8px solid transparent;
|
||||||
|
border-right: 8px solid transparent;
|
||||||
|
border-bottom: 12px solid var(--parent-indicator-color);
|
||||||
|
|
||||||
|
/* Arrow glow effect */
|
||||||
|
filter: drop-shadow(0 0 4px var(--parent-indicator-glow))
|
||||||
|
drop-shadow(0 0 8px var(--parent-indicator-glow));
|
||||||
|
|
||||||
|
/* Animation effect */
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
z-index: 25;
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
/* 🔧 Ensure arrow transform center point is correct */
|
||||||
|
transform-origin: 8px calc(var(--child-distance) + 8px);
|
||||||
|
|
||||||
|
/* 🎯 Key: rotate arrow to point to parent direction */
|
||||||
|
transform: rotate(calc(var(--angle, 0deg) + 180deg));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced effect on hover */
|
||||||
|
.menu-node.active:not(.level-0):not(.child):hover > .icon-layer::after {
|
||||||
|
border-bottom-color: var(--parent-indicator-color);
|
||||||
|
filter: drop-shadow(0 0 6px var(--parent-indicator-glow))
|
||||||
|
drop-shadow(0 0 12px var(--parent-indicator-glow))
|
||||||
|
drop-shadow(0 0 18px var(--parent-indicator-glow));
|
||||||
|
transform: rotate(calc(var(--angle, 0deg) + 180deg)) scale(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🎨 Icon Styles === */
|
||||||
|
.menu-node .icon-container {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
/* 🔧 Fix 6: Icon container precisely centered */
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
color: var(--icon-color);
|
||||||
|
font-size: 32px;
|
||||||
|
opacity: 1;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
z-index: 15;
|
||||||
|
|
||||||
|
/* 🌟 Icon basic glow effect */
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5))
|
||||||
|
drop-shadow(0 0 4px var(--icon-glow))
|
||||||
|
drop-shadow(0 0 8px var(--icon-glow))
|
||||||
|
drop-shadow(0 0 12px var(--icon-glow-outer));
|
||||||
|
|
||||||
|
/* 🎯 Ensure icon transform center point is at geometric center */
|
||||||
|
transform-origin: center center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 🚑 Fix icon glow issue during expansion - prevent sector color during expansion, but preserve beautiful glow */
|
||||||
|
.menu-node.child .icon-container {
|
||||||
|
/* Default state: complete glow effect, but no sector color */
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5))
|
||||||
|
drop-shadow(0 0 4px var(--icon-glow))
|
||||||
|
drop-shadow(0 0 8px var(--icon-glow))
|
||||||
|
drop-shadow(0 0 12px var(--icon-glow-outer)) !important;
|
||||||
|
color: var(--icon-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ✅ Final version Kando hover effect - using .hovered class */
|
||||||
|
.menu-node.child.hovered .icon-container {
|
||||||
|
transform: scale(1.2) !important;
|
||||||
|
color: var(--icon-hover-color) !important; /* ✅ Fully effective: using Kando native hover mechanism */
|
||||||
|
|
||||||
|
/* Enhanced glow effect on hover */
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 2px 4px rgba(0, 0, 0, 0.7))
|
||||||
|
drop-shadow(0 0 6px var(--icon-glow))
|
||||||
|
drop-shadow(0 0 12px var(--icon-glow))
|
||||||
|
drop-shadow(0 0 18px var(--icon-glow))
|
||||||
|
drop-shadow(0 0 24px var(--icon-glow-outer))
|
||||||
|
drop-shadow(0 0 32px var(--icon-glow-outer)) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 🚑 Final protection strategy: only limit glow, don't interfere with color and transform */
|
||||||
|
.menu-node.child.hovered:not(:hover) .icon-container {
|
||||||
|
/* When Kando adds .hovered class but mouse is not truly hovering, only limit complex glow effects */
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5))
|
||||||
|
drop-shadow(0 0 4px var(--icon-glow))
|
||||||
|
drop-shadow(0 0 8px var(--icon-glow)) !important;
|
||||||
|
/* ✅ No longer force override color and transform, allow .hovered effect to work normally */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🔤 Center Text Minimal Configuration for Kando 2.0 === */
|
||||||
|
.center-text {
|
||||||
|
/* 🎯 Only essential visual properties - let Kando 2.0 handle all sizing and layout */
|
||||||
|
color: var(--text-color);
|
||||||
|
|
||||||
|
/* 🌟 Center text glow effect - preserved visual identity */
|
||||||
|
text-shadow:
|
||||||
|
0 1px 2px rgba(0, 0, 0, 0.5),
|
||||||
|
0 0 4px var(--text-glow),
|
||||||
|
0 0 8px var(--text-glow),
|
||||||
|
0 0 12px var(--text-glow),
|
||||||
|
0 0 16px var(--text-glow-outer),
|
||||||
|
0 0 24px var(--text-glow-outer);
|
||||||
|
|
||||||
|
/* 🎯 Keep z-index for layering */
|
||||||
|
z-index: 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🔗 Connector Control: Completely Hide Connectors === */
|
||||||
|
/* Default hide all connectors */
|
||||||
|
.connector {
|
||||||
|
opacity: 0 !important;
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide hovered item connectors */
|
||||||
|
.menu-node.child.hovered .connector {
|
||||||
|
opacity: 0 !important;
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide connectors pointing to hovered icon direction (green) */
|
||||||
|
.menu-node.active:not(.child) .connector {
|
||||||
|
opacity: 0 !important;
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Also hide parent connectors */
|
||||||
|
.menu-node.parent .connector {
|
||||||
|
opacity: 0 !important;
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🎭 Hide Grandchild Menus === */
|
||||||
|
.menu-node.grandchild {
|
||||||
|
opacity: 0 !important;
|
||||||
|
pointer-events: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🌿 Ring Natural Sway Animation Definitions === */
|
||||||
|
/* Ring body natural sway - synchronized with icons */
|
||||||
|
@keyframes ring-natural-sway {
|
||||||
|
0% {
|
||||||
|
transform: scale(0.85) rotate(-2deg);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
transform: scale(1.02) rotate(1deg);
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
80% {
|
||||||
|
transform: scale(0.99) rotate(-0.5deg);
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1) rotate(0deg);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🌊 Ring Ripple Effect Animation Definitions === */
|
||||||
|
/* Ring body ripple expansion - like water ripples expanding from center outward */
|
||||||
|
@keyframes ring-ripple-expand {
|
||||||
|
0% {
|
||||||
|
transform: scale(0.5);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
30% {
|
||||||
|
transform: scale(0.8);
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
60% {
|
||||||
|
transform: scale(1.03);
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ring outer glow synchronized animation */
|
||||||
|
@keyframes ring-outer-glow-sync {
|
||||||
|
0% {
|
||||||
|
transform: scale(0.9);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
60% {
|
||||||
|
transform: scale(1.05);
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ring outer glow ripple expansion animation - synchronized expansion with main body */
|
||||||
|
@keyframes ring-ripple-glow-expand {
|
||||||
|
0% {
|
||||||
|
transform: scale(0.6);
|
||||||
|
opacity: 0;
|
||||||
|
box-shadow:
|
||||||
|
0 0 0px var(--ring-glow),
|
||||||
|
0 0 0px var(--ring-glow-outer);
|
||||||
|
}
|
||||||
|
25% {
|
||||||
|
transform: scale(0.85);
|
||||||
|
opacity: 0.3;
|
||||||
|
box-shadow:
|
||||||
|
0 0 4px var(--ring-glow),
|
||||||
|
0 0 8px var(--ring-glow),
|
||||||
|
0 0 16px var(--ring-glow-outer),
|
||||||
|
0 0 32px var(--ring-glow-outer);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
transform: scale(1.02);
|
||||||
|
opacity: 0.6;
|
||||||
|
box-shadow:
|
||||||
|
0 0 8px var(--ring-glow),
|
||||||
|
0 0 16px var(--ring-glow),
|
||||||
|
0 0 24px var(--ring-glow),
|
||||||
|
0 0 40px var(--ring-glow-outer),
|
||||||
|
0 0 60px var(--ring-glow-outer),
|
||||||
|
0 0 80px var(--ring-glow-outer);
|
||||||
|
}
|
||||||
|
80% {
|
||||||
|
transform: scale(1.05);
|
||||||
|
opacity: 0.9;
|
||||||
|
box-shadow:
|
||||||
|
0 0 10px var(--ring-glow),
|
||||||
|
0 0 20px var(--ring-glow),
|
||||||
|
0 0 30px var(--ring-glow),
|
||||||
|
0 0 40px var(--ring-glow),
|
||||||
|
0 0 50px var(--ring-glow-outer),
|
||||||
|
0 0 70px var(--ring-glow-outer),
|
||||||
|
0 0 100px var(--ring-glow-outer),
|
||||||
|
0 0 140px var(--ring-glow-outer);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1);
|
||||||
|
opacity: 1;
|
||||||
|
box-shadow:
|
||||||
|
0 0 6px var(--ring-glow),
|
||||||
|
0 0 12px var(--ring-glow),
|
||||||
|
0 0 18px var(--ring-glow),
|
||||||
|
0 0 24px var(--ring-glow),
|
||||||
|
0 0 40px var(--ring-glow-outer),
|
||||||
|
0 0 60px var(--ring-glow-outer),
|
||||||
|
0 0 80px var(--ring-glow-outer),
|
||||||
|
0 0 120px var(--ring-glow-outer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ring inner hole glow ripple animation - converging from outside to inside */
|
||||||
|
@keyframes ring-ripple-inner-glow {
|
||||||
|
0% {
|
||||||
|
transform: scale(0.7);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
transform: scale(0.92);
|
||||||
|
opacity: 0.4;
|
||||||
|
}
|
||||||
|
70% {
|
||||||
|
transform: scale(1.04);
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ring inner hole glow synchronized animation */
|
||||||
|
@keyframes ring-inner-hole-glow-sync {
|
||||||
|
0% {
|
||||||
|
transform: scale(0.88);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
55% {
|
||||||
|
transform: scale(1.03);
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
69
.config/kando/menu-themes/navigation/theme.json5
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// _ _ ____ _ _ ___ ____ //
|
||||||
|
// |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform //
|
||||||
|
// | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando //
|
||||||
|
// //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
// SPDX-FileCopyrightText: 2025 Rena and LCG
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
{
|
||||||
|
name: 'Navigation',
|
||||||
|
author: 'Rena and LCG',
|
||||||
|
license: 'CC0-1.0',
|
||||||
|
themeVersion: '6.4',
|
||||||
|
description: 'Modern minimalist ring navigation theme with dynamic ripple animations. Features smooth icon expansion with natural sway motion and synchronized ring ripple effects.',
|
||||||
|
|
||||||
|
engineVersion: 1,
|
||||||
|
|
||||||
|
maxMenuRadius: 180,
|
||||||
|
centerTextWrapWidth: 140, // Precisely matches inner circle diameter (70px radius × 2)
|
||||||
|
drawChildrenBelow: true,
|
||||||
|
childTransitionTime: 200,
|
||||||
|
|
||||||
|
colors: {
|
||||||
|
// === 🔤 Text Color Configuration ===
|
||||||
|
'text-color': 'rgb(255 255 255 / 0.9)', // Center text primary color
|
||||||
|
'text-glow': 'rgb(255 255 255 / 0.5)', // Text glow effect
|
||||||
|
'text-glow-outer': 'rgb(85 85 85 / 0.3)', // Text outer glow - gray tones
|
||||||
|
|
||||||
|
// === 🎨 Icon Color Configuration ===
|
||||||
|
'icon-color': 'rgb(255 255 255 / 0.9)', // Icon base color
|
||||||
|
'icon-hover-color': 'rgb(255 255 255 / 1.0)', // Icon color on hover
|
||||||
|
'icon-glow': 'rgb(255 255 255 / 0.5)', // Icon glow effect
|
||||||
|
'icon-glow-outer': 'rgba(255, 255, 255, 0.3)', // Icon outer glow
|
||||||
|
|
||||||
|
// === ⭕ Ring Color Configuration ===
|
||||||
|
'ring-color': 'rgb(71 71 71 / 0.34)', // Ring main body color - dark gray
|
||||||
|
'ring-glow': 'rgba(255, 255, 255, 0.3)', // Ring primary glow
|
||||||
|
'ring-glow-inner': 'rgb(212 212 212 / 0.25)', // Ring inner glow - light gray
|
||||||
|
'ring-glow-outer': 'rgba(255, 255, 255, 0.4)', // Ring outer glow
|
||||||
|
'ring-inner-hole-glow': 'rgb(254 254 254 / 0.2)', // Ring inner hole glow
|
||||||
|
'ring-inner-hole-glow-inner': 'rgb(255 255 255 / 0.3)', // Inner hole inner glow
|
||||||
|
'ring-inner-hole-glow-outer': 'rgba(255, 255, 255, 0.1)', // Inner hole outer glow
|
||||||
|
|
||||||
|
// === 🎯 Sector Highlight Configuration ===
|
||||||
|
'sector-highlight': 'rgb(34 104 234 / 0.6)', // Sector highlight main color - blue tones
|
||||||
|
'sector-inner-glow': 'rgb(42 235 199 / 0.86)', // Sector inner glow - cyan high opacity
|
||||||
|
|
||||||
|
// === 🔗 Parent Indicator Configuration ===
|
||||||
|
'parent-indicator-color': 'rgba(255, 255, 255, 0.8)', // Parent arrow color
|
||||||
|
'parent-indicator-glow': 'rgba(255, 255, 255, 0.4)', // Arrow glow effect
|
||||||
|
|
||||||
|
// === 🌫️ Background Configuration ===
|
||||||
|
'canvas-bg': 'rgba(0, 0, 0, 0)', // Canvas background mask - fully transparent
|
||||||
|
|
||||||
|
// === 🌈 Dual Background Layer Configuration ===
|
||||||
|
'background-layer-left': 'rgba(255, 255, 255, 1.0)', // Left half screen background - pure white
|
||||||
|
'background-layer-right': 'rgba(0, 0, 0, 1.0)' // Right half screen background - pure black
|
||||||
|
},
|
||||||
|
|
||||||
|
layers: [
|
||||||
|
{
|
||||||
|
class: 'icon-layer',
|
||||||
|
content: 'icon'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
17
.config/kando/menu-themes/neo-ring/REUSE.toml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
# SPDX-FileCopyrightText: 2025 Rena & 小光
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
version = 1
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = ["theme.css", "theme.json5"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = ["Simon Schneegans <code@simonschneegans.de>", "2025 Rena & 小光"]
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = "preview.jpg"
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "2025 Rena & 小光"
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
122
.config/kando/menu-themes/neo-ring/assets/arrow.svg
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<!-- SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> -->
|
||||||
|
<!-- SPDX-License-Identifier: CC0-1.0 -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
sodipodi:docname="arrow.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3007">
|
||||||
|
<stop
|
||||||
|
id="stop3009"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0;"
|
||||||
|
offset="0.3680203"
|
||||||
|
id="stop3011" />
|
||||||
|
<stop
|
||||||
|
id="stop3013"
|
||||||
|
offset="0.57677984"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.66666667;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.45490196;"
|
||||||
|
offset="0.66058904"
|
||||||
|
id="stop3015" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.34901961;"
|
||||||
|
offset="0.70194155"
|
||||||
|
id="stop3017" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.25490196;"
|
||||||
|
offset="0.74285865"
|
||||||
|
id="stop3019" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.1254902;"
|
||||||
|
offset="0.8251282"
|
||||||
|
id="stop3021" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.05490196;"
|
||||||
|
offset="0.90009141"
|
||||||
|
id="stop3023" />
|
||||||
|
<stop
|
||||||
|
id="stop3025"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3007"
|
||||||
|
id="radialGradient3005"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
cx="50.002552"
|
||||||
|
cy="49.744911"
|
||||||
|
fx="50.002552"
|
||||||
|
fy="49.744911"
|
||||||
|
r="49.750011" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#1d1d1d"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="22.4"
|
||||||
|
inkscape:cx="44.397321"
|
||||||
|
inkscape:cy="15.424107"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:window-width="2058"
|
||||||
|
inkscape:window-height="1194"
|
||||||
|
inkscape:window-x="35"
|
||||||
|
inkscape:window-y="32"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#1d1d1d" />
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,-952.36218)">
|
||||||
|
<path
|
||||||
|
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3.58558;marker:none;enable-background:accumulate"
|
||||||
|
d="m 34.649194,963.56105 0.821697,1.1952 3.734982,-1.61115 10.794147,-6.57394 10.644641,6.57394 3.734982,1.61115 0.821696,-1.15785 -14.192933,-9.93505 -1.008386,-0.70965 -1.045795,0.70965 z"
|
||||||
|
id="path3054"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:transform-center-x="0.0747335"
|
||||||
|
inkscape:transform-center-y="-43.507208"
|
||||||
|
sodipodi:nodetypes="ccccccccccc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.5 KiB |
160
.config/kando/menu-themes/neo-ring/assets/ring-mask.svg
Normal file
|
|
@ -0,0 +1,160 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<!-- SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> -->
|
||||||
|
|
||||||
|
<!-- SPDX-License-Identifier: CC0-1.0 -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
sodipodi:docname="ring-mask.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3007">
|
||||||
|
<stop
|
||||||
|
id="stop3009"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ff0000;stop-opacity:0;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff87bd;stop-opacity:0;"
|
||||||
|
offset="0.3680203"
|
||||||
|
id="stop3011" />
|
||||||
|
<stop
|
||||||
|
id="stop3013"
|
||||||
|
offset="0.57677984"
|
||||||
|
style="stop-color:#ffabdf;stop-opacity:0.66666669;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffa4e1;stop-opacity:0.45490196;"
|
||||||
|
offset="0.66058904"
|
||||||
|
id="stop3015" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#dbaaaa;stop-opacity:0.1254902;"
|
||||||
|
offset="0.8251282"
|
||||||
|
id="stop3021" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#b4b4b4;stop-opacity:0.05490196;"
|
||||||
|
offset="0.90009141"
|
||||||
|
id="stop3023" />
|
||||||
|
<stop
|
||||||
|
id="stop3025"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#b4b4b4;stop-opacity:0;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3767">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0"
|
||||||
|
offset="0"
|
||||||
|
id="stop3769" />
|
||||||
|
<stop
|
||||||
|
id="stop4739"
|
||||||
|
offset="0.3680203"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.66666667;"
|
||||||
|
offset="0.59831607"
|
||||||
|
id="stop4703" />
|
||||||
|
<stop
|
||||||
|
id="stop4713"
|
||||||
|
offset="0.66058904"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.45490196;" />
|
||||||
|
<stop
|
||||||
|
id="stop4711"
|
||||||
|
offset="0.70194155"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.34901961;" />
|
||||||
|
<stop
|
||||||
|
id="stop4709"
|
||||||
|
offset="0.74285865"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.25490196;" />
|
||||||
|
<stop
|
||||||
|
id="stop4707"
|
||||||
|
offset="0.8251282"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.1254902;" />
|
||||||
|
<stop
|
||||||
|
id="stop4705"
|
||||||
|
offset="0.90009141"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.05490196;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0"
|
||||||
|
offset="1"
|
||||||
|
id="stop3771" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3767"
|
||||||
|
id="radialGradient3775"
|
||||||
|
cx="50.002552"
|
||||||
|
cy="49.744911"
|
||||||
|
fx="50.002552"
|
||||||
|
fy="49.744911"
|
||||||
|
r="49.750011"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#1d1d1d"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="11.313708"
|
||||||
|
inkscape:cx="80.035652"
|
||||||
|
inkscape:cy="48.436817"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:window-width="3072"
|
||||||
|
inkscape:window-height="1691"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#1d1d1d">
|
||||||
|
<sodipodi:guide
|
||||||
|
orientation="0,1"
|
||||||
|
position="14.9375,50"
|
||||||
|
id="guide3006"
|
||||||
|
inkscape:locked="false" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,-952.36218)">
|
||||||
|
<path
|
||||||
|
id="path2267"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.996;stroke-dasharray:3.984, 0.996;paint-order:stroke fill markers;stop-color:#000000"
|
||||||
|
d="M 50 1002.3622 L 54.271484 1052.3622 L 100 1052.3622 L 100 952.36218 L 54.271484 952.36218 L 50 1002.3622 z " />
|
||||||
|
<path
|
||||||
|
id="path2265"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.996;stroke-dasharray:3.984, 0.996;paint-order:stroke fill markers;stop-color:#000000"
|
||||||
|
d="M 0 952.36218 L 0 1052.3622 L 45.728516 1052.3622 L 50 1002.3622 L 45.728516 952.36218 L 0 952.36218 z " />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.1 KiB |
BIN
.config/kando/menu-themes/neo-ring/preview.jpg
Normal file
|
After Width: | Height: | Size: 190 KiB |
415
.config/kando/menu-themes/neo-ring/theme.css
Normal file
|
|
@ -0,0 +1,415 @@
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
/* _ _ ____ _ _ ___ ____ */
|
||||||
|
/* |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform */
|
||||||
|
/* | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando */
|
||||||
|
/* */
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
/* SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> */
|
||||||
|
/* SPDX-FileCopyrightText: 2025 Rena and LCG */
|
||||||
|
/* SPDX-License-Identifier: CC0-1.0 */
|
||||||
|
|
||||||
|
/* Neo Ring Theme - Enhanced neon ring effects with glassmorphism background */
|
||||||
|
|
||||||
|
@keyframes neon-pulse {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 0.6;
|
||||||
|
transform: translate(-50%, -50%) scale(0.9);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate(-50%, -50%) scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes neon-hover-pulse {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 0.8;
|
||||||
|
transform: translate(-50%, -50%) scale(1.1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate(-50%, -50%) scale(1.3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-node {
|
||||||
|
--child-distance: 100px;
|
||||||
|
--grandchild-distance: 16px;
|
||||||
|
--grandchild-size: 15px;
|
||||||
|
--center-size: 100px;
|
||||||
|
--child-size: 50px;
|
||||||
|
--connector-width: 3px;
|
||||||
|
--menu-transition: all 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
||||||
|
--opacity-transition: opacity 300ms ease;
|
||||||
|
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
|
||||||
|
/* Positioning ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Child items are positioned around the active node. */
|
||||||
|
&.child {
|
||||||
|
transform: translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grandchild items are positioned around the child items. */
|
||||||
|
&.grandchild {
|
||||||
|
transform: translate(calc(var(--grandchild-distance) * var(--dir-x)),
|
||||||
|
calc(var(--grandchild-distance) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If there is a hovered child node, we scale all children up a bit to create a cool
|
||||||
|
zoom effect. The hovered child itself is scaled up even more. */
|
||||||
|
&.active:has(>.hovered)>.child {
|
||||||
|
transform: scale(calc(1.15 - pow(var(--angle-diff) / 180, 0.25) * 0.15)) translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
|
||||||
|
&.hovered {
|
||||||
|
transform: scale(1.15) translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Theme Layers --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Icon container styling with enhanced glow effects */
|
||||||
|
.icon-container {
|
||||||
|
opacity: 0;
|
||||||
|
color: var(--icon-color);
|
||||||
|
transition: var(--opacity-transition);
|
||||||
|
text-shadow:
|
||||||
|
0 0 5px var(--glow-color),
|
||||||
|
0 0 10px var(--glow-color),
|
||||||
|
0 0 20px var(--glow-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Layer positioning and basic styling */
|
||||||
|
.arrow-layer,
|
||||||
|
.outer-neon-ring,
|
||||||
|
.inner-neon-ring,
|
||||||
|
.icon-layer {
|
||||||
|
position: absolute;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Active menu item (center) layer sizing */
|
||||||
|
&.active>.arrow-layer,
|
||||||
|
&.active>.outer-neon-ring,
|
||||||
|
&.active>.inner-neon-ring,
|
||||||
|
&.active>.icon-layer {
|
||||||
|
top: calc(-1 * var(--center-size) / 2);
|
||||||
|
left: calc(-1 * var(--center-size) / 2);
|
||||||
|
width: var(--center-size);
|
||||||
|
height: var(--center-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Child and parent item layer sizing */
|
||||||
|
&.parent>.icon-layer,
|
||||||
|
&.child>.icon-layer {
|
||||||
|
top: calc(-1 * var(--child-size) / 2);
|
||||||
|
left: calc(-1 * var(--child-size) / 2);
|
||||||
|
width: var(--child-size);
|
||||||
|
height: var(--child-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.parent>.outer-neon-ring,
|
||||||
|
&.parent>.inner-neon-ring,
|
||||||
|
&.child>.outer-neon-ring,
|
||||||
|
&.child>.inner-neon-ring {
|
||||||
|
top: calc(-1 * var(--child-size) / 2);
|
||||||
|
left: calc(-1 * var(--child-size) / 2);
|
||||||
|
width: var(--child-size);
|
||||||
|
height: var(--child-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Neon Ring Effects ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Outer neon ring with cyan glow */
|
||||||
|
.outer-neon-ring {
|
||||||
|
opacity: 0;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: transparent;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 3;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: calc(100% + 12px);
|
||||||
|
height: calc(100% + 12px);
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 2px solid rgb(0, 255, 255);
|
||||||
|
box-shadow:
|
||||||
|
0 0 10px rgba(0, 255, 255, 0.8),
|
||||||
|
inset 0 0 5px rgba(0, 255, 255, 0.6);
|
||||||
|
animation: neon-pulse 3s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inner neon ring with magenta glow */
|
||||||
|
.inner-neon-ring {
|
||||||
|
opacity: 0;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: transparent;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 2;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: calc(100% + 4px);
|
||||||
|
height: calc(100% + 4px);
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 2px solid rgb(255, 0, 128);
|
||||||
|
box-shadow:
|
||||||
|
0 0 8px rgba(255, 0, 128, 0.8),
|
||||||
|
inset 0 0 4px rgba(255, 0, 128, 0.6);
|
||||||
|
animation: neon-pulse 2.5s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Neon ring visibility logic */
|
||||||
|
&.active>.outer-neon-ring,
|
||||||
|
&.active>.inner-neon-ring,
|
||||||
|
&.child.hovered>.outer-neon-ring,
|
||||||
|
&.child.hovered>.inner-neon-ring,
|
||||||
|
&.parent.hovered>.outer-neon-ring,
|
||||||
|
&.parent.hovered>.inner-neon-ring {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.child:not(.hovered)>.outer-neon-ring,
|
||||||
|
&.child:not(.hovered)>.inner-neon-ring,
|
||||||
|
&.parent:not(.hovered)>.outer-neon-ring,
|
||||||
|
&.parent:not(.hovered)>.inner-neon-ring {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Icon layer - transparent background with enhanced layering */
|
||||||
|
.icon-layer {
|
||||||
|
border-radius: 50%;
|
||||||
|
background: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
opacity: 1;
|
||||||
|
z-index: 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Arrow layer for directional indication */
|
||||||
|
.arrow-layer {
|
||||||
|
background: var(--glow-color);
|
||||||
|
mask: url(assets/arrow.svg) no-repeat center;
|
||||||
|
mask-size: contain;
|
||||||
|
-webkit-mask: url(assets/arrow.svg) no-repeat center;
|
||||||
|
-webkit-mask-size: contain;
|
||||||
|
transform: scale(1.0) rotate(var(--hovered-child-angle));
|
||||||
|
opacity: 0;
|
||||||
|
filter: drop-shadow(0 0 5px var(--glow-color));
|
||||||
|
z-index: 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover Effects -------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Enhanced scaling effects on hover */
|
||||||
|
&.child.hovered>.icon-layer {
|
||||||
|
transform: scale(2.0) !important;
|
||||||
|
z-index: 15 !important;
|
||||||
|
background: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.parent.hovered>.icon-layer {
|
||||||
|
transform: scale(2.0) !important;
|
||||||
|
z-index: 15 !important;
|
||||||
|
background: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active.hovered>.icon-layer {
|
||||||
|
transform: scale(1.1) !important;
|
||||||
|
background: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced neon ring effects on hover */
|
||||||
|
&.child.hovered>.outer-neon-ring::before,
|
||||||
|
&.parent.hovered>.outer-neon-ring::before {
|
||||||
|
border-width: 4px !important;
|
||||||
|
width: calc(200% + 32px) !important;
|
||||||
|
height: calc(200% + 32px) !important;
|
||||||
|
animation: neon-hover-pulse 1.5s ease-in-out infinite !important;
|
||||||
|
box-shadow:
|
||||||
|
0 0 25px rgba(0, 255, 255, 1.0),
|
||||||
|
inset 0 0 15px rgba(0, 255, 255, 0.8) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.child.hovered>.inner-neon-ring::before,
|
||||||
|
&.parent.hovered>.inner-neon-ring::before {
|
||||||
|
border-width: 4px !important;
|
||||||
|
width: calc(200% + 16px) !important;
|
||||||
|
height: calc(200% + 16px) !important;
|
||||||
|
animation: neon-hover-pulse 1.3s ease-in-out infinite !important;
|
||||||
|
box-shadow:
|
||||||
|
0 0 20px rgba(255, 0, 128, 1.0),
|
||||||
|
inset 0 0 12px rgba(255, 0, 128, 0.8) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center item hover effects */
|
||||||
|
&.active.hovered>.outer-neon-ring::before {
|
||||||
|
border-width: 3px !important;
|
||||||
|
width: calc(100% + 16px) !important;
|
||||||
|
height: calc(100% + 16px) !important;
|
||||||
|
animation: neon-pulse 2s ease-in-out infinite !important;
|
||||||
|
box-shadow:
|
||||||
|
0 0 18px rgba(0, 255, 255, 1.0),
|
||||||
|
inset 0 0 10px rgba(0, 255, 255, 0.8) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active.hovered>.inner-neon-ring::before {
|
||||||
|
border-width: 3px !important;
|
||||||
|
width: calc(100% + 8px) !important;
|
||||||
|
height: calc(100% + 8px) !important;
|
||||||
|
animation: neon-pulse 1.8s ease-in-out infinite !important;
|
||||||
|
box-shadow:
|
||||||
|
0 0 15px rgba(255, 0, 128, 1.0),
|
||||||
|
inset 0 0 8px rgba(255, 0, 128, 0.8) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Default pulsing animation for non-hovered center items */
|
||||||
|
&.active:not(.hovered)>.outer-neon-ring::before {
|
||||||
|
animation: neon-pulse 3s ease-in-out infinite !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active:not(.hovered)>.inner-neon-ring::before {
|
||||||
|
animation: neon-pulse 2.5s ease-in-out infinite !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Arrow Display Logic -------------------------------------------------------------- */
|
||||||
|
|
||||||
|
&.active:has(.hovered)>.arrow-layer {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1.8) rotate(var(--hovered-child-angle));
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(.dragged)>.arrow-layer {
|
||||||
|
transform: scale(1.8) rotate(var(--pointer-angle));
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active:has(.hovered.dragged)>.arrow-layer {
|
||||||
|
transform: scale(1.8) rotate(var(--pointer-angle));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Icon Visibility Logic ------------------------------------------------------------ */
|
||||||
|
|
||||||
|
/* Hide center icon when text label is present */
|
||||||
|
&.active>.icon-layer>.icon-container {
|
||||||
|
opacity: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Show icons for parent and child items */
|
||||||
|
&.parent>.icon-layer>.icon-container,
|
||||||
|
&.child>.icon-layer>.icon-container {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Click Effects -------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
&.parent.hovered.clicked>.icon-layer,
|
||||||
|
&.child.hovered.clicked>.icon-layer {
|
||||||
|
transform: scale(0.85);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grandchild Items ----------------------------------------------------------------- */
|
||||||
|
|
||||||
|
&.grandchild>.icon-layer {
|
||||||
|
top: calc(-1 * var(--grandchild-size) / 2);
|
||||||
|
left: calc(-1 * var(--grandchild-size) / 2);
|
||||||
|
width: var(--grandchild-size);
|
||||||
|
height: var(--grandchild-size);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Disable transitions for dragged items */
|
||||||
|
&.dragged {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Connectors ----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.connector {
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
height: var(--connector-width);
|
||||||
|
top: calc(-1 * var(--connector-width) / 2);
|
||||||
|
background: linear-gradient(to right,
|
||||||
|
transparent 60px,
|
||||||
|
rgba(0, 255, 255, 0.2) 45%,
|
||||||
|
var(--connector-color) 50%,
|
||||||
|
rgba(0, 255, 255, 0.2) 55%,
|
||||||
|
transparent calc(100% - 60px));
|
||||||
|
box-shadow:
|
||||||
|
0 0 6px rgba(0, 255, 255, 0.4),
|
||||||
|
0 0 12px rgba(0, 255, 255, 0.2);
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(.dragged)>.connector,
|
||||||
|
&:has(.clicked)>.connector {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center Text ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
.center-text {
|
||||||
|
color: var(--label-color, var(--icon-color)) !important;
|
||||||
|
transition: var(--opacity-transition);
|
||||||
|
|
||||||
|
/* Enhanced glow effects for center text */
|
||||||
|
text-shadow:
|
||||||
|
0 0 calc(5px * 6) var(--label-glow-color, var(--label-color, var(--icon-color))),
|
||||||
|
0 0 calc(10px * 6) var(--label-glow-color, var(--label-color, var(--icon-color))),
|
||||||
|
0 0 calc(15px * 6) var(--label-glow-color, var(--label-color, var(--icon-color))),
|
||||||
|
0 0 calc(25px * 6) var(--label-glow-color, var(--label-color, var(--icon-color))),
|
||||||
|
0 0 calc(35px * 6) var(--label-glow-color, var(--label-color, var(--icon-color)));
|
||||||
|
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 22px;
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
font-weight: 900;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
overflow: visible;
|
||||||
|
z-index: 20;
|
||||||
|
|
||||||
|
/* Additional filter effects for enhanced glow */
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 0 calc(10px * 6) var(--label-glow-color, var(--label-color, var(--icon-color))))
|
||||||
|
drop-shadow(0 0 calc(20px * 6) var(--label-glow-color, var(--label-color, var(--icon-color))))
|
||||||
|
drop-shadow(0 0 calc(30px * 6) var(--label-glow-color, var(--label-color, var(--icon-color))));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Canvas Background ------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
#kando-menu {
|
||||||
|
background-color: var(--canvas-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.selection-wedges {
|
||||||
|
mask: radial-gradient(circle at var(--center-x) var(--center-y), transparent 50px, black 52px);
|
||||||
|
-webkit-mask: radial-gradient(circle at var(--center-x) var(--center-y), transparent 50px, black 52px);
|
||||||
|
|
||||||
|
&.hovered {
|
||||||
|
--width: calc(var(--end-angle) - var(--start-angle));
|
||||||
|
background: conic-gradient(from calc(var(--start-angle)) at var(--center-x) var(--center-y),
|
||||||
|
var(--wedge-highlight-color) var(--width),
|
||||||
|
var(--wedge-color) var(--width));
|
||||||
|
}
|
||||||
|
|
||||||
|
background: var(--wedge-color);
|
||||||
|
}
|
||||||
73
.config/kando/menu-themes/neo-ring/theme.json5
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// _ _ ____ _ _ ___ ____ //
|
||||||
|
// |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform //
|
||||||
|
// | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando //
|
||||||
|
// //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
// SPDX-FileCopyrightText: 2025 Rena and LCG
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
{
|
||||||
|
name: 'Neo Ring',
|
||||||
|
author: 'Rena and LCG',
|
||||||
|
license: 'CC0-1.0',
|
||||||
|
themeVersion: '1.0',
|
||||||
|
|
||||||
|
// This theme was created for Kando's theme engine version 1. Kando will use this to
|
||||||
|
// check if the theme is compatible with the current version of Kando.
|
||||||
|
engineVersion: 1,
|
||||||
|
|
||||||
|
// When a menu is opened too close to a screen's edge, it is moved away from the edge
|
||||||
|
// by this amount of pixels.
|
||||||
|
maxMenuRadius: 160,
|
||||||
|
|
||||||
|
// The width at which the center text is wrapped.
|
||||||
|
centerTextWrapWidth: 90,
|
||||||
|
|
||||||
|
// This theme draws child items below their parent items.
|
||||||
|
drawChildrenBelow: true,
|
||||||
|
|
||||||
|
// Draw the thin lines between adjacent menu items.
|
||||||
|
drawSelectionWedges: true,
|
||||||
|
|
||||||
|
// These colors can be configured by the user and are available in the CSS file as CSS
|
||||||
|
// variables. The default values are used if the user does not provide any values.
|
||||||
|
colors: {
|
||||||
|
'glow-color': 'rgb(0, 255, 255)',
|
||||||
|
'connector-color': 'rgba(0, 255, 255, 0.8)',
|
||||||
|
'canvas-color': 'rgba(0, 40, 40, 0.6)',
|
||||||
|
'icon-color': 'rgb(0, 255, 255)',
|
||||||
|
'label-color': 'rgb(255, 255, 255)',
|
||||||
|
'label-glow-color': 'rgb(255, 255, 255)',
|
||||||
|
'wedge-highlight-color': 'rgba(0, 255, 255, 0.1)',
|
||||||
|
'wedge-color': 'rgba(0, 255, 255, 0.2)',
|
||||||
|
},
|
||||||
|
|
||||||
|
// This theme uses multiple layers to create enhanced neon ring effects.
|
||||||
|
// The layers are rendered in the order specified below, with the first layer
|
||||||
|
// being drawn at the bottom and the last layer at the top.
|
||||||
|
layers: [
|
||||||
|
{
|
||||||
|
// Inner neon ring layer - provides secondary glow effect
|
||||||
|
class: 'inner-neon-ring',
|
||||||
|
content: 'none'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// Outer neon ring layer - provides primary glow effect
|
||||||
|
class: 'outer-neon-ring',
|
||||||
|
content: 'none'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// Icon layer - contains the actual menu item icons
|
||||||
|
class: 'icon-layer',
|
||||||
|
content: 'icon'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// Arrow layer - provides directional indication for navigation
|
||||||
|
class: 'arrow-layer',
|
||||||
|
content: 'none'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
23
.config/kando/menu-themes/neon-lights-color/REUSE.toml
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
# SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
# SPDX-FileCopyrightText: 2025 Rena and LCG
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
version = 1
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = ["theme.css", "theme.json5"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = ["Simon Schneegans <code@simonschneegans.de>", "2025 Rena and LCG"]
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = "preview.jpg"
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "2025 Rena and LCG"
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = ["assets/arrow.svg", "assets/ring-mask.svg"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = ["Simon Schneegans <code@simonschneegans.de>", "2025 Rena and LCG"]
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
122
.config/kando/menu-themes/neon-lights-color/assets/arrow.svg
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<!-- SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> -->
|
||||||
|
<!-- SPDX-License-Identifier: CC0-1.0 -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
sodipodi:docname="arrow.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3007">
|
||||||
|
<stop
|
||||||
|
id="stop3009"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0;"
|
||||||
|
offset="0.3680203"
|
||||||
|
id="stop3011" />
|
||||||
|
<stop
|
||||||
|
id="stop3013"
|
||||||
|
offset="0.57677984"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.66666667;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.45490196;"
|
||||||
|
offset="0.66058904"
|
||||||
|
id="stop3015" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.34901961;"
|
||||||
|
offset="0.70194155"
|
||||||
|
id="stop3017" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.25490196;"
|
||||||
|
offset="0.74285865"
|
||||||
|
id="stop3019" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.1254902;"
|
||||||
|
offset="0.8251282"
|
||||||
|
id="stop3021" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.05490196;"
|
||||||
|
offset="0.90009141"
|
||||||
|
id="stop3023" />
|
||||||
|
<stop
|
||||||
|
id="stop3025"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3007"
|
||||||
|
id="radialGradient3005"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
cx="50.002552"
|
||||||
|
cy="49.744911"
|
||||||
|
fx="50.002552"
|
||||||
|
fy="49.744911"
|
||||||
|
r="49.750011" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#1d1d1d"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="22.4"
|
||||||
|
inkscape:cx="44.397321"
|
||||||
|
inkscape:cy="15.424107"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:window-width="2058"
|
||||||
|
inkscape:window-height="1194"
|
||||||
|
inkscape:window-x="35"
|
||||||
|
inkscape:window-y="32"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#1d1d1d" />
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,-952.36218)">
|
||||||
|
<path
|
||||||
|
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3.58558;marker:none;enable-background:accumulate"
|
||||||
|
d="m 34.649194,963.56105 0.821697,1.1952 3.734982,-1.61115 10.794147,-6.57394 10.644641,6.57394 3.734982,1.61115 0.821696,-1.15785 -14.192933,-9.93505 -1.008386,-0.70965 -1.045795,0.70965 z"
|
||||||
|
id="path3054"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:transform-center-x="0.0747335"
|
||||||
|
inkscape:transform-center-y="-43.507208"
|
||||||
|
sodipodi:nodetypes="ccccccccccc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.5 KiB |
160
.config/kando/menu-themes/neon-lights-color/assets/ring-mask.svg
Normal file
|
|
@ -0,0 +1,160 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<!-- SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> -->
|
||||||
|
|
||||||
|
<!-- SPDX-License-Identifier: CC0-1.0 -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
sodipodi:docname="ring-mask.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3007">
|
||||||
|
<stop
|
||||||
|
id="stop3009"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ff0000;stop-opacity:0;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff87bd;stop-opacity:0;"
|
||||||
|
offset="0.3680203"
|
||||||
|
id="stop3011" />
|
||||||
|
<stop
|
||||||
|
id="stop3013"
|
||||||
|
offset="0.57677984"
|
||||||
|
style="stop-color:#ffabdf;stop-opacity:0.66666669;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffa4e1;stop-opacity:0.45490196;"
|
||||||
|
offset="0.66058904"
|
||||||
|
id="stop3015" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#dbaaaa;stop-opacity:0.1254902;"
|
||||||
|
offset="0.8251282"
|
||||||
|
id="stop3021" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#b4b4b4;stop-opacity:0.05490196;"
|
||||||
|
offset="0.90009141"
|
||||||
|
id="stop3023" />
|
||||||
|
<stop
|
||||||
|
id="stop3025"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#b4b4b4;stop-opacity:0;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3767">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0"
|
||||||
|
offset="0"
|
||||||
|
id="stop3769" />
|
||||||
|
<stop
|
||||||
|
id="stop4739"
|
||||||
|
offset="0.3680203"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.66666667;"
|
||||||
|
offset="0.59831607"
|
||||||
|
id="stop4703" />
|
||||||
|
<stop
|
||||||
|
id="stop4713"
|
||||||
|
offset="0.66058904"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.45490196;" />
|
||||||
|
<stop
|
||||||
|
id="stop4711"
|
||||||
|
offset="0.70194155"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.34901961;" />
|
||||||
|
<stop
|
||||||
|
id="stop4709"
|
||||||
|
offset="0.74285865"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.25490196;" />
|
||||||
|
<stop
|
||||||
|
id="stop4707"
|
||||||
|
offset="0.8251282"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.1254902;" />
|
||||||
|
<stop
|
||||||
|
id="stop4705"
|
||||||
|
offset="0.90009141"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.05490196;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0"
|
||||||
|
offset="1"
|
||||||
|
id="stop3771" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3767"
|
||||||
|
id="radialGradient3775"
|
||||||
|
cx="50.002552"
|
||||||
|
cy="49.744911"
|
||||||
|
fx="50.002552"
|
||||||
|
fy="49.744911"
|
||||||
|
r="49.750011"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#1d1d1d"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="11.313708"
|
||||||
|
inkscape:cx="80.035652"
|
||||||
|
inkscape:cy="48.436817"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:window-width="3072"
|
||||||
|
inkscape:window-height="1691"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#1d1d1d">
|
||||||
|
<sodipodi:guide
|
||||||
|
orientation="0,1"
|
||||||
|
position="14.9375,50"
|
||||||
|
id="guide3006"
|
||||||
|
inkscape:locked="false" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,-952.36218)">
|
||||||
|
<path
|
||||||
|
id="path2267"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.996;stroke-dasharray:3.984, 0.996;paint-order:stroke fill markers;stop-color:#000000"
|
||||||
|
d="M 50 1002.3622 L 54.271484 1052.3622 L 100 1052.3622 L 100 952.36218 L 54.271484 952.36218 L 50 1002.3622 z " />
|
||||||
|
<path
|
||||||
|
id="path2265"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.996;stroke-dasharray:3.984, 0.996;paint-order:stroke fill markers;stop-color:#000000"
|
||||||
|
d="M 0 952.36218 L 0 1052.3622 L 45.728516 1052.3622 L 50 1002.3622 L 45.728516 952.36218 L 0 952.36218 z " />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.9 KiB |
BIN
.config/kando/menu-themes/neon-lights-color/preview.jpg
Normal file
|
After Width: | Height: | Size: 153 KiB |
489
.config/kando/menu-themes/neon-lights-color/theme.css
Normal file
|
|
@ -0,0 +1,489 @@
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
/* _ _ ____ _ _ ___ ____ */
|
||||||
|
/* |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform */
|
||||||
|
/* | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando */
|
||||||
|
/* */
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
/* SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> */
|
||||||
|
/* SPDX-FileCopyrightText: 2025 Rena and LCG */
|
||||||
|
/* SPDX-License-Identifier: CC0-1.0 */
|
||||||
|
|
||||||
|
/* === 🎨 Neon Lights Enhanced Color Theme - Optimized v3.0 === */
|
||||||
|
/* === 📊 Configuration Options: 31 → 21 options (32% reduction) === */
|
||||||
|
|
||||||
|
@keyframes rotate {
|
||||||
|
from { transform: rotate(0deg); }
|
||||||
|
to { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes neon-pulse {
|
||||||
|
0%, 100% { opacity: 0.6; filter: brightness(1) saturate(1); }
|
||||||
|
50% { opacity: 1; filter: brightness(1.3) saturate(1.5); }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes neon-hover-pulse {
|
||||||
|
0%, 100% { opacity: 0.8; transform: translate(-50%, -50%) scale(1.0); }
|
||||||
|
50% { opacity: 1; transform: translate(-50%, -50%) scale(1.2); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-node {
|
||||||
|
--child-distance: 100px;
|
||||||
|
--grandchild-distance: 16px;
|
||||||
|
--grandchild-size: 15px;
|
||||||
|
--center-size: 100px;
|
||||||
|
--child-size: 50px;
|
||||||
|
--connector-width: 5px;
|
||||||
|
--menu-transition: all 250ms cubic-bezier(0.775, 1.325, 0.535, 1);
|
||||||
|
--opacity-transition: opacity 250ms ease;
|
||||||
|
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
|
||||||
|
/* Positioning ---------------------------------------------------------------------- */
|
||||||
|
&.child {
|
||||||
|
transform: translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active:has(>.hovered)>.child {
|
||||||
|
transform: scale(calc(1.5 - pow(var(--angle-diff) / 180, 0.25) * 0.5)) translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
|
||||||
|
&.hovered {
|
||||||
|
transform: scale(1.5) translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
&.grandchild {
|
||||||
|
opacity: 0 !important;
|
||||||
|
pointer-events: none !important;
|
||||||
|
transform: translate(calc(var(--grandchild-distance) * var(--dir-x)),
|
||||||
|
calc(var(--grandchild-distance) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🎯 Icon System === */
|
||||||
|
.icon-container {
|
||||||
|
opacity: 0;
|
||||||
|
transition: var(--opacity-transition);
|
||||||
|
color: var(--icon-color) !important;
|
||||||
|
filter: drop-shadow(0 0 8px var(--icon-glow));
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active>.icon-layer>.icon-container {
|
||||||
|
opacity: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.parent>.icon-layer>.icon-container,
|
||||||
|
&.child>.icon-layer>.icon-container {
|
||||||
|
opacity: 1 !important;
|
||||||
|
color: var(--icon-color) !important;
|
||||||
|
filter: drop-shadow(0 0 8px var(--icon-glow)) !important;
|
||||||
|
animation: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.child.hovered>.icon-layer>.icon-container,
|
||||||
|
&.parent.hovered>.icon-layer>.icon-container {
|
||||||
|
color: var(--icon-hover) !important;
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 0 12px var(--icon-hover-glow))
|
||||||
|
drop-shadow(0 0 20px var(--icon-hover-glow))
|
||||||
|
drop-shadow(0 0 30px var(--icon-hover-glow)) !important;
|
||||||
|
animation: neon-pulse 2s ease-in-out infinite !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-glow-layer {
|
||||||
|
position: absolute;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
opacity: 0;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
.icon-container {
|
||||||
|
color: var(--icon-glow) !important;
|
||||||
|
filter: blur(15px) brightness(2);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🌈 Neon Glow Ring System === */
|
||||||
|
.outer-glow-ring {
|
||||||
|
position: absolute;
|
||||||
|
opacity: 0;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: transparent;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 2;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 50%; left: 50%;
|
||||||
|
width: calc(100% + 16px);
|
||||||
|
height: calc(100% + 16px);
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 3px solid var(--primary-glow);
|
||||||
|
box-shadow:
|
||||||
|
0 0 15px var(--primary-glow),
|
||||||
|
0 0 25px var(--primary-glow),
|
||||||
|
inset 0 0 10px var(--primary-glow);
|
||||||
|
animation: neon-pulse 3s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.inner-glow-ring {
|
||||||
|
position: absolute;
|
||||||
|
opacity: 0;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: transparent;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 3;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 50%; left: 50%;
|
||||||
|
width: calc(100% + 8px);
|
||||||
|
height: calc(100% + 8px);
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 2px solid var(--secondary-glow);
|
||||||
|
box-shadow:
|
||||||
|
0 0 12px var(--secondary-glow),
|
||||||
|
0 0 20px var(--secondary-glow),
|
||||||
|
inset 0 0 8px var(--secondary-glow);
|
||||||
|
animation: neon-pulse 2.5s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Layer positioning */
|
||||||
|
.arrow-layer, .outer-glow-ring, .inner-glow-ring, .ring-slow-layer, .ring-slow-layer::before,
|
||||||
|
.ring-fast-layer, .ring-fast-layer::before, .icon-glow-layer, .icon-layer {
|
||||||
|
position: absolute;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Active menu item sizing */
|
||||||
|
&.active>.arrow-layer, &.active>.outer-glow-ring, &.active>.inner-glow-ring,
|
||||||
|
&.active>.ring-slow-layer, &.active>.ring-fast-layer, &.active>.icon-glow-layer,
|
||||||
|
&.active>.icon-layer {
|
||||||
|
top: calc(-1 * var(--center-size) / 2);
|
||||||
|
left: calc(-1 * var(--center-size) / 2);
|
||||||
|
width: var(--center-size);
|
||||||
|
height: var(--center-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active>.ring-slow-layer::before, &.active>.ring-fast-layer::before {
|
||||||
|
top: 0; left: 0;
|
||||||
|
width: var(--center-size);
|
||||||
|
height: var(--center-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🎯 Icon Layer === */
|
||||||
|
.icon-layer {
|
||||||
|
border-radius: 50%;
|
||||||
|
background: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
opacity: 1;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow-layer {
|
||||||
|
background: url(assets/arrow.svg) no-repeat center;
|
||||||
|
transform: scale(1.0) rotate(var(--hovered-child-angle));
|
||||||
|
opacity: 0;
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 0 10px var(--accent-glow))
|
||||||
|
drop-shadow(0 0 20px var(--accent-glow));
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(.dragged)>.arrow-layer {
|
||||||
|
transform: scale(1.6) rotate(var(--pointer-angle));
|
||||||
|
transition: none;
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 0 15px var(--active-glow))
|
||||||
|
drop-shadow(0 0 25px var(--active-glow));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🌟 Rotating Ring System === */
|
||||||
|
.ring-slow-layer {
|
||||||
|
animation: rotate 10s linear infinite;
|
||||||
|
opacity: 0;
|
||||||
|
border-radius: 50%;
|
||||||
|
overflow: hidden;
|
||||||
|
clip-path: circle(75% at 50% 50%);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
mask-image: url(assets/ring-mask.svg);
|
||||||
|
-webkit-mask-image: url(assets/ring-mask.svg);
|
||||||
|
mask-size: 100% 100%;
|
||||||
|
-webkit-mask-size: 100% 100%;
|
||||||
|
mask-repeat: no-repeat;
|
||||||
|
-webkit-mask-repeat: no-repeat;
|
||||||
|
mask-position: center;
|
||||||
|
-webkit-mask-position: center;
|
||||||
|
background-image: radial-gradient(circle,
|
||||||
|
transparent 20%,
|
||||||
|
color-mix(in srgb, var(--ring-slow) 10%, transparent) 27%,
|
||||||
|
color-mix(in srgb, var(--ring-slow) 20%, transparent) 30%,
|
||||||
|
color-mix(in srgb, var(--ring-slow) 60%, transparent) 33%,
|
||||||
|
var(--ring-slow) 34%,
|
||||||
|
var(--ring-slow) 36%,
|
||||||
|
color-mix(in srgb, var(--ring-slow) 60%, transparent) 37%,
|
||||||
|
color-mix(in srgb, var(--ring-slow) 20%, transparent) 40%,
|
||||||
|
color-mix(in srgb, var(--ring-slow) 10%, transparent) 47%,
|
||||||
|
transparent 60%);
|
||||||
|
filter: drop-shadow(0 0 10px var(--ring-slow));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ring-fast-layer {
|
||||||
|
animation: rotate 2s linear infinite;
|
||||||
|
opacity: 0;
|
||||||
|
border-radius: 50%;
|
||||||
|
overflow: hidden;
|
||||||
|
clip-path: circle(75% at 50% 50%);
|
||||||
|
background-image: radial-gradient(circle, var(--backdrop-shadow) 60%, transparent 70%);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
mask-image: url(assets/ring-mask.svg);
|
||||||
|
-webkit-mask-image: url(assets/ring-mask.svg);
|
||||||
|
mask-size: 100% 100%;
|
||||||
|
-webkit-mask-size: 100% 100%;
|
||||||
|
mask-repeat: no-repeat;
|
||||||
|
-webkit-mask-repeat: no-repeat;
|
||||||
|
mask-position: center;
|
||||||
|
-webkit-mask-position: center;
|
||||||
|
background-image: radial-gradient(circle,
|
||||||
|
transparent 20%,
|
||||||
|
color-mix(in srgb, var(--ring-fast) 10%, transparent) 27%,
|
||||||
|
color-mix(in srgb, var(--ring-fast) 20%, transparent) 30%,
|
||||||
|
color-mix(in srgb, var(--ring-fast) 60%, transparent) 33%,
|
||||||
|
var(--ring-inner) 34%,
|
||||||
|
var(--ring-inner) 36%,
|
||||||
|
color-mix(in srgb, var(--ring-fast) 60%, transparent) 37%,
|
||||||
|
color-mix(in srgb, var(--ring-fast) 20%, transparent) 40%,
|
||||||
|
color-mix(in srgb, var(--ring-fast) 10%, transparent) 47%,
|
||||||
|
transparent 60%);
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 0 15px var(--ring-fast))
|
||||||
|
drop-shadow(0 0 25px var(--ring-fast));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === ✨ Glow Ring Display Logic === */
|
||||||
|
&.active>.outer-glow-ring, &.active>.inner-glow-ring,
|
||||||
|
&.child.hovered>.outer-glow-ring, &.child.hovered>.inner-glow-ring,
|
||||||
|
&.parent.hovered>.outer-glow-ring, &.parent.hovered>.inner-glow-ring {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.child>.icon-glow-layer, &.parent>.icon-glow-layer { opacity: 0.6; }
|
||||||
|
&.child.hovered>.icon-glow-layer, &.parent.hovered>.icon-glow-layer { opacity: 1; }
|
||||||
|
|
||||||
|
/* === ✨ Special State Effects === */
|
||||||
|
&.active:has(>.hovered)>.ring-fast-layer {
|
||||||
|
opacity: 1;
|
||||||
|
animation: rotate 1s linear infinite, neon-pulse 3s ease-in-out infinite;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
transform: scale(2.0);
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 0 20px var(--hover-glow))
|
||||||
|
drop-shadow(0 0 30px var(--hover-glow));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.parent>.active:not(:has(.hovered))>.ring-slow-layer,
|
||||||
|
&.active.hovered>.ring-slow-layer {
|
||||||
|
opacity: 1;
|
||||||
|
&::before {
|
||||||
|
transform: scale(1.0);
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 0 12px var(--primary-glow))
|
||||||
|
drop-shadow(0 0 20px var(--primary-glow));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active:has(.hovered)>.arrow-layer {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1.6) rotate(var(--hovered-child-angle));
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 0 15px var(--accent-glow))
|
||||||
|
drop-shadow(0 0 25px var(--accent-glow));
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active:has(.hovered.dragged)>.arrow-layer {
|
||||||
|
transform: scale(1.6) rotate(var(--pointer-angle));
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 0 20px var(--active-glow))
|
||||||
|
drop-shadow(0 0 30px var(--active-glow))
|
||||||
|
drop-shadow(0 0 40px var(--active-glow));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🎭 Enhanced Hover Effects === */
|
||||||
|
&.child.hovered>.icon-layer, &.parent.hovered>.icon-layer {
|
||||||
|
transform: scale(1.5) !important;
|
||||||
|
z-index: 15 !important;
|
||||||
|
background: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active.hovered>.icon-layer {
|
||||||
|
transform: scale(1.1) !important;
|
||||||
|
background: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.child.hovered>.outer-glow-ring::before, &.parent.hovered>.outer-glow-ring::before {
|
||||||
|
border-width: 4px !important;
|
||||||
|
width: calc(150% + 24px) !important;
|
||||||
|
height: calc(150% + 24px) !important;
|
||||||
|
animation: neon-hover-pulse 1.5s ease-in-out infinite !important;
|
||||||
|
box-shadow:
|
||||||
|
0 0 20px var(--hover-glow),
|
||||||
|
0 0 30px var(--hover-glow),
|
||||||
|
inset 0 0 15px var(--hover-glow) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.child.hovered>.inner-glow-ring::before, &.parent.hovered>.inner-glow-ring::before {
|
||||||
|
border-width: 3px !important;
|
||||||
|
width: calc(150% + 12px) !important;
|
||||||
|
height: calc(150% + 12px) !important;
|
||||||
|
animation: neon-hover-pulse 1.3s ease-in-out infinite !important;
|
||||||
|
box-shadow:
|
||||||
|
0 0 15px var(--secondary-glow),
|
||||||
|
0 0 25px var(--secondary-glow),
|
||||||
|
inset 0 0 12px var(--secondary-glow) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.parent.hovered.clicked>.icon-layer, &.child.hovered.clicked>.icon-layer {
|
||||||
|
transform: scale(0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.parent>.icon-layer, &.parent>.icon-glow-layer, &.parent>.outer-glow-ring, &.parent>.inner-glow-ring,
|
||||||
|
&.child>.icon-layer, &.child>.icon-glow-layer, &.child>.outer-glow-ring, &.child>.inner-glow-ring {
|
||||||
|
top: calc(-1 * var(--child-size) / 2);
|
||||||
|
left: calc(-1 * var(--child-size) / 2);
|
||||||
|
width: var(--child-size);
|
||||||
|
height: var(--child-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.grandchild>.icon-layer {
|
||||||
|
top: calc(-1 * var(--grandchild-size) / 2);
|
||||||
|
left: calc(-1 * var(--grandchild-size) / 2);
|
||||||
|
width: var(--grandchild-size);
|
||||||
|
height: var(--grandchild-size);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.dragged { transition: none; }
|
||||||
|
|
||||||
|
/* === ⚡ Connector System === */
|
||||||
|
.connector {
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
height: var(--connector-width);
|
||||||
|
top: calc(-1 * var(--connector-width) / 2);
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 0 8px var(--connector-glow))
|
||||||
|
drop-shadow(0 0 15px var(--connector-glow));
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(.dragged)>.connector, &:has(.clicked)>.connector {
|
||||||
|
transition: none;
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 0 12px var(--active-glow))
|
||||||
|
drop-shadow(0 0 20px var(--active-glow))
|
||||||
|
drop-shadow(0 0 30px var(--active-glow));
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(.hovered)>.connector {
|
||||||
|
filter:
|
||||||
|
drop-shadow(0 0 10px var(--connector-hover-glow))
|
||||||
|
drop-shadow(0 0 18px var(--connector-hover-glow));
|
||||||
|
animation: neon-pulse 2s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.connector {
|
||||||
|
background: linear-gradient(to right,
|
||||||
|
var(--connector-edge) 80px,
|
||||||
|
var(--connector-center) 50%,
|
||||||
|
var(--connector-edge) calc(100% - 80px));
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: -1px; left: 0; right: 0;
|
||||||
|
height: calc(var(--connector-width) + 2px);
|
||||||
|
background: linear-gradient(to right,
|
||||||
|
transparent 70px,
|
||||||
|
var(--connector-color) 45%,
|
||||||
|
var(--connector-color) 55%,
|
||||||
|
transparent calc(100% - 70px));
|
||||||
|
filter: blur(2px);
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🔤 Center Text Neon Effects === */
|
||||||
|
.center-text {
|
||||||
|
font-size: 22px !important;
|
||||||
|
line-height: 26px !important;
|
||||||
|
font-family: 'Arial', 'Microsoft YaHei', 'Segoe UI', sans-serif;
|
||||||
|
font-weight: 600;
|
||||||
|
letter-spacing: 0.3px;
|
||||||
|
max-width: 160px !important;
|
||||||
|
min-width: 120px !important;
|
||||||
|
max-height: 60px !important;
|
||||||
|
word-wrap: break-word !important;
|
||||||
|
word-break: break-all !important;
|
||||||
|
white-space: normal !important;
|
||||||
|
text-align: center !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
text-overflow: ellipsis !important;
|
||||||
|
display: flex !important;
|
||||||
|
align-items: center !important;
|
||||||
|
justify-content: center !important;
|
||||||
|
padding: 6px 8px !important;
|
||||||
|
will-change: color, text-shadow !important;
|
||||||
|
backface-visibility: hidden !important;
|
||||||
|
z-index: 20;
|
||||||
|
color: var(--text-color) !important;
|
||||||
|
transition: var(--opacity-transition);
|
||||||
|
text-shadow:
|
||||||
|
0 0 5px var(--text-glow),
|
||||||
|
0 0 10px var(--text-glow),
|
||||||
|
0 0 15px var(--text-glow),
|
||||||
|
0 0 20px var(--text-glow);
|
||||||
|
filter: drop-shadow(0 0 8px var(--text-glow));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === 🌃 Background Canvas Effects === */
|
||||||
|
#kando-menu {
|
||||||
|
background-color: var(--canvas-color) !important;
|
||||||
|
backdrop-filter: blur(20px);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0; left: 0; right: 0; bottom: 0;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 20% 30%, var(--primary-glow) 0%, transparent 50%),
|
||||||
|
radial-gradient(circle at 80% 70%, var(--secondary-glow) 0%, transparent 50%),
|
||||||
|
radial-gradient(circle at 50% 50%, var(--accent-glow) 0%, transparent 70%);
|
||||||
|
opacity: 0.03;
|
||||||
|
mix-blend-mode: screen;
|
||||||
|
animation: neon-pulse 8s ease-in-out infinite;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
91
.config/kando/menu-themes/neon-lights-color/theme.json5
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// _ _ ____ _ _ ___ ____ //
|
||||||
|
// |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform //
|
||||||
|
// | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando //
|
||||||
|
// //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
// SPDX-FileCopyrightText: 2025 Rena and LCG
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "neon-lights-color",
|
||||||
|
"author": "Rena and LCG",
|
||||||
|
"license": "CC0-1.0",
|
||||||
|
"themeVersion": "3.0",
|
||||||
|
"engineVersion": 1,
|
||||||
|
"maxMenuRadius": 160,
|
||||||
|
"centerTextWrapWidth": 160,
|
||||||
|
"drawChildrenBelow": true,
|
||||||
|
"colors": {
|
||||||
|
// === 🎯 Icon System (5 options) ===
|
||||||
|
"icon-color": "rgba(255, 255, 255, 0.95)", // Base icon color
|
||||||
|
"icon-glow": "rgb(255, 140, 210)", // Icon glow effect
|
||||||
|
"icon-hover": "rgba(255, 255, 140, 1.0)", // Icon color on hover
|
||||||
|
"icon-hover-glow": "rgb(255, 255, 140)", // Icon glow on hover
|
||||||
|
|
||||||
|
// === 🔤 Text System (2 options) ===
|
||||||
|
"text-color": "rgba(255, 255, 255, 0.95)", // Center text color
|
||||||
|
"text-glow": "rgb(255, 140, 210)", // Text glow effect
|
||||||
|
|
||||||
|
// === 🌈 Ring Glow System (3 options) ===
|
||||||
|
"primary-glow": "rgb(255, 140, 210)", // Primary neon ring color
|
||||||
|
"secondary-glow": "rgb(140, 200, 255)", // Secondary neon ring color
|
||||||
|
"accent-glow": "rgb(255, 255, 140)", // Accent glow (arrows, etc.)
|
||||||
|
|
||||||
|
// === 🌟 Rotating Ring System (3 options) ===
|
||||||
|
"ring-inner": "rgb(255, 255, 255)", // Rotating ring inner color
|
||||||
|
"ring-slow": "rgb(120, 120, 120)", // Slow rotating ring color
|
||||||
|
"ring-fast": "rgb(255, 140, 210)", // Fast rotating ring color
|
||||||
|
|
||||||
|
// === ⚡ Connector System (5 options) ===
|
||||||
|
"connector-color": "rgba(255, 140, 210, 0.4)", // Connector base color (track)
|
||||||
|
"connector-center": "rgba(255, 200, 255, 0.75)", // Connector center color
|
||||||
|
"connector-edge": "rgba(255, 140, 210, 0.3)", // Connector edge color
|
||||||
|
"connector-glow": "rgba(255, 140, 210, 0.5)", // Connector glow effect
|
||||||
|
"connector-hover-glow": "rgb(255, 255, 140)", // Connector glow on hover
|
||||||
|
|
||||||
|
// === 🎭 Interaction State System (2 options) ===
|
||||||
|
"hover-glow": "rgb(255, 255, 140)", // Hover glow effect
|
||||||
|
"active-glow": "rgb(140, 255, 140)", // Active glow effect
|
||||||
|
|
||||||
|
// === 🌃 Background System (2 options) ===
|
||||||
|
"canvas-color": "rgba(10, 10, 20, 0.8)", // Main background color
|
||||||
|
"backdrop-shadow": "rgba(0, 0, 0, 0.6)" // Background shadow effect
|
||||||
|
},
|
||||||
|
"layers": [
|
||||||
|
{
|
||||||
|
"type": "canvas",
|
||||||
|
"color": "#0a0a14cc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"class": "inner-glow-ring",
|
||||||
|
"content": "none"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"class": "outer-glow-ring",
|
||||||
|
"content": "none"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"class": "icon-layer",
|
||||||
|
"content": "icon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"class": "icon-glow-layer",
|
||||||
|
"content": "icon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"class": "ring-fast-layer",
|
||||||
|
"content": "none"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"class": "ring-slow-layer",
|
||||||
|
"content": "none"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"class": "arrow-layer",
|
||||||
|
"content": "none"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
13
.config/kando/menu-themes/nether-labels/README.md
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: Elfi Ox <https://github.com/elfi-ox>
|
||||||
|
SPDX-License-Identifier: CC-BY-4.0
|
||||||
|
-->
|
||||||
|
|
||||||
|
With its dark and classy colors, this theme features labels on your items and submenus and a sleek overall appearance. If however, your style is more bright or flashy, you can fully customize this theme with its 10 colors options.
|
||||||
|
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="banner.png" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
This theme is a Modified version of the "Rainbow Labels" theme made by Simon Schneegans.
|
||||||
18
.config/kando/menu-themes/nether-labels/REUSE.toml
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# SPDX-FileCopyrightText: Elfi Ox <https://github.com/elfi-ox>
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
version = 1
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = ["*.jpg", "*.png"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "Elfi Ox <https://github.com/elfi-ox>"
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
|
|
||||||
|
|
||||||
|
# Font from: https://fonts.google.com/specimen/Plus+Jakarta+Sans
|
||||||
|
[[annotations]]
|
||||||
|
path = ["PlusJakartaSans-Medium.ttf"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "Copyright 2020 The Plus Jakarta Sans Project Authors (https://github.com/tokotype/PlusJakartaSans)"
|
||||||
|
SPDX-License-Identifier = "OFL-1.1"
|
||||||
BIN
.config/kando/menu-themes/nether-labels/banner.png
Normal file
|
After Width: | Height: | Size: 440 KiB |
BIN
.config/kando/menu-themes/nether-labels/preview.jpg
Normal file
|
After Width: | Height: | Size: 632 KiB |
237
.config/kando/menu-themes/nether-labels/theme.css
Normal file
|
|
@ -0,0 +1,237 @@
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
/* _ _ ____ _ _ ___ ____ */
|
||||||
|
/* |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform */
|
||||||
|
/* | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando */
|
||||||
|
/* */
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
/* SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> */
|
||||||
|
/* SPDX-FileCopyrightText: Elfi Ox <https://github.com/elfi-ox> */
|
||||||
|
/* SPDX-License-Identifier: CC0-1.0 */
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'PlusJakartaSans-Medium';
|
||||||
|
src: url('PlusJakartaSans-Medium.ttf') format('opentype');
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-node {
|
||||||
|
--child-distance: 80px;
|
||||||
|
--grandchild-distance: 16px;
|
||||||
|
--grandchild-size: 13px;
|
||||||
|
--center-size: 80px;
|
||||||
|
--icon-size: 40px;
|
||||||
|
--connector-width: 10px;
|
||||||
|
--menu-transition: transform 175ms ease, left 200ms ease, top 200ms ease, width 200ms ease, height 200ms ease, margin 180ms ease, padding 180ms ease, opacity 200ms ease;
|
||||||
|
--connector-transition: width 100ms ease, opacity 200ms ease;
|
||||||
|
--color-transition: background-color 200ms ease, border 60ms ease, color 100ms ease, box-shadow 100ms ease, outline 100ms ease;
|
||||||
|
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
|
||||||
|
/* Positioning ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Child items are positioned around the active node. */
|
||||||
|
&.child {
|
||||||
|
transform: translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grandchild items are positioned around the child items. */
|
||||||
|
&.grandchild {
|
||||||
|
transform: translate(calc(var(--grandchild-distance) * var(--dir-x)),
|
||||||
|
calc(var(--grandchild-distance) * var(--dir-y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If there is a hovered child node, we scale all children up a bit to create a cool
|
||||||
|
zoom effect. The hovered child itself is scaled up even more. */
|
||||||
|
&.active:has(.hovered)>.child {
|
||||||
|
transform: scale(calc(1.15 - pow(var(--angle-diff) / 180, 0.25) * 0.15)) translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y))) ;
|
||||||
|
z-index: 1 !important;
|
||||||
|
|
||||||
|
&.hovered:not(.type-submenu) {
|
||||||
|
z-index: 10 !important;
|
||||||
|
transform: scale(1.15) translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)),
|
||||||
|
calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y))) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Theme Layers --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* We hide all icons by default. They will be shown further down in this file for the
|
||||||
|
the child items. */
|
||||||
|
.icon-container {
|
||||||
|
position: relative;
|
||||||
|
opacity: 0;
|
||||||
|
width: 100%;
|
||||||
|
clip-path: circle(45% at 50% 50%);
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
color: var(--accent-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hovered:not(.parent):not(.level-0)>.icon-layer {
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-layer,
|
||||||
|
.icon-layer {
|
||||||
|
position: absolute;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-layer {
|
||||||
|
font-family: PlusJakartaSans-Medium;
|
||||||
|
opacity: 0;
|
||||||
|
background-color: var(--label-background-color);
|
||||||
|
color: var(--text-color);
|
||||||
|
border: 2px solid var(--border-color);
|
||||||
|
white-space: nowrap;
|
||||||
|
height: var(--icon-size);
|
||||||
|
border-radius: var(--icon-size);
|
||||||
|
top: calc(-1 * var(--icon-size) / 2);
|
||||||
|
padding: calc(var(--icon-size) / 4.6) calc(var(--icon-size) / 3);
|
||||||
|
font-size: calc(var(--icon-size) / 3);
|
||||||
|
transition: var(--color-transition);
|
||||||
|
box-shadow: 0 0 12px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hovered>.label-layer {
|
||||||
|
color: var(--hover-color);
|
||||||
|
border-color: var(--hover-color);
|
||||||
|
box-shadow: 0 0 8px var(--hover-color) inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.right>.label-layer {
|
||||||
|
left: calc(-1 * var(--icon-size)/2);
|
||||||
|
padding-left: calc(var(--icon-size) + 5px);
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.left>.label-layer {
|
||||||
|
right: calc(-1 * var(--icon-size)/2);
|
||||||
|
padding-right: calc(var(--icon-size) + 5px);
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.top>.label-layer {
|
||||||
|
bottom: calc(0.4 * var(--icon-size));
|
||||||
|
top: inherit;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
margin-bottom: -5px;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
&.hovered.top>.label-layer {
|
||||||
|
margin-bottom: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.bottom>.label-layer {
|
||||||
|
top: calc(0.4 * var(--icon-size));
|
||||||
|
transform: translateX(-50%);
|
||||||
|
margin-top: -5px;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
&.hovered.bottom>.label-layer {
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-layer {
|
||||||
|
top: calc(-0.46 * var(--icon-size));
|
||||||
|
left: calc(-0.46 * var(--icon-size));
|
||||||
|
width: calc(0.92 * var(--icon-size));
|
||||||
|
height: calc(0.92 * var(--icon-size));
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: var(--circle-color);
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active>.icon-layer {
|
||||||
|
top: calc(-1 * var(--center-size) / 2);
|
||||||
|
left: calc(-1 * var(--center-size) / 2);
|
||||||
|
width: var(--center-size);
|
||||||
|
height: var(--center-size);
|
||||||
|
box-shadow: 0 0 12px rgba(0, 0, 0, 0.4);
|
||||||
|
transition: var(--menu-transition), var(--color-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.grandchild>.icon-layer {
|
||||||
|
top: calc(-1 * var(--grandchild-size) / 2);
|
||||||
|
left: calc(-1 * var(--grandchild-size) / 2);
|
||||||
|
width: var(--grandchild-size);
|
||||||
|
height: var(--grandchild-size);
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: var(--submenu-items-color);
|
||||||
|
transition: var(--color-transition), var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hovered>.grandchild>.icon-layer {
|
||||||
|
background-color: var(--submenu-items-hover-color);
|
||||||
|
top: calc(-0.55 * var(--grandchild-size));
|
||||||
|
left: calc(-0.55 * var(--grandchild-size));
|
||||||
|
width: calc(1.1 * var(--grandchild-size));
|
||||||
|
height: calc(1.1 * var(--grandchild-size));
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hovered.type-submenu:has(>.label-layer):not(.level-0)>.icon-layer {
|
||||||
|
outline: 1.8px solid var(--submenu-items-hover-color);
|
||||||
|
transition: var(--color-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.type-submenu.parent:not(.active)>.grandchild>.icon-layer {
|
||||||
|
background-color: var(--shrinked-outline-color);
|
||||||
|
top: calc(-0.55 * var(--grandchild-size));
|
||||||
|
left: calc(-0.55 * var(--grandchild-size));
|
||||||
|
width: calc(1.1 * var(--grandchild-size));
|
||||||
|
height: calc(1.1 * var(--grandchild-size));
|
||||||
|
}
|
||||||
|
|
||||||
|
&.type-submenu.parent:not(.active)>.icon-layer {
|
||||||
|
outline: 1.8px solid var(--shrinked-outline-color);
|
||||||
|
transition: var(--color-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The active menu item is the center of the menu. */
|
||||||
|
&.child>.label-layer {
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Show the icons of the parent and child items. */
|
||||||
|
&.active>.icon-layer>.icon-container,
|
||||||
|
&.parent>.icon-layer>.icon-container,
|
||||||
|
&.child>.icon-layer>.icon-container {
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We disable any transition for dragged submenu items. */
|
||||||
|
&.dragged.type-submenu {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Connectors ----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.connector {
|
||||||
|
transition: var(--connector-transition);
|
||||||
|
height: var(--connector-width);
|
||||||
|
top: calc(-1 * var(--connector-width) / 2);
|
||||||
|
background-color: var(--connector-color);
|
||||||
|
opacity: 0;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(>.dragged)>.connector,
|
||||||
|
&:has(>.clicked)>.connector {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(>.parent)>.connector,
|
||||||
|
&:has(>.active.type-submenu)>.connector,
|
||||||
|
&:has(>.dragged.type-submenu)>.connector {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center Text ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
.center-text {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
50
.config/kando/menu-themes/nether-labels/theme.json5
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// _ _ ____ _ _ ___ ____ //
|
||||||
|
// |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform //
|
||||||
|
// | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando //
|
||||||
|
// //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
// SPDX-FileCopyrightText: Elfi Ox <https://github.com/elfi-ox> */
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
{
|
||||||
|
name: 'Nether Labels',
|
||||||
|
author: 'Simon Schneegans, Elfi Ox',
|
||||||
|
license: 'CC0-1.0',
|
||||||
|
themeVersion: '1.0',
|
||||||
|
|
||||||
|
// This theme was created for Kando's theme engine version 1. Kando will use this to
|
||||||
|
// check if the theme is compatible with the current version of Kando.
|
||||||
|
engineVersion: 1,
|
||||||
|
|
||||||
|
// When a menu is opened too close to a screen's edge, it is moved away from the edge
|
||||||
|
// by this amount of pixels.
|
||||||
|
maxMenuRadius: 160,
|
||||||
|
|
||||||
|
// This theme draws child items below their parent items.
|
||||||
|
drawChildrenBelow: false,
|
||||||
|
|
||||||
|
// These colors can be configured by the user and are vailable in the CSS file as CSS
|
||||||
|
// variables. The default values are used if the user does not provide any values.
|
||||||
|
colors: {
|
||||||
|
'accent-color': '#D3ADFF',
|
||||||
|
'hover-color': '#D3ADFF',
|
||||||
|
'connector-color': '#D3ADFF',
|
||||||
|
'circle-color' : '#131219',
|
||||||
|
'border-color': '#131219',
|
||||||
|
'label-background-color': '#0A0A0A',
|
||||||
|
'text-color' : '#FFFFFF',
|
||||||
|
'shrinked-outline-color' : '#D3ADFF',
|
||||||
|
'submenu-items-hover-color' : '#D3ADFF',
|
||||||
|
'submenu-items-color' : '#131219',
|
||||||
|
},
|
||||||
|
|
||||||
|
// This theme uses two layers, one for the icon and the background and one for the arrow
|
||||||
|
// which points to the hovered item.
|
||||||
|
layers: [
|
||||||
|
{ class: 'icon-layer', content: 'icon' },
|
||||||
|
{ class: 'label-layer', content: 'name' },
|
||||||
|
],
|
||||||
|
}
|
||||||
10
.config/kando/menu-themes/nord/REUSE.toml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
# SPDX-FileCopyrightText: Elfi Ox <https://github.com/elfi-ox>
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
version = 1
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = ["preview.jpg"]
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "Ba Nyar Naing <https://github.com/devnyar>"
|
||||||
|
SPDX-License-Identifier = "CC0-1.0"
|
||||||
BIN
.config/kando/menu-themes/nord/preview.jpg
Normal file
|
After Width: | Height: | Size: 79 KiB |
191
.config/kando/menu-themes/nord/theme.css
Normal file
|
|
@ -0,0 +1,191 @@
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
/* _ _ ____ _ _ ___ ____ */
|
||||||
|
/* |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform */
|
||||||
|
/* | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando */
|
||||||
|
/* */
|
||||||
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
/* SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> */
|
||||||
|
/* SPDX-FileCopyrightText: Elfi Ox <https://github.com/elfi-ox> */
|
||||||
|
/* SPDX-License-Identifier: CC0-1.0 */
|
||||||
|
|
||||||
|
.menu-node {
|
||||||
|
--child-distance: 80px;
|
||||||
|
--grandchild-distance: 16px;
|
||||||
|
--center-size: 80px;
|
||||||
|
--icon-size: 40px;
|
||||||
|
--connector-width: 10px;
|
||||||
|
--menu-transition: transform 200ms ease, opacity 200ms ease;
|
||||||
|
--connector-transition: width 200ms ease, opacity 200ms ease;
|
||||||
|
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
|
||||||
|
/* Positioning ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Child items are positioned around the active node. */
|
||||||
|
&.child.type-submenu {
|
||||||
|
transform: translate(
|
||||||
|
calc(
|
||||||
|
max(var(--child-distance), 10px * var(--sibling-count)) *
|
||||||
|
var(--dir-x)
|
||||||
|
),
|
||||||
|
calc(
|
||||||
|
max(var(--child-distance), 10px * var(--sibling-count)) *
|
||||||
|
var(--dir-y)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.child:not(.type-submenu) {
|
||||||
|
transform: translate(
|
||||||
|
calc(
|
||||||
|
max(var(--child-distance), 10px * var(--sibling-count)) *
|
||||||
|
var(--dir-x)
|
||||||
|
),
|
||||||
|
calc(
|
||||||
|
max(var(--child-distance), 10px * var(--sibling-count)) *
|
||||||
|
var(--dir-y)
|
||||||
|
)
|
||||||
|
) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grandchild items are positioned around the child items. */
|
||||||
|
&.grandchild {
|
||||||
|
transform: translate(
|
||||||
|
calc(var(--grandchild-distance) * var(--dir-x)),
|
||||||
|
calc(var(--grandchild-distance) * var(--dir-y))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Theme Layers --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* We hide all icons by default. They will be shown further down in this file for the
|
||||||
|
the child items. */
|
||||||
|
.icon-container {
|
||||||
|
position: relative;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
opacity: 0;
|
||||||
|
clip-path: circle(45% at 50% 50%);
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
color: var(--accent-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-layer,
|
||||||
|
.icon-layer {
|
||||||
|
position: absolute;
|
||||||
|
transition: var(--menu-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-layer {
|
||||||
|
opacity: 0;
|
||||||
|
background-color: var(--label-background-color);
|
||||||
|
color: var(--text-color);
|
||||||
|
border: 2px solid var(--border-color);
|
||||||
|
white-space: nowrap;
|
||||||
|
height: var(--icon-size);
|
||||||
|
border-radius: var(--icon-size);
|
||||||
|
top: calc(-1 * var(--icon-size) / 2);
|
||||||
|
padding: calc(var(--icon-size) / 5) calc(var(--icon-size) / 3);
|
||||||
|
font-size: calc(var(--icon-size) / 2.7);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hovered > .label-layer {
|
||||||
|
color: var(--hover-color);
|
||||||
|
border-color: var(--hover-color);
|
||||||
|
box-shadow: 0 0 6px var(--hover-color) inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.right > .label-layer {
|
||||||
|
left: calc(-1 * var(--icon-size) / 2);
|
||||||
|
padding-left: calc(var(--icon-size) + 5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.left > .label-layer {
|
||||||
|
right: calc(-1 * var(--icon-size) / 2);
|
||||||
|
padding-right: calc(var(--icon-size) + 5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.top > .label-layer {
|
||||||
|
bottom: calc(0.4 * var(--icon-size));
|
||||||
|
top: inherit;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.bottom > .label-layer {
|
||||||
|
top: calc(0.4 * var(--icon-size));
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-layer {
|
||||||
|
top: calc(-1 * var(--icon-size) / 2);
|
||||||
|
left: calc(-1 * var(--icon-size) / 2);
|
||||||
|
width: var(--icon-size);
|
||||||
|
height: var(--icon-size);
|
||||||
|
border-radius: 50%;
|
||||||
|
box-shadow: 0 0 12px rgba(0, 0, 0, 0.4);
|
||||||
|
background-color: var(--circle-color);
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active > .icon-layer {
|
||||||
|
top: calc(-1 * var(--center-size) / 2);
|
||||||
|
left: calc(-1 * var(--center-size) / 2);
|
||||||
|
width: var(--center-size);
|
||||||
|
height: var(--center-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.grandchild > .icon-layer {
|
||||||
|
top: calc(-1 * var(--grandchild-size) / 2);
|
||||||
|
left: calc(-1 * var(--grandchild-size) / 2);
|
||||||
|
width: var(--grandchild-size);
|
||||||
|
height: var(--grandchild-size);
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The active menu item is the center of the menu. */
|
||||||
|
&.child > .label-layer {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Show the icons of the parent and child items. */
|
||||||
|
&.active > .icon-layer > .icon-container,
|
||||||
|
&.parent > .icon-layer > .icon-container,
|
||||||
|
&.child > .icon-layer > .icon-container {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We disable any transition for dragged submenu items. */
|
||||||
|
&.dragged.type-submenu {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Connectors ----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.connector {
|
||||||
|
transition: var(--connector-transition);
|
||||||
|
height: var(--connector-width);
|
||||||
|
top: calc(-1 * var(--connector-width) / 2);
|
||||||
|
background-color: var(--connector-color);
|
||||||
|
opacity: 0;
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(> .dragged) > .connector,
|
||||||
|
&:has(> .clicked) > .connector {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(> .parent) > .connector,
|
||||||
|
&:has(> .active.type-submenu) > .connector,
|
||||||
|
&:has(> .dragged.type-submenu) > .connector {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center Text ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
.center-text {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
48
.config/kando/menu-themes/nord/theme.json5
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// _ _ ____ _ _ ___ ____ //
|
||||||
|
// |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform //
|
||||||
|
// | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando //
|
||||||
|
// //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
|
// SPDX-FileCopyrightText: Elfi Ox <https://github.com/elfi-ox> */
|
||||||
|
// SPDX-FileCopyrightText: Ba Nyar Naing <https://github.com/devnyar> */
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
{
|
||||||
|
name: 'Nord',
|
||||||
|
author: 'Simon Schneegans, Elfi Ox, Ba Nyar Naing',
|
||||||
|
license: 'CC0-1.0',
|
||||||
|
themeVersion: '1.0',
|
||||||
|
|
||||||
|
// This theme was created for Kando's theme engine version 1. Kando will use this to
|
||||||
|
// check if the theme is compatible with the current version of Kando.
|
||||||
|
engineVersion: 1,
|
||||||
|
|
||||||
|
// When a menu is opened too close to a screen's edge, it is moved away from the edge
|
||||||
|
// by this amount of pixels.
|
||||||
|
maxMenuRadius: 160,
|
||||||
|
|
||||||
|
// This theme draws child items below their parent items.
|
||||||
|
drawChildrenBelow: false,
|
||||||
|
|
||||||
|
// These colors can be configured by the user and are vailable in the CSS file as CSS
|
||||||
|
// variables. The default values are used if the user does not provide any values.
|
||||||
|
colors: {
|
||||||
|
'accent-color': '#D8DEE9',
|
||||||
|
'hover-color': '#D8DEE9',
|
||||||
|
'connector-color': '#3B4252',
|
||||||
|
'circle-color' : '#4C566A',
|
||||||
|
'border-color': '#3B4252',
|
||||||
|
'label-background-color': '#434C5E',
|
||||||
|
'text-color' : '#ECEFF4'
|
||||||
|
},
|
||||||
|
|
||||||
|
// This theme uses two layers, one for the icon and the background and one for the arrow
|
||||||
|
// which points to the hovered item.
|
||||||
|
layers: [
|
||||||
|
{ class: 'icon-layer', content: 'icon' },
|
||||||
|
{ class: 'label-layer', content: 'name' },
|
||||||
|
],
|
||||||
|
}
|
||||||
734
.config/kando/menus.json
Normal file
|
|
@ -0,0 +1,734 @@
|
||||||
|
{
|
||||||
|
"menus": [
|
||||||
|
{
|
||||||
|
"shortcut": "Control+Space",
|
||||||
|
"shortcutID": "example-menu",
|
||||||
|
"centered": false,
|
||||||
|
"root": {
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Example Menu",
|
||||||
|
"icon": "award_star",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Apps",
|
||||||
|
"icon": "apps",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "x-www-browser"
|
||||||
|
},
|
||||||
|
"name": "Web Browser",
|
||||||
|
"icon": "globe",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-email"
|
||||||
|
},
|
||||||
|
"name": "E-Mail",
|
||||||
|
"icon": "mail",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "gimp"
|
||||||
|
},
|
||||||
|
"name": "GIMP",
|
||||||
|
"icon": "gimp",
|
||||||
|
"iconTheme": "simple-icons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open ~"
|
||||||
|
},
|
||||||
|
"name": "File Browser",
|
||||||
|
"icon": "folder_shared",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "x-terminal-emulator"
|
||||||
|
},
|
||||||
|
"name": "Terminal",
|
||||||
|
"icon": "terminal",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Web Links",
|
||||||
|
"icon": "public",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "uri",
|
||||||
|
"data": {
|
||||||
|
"uri": "https://www.google.com"
|
||||||
|
},
|
||||||
|
"name": "Google",
|
||||||
|
"icon": "google",
|
||||||
|
"iconTheme": "simple-icons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "uri",
|
||||||
|
"data": {
|
||||||
|
"uri": "https://github.com/kando-menu/kando"
|
||||||
|
},
|
||||||
|
"name": "Kando on GitHub",
|
||||||
|
"icon": "github",
|
||||||
|
"iconTheme": "simple-icons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "uri",
|
||||||
|
"data": {
|
||||||
|
"uri": "https://ko-fi.com/schneegans"
|
||||||
|
},
|
||||||
|
"name": "Kando on Ko-fi",
|
||||||
|
"icon": "kofi",
|
||||||
|
"iconTheme": "simple-icons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "uri",
|
||||||
|
"data": {
|
||||||
|
"uri": "https://www.youtube.com/@simonschneegans"
|
||||||
|
},
|
||||||
|
"name": "Kando on YouTube",
|
||||||
|
"icon": "youtube",
|
||||||
|
"iconTheme": "simple-icons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "uri",
|
||||||
|
"data": {
|
||||||
|
"uri": "https://discord.gg/hZwbVSDkhy"
|
||||||
|
},
|
||||||
|
"name": "Kando on Discord",
|
||||||
|
"icon": "discord",
|
||||||
|
"iconTheme": "simple-icons"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Next Workspace",
|
||||||
|
"icon": "arrow_circle_right",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-down",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Clipboard",
|
||||||
|
"icon": "assignment",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+KeyV",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Paste",
|
||||||
|
"icon": "content_paste_go",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"angle": 90
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+KeyC",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Copy",
|
||||||
|
"icon": "content_copy",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+KeyX",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Cut",
|
||||||
|
"icon": "cut",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Audio",
|
||||||
|
"icon": "play_circle",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MediaTrackNext",
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"name": "Next Track",
|
||||||
|
"icon": "skip_next",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"angle": 90
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MediaPlayPause",
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"name": "Play / Pause",
|
||||||
|
"icon": "play_pause",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "AudioVolumeMute",
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"name": "Mute",
|
||||||
|
"icon": "music_off",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MediaTrackPrevious",
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"name": "Previous Track",
|
||||||
|
"icon": "skip_previous",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"angle": 270
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Windows",
|
||||||
|
"icon": "select_window",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MetaLeft+ArrowUp",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Toggle Maximize",
|
||||||
|
"icon": "open_in_full",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"angle": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MetaLeft+ArrowRight",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Tile Right",
|
||||||
|
"icon": "text_select_jump_to_end",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"angle": 90
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "AltLeft+F4",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Close Window",
|
||||||
|
"icon": "cancel_presentation",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MetaLeft+ArrowLeft",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Tile Left",
|
||||||
|
"icon": "text_select_jump_to_beginning",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"angle": 270
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Previous Workspace",
|
||||||
|
"icon": "arrow_circle_left",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-up",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Bookmarks",
|
||||||
|
"icon": "folder_special",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open \"$(xdg-user-dir DOWNLOAD)\""
|
||||||
|
},
|
||||||
|
"name": "Downloads",
|
||||||
|
"icon": "download",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open \"$(xdg-user-dir VIDEOS)\""
|
||||||
|
},
|
||||||
|
"name": "Videos",
|
||||||
|
"icon": "video_camera_front",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open \"$(xdg-user-dir PICTURES)\""
|
||||||
|
},
|
||||||
|
"name": "Pictures",
|
||||||
|
"icon": "imagesmode",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open \"$(xdg-user-dir DOCUMENTS)\""
|
||||||
|
},
|
||||||
|
"name": "Documents",
|
||||||
|
"icon": "text_ad",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open \"$(xdg-user-dir DESKTOP)\""
|
||||||
|
},
|
||||||
|
"name": "Desktop",
|
||||||
|
"icon": "desktop_windows",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open ~"
|
||||||
|
},
|
||||||
|
"name": "Home",
|
||||||
|
"icon": "home",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open \"$(xdg-user-dir MUSIC)\""
|
||||||
|
},
|
||||||
|
"name": "Music",
|
||||||
|
"icon": "music_note",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"anchored": false,
|
||||||
|
"hoverMode": false,
|
||||||
|
"conditions": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shortcut": "",
|
||||||
|
"shortcutID": "default-menu",
|
||||||
|
"centered": false,
|
||||||
|
"anchored": false,
|
||||||
|
"hoverMode": false,
|
||||||
|
"tags": [],
|
||||||
|
"root": {
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Default Menu",
|
||||||
|
"icon": "nixos",
|
||||||
|
"iconTheme": "simple-icons-colored",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Toggle Float",
|
||||||
|
"icon": "float_landscape_2",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MetaLeft+ShiftLeft+KeyT",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Up",
|
||||||
|
"icon": "arrow_circle_up",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-up",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"angle": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Media",
|
||||||
|
"icon": "headphones",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {},
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Next",
|
||||||
|
"icon": "skip_next",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MediaTrackNext",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Play|Pause",
|
||||||
|
"icon": "play_pause",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MediaPlayPause",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Previous",
|
||||||
|
"icon": "skip_previous",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MediaTrackPrevious",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"angle": 90
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Down",
|
||||||
|
"icon": "arrow_circle_down",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-down",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"angle": 180
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shortcut": "",
|
||||||
|
"shortcutID": "zen-browser",
|
||||||
|
"centered": false,
|
||||||
|
"anchored": false,
|
||||||
|
"hoverMode": false,
|
||||||
|
"tags": [],
|
||||||
|
"root": {
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Zen Browser",
|
||||||
|
"icon": "zenbrowser",
|
||||||
|
"iconTheme": "simple-icons-colored",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Split V",
|
||||||
|
"icon": "split_scene_up",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+AltLeft+KeyH",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Up",
|
||||||
|
"icon": "arrow_circle_up",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-up",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"angle": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Unsplit",
|
||||||
|
"icon": "tab",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+AltLeft+KeyU",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"angle": 90
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Down",
|
||||||
|
"icon": "arrow_circle_down",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-down",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"angle": 180
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Split H",
|
||||||
|
"icon": "split_scene_left",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+AltLeft+KeyV",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shortcut": "",
|
||||||
|
"shortcutID": "gimp-menu",
|
||||||
|
"centered": false,
|
||||||
|
"anchored": false,
|
||||||
|
"hoverMode": false,
|
||||||
|
"tags": [],
|
||||||
|
"root": {
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "GIMP",
|
||||||
|
"icon": "gimp",
|
||||||
|
"iconTheme": "simple-icons-colored",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Up",
|
||||||
|
"icon": "arrow_circle_up",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-up",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"angle": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Layers",
|
||||||
|
"icon": "layers",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "New Layer",
|
||||||
|
"icon": "add",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ShiftLeft+ControlLeft+KeyN",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Duplicate Layer",
|
||||||
|
"icon": "content_copy",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ShiftLeft+ControlLeft+KeyD",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Merge Down",
|
||||||
|
"icon": "merge_type",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+KeyE",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Merge Visible",
|
||||||
|
"icon": "layers_clear",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ShiftLeft+ControlLeft+KeyM",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "New from Visible",
|
||||||
|
"icon": "auto_fix_high",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ShiftLeft+ControlLeft+AltLeft+KeyN",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Tools",
|
||||||
|
"icon": "brush",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Paintbrush",
|
||||||
|
"icon": "brush",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "KeyP",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Eraser",
|
||||||
|
"icon": "cleaning_services",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ShiftLeft+KeyE",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Move",
|
||||||
|
"icon": "open_with",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "KeyM",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Rectangle Select",
|
||||||
|
"icon": "rectangle",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "KeyR",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Ellipse Select",
|
||||||
|
"icon": "lens",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "KeyE",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Color Picker",
|
||||||
|
"icon": "colorize",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "KeyO",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Zoom",
|
||||||
|
"icon": "zoom_in",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "KeyZ",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Text",
|
||||||
|
"icon": "text_fields",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "KeyT",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Down",
|
||||||
|
"icon": "arrow_circle_down",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-up",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"angle": 180
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Ruler",
|
||||||
|
"icon": "align_flex_end",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+ShiftLeft+KeyR",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"collections": [
|
||||||
|
{
|
||||||
|
"name": "Favorites",
|
||||||
|
"icon": "favorite",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"tags": [
|
||||||
|
"favs"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
536
.config/kando/menus.json.bak
Normal file
|
|
@ -0,0 +1,536 @@
|
||||||
|
{
|
||||||
|
"menus": [
|
||||||
|
{
|
||||||
|
"shortcut": "Control+Space",
|
||||||
|
"shortcutID": "example-menu",
|
||||||
|
"centered": false,
|
||||||
|
"root": {
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Example Menu",
|
||||||
|
"icon": "award_star",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Apps",
|
||||||
|
"icon": "apps",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "x-www-browser"
|
||||||
|
},
|
||||||
|
"name": "Web Browser",
|
||||||
|
"icon": "globe",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-email"
|
||||||
|
},
|
||||||
|
"name": "E-Mail",
|
||||||
|
"icon": "mail",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "gimp"
|
||||||
|
},
|
||||||
|
"name": "GIMP",
|
||||||
|
"icon": "gimp",
|
||||||
|
"iconTheme": "simple-icons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open ~"
|
||||||
|
},
|
||||||
|
"name": "File Browser",
|
||||||
|
"icon": "folder_shared",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "x-terminal-emulator"
|
||||||
|
},
|
||||||
|
"name": "Terminal",
|
||||||
|
"icon": "terminal",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Web Links",
|
||||||
|
"icon": "public",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "uri",
|
||||||
|
"data": {
|
||||||
|
"uri": "https://www.google.com"
|
||||||
|
},
|
||||||
|
"name": "Google",
|
||||||
|
"icon": "google",
|
||||||
|
"iconTheme": "simple-icons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "uri",
|
||||||
|
"data": {
|
||||||
|
"uri": "https://github.com/kando-menu/kando"
|
||||||
|
},
|
||||||
|
"name": "Kando on GitHub",
|
||||||
|
"icon": "github",
|
||||||
|
"iconTheme": "simple-icons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "uri",
|
||||||
|
"data": {
|
||||||
|
"uri": "https://ko-fi.com/schneegans"
|
||||||
|
},
|
||||||
|
"name": "Kando on Ko-fi",
|
||||||
|
"icon": "kofi",
|
||||||
|
"iconTheme": "simple-icons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "uri",
|
||||||
|
"data": {
|
||||||
|
"uri": "https://www.youtube.com/@simonschneegans"
|
||||||
|
},
|
||||||
|
"name": "Kando on YouTube",
|
||||||
|
"icon": "youtube",
|
||||||
|
"iconTheme": "simple-icons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "uri",
|
||||||
|
"data": {
|
||||||
|
"uri": "https://discord.gg/hZwbVSDkhy"
|
||||||
|
},
|
||||||
|
"name": "Kando on Discord",
|
||||||
|
"icon": "discord",
|
||||||
|
"iconTheme": "simple-icons"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Next Workspace",
|
||||||
|
"icon": "arrow_circle_right",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-down",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Clipboard",
|
||||||
|
"icon": "assignment",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+KeyV",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Paste",
|
||||||
|
"icon": "content_paste_go",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"angle": 90
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+KeyC",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Copy",
|
||||||
|
"icon": "content_copy",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+KeyX",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Cut",
|
||||||
|
"icon": "cut",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Audio",
|
||||||
|
"icon": "play_circle",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MediaTrackNext",
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"name": "Next Track",
|
||||||
|
"icon": "skip_next",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"angle": 90
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MediaPlayPause",
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"name": "Play / Pause",
|
||||||
|
"icon": "play_pause",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "AudioVolumeMute",
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"name": "Mute",
|
||||||
|
"icon": "music_off",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MediaTrackPrevious",
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"name": "Previous Track",
|
||||||
|
"icon": "skip_previous",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"angle": 270
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Windows",
|
||||||
|
"icon": "select_window",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MetaLeft+ArrowUp",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Toggle Maximize",
|
||||||
|
"icon": "open_in_full",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"angle": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MetaLeft+ArrowRight",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Tile Right",
|
||||||
|
"icon": "text_select_jump_to_end",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"angle": 90
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "AltLeft+F4",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Close Window",
|
||||||
|
"icon": "cancel_presentation",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MetaLeft+ArrowLeft",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"name": "Tile Left",
|
||||||
|
"icon": "text_select_jump_to_beginning",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"angle": 270
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Previous Workspace",
|
||||||
|
"icon": "arrow_circle_left",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-up",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Bookmarks",
|
||||||
|
"icon": "folder_special",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open \"$(xdg-user-dir DOWNLOAD)\""
|
||||||
|
},
|
||||||
|
"name": "Downloads",
|
||||||
|
"icon": "download",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open \"$(xdg-user-dir VIDEOS)\""
|
||||||
|
},
|
||||||
|
"name": "Videos",
|
||||||
|
"icon": "video_camera_front",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open \"$(xdg-user-dir PICTURES)\""
|
||||||
|
},
|
||||||
|
"name": "Pictures",
|
||||||
|
"icon": "imagesmode",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open \"$(xdg-user-dir DOCUMENTS)\""
|
||||||
|
},
|
||||||
|
"name": "Documents",
|
||||||
|
"icon": "text_ad",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open \"$(xdg-user-dir DESKTOP)\""
|
||||||
|
},
|
||||||
|
"name": "Desktop",
|
||||||
|
"icon": "desktop_windows",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open ~"
|
||||||
|
},
|
||||||
|
"name": "Home",
|
||||||
|
"icon": "home",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"data": {
|
||||||
|
"command": "xdg-open \"$(xdg-user-dir MUSIC)\""
|
||||||
|
},
|
||||||
|
"name": "Music",
|
||||||
|
"icon": "music_note",
|
||||||
|
"iconTheme": "material-symbols-rounded"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"anchored": false,
|
||||||
|
"hoverMode": false,
|
||||||
|
"conditions": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shortcut": "",
|
||||||
|
"shortcutID": "default-menu",
|
||||||
|
"centered": false,
|
||||||
|
"anchored": false,
|
||||||
|
"hoverMode": false,
|
||||||
|
"tags": [],
|
||||||
|
"root": {
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Default Menu",
|
||||||
|
"icon": "nixos",
|
||||||
|
"iconTheme": "simple-icons-colored",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Toggle Float",
|
||||||
|
"icon": "float_landscape_2",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MetaLeft+ShiftLeft+KeyT",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Up",
|
||||||
|
"icon": "arrow_circle_up",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-up",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"angle": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Media",
|
||||||
|
"icon": "headphones",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {},
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Next",
|
||||||
|
"icon": "skip_next",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MediaTrackNext",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Play|Pause",
|
||||||
|
"icon": "play_pause",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MediaPlayPause",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Previous",
|
||||||
|
"icon": "skip_previous",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "MediaTrackPrevious",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"angle": 90
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Down",
|
||||||
|
"icon": "arrow_circle_down",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-down",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"angle": 180
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shortcut": "",
|
||||||
|
"shortcutID": "zen-browser",
|
||||||
|
"centered": false,
|
||||||
|
"anchored": false,
|
||||||
|
"hoverMode": false,
|
||||||
|
"tags": [],
|
||||||
|
"root": {
|
||||||
|
"type": "submenu",
|
||||||
|
"name": "Zen Browser",
|
||||||
|
"icon": "zenbrowser",
|
||||||
|
"iconTheme": "simple-icons-colored",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Split V",
|
||||||
|
"icon": "split_scene_up",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+AltLeft+KeyH",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Up",
|
||||||
|
"icon": "arrow_circle_up",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-up",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"angle": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Unsplit",
|
||||||
|
"icon": "tab",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+AltLeft+KeyU",
|
||||||
|
"delayed": true
|
||||||
|
},
|
||||||
|
"angle": 90
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"name": "Down",
|
||||||
|
"icon": "arrow_circle_down",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"command": "niri msg action focus-workspace-down",
|
||||||
|
"detached": true,
|
||||||
|
"isolated": false,
|
||||||
|
"delayed": false
|
||||||
|
},
|
||||||
|
"angle": 180
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "hotkey",
|
||||||
|
"name": "Split H",
|
||||||
|
"icon": "split_scene_left",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"data": {
|
||||||
|
"hotkey": "ControlLeft+AltLeft+KeyV",
|
||||||
|
"delayed": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"collections": [
|
||||||
|
{
|
||||||
|
"name": "Favorites",
|
||||||
|
"icon": "favorite",
|
||||||
|
"iconTheme": "material-symbols-rounded",
|
||||||
|
"tags": [
|
||||||
|
"favs"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
.config/kando/session/Cache/Cache_Data/42823f702e429c78_0
Normal file
BIN
.config/kando/session/Cache/Cache_Data/5283edf90cf4ab50_0
Normal file
BIN
.config/kando/session/Cache/Cache_Data/index
Normal file
BIN
.config/kando/session/Cache/Cache_Data/index-dir/the-real-index
Normal file
BIN
.config/kando/session/Code Cache/js/index
Normal file
BIN
.config/kando/session/Code Cache/js/index-dir/the-real-index
Normal file
BIN
.config/kando/session/Code Cache/wasm/index
Normal file
BIN
.config/kando/session/Code Cache/wasm/index-dir/the-real-index
Normal file
BIN
.config/kando/session/DIPS
Normal file
BIN
.config/kando/session/DIPS-wal
Normal file
BIN
.config/kando/session/DawnGraphiteCache/data_0
Normal file
BIN
.config/kando/session/DawnGraphiteCache/data_1
Normal file
BIN
.config/kando/session/DawnGraphiteCache/data_2
Normal file
BIN
.config/kando/session/DawnGraphiteCache/data_3
Normal file
BIN
.config/kando/session/DawnGraphiteCache/index
Normal file
BIN
.config/kando/session/DawnWebGPUCache/data_0
Normal file
BIN
.config/kando/session/DawnWebGPUCache/data_1
Normal file
BIN
.config/kando/session/DawnWebGPUCache/data_2
Normal file
BIN
.config/kando/session/DawnWebGPUCache/data_3
Normal file
BIN
.config/kando/session/DawnWebGPUCache/index
Normal file
BIN
.config/kando/session/Dictionaries/en-US-10-1.bdic
Normal file
BIN
.config/kando/session/GPUCache/data_0
Normal file
BIN
.config/kando/session/GPUCache/data_1
Normal file
BIN
.config/kando/session/GPUCache/data_2
Normal file
BIN
.config/kando/session/GPUCache/data_3
Normal file
BIN
.config/kando/session/GPUCache/index
Normal file
BIN
.config/kando/session/Local Storage/leveldb/000003.log
Normal file
1
.config/kando/session/Local Storage/leveldb/CURRENT
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
MANIFEST-000001
|
||||||
0
.config/kando/session/Local Storage/leveldb/LOCK
Normal file
3
.config/kando/session/Local Storage/leveldb/LOG
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
2026/02/04-18:01:58.808 1593 Reusing MANIFEST /home/nicole/.config/kando/session/Local Storage/leveldb/MANIFEST-000001
|
||||||
|
2026/02/04-18:01:58.810 1593 Recovering log #3
|
||||||
|
2026/02/04-18:01:58.810 1593 Reusing old log /home/nicole/.config/kando/session/Local Storage/leveldb/000003.log
|
||||||
3
.config/kando/session/Local Storage/leveldb/LOG.old
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
2026/02/04-15:27:15.910 c528 Reusing MANIFEST /home/nicole/.config/kando/session/Local Storage/leveldb/MANIFEST-000001
|
||||||
|
2026/02/04-15:27:15.912 c528 Recovering log #3
|
||||||
|
2026/02/04-15:27:15.913 c528 Reusing old log /home/nicole/.config/kando/session/Local Storage/leveldb/000003.log
|
||||||