Merge branch 'main' into desktop-widgets

This commit is contained in:
Lemmy
2025-12-14 12:27:34 -05:00
36 changed files with 1075 additions and 227 deletions
+591
View File
@@ -0,0 +1,591 @@
{
"$schema": "https://zed.dev/schema/themes/v0.2.0.json",
"name": "Noctalia",
"author": "Noctalia",
"themes": [
{
"name": "Noctalia Dark",
"appearance": "dark",
"style": {
"accents": [
"{{colors.primary.dark.hex}}",
"{{colors.secondary.dark.hex}}",
"{{colors.tertiary.dark.hex}}"
],
"background.appearance": "opaque",
"border": "{{colors.outline_variant.dark.hex}}",
"border.variant": "{{colors.outline.dark.hex}}",
"border.focused": "{{colors.primary.dark.hex}}",
"border.selected": "{{colors.primary.dark.hex}}",
"border.transparent": "{{colors.outline_variant.dark.hex}}40",
"border.disabled": "{{colors.outline_variant.dark.hex}}60",
"elevated_surface.background": "{{colors.surface_container_high.dark.hex}}",
"surface.background": "{{colors.surface.dark.hex}}",
"background": "{{colors.background.dark.hex}}",
"element.background": "{{colors.surface_container.dark.hex}}",
"element.hover": "{{colors.surface_container_high.dark.hex}}",
"element.active": "{{colors.surface_container_highest.dark.hex}}",
"element.selected": "{{colors.secondary_container.dark.hex}}",
"element.disabled": "{{colors.surface_variant.dark.hex}}",
"drop_target.background": "{{colors.primary_container.dark.hex}}80",
"ghost_element.background": null,
"ghost_element.hover": "{{colors.surface_container.dark.hex}}80",
"ghost_element.active": "{{colors.surface_container_high.dark.hex}}",
"ghost_element.selected": "{{colors.secondary_container.dark.hex}}80",
"ghost_element.disabled": "{{colors.surface_variant.dark.hex}}60",
"text": "{{colors.on_surface.dark.hex}}",
"text.muted": "{{colors.on_surface_variant.dark.hex}}",
"text.placeholder": "{{colors.on_surface_variant.dark.hex}}99",
"text.disabled": "{{colors.on_surface.dark.hex}}60",
"text.accent": "{{colors.primary.dark.hex}}",
"icon": "{{colors.on_surface.dark.hex}}",
"icon.muted": "{{colors.on_surface_variant.dark.hex}}",
"icon.disabled": "{{colors.on_surface.dark.hex}}60",
"icon.placeholder": "{{colors.on_surface_variant.dark.hex}}80",
"icon.accent": "{{colors.primary.dark.hex}}",
"status_bar.background": "{{colors.surface.dark.hex}}",
"title_bar.background": "{{colors.surface.dark.hex}}",
"title_bar.inactive_background": "{{colors.surface_dim.dark.hex}}",
"toolbar.background": "{{colors.surface_container_low.dark.hex}}",
"tab_bar.background": "{{colors.surface_container.dark.hex}}",
"tab.inactive_backgorround": "{{colors.surface_container_low.dark.hex}}",
"tab.active_background": "{{colors.surface_container_high.dark.hex}}",
"search.match_background": "{{colors.tertiary_container.dark.hex}}80",
"panel.background": "{{colors.surface_container_low.dark.hex}}",
"panel.focused_border": "{{colors.primary.dark.hex}}",
"pane.focused_border": "{{colors.primary.dark.hex}}",
"scrollbar.thumb.background": "{{colors.on_surface_variant.dark.hex}}80",
"scrollbar.thumb.hover_background": "{{colors.on_surface_variant.dark.hex}}c0",
"scrollbar.thumb.border": "{{colors.outline_variant.dark.hex}}40",
"scrollbar.track.background": "{{colors.surface_container.dark.hex}}",
"scrollbar.track.border": "{{colors.outline_variant.dark.hex}}20",
"editor.foreground": "{{colors.on_surface.dark.hex}}",
"editor.background": "{{colors.surface_container_low.dark.hex}}",
"editor.gutter.background": "{{colors.surface_container_low.dark.hex}}",
"editor.subheader.background": "{{colors.surface_container.dark.hex}}",
"editor.indent_guide": "{{colors.outline_variant.dark.hex}}60",
"editor.indent_guide_active": "{{colors.outline.dark.hex}}",
"editor.active_line.background": "{{colors.surface_container_high.dark.hex}}80",
"editor.highlighted_line.background": "{{colors.surface_container_high.dark.hex}}60",
"editor.line_number": "{{colors.on_surface_variant.dark.hex}}",
"editor.active_line_number": "{{colors.primary.dark.hex}}",
"editor.invisible": "{{colors.outline_variant.dark.hex}}80",
"editor.wrap_guide": "{{colors.outline_variant.dark.hex}}40",
"editor.active_wrap_guide": "{{colors.outline.dark.hex}}80",
"editor.document_highlight.read_background": "{{colors.primary_container.dark.hex}}60",
"editor.document_highlight.write_background": "{{colors.secondary_container.dark.hex}}80",
"terminal.background": "{{colors.surface_container_low.dark.hex}}",
"terminal.foreground": "{{colors.on_surface.dark.hex}}",
"terminal.bright_foreground": "{{colors.on_surface.dark.hex}}",
"terminal.dim_foreground": "{{colors.on_surface_variant.dark.hex}}",
"terminal.ansi.black": "{{colors.surface_dim.dark.hex}}",
"terminal.ansi.bright_black": "{{colors.surface_container_high.dark.hex}}",
"terminal.ansi.dim_black": "{{colors.surface.dark.hex}}",
"terminal.ansi.red": "{{colors.error.dark.hex}}",
"terminal.ansi.bright_red": "{{colors.error.dark.hex}}",
"terminal.ansi.dim_red": "{{colors.on_error_container.dark.hex}}",
"terminal.ansi.green": "{{colors.tertiary.dark.hex}}",
"terminal.ansi.bright_green": "{{colors.tertiary.dark.hex}}",
"terminal.ansi.dim_green": "{{colors.on_tertiary_container.dark.hex}}",
"terminal.ansi.yellow": "{{colors.tertiary_fixed_dim.dark.hex}}",
"terminal.ansi.bright_yellow": "{{colors.tertiary_fixed.dark.hex}}",
"terminal.ansi.dim_yellow": "{{colors.on_tertiary_fixed.dark.hex}}",
"terminal.ansi.blue": "{{colors.primary.dark.hex}}",
"terminal.ansi.bright_blue": "{{colors.primary.dark.hex}}",
"terminal.ansi.dim_blue": "{{colors.on_primary_container.dark.hex}}",
"terminal.ansi.magenta": "{{colors.secondary.dark.hex}}",
"terminal.ansi.bright_magenta": "{{colors.secondary.dark.hex}}",
"terminal.ansi.dim_magenta": "{{colors.on_secondary_container.dark.hex}}",
"terminal.ansi.cyan": "{{colors.primary_fixed_dim.dark.hex}}",
"terminal.ansi.bright_cyan": "{{colors.primary_fixed.dark.hex}}",
"terminal.ansi.dim_cyan": "{{colors.on_primary_fixed_variant.dark.hex}}",
"terminal.ansi.white": "{{colors.on_surface.dark.hex}}",
"terminal.ansi.bright_white": "{{colors.on_surface.dark.hex}}",
"terminal.ansi.dim_white": "{{colors.on_surface_variant.dark.hex}}",
"link_text.hover": "{{colors.primary.dark.hex}}",
"conflict": "{{colors.error.dark.hex}}",
"conflict.background": "{{colors.error_container.dark.hex}}80",
"conflict.border": "{{colors.on_error_container.dark.hex}}",
"created": "{{colors.tertiary.dark.hex}}",
"created.background": "{{colors.tertiary_container.dark.hex}}80",
"created.border": "{{colors.on_tertiary_container.dark.hex}}",
"deleted": "{{colors.error.dark.hex}}",
"deleted.background": "{{colors.error_container.dark.hex}}80",
"deleted.border": "{{colors.on_error_container.dark.hex}}",
"error": "{{colors.error.dark.hex}}",
"error.background": "{{colors.error_container.dark.hex}}",
"error.border": "{{colors.on_error_container.dark.hex}}",
"hidden": "{{colors.outline_variant.dark.hex}}",
"hidden.border": "{{colors.outline_variant.dark.hex}}60",
"hint": "{{colors.primary.dark.hex}}",
"hint.background": "{{colors.primary_container.dark.hex}}80",
"hint.border": "{{colors.on_primary_container.dark.hex}}",
"ignored": "{{colors.on_surface_variant.dark.hex}}60",
"ignored.background": "{{colors.surface_variant.dark.hex}}40",
"ignored.border": "{{colors.outline_variant.dark.hex}}40",
"info": "{{colors.primary.dark.hex}}",
"info.background": "{{colors.primary_container.dark.hex}}80",
"info.border": "{{colors.on_primary_container.dark.hex}}",
"modified": "{{colors.secondary.dark.hex}}",
"modified.background": "{{colors.secondary_container.dark.hex}}80",
"modified.border": "{{colors.on_secondary_container.dark.hex}}",
"predictive": "{{colors.on_surface_variant.dark.hex}}80",
"predictive.border": "{{colors.outline.dark.hex}}",
"predictive.background": "{{colors.surface_container_highest.dark.hex}}80",
"renamed": "{{colors.secondary.dark.hex}}",
"renamed.border": "{{colors.on_secondary_container.dark.hex}}",
"renamed.background": "{{colors.secondary_container.dark.hex}}80",
"success": "{{colors.tertiary.dark.hex}}",
"success.background": "{{colors.tertiary_container.dark.hex}}80",
"success.border": "{{colors.on_tertiary_container.dark.hex}}",
"unreachable": "{{colors.on_surface_variant.dark.hex}}60",
"unreachable.background": "{{colors.surface_variant.dark.hex}}40",
"unreachable.border": "{{colors.outline_variant.dark.hex}}60",
"warning": "{{colors.tertiary_fixed_dim.dark.hex}}",
"warning.background": "{{colors.tertiary_container.dark.hex}}80",
"warning.border": "{{colors.on_tertiary_container.dark.hex}}",
"players": [
{
"cursor": "{{colors.primary.dark.hex}}",
"background": "{{colors.primary_container.dark.hex}}80",
"selection": "{{colors.primary_container.dark.hex}}60"
},
{
"cursor": "{{colors.secondary.dark.hex}}",
"background": "{{colors.secondary_container.dark.hex}}80",
"selection": "{{colors.secondary_container.dark.hex}}60"
}
],
"syntax": {
"boolean": {
"color": "{{colors.tertiary.dark.hex}}",
"font_style": null,
"font_weight": null
},
"comment": {
"color": "{{colors.on_surface_variant.dark.hex}}",
"font_style": "italic",
"font_weight": null
},
"comment.doc": {
"color": "{{colors.on_surface_variant.dark.hex}}",
"font_style": "italic",
"font_weight": null
},
"constant": {
"color": "{{colors.tertiary.dark.hex}}",
"font_style": null,
"font_weight": null
},
"constructor": {
"color": "{{colors.secondary.dark.hex}}",
"font_style": null,
"font_weight": null
},
"emphasis": {
"color": "{{colors.primary.dark.hex}}",
"font_style": "italic",
"font_weight": null
},
"emphasis.strong": {
"color": "{{colors.primary.dark.hex}}",
"font_style": null,
"font_weight": 700
},
"function": {
"color": "{{colors.primary.dark.hex}}",
"font_style": null,
"font_weight": null
},
"keyword": {
"color": "{{colors.secondary.dark.hex}}",
"font_style": null,
"font_weight": null
},
"number": {
"color": "{{colors.tertiary_fixed.dark.hex}}",
"font_style": null,
"font_weight": null
},
"operator": {
"color": "{{colors.on_surface_variant.dark.hex}}",
"font_style": null,
"font_weight": null
},
"property": {
"color": "{{colors.on_surface.dark.hex}}",
"font_style": null,
"font_weight": null
},
"punctuation": {
"color": "{{colors.on_surface_variant.dark.hex}}",
"font_style": null,
"font_weight": null
},
"punctuation.bracket": {
"color": "{{colors.secondary_fixed.dark.hex}}",
"font_style": null,
"font_weight": null
},
"punctuation.delimiter": {
"color": "{{colors.on_surface_variant.dark.hex}}",
"font_style": null,
"font_weight": null
},
"punctuation.list_marker": {
"color": "{{colors.on_surface_variant.dark.hex}}",
"font_style": null,
"font_weight": null
},
"punctuation.special": {
"color": "{{colors.secondary.dark.hex}}",
"font_style": null,
"font_weight": null
},
"string": {
"color": "{{colors.tertiary.dark.hex}}",
"font_style": null,
"font_weight": null
},
"string.escape": {
"color": "{{colors.tertiary_fixed_dim.dark.hex}}",
"font_style": null,
"font_weight": null
},
"string.regex": {
"color": "{{colors.tertiary_fixed.dark.hex}}",
"font_style": null,
"font_weight": null
},
"string.special": {
"color": "{{colors.on_tertiary_container.dark.hex}}",
"font_style": null,
"font_weight": null
},
"string.special.symbol": {
"color": "{{colors.tertiary.dark.hex}}",
"font_style": null,
"font_weight": null
},
"tag": {
"color": "{{colors.secondary.dark.hex}}",
"font_style": null,
"font_weight": null
},
"text.literal": {
"color": "{{colors.tertiary.dark.hex}}",
"font_style": null,
"font_weight": null
},
"type": {
"color": "{{colors.primary_fixed.dark.hex}}",
"font_style": null,
"font_weight": null
},
"variable": {
"color": "{{colors.on_surface.dark.hex}}",
"font_style": null,
"font_weight": null
},
"variable.special": {
"color": "{{colors.primary.dark.hex}}",
"font_style": null,
"font_weight": null
}
}
}
},
{
"name": "Noctalia Light",
"appearance": "light",
"style": {
"accents": [
"{{colors.primary.light.hex}}",
"{{colors.secondary.light.hex}}",
"{{colors.tertiary.light.hex}}"
],
"background.appearance": "opaque",
"border": "{{colors.outline_variant.light.hex}}",
"border.variant": "{{colors.outline.light.hex}}",
"border.focused": "{{colors.primary.light.hex}}",
"border.selected": "{{colors.primary.light.hex}}",
"border.transparent": "{{colors.outline_variant.light.hex}}40",
"border.disabled": "{{colors.outline_variant.light.hex}}60",
"elevated_surface.background": "{{colors.surface_container_high.light.hex}}",
"surface.background": "{{colors.surface.light.hex}}",
"background": "{{colors.background.light.hex}}",
"element.background": "{{colors.surface_container.light.hex}}",
"element.hover": "{{colors.surface_container_high.light.hex}}",
"element.active": "{{colors.surface_container_highest.light.hex}}",
"element.selected": "{{colors.secondary_container.light.hex}}",
"element.disabled": "{{colors.surface_variant.light.hex}}",
"drop_target.background": "{{colors.primary_container.light.hex}}80",
"ghost_element.background": null,
"ghost_element.hover": "{{colors.surface_container.light.hex}}80",
"ghost_element.active": "{{colors.surface_container_high.light.hex}}",
"ghost_element.selected": "{{colors.secondary_container.light.hex}}80",
"ghost_element.disabled": "{{colors.surface_variant.light.hex}}60",
"text": "{{colors.on_surface.light.hex}}",
"text.muted": "{{colors.on_surface_variant.light.hex}}",
"text.placeholder": "{{colors.on_surface_variant.light.hex}}99",
"text.disabled": "{{colors.on_surface.light.hex}}60",
"text.accent": "{{colors.primary.light.hex}}",
"icon": "{{colors.on_surface.light.hex}}",
"icon.muted": "{{colors.on_surface_variant.light.hex}}",
"icon.disabled": "{{colors.on_surface.light.hex}}60",
"icon.placeholder": "{{colors.on_surface_variant.light.hex}}80",
"icon.accent": "{{colors.primary.light.hex}}",
"status_bar.background": "{{colors.surface.light.hex}}",
"title_bar.background": "{{colors.surface.light.hex}}",
"title_bar.inactive_background": "{{colors.surface_dim.light.hex}}",
"toolbar.background": "{{colors.surface_container_low.light.hex}}",
"tab_bar.background": "{{colors.surface_container.light.hex}}",
"tab.inactive_backgorround": "{{colors.surface_container_low.light.hex}}",
"tab.active_background": "{{colors.surface_container_high.light.hex}}",
"search.match_background": "{{colors.tertiary_container.light.hex}}80",
"panel.background": "{{colors.surface_container_low.light.hex}}",
"panel.focused_border": "{{colors.primary.light.hex}}",
"pane.focused_border": "{{colors.primary.light.hex}}",
"scrollbar.thumb.background": "{{colors.on_surface_variant.light.hex}}80",
"scrollbar.thumb.hover_background": "{{colors.on_surface_variant.light.hex}}c0",
"scrollbar.thumb.border": "{{colors.outline_variant.light.hex}}40",
"scrollbar.track.background": "{{colors.surface_container.light.hex}}",
"scrollbar.track.border": "{{colors.outline_variant.light.hex}}20",
"editor.foreground": "{{colors.on_surface.light.hex}}",
"editor.background": "{{colors.surface_container_low.light.hex}}",
"editor.gutter.background": "{{colors.surface_container_low.light.hex}}",
"editor.subheader.background": "{{colors.surface_container.light.hex}}",
"editor.indent_guide": "{{colors.outline_variant.light.hex}}60",
"editor.indent_guide_active": "{{colors.outline.light.hex}}",
"editor.active_line.background": "{{colors.surface_container_high.light.hex}}80",
"editor.highlighted_line.background": "{{colors.surface_container_high.light.hex}}60",
"editor.line_number": "{{colors.on_surface_variant.light.hex}}",
"editor.active_line_number": "{{colors.primary.light.hex}}",
"editor.invisible": "{{colors.outline_variant.light.hex}}80",
"editor.wrap_guide": "{{colors.outline_variant.light.hex}}40",
"editor.active_wrap_guide": "{{colors.outline.light.hex}}80",
"editor.document_highlight.read_background": "{{colors.primary_container.light.hex}}60",
"editor.document_highlight.write_background": "{{colors.secondary_container.light.hex}}80",
"terminal.background": "{{colors.surface_container_low.light.hex}}",
"terminal.foreground": "{{colors.on_surface.light.hex}}",
"terminal.bright_foreground": "{{colors.on_surface.light.hex}}",
"terminal.dim_foreground": "{{colors.on_surface_variant.light.hex}}",
"terminal.ansi.black": "{{colors.surface_dim.light.hex}}",
"terminal.ansi.bright_black": "{{colors.surface_container_high.light.hex}}",
"terminal.ansi.dim_black": "{{colors.surface.light.hex}}",
"terminal.ansi.red": "{{colors.error.light.hex}}",
"terminal.ansi.bright_red": "{{colors.error.light.hex}}",
"terminal.ansi.dim_red": "{{colors.on_error_container.light.hex}}",
"terminal.ansi.green": "{{colors.tertiary.light.hex}}",
"terminal.ansi.bright_green": "{{colors.tertiary.light.hex}}",
"terminal.ansi.dim_green": "{{colors.on_tertiary_container.light.hex}}",
"terminal.ansi.yellow": "{{colors.tertiary_fixed_dim.light.hex}}",
"terminal.ansi.bright_yellow": "{{colors.tertiary_fixed.light.hex}}",
"terminal.ansi.dim_yellow": "{{colors.on_tertiary_fixed.light.hex}}",
"terminal.ansi.blue": "{{colors.primary.light.hex}}",
"terminal.ansi.bright_blue": "{{colors.primary.light.hex}}",
"terminal.ansi.dim_blue": "{{colors.on_primary_container.light.hex}}",
"terminal.ansi.magenta": "{{colors.secondary.light.hex}}",
"terminal.ansi.bright_magenta": "{{colors.secondary.light.hex}}",
"terminal.ansi.dim_magenta": "{{colors.on_secondary_container.light.hex}}",
"terminal.ansi.cyan": "{{colors.primary_fixed_dim.light.hex}}",
"terminal.ansi.bright_cyan": "{{colors.primary_fixed.light.hex}}",
"terminal.ansi.dim_cyan": "{{colors.on_primary_fixed_variant.light.hex}}",
"terminal.ansi.white": "{{colors.on_surface.light.hex}}",
"terminal.ansi.bright_white": "{{colors.on_surface.light.hex}}",
"terminal.ansi.dim_white": "{{colors.on_surface_variant.light.hex}}",
"link_text.hover": "{{colors.primary.light.hex}}",
"conflict": "{{colors.error.light.hex}}",
"conflict.background": "{{colors.error_container.light.hex}}80",
"conflict.border": "{{colors.on_error_container.light.hex}}",
"created": "{{colors.tertiary.light.hex}}",
"created.background": "{{colors.tertiary_container.light.hex}}80",
"created.border": "{{colors.on_tertiary_container.light.hex}}",
"deleted": "{{colors.error.light.hex}}",
"deleted.background": "{{colors.error_container.light.hex}}80",
"deleted.border": "{{colors.on_error_container.light.hex}}",
"error": "{{colors.error.light.hex}}",
"error.background": "{{colors.error_container.light.hex}}",
"error.border": "{{colors.on_error_container.light.hex}}",
"hidden": "{{colors.outline_variant.light.hex}}",
"hidden.border": "{{colors.outline_variant.light.hex}}60",
"hint": "{{colors.primary.light.hex}}",
"hint.background": "{{colors.primary_container.light.hex}}80",
"hint.border": "{{colors.on_primary_container.light.hex}}",
"ignored": "{{colors.on_surface_variant.light.hex}}60",
"ignored.background": "{{colors.surface_variant.light.hex}}40",
"ignored.border": "{{colors.outline_variant.light.hex}}40",
"info": "{{colors.primary.light.hex}}",
"info.background": "{{colors.primary_container.light.hex}}80",
"info.border": "{{colors.on_primary_container.light.hex}}",
"modified": "{{colors.secondary.light.hex}}",
"modified.background": "{{colors.secondary_container.light.hex}}80",
"modified.border": "{{colors.on_secondary_container.light.hex}}",
"predictive": "{{colors.on_surface_variant.light.hex}}80",
"predictive.border": "{{colors.outline.light.hex}}",
"predictive.background": "{{colors.surface_container_highest.light.hex}}80",
"renamed": "{{colors.secondary.light.hex}}",
"renamed.border": "{{colors.on_secondary_container.light.hex}}",
"renamed.background": "{{colors.secondary_container.light.hex}}80",
"success": "{{colors.tertiary.light.hex}}",
"success.background": "{{colors.tertiary_container.light.hex}}80",
"success.border": "{{colors.on_tertiary_container.light.hex}}",
"unreachable": "{{colors.on_surface_variant.light.hex}}60",
"unreachable.background": "{{colors.surface_variant.light.hex}}40",
"unreachable.border": "{{colors.outline_variant.light.hex}}60",
"warning": "{{colors.tertiary_fixed_dim.light.hex}}",
"warning.background": "{{colors.tertiary_container.light.hex}}80",
"warning.border": "{{colors.on_tertiary_container.light.hex}}",
"players": [
{
"cursor": "{{colors.primary.light.hex}}",
"background": "{{colors.primary_container.light.hex}}80",
"selection": "{{colors.primary_container.light.hex}}60"
},
{
"cursor": "{{colors.secondary.light.hex}}",
"background": "{{colors.secondary_container.light.hex}}80",
"selection": "{{colors.secondary_container.light.hex}}60"
}
],
"syntax": {
"boolean": {
"color": "{{colors.tertiary.light.hex}}",
"font_style": null,
"font_weight": null
},
"comment": {
"color": "{{colors.on_surface_variant.light.hex}}",
"font_style": "italic",
"font_weight": null
},
"comment.doc": {
"color": "{{colors.on_surface_variant.light.hex}}",
"font_style": "italic",
"font_weight": null
},
"constant": {
"color": "{{colors.tertiary.light.hex}}",
"font_style": null,
"font_weight": null
},
"constructor": {
"color": "{{colors.secondary.light.hex}}",
"font_style": null,
"font_weight": null
},
"emphasis": {
"color": "{{colors.primary.light.hex}}",
"font_style": "italic",
"font_weight": null
},
"emphasis.strong": {
"color": "{{colors.primary.light.hex}}",
"font_style": null,
"font_weight": 700
},
"function": {
"color": "{{colors.primary.light.hex}}",
"font_style": null,
"font_weight": null
},
"keyword": {
"color": "{{colors.secondary.light.hex}}",
"font_style": null,
"font_weight": null
},
"number": {
"color": "{{colors.tertiary_fixed.light.hex}}",
"font_style": null,
"font_weight": null
},
"operator": {
"color": "{{colors.on_surface_variant.light.hex}}",
"font_style": null,
"font_weight": null
},
"property": {
"color": "{{colors.on_surface.light.hex}}",
"font_style": null,
"font_weight": null
},
"punctuation": {
"color": "{{colors.on_surface_variant.light.hex}}",
"font_style": null,
"font_weight": null
},
"punctuation.bracket": {
"color": "{{colors.secondary_fixed.light.hex}}",
"font_style": null,
"font_weight": null
},
"punctuation.delimiter": {
"color": "{{colors.on_surface_variant.light.hex}}",
"font_style": null,
"font_weight": null
},
"punctuation.list_marker": {
"color": "{{colors.on_surface_variant.light.hex}}",
"font_style": null,
"font_weight": null
},
"punctuation.special": {
"color": "{{colors.secondary.light.hex}}",
"font_style": null,
"font_weight": null
},
"string": {
"color": "{{colors.tertiary.light.hex}}",
"font_style": null,
"font_weight": null
},
"string.escape": {
"color": "{{colors.tertiary_fixed_dim.light.hex}}",
"font_style": null,
"font_weight": null
},
"string.regex": {
"color": "{{colors.tertiary_fixed.light.hex}}",
"font_style": null,
"font_weight": null
},
"string.special": {
"color": "{{colors.on_tertiary_container.light.hex}}",
"font_style": null,
"font_weight": null
},
"string.special.symbol": {
"color": "{{colors.tertiary.light.hex}}",
"font_style": null,
"font_weight": null
},
"tag": {
"color": "{{colors.secondary.light.hex}}",
"font_style": null,
"font_weight": null
},
"text.literal": {
"color": "{{colors.tertiary.light.hex}}",
"font_style": null,
"font_weight": null
},
"type": {
"color": "{{colors.primary_fixed.light.hex}}",
"font_style": null,
"font_weight": null
},
"variable": {
"color": "{{colors.on_surface.light.hex}}",
"font_style": null,
"font_weight": null
},
"variable.special": {
"color": "{{colors.primary.light.hex}}",
"font_style": null,
"font_weight": null
}
}
}
}
]
}
+13 -9
View File
@@ -981,10 +981,6 @@
},
"bar": {
"appearance": {
"background-opacity": {
"description": "Hintergrund-Transparenz der Statusleiste anpassen.",
"label": "Hintergrund-Transparenz"
},
"capsule-opacity": {
"description": "Deckkraft der Widget-Hintergründe festlegen, wenn Kapsel angezeigt wird.",
"label": "Kapsel-Deckkraft"
@@ -1018,6 +1014,10 @@
"show-capsule": {
"description": "Widget-Hintergründe anzeigen.",
"label": "Kapsel anzeigen"
},
"transparent": {
"description": "Dies verhindert, dass Paneele an der Stange befestigt werden können.",
"label": "Transparenter Hintergrund"
}
},
"monitors": {
@@ -1189,6 +1189,10 @@
"yazi": {
"description": "Schreibe {Dateipfad}. Flavor muss manuell aktiviert werden.",
"description-missing": "Benötigt die Installation von {app}"
},
"zed": {
"description": "Schreibt {filepath} und lädt neu",
"description-missing": "Erfordert die Installation von {app}"
}
},
"section": {
@@ -1544,10 +1548,6 @@
},
"launcher": {
"settings": {
"background-opacity": {
"description": "Hintergrund-Transparenz des Starters anpassen.",
"label": "Hintergrund-Transparenz"
},
"clip-preview": {
"description": "Zeige eine Vorschau des Inhalts der Zwischenablage an, wenn der Befehl >clip verwendet wird.",
"label": "Clip-Vorschau aktivieren"
@@ -2083,6 +2083,10 @@
"disk-section": {
"label": "Festplattennutzung"
},
"enable-nvidia-gpu": {
"description": "Warnung: Dies aktiviert Ihre NVIDIA-GPU, was die Akkulaufzeit von Laptops mit Hybridgrafik erheblich beeinträchtigen kann.",
"label": "NVIDIA GPU-Überwachung aktivieren"
},
"general": {
"section": {
"description": "Konfigurieren Sie das Verhalten und Aussehen des Systemmonitors.",
@@ -2158,7 +2162,7 @@
"reset": "Deckkraft des gedimmten Desktops zurücksetzen"
},
"panel-background-opacity": {
"description": "Hintergrunddeckkraft für alle Panels festlegen (Launcher, Kontrollzentrum, Einstellungen usw.).",
"description": "Lege die Hintergrundtransparenz für alle Panels fest (Leiste, Starter, Einstellungen, usw.).",
"label": "Panel-Hintergrunddeckkraft"
},
"panels-attached-to-bar": {
+13 -9
View File
@@ -981,10 +981,6 @@
},
"bar": {
"appearance": {
"background-opacity": {
"description": "Adjust the background opacity of the bar.",
"label": "Background opacity"
},
"capsule-opacity": {
"description": "Set the opacity level for widget backgrounds when capsule is shown.",
"label": "Capsule opacity"
@@ -1018,6 +1014,10 @@
"show-capsule": {
"description": "Show widget backgrounds.",
"label": "Show capsule"
},
"transparent": {
"description": "This will prevent panels to attach to the bar.",
"label": "Transparent background"
}
},
"monitors": {
@@ -1189,6 +1189,10 @@
"yazi": {
"description": "Write {filepath}. Flavor needs to be activated manually.",
"description-missing": "Requires {app} to be installed"
},
"zed": {
"description": "Write {filepath} and reload",
"description-missing": "Requires {app} to be installed"
}
},
"section": {
@@ -1633,10 +1637,6 @@
},
"launcher": {
"settings": {
"background-opacity": {
"description": "Adjust the background opacity of the launcher.",
"label": "Background opacity"
},
"clip-preview": {
"description": "Show a preview of the clipboard content when using the >clip command.",
"label": "Enable clip preview"
@@ -2172,6 +2172,10 @@
"disk-section": {
"label": "Disk usage"
},
"enable-nvidia-gpu": {
"description": "Warning: This will wake up your NVIDIA GPU, which may significantly impact battery life on laptops with hybrid graphics.",
"label": "Enable NVIDIA GPU monitoring"
},
"general": {
"section": {
"description": "Configure the system monitor behavior and appearance.",
@@ -2247,7 +2251,7 @@
"reset": "Reset dimmed desktop opacity"
},
"panel-background-opacity": {
"description": "Set the background opacity for all panels (launcher, control center, settings, etc.).",
"description": "Set the background opacity for all panels (bar, launcher, settings, etc...).",
"label": "Panel background opacity"
},
"panels-attached-to-bar": {
+13 -9
View File
@@ -981,10 +981,6 @@
},
"bar": {
"appearance": {
"background-opacity": {
"description": "Ajusta la opacidad del fondo de la barra.",
"label": "Opacidad del fondo"
},
"capsule-opacity": {
"description": "Establecer el nivel de opacidad para los fondos de los widgets cuando se muestra la cápsula.",
"label": "Opacidad de la cápsula"
@@ -1018,6 +1014,10 @@
"show-capsule": {
"description": "Mostrar fondos de los widgets.",
"label": "Mostrar cápsula"
},
"transparent": {
"description": "Esto evitará que los paneles se adhieran a la barra.",
"label": "Fondo transparente"
}
},
"monitors": {
@@ -1189,6 +1189,10 @@
"yazi": {
"description": "Escriba en {filepath}. El sabor debe activarse manualmente.",
"description-missing": "Requiere que {app} esté instalada."
},
"zed": {
"description": "Escribir {filepath} y recargar",
"description-missing": "Requiere que {app} esté instalado"
}
},
"section": {
@@ -1544,10 +1548,6 @@
},
"launcher": {
"settings": {
"background-opacity": {
"description": "Ajusta la opacidad del fondo del lanzador.",
"label": "Opacidad del fondo"
},
"clip-preview": {
"description": "Muestra una vista previa del contenido del portapapeles al usar el comando >clip.",
"label": "Activar vista previa del portapapeles"
@@ -2083,6 +2083,10 @@
"disk-section": {
"label": "Uso de disco"
},
"enable-nvidia-gpu": {
"description": "Advertencia: Esto activará tu GPU NVIDIA, lo que podría afectar significativamente la duración de la batería en portátiles con gráficos híbridos.",
"label": "Habilitar la monitorización de la GPU NVIDIA"
},
"general": {
"section": {
"description": "Configurar el comportamiento y la apariencia del Monitor del sistema.",
@@ -2158,7 +2162,7 @@
"reset": "Restablecer la opacidad del escritorio atenuado"
},
"panel-background-opacity": {
"description": "Establecer la opacidad de fondo para todos los paneles (Launcher, Centro de control, Configuración, etc.).",
"description": "Establecer la opacidad del fondo para todos los paneles (barra, lanzador, ajustes, etc...).",
"label": "Opacidad de fondo del panel"
},
"panels-attached-to-bar": {
+13 -9
View File
@@ -981,10 +981,6 @@
},
"bar": {
"appearance": {
"background-opacity": {
"description": "Ajustez l'opacité de l'arrière-plan de la barre.",
"label": "Opacité de l'arrière-plan"
},
"capsule-opacity": {
"description": "Définir le niveau d'opacité des arrière-plans des widgets quand la capsule est affichée.",
"label": "Opacité de la capsule"
@@ -1018,6 +1014,10 @@
"show-capsule": {
"description": "Afficher les arrière-plans des widgets.",
"label": "Afficher la capsule"
},
"transparent": {
"description": "Cela empêchera les panneaux de se fixer à la barre.",
"label": "Fond transparent"
}
},
"monitors": {
@@ -1189,6 +1189,10 @@
"yazi": {
"description": "Écrire dans {filepath}. La saveur doit être activée manuellement.",
"description-missing": "Nécessite l'installation de {app}"
},
"zed": {
"description": "Écrire {filepath}. Le thème Comfy doit être installé et activé manuellement.",
"description-missing": "Nécessite l'installation de {app}"
}
},
"section": {
@@ -1544,10 +1548,6 @@
},
"launcher": {
"settings": {
"background-opacity": {
"description": "Ajustez l'opacité de l'arrière-plan du lanceur.",
"label": "Opacité de l'arrière-plan"
},
"clip-preview": {
"description": "Afficher un aperçu du contenu du presse-papiers lors de l'utilisation de la commande >clip.",
"label": "Activer l'aperçu du presse-papiers"
@@ -2083,6 +2083,10 @@
"disk-section": {
"label": "Utilisation disque"
},
"enable-nvidia-gpu": {
"description": "Attention : Ceci va activer votre GPU NVIDIA, ce qui peut avoir un impact significatif sur l'autonomie de la batterie des ordinateurs portables dotés de cartes graphiques hybrides.",
"label": "Activer la surveillance du GPU NVIDIA"
},
"general": {
"section": {
"description": "Configurer le comportement et l'apparence du Moniteur Système.",
@@ -2158,7 +2162,7 @@
"reset": "Réinitialiser l'opacité du bureau atténué"
},
"panel-background-opacity": {
"description": "Définir l'opacité de fond pour tous les panneaux (Lanceur, Centre de contrôle, Paramètres, etc.).",
"description": "Définir l'opacité de l'arrière-plan pour tous les panneaux (barre, lanceur, paramètres, etc.).",
"label": "Opacité de fond des panneaux"
},
"panels-attached-to-bar": {
+13 -9
View File
@@ -981,10 +981,6 @@
},
"bar": {
"appearance": {
"background-opacity": {
"description": "バーの背景の不透明度を調整します。",
"label": "背景の不透明度"
},
"capsule-opacity": {
"description": "カプセル表示時のウィジェット背景の不透明度を設定します。",
"label": "カプセルの不透明度"
@@ -1018,6 +1014,10 @@
"show-capsule": {
"description": "ウィジェットの背景を表示します。",
"label": "カプセルを表示"
},
"transparent": {
"description": "これにより、パネルがバーに取り付けられるのを防ぎます。",
"label": "透明な背景"
}
},
"monitors": {
@@ -1189,6 +1189,10 @@
"yazi": {
"description": "{filepath} を書き込みます。風味は手動で有効にする必要があります。",
"description-missing": "{app} がインストールされている必要があります。"
},
"zed": {
"description": "{filepath} を書き込み、リロードします。",
"description-missing": "{app} のインストールが必要です。"
}
},
"section": {
@@ -1544,10 +1548,6 @@
},
"launcher": {
"settings": {
"background-opacity": {
"description": "ランチャーの背景の不透明度を調整します。",
"label": "背景の不透明度"
},
"clip-preview": {
"description": ">clip コマンド使用時に、クリップボードの内容をプレビュー表示します。",
"label": "クリップボードのプレビューを有効化"
@@ -2083,6 +2083,10 @@
"disk-section": {
"label": "ストレージ使用量"
},
"enable-nvidia-gpu": {
"description": "警告:これにより NVIDIA GPU が起動し、ハイブリッド グラフィックスを搭載したラップトップのバッテリー寿命に大きな影響を与える可能性があります。",
"label": "NVIDIA GPU モニタリングを有効にする"
},
"general": {
"section": {
"description": "システムモニターの動作と外観を設定します。",
@@ -2158,7 +2162,7 @@
"reset": "デスクトップを暗くした際の不透明度をリセット"
},
"panel-background-opacity": {
"description": "すべてのパネル(ランチャー、コントロールセンター、設定など)の背景の不透明度を設定します。",
"description": "すべてのパネル(バー、ランチャー、設定など)の背景の不透明度を設定します。",
"label": "パネル背景の不透明度"
},
"panels-attached-to-bar": {
+13 -9
View File
@@ -981,10 +981,6 @@
},
"bar": {
"appearance": {
"background-opacity": {
"description": "Pas de achtergronddekking van de balk aan.",
"label": "Achtergronddekking"
},
"capsule-opacity": {
"description": "Stel het doorzichtigheidsniveau in voor widget-achtergronden wanneer capsule wordt getoond.",
"label": "Capsule-doorzichtigheid"
@@ -1018,6 +1014,10 @@
"show-capsule": {
"description": "Widget-achtergronden tonen.",
"label": "Capsules tonen"
},
"transparent": {
"description": "Dit voorkomt dat panelen aan de balk worden bevestigd.",
"label": "Transparante achtergrond"
}
},
"monitors": {
@@ -1189,6 +1189,10 @@
"yazi": {
"description": "Schrijf {filepath}. Smaak moet handmatig worden geactiveerd.",
"description-missing": "Vereist dat {app} is geïnstalleerd."
},
"zed": {
"description": "Schrijf {filepath} en herlaad.",
"description-missing": "Vereist dat {app} is geïnstalleerd."
}
},
"section": {
@@ -1544,10 +1548,6 @@
},
"launcher": {
"settings": {
"background-opacity": {
"description": "Pas de achtergronddekking van de launcher aan.",
"label": "Achtergronddekking"
},
"clip-preview": {
"description": "Toon een voorbeeld van de inhoud van het klembord bij gebruik van het >clip-commando.",
"label": "Klembordvoorbeeld inschakelen"
@@ -2083,6 +2083,10 @@
"disk-section": {
"label": "Schijfgebruik"
},
"enable-nvidia-gpu": {
"description": "Waarschuwing: Dit zal uw NVIDIA GPU activeren, wat een aanzienlijke impact kan hebben op de batterijduur van laptops met hybride grafische kaarten.",
"label": "NVIDIA GPU-monitoring inschakelen"
},
"general": {
"section": {
"description": "Configureer het gedrag en de weergave van de Systeemmonitor.",
@@ -2158,7 +2162,7 @@
"reset": "Doorzichtigheid van gedimde desktop resetten"
},
"panel-background-opacity": {
"description": "Stel de achtergronddoorzichtigheid in voor alle panelen (Launcher, Control Center, Instellingen, enz.).",
"description": "Stel de achtergronddoorzichtigheid in voor alle panelen (balk, launcher, instellingen, enz...).",
"label": "Paneel achtergronddoorzichtigheid"
},
"panels-attached-to-bar": {
+13 -9
View File
@@ -981,10 +981,6 @@
},
"bar": {
"appearance": {
"background-opacity": {
"description": "Ajuste a opacidade do fundo da barra.",
"label": "Opacidade do fundo"
},
"capsule-opacity": {
"description": "Define o nível de opacidade para fundos dos widgets quando a cápsula é mostrada.",
"label": "Opacidade da cápsula"
@@ -1018,6 +1014,10 @@
"show-capsule": {
"description": "Mostra o fundo dos widgets.",
"label": "Mostrar cápsula"
},
"transparent": {
"description": "Isto impedirá que os painéis se fixem à barra.",
"label": "Fundo transparente"
}
},
"monitors": {
@@ -1189,6 +1189,10 @@
"yazi": {
"description": "Escreva em {filepath}. O sabor precisa ser ativado manualmente.",
"description-missing": "Requer que o {app} esteja instalado."
},
"zed": {
"description": "Escrever {filepath} e recarregar",
"description-missing": "Requer que o {app} esteja instalado"
}
},
"section": {
@@ -1544,10 +1548,6 @@
},
"launcher": {
"settings": {
"background-opacity": {
"description": "Ajuste a opacidade do fundo do lançador.",
"label": "Opacidade do fundo"
},
"clip-preview": {
"description": "Mostra uma pré-visualização do conteúdo da área de transferência ao usar o comando >clip.",
"label": "Ativar pré-visualização da área de transferência"
@@ -2083,6 +2083,10 @@
"disk-section": {
"label": "Uso do disco"
},
"enable-nvidia-gpu": {
"description": "Atenção: Isto irá ativar sua GPU NVIDIA, o que pode impactar significativamente a duração da bateria em laptops com gráficos híbridos.",
"label": "Ativar o monitoramento da GPU NVIDIA"
},
"general": {
"section": {
"description": "Configure o comportamento e a aparência do Monitor do Sistema.",
@@ -2158,7 +2162,7 @@
"reset": "Redefinir opacidade da área de trabalho escurecida"
},
"panel-background-opacity": {
"description": "Definir a opacidade de fundo para todos os painéis (Launcher, Centro de Controle, Configurações, etc.).",
"description": "Definir a opacidade do fundo para todos os painéis (barra, iniciador, configurações, etc...).",
"label": "Opacidade de fundo do painel"
},
"panels-attached-to-bar": {
+13 -9
View File
@@ -981,10 +981,6 @@
},
"bar": {
"appearance": {
"background-opacity": {
"description": "Настройка непрозрачности фона панели.",
"label": "Непрозрачность фона"
},
"capsule-opacity": {
"description": "Установить уровень непрозрачности для фона виджетов, когда капсула отображается.",
"label": "Непрозрачность капсулы"
@@ -1018,6 +1014,10 @@
"show-capsule": {
"description": "Показывать фон виджетов.",
"label": "Показывать капсулу"
},
"transparent": {
"description": "Это предотвратит прикрепление панелей к планке.",
"label": "Прозрачный фон"
}
},
"monitors": {
@@ -1189,6 +1189,10 @@
"yazi": {
"description": "Записать {filepath}. Вкус необходимо активировать вручную.",
"description-missing": "Требуется установка {app}"
},
"zed": {
"description": "Записать {filepath} и перезагрузить",
"description-missing": "Требуется установка {app}"
}
},
"section": {
@@ -1544,10 +1548,6 @@
},
"launcher": {
"settings": {
"background-opacity": {
"description": "Настройка непрозрачности фона запуска.",
"label": "Непрозрачность фона"
},
"clip-preview": {
"description": "Показывать предварительный просмотр содержимого буфера обмена при использовании команды >clip.",
"label": "Включить предварительный просмотр буфера обмена"
@@ -2083,6 +2083,10 @@
"disk-section": {
"label": "Использование диска"
},
"enable-nvidia-gpu": {
"description": "Внимание: Это разбудит ваш графический процессор NVIDIA, что может значительно повлиять на время работы от аккумулятора на ноутбуках с гибридной графикой.",
"label": "Включить мониторинг GPU NVIDIA"
},
"general": {
"section": {
"description": "Настроить поведение и внешний вид системного монитора.",
@@ -2158,7 +2162,7 @@
"reset": "Сбросить непрозрачность затемненного рабочего стола"
},
"panel-background-opacity": {
"description": "Установить прозрачность фона для всех панелей (Launcher, Центр управления, Настройки и т.д.).",
"description": "Установить прозрачность фона для всех панелей (верхней панели, панели запуска, настроек и т. д.).",
"label": "Прозрачность фона панелей"
},
"panels-attached-to-bar": {
+13 -9
View File
@@ -981,10 +981,6 @@
},
"bar": {
"appearance": {
"background-opacity": {
"description": "Araç çubuğu arka plan opaklığını ayarlayın.",
"label": "Arka plan opaklığı"
},
"capsule-opacity": {
"description": "Kapsül gösterildiğinde araç takımı arka planlarının saydamlık seviyesini ayarla.",
"label": "Kapsül saydamlığı"
@@ -1018,6 +1014,10 @@
"show-capsule": {
"description": "Araç takımı arka planlarını göster.",
"label": "Kapsülü göster"
},
"transparent": {
"description": "Bu, panellerin çubuğa takılmasını önleyecektir.",
"label": "Şeffaf arka plan"
}
},
"monitors": {
@@ -1189,6 +1189,10 @@
"yazi": {
"description": "{filepath} dosyasına yaz. Temanın manuel etkinleştirilmesi gerekir.",
"description-missing": "Kurulum için {app} gereklidir"
},
"zed": {
"description": "{filepath} dosyasına yaz ve yeniden yükle",
"description-missing": "Kurulum için {app} gereklidir"
}
},
"section": {
@@ -1544,10 +1548,6 @@
},
"launcher": {
"settings": {
"background-opacity": {
"description": "Başlatıcının arka plan opaklığını ayarlayın.",
"label": "Arka plan opaklığı"
},
"clip-preview": {
"description": ">clip komutu kullanılırken panodaki içeriğin önizlemesini gösterir.",
"label": "Panoyu önizlemeyi etkinleştir"
@@ -2083,6 +2083,10 @@
"disk-section": {
"label": "Disk Kullanımı"
},
"enable-nvidia-gpu": {
"description": "Uyarı: Bu, NVIDIA GPU'nuzu uyandıracak ve bu da hibrit grafiklere sahip dizüstü bilgisayarlarda pil ömrünü önemli ölçüde etkileyebilir.",
"label": "NVIDIA GPU izlemeyi etkinleştir"
},
"general": {
"section": {
"description": "Sistem İzleyicisinin davranışını ve görünümünü yapılandırın.",
@@ -2158,7 +2162,7 @@
"reset": "Karartılmış masaüstü opaklığını sıfırla"
},
"panel-background-opacity": {
"description": "Tüm paneller için arka plan opaklığını ayarlayın (Başlatıcı, Kontrol Merkezi, Ayarlar vb.).",
"description": "Tüm panellerin (çubuk, başlatıcı, ayarlar vb.) arka plan opaklığını ayarlayın.",
"label": "Panel arka plan opaklığı"
},
"panels-attached-to-bar": {
+13 -9
View File
@@ -981,10 +981,6 @@
},
"bar": {
"appearance": {
"background-opacity": {
"description": "Налаштуйте непрозорість фону панелі.",
"label": "Непрозорість фону"
},
"capsule-opacity": {
"description": "Встановити рівень непрозорості для фону віджетів, коли показано капсулу.",
"label": "Непрозорість капсули"
@@ -1018,6 +1014,10 @@
"show-capsule": {
"description": "Показувати фон віджетів.",
"label": "Показувати капсулу"
},
"transparent": {
"description": "Це запобіжить прикріпленню панелей до планки.",
"label": "Прозорий фон"
}
},
"monitors": {
@@ -1189,6 +1189,10 @@
"yazi": {
"description": "Записати {filepath}. Смак потрібно активувати вручну.",
"description-missing": "Потрібно встановити {app}"
},
"zed": {
"description": "Записати {filepath} та перезавантажити",
"description-missing": "Потрібна установка {app}"
}
},
"section": {
@@ -1544,10 +1548,6 @@
},
"launcher": {
"settings": {
"background-opacity": {
"description": "Налаштуйте непрозорість фону лаунчера.",
"label": "Непрозорість фону"
},
"clip-preview": {
"description": "Показувати попередній перегляд вмісту буфера обміну при використанні команди >clip.",
"label": "Попередній перегляд буфера обміну"
@@ -2083,6 +2083,10 @@
"disk-section": {
"label": "Використання диска"
},
"enable-nvidia-gpu": {
"description": "Увага: Це розбудить ваш графічний процесор NVIDIA, що може значно вплинути на час роботи акумулятора на ноутбуках з гібридною графікою.",
"label": "Увімкнути моніторинг GPU NVIDIA"
},
"general": {
"section": {
"description": "Налаштуйте поведінку та зовнішній вигляд Системного монітора.",
@@ -2158,7 +2162,7 @@
"reset": "Скинути непрозорість приглушеного робочого столу"
},
"panel-background-opacity": {
"description": "Встановити прозорість фону для всіх панелей (Launcher, Центр керування, Налаштування тощо).",
"description": "Встановити прозорість фону для всіх панелей (панель задач, панель запуску, налаштування тощо...).",
"label": "Прозорість фону панелей"
},
"panels-attached-to-bar": {
+13 -9
View File
@@ -981,10 +981,6 @@
},
"bar": {
"appearance": {
"background-opacity": {
"description": "调整状态栏的背景不透明度。",
"label": "背景不透明度"
},
"capsule-opacity": {
"description": "设置显示胶囊时小部件背景的不透明度。",
"label": "胶囊不透明度"
@@ -1018,6 +1014,10 @@
"show-capsule": {
"description": "为每个小部件添加背景。",
"label": "显示组件背景"
},
"transparent": {
"description": "这将阻止面板连接到栏上。",
"label": "透明背景"
}
},
"monitors": {
@@ -1189,6 +1189,10 @@
"yazi": {
"description": "写入 {filepath}。需要手动激活风味。",
"description-missing": "需要安装{app}"
},
"zed": {
"description": "写入 {filepath} 并重新加载",
"description-missing": "需要安装 {app}"
}
},
"section": {
@@ -1544,10 +1548,6 @@
},
"launcher": {
"settings": {
"background-opacity": {
"description": "调整启动器的背景不透明度。",
"label": "背景不透明度"
},
"clip-preview": {
"description": "在使用 >clip 命令时显示剪贴板内容的预览。",
"label": "启用剪贴板预览"
@@ -2083,6 +2083,10 @@
"disk-section": {
"label": "磁盘使用率"
},
"enable-nvidia-gpu": {
"description": "警告:这将唤醒您的 NVIDIA GPU,这可能会显著影响配备混合显卡的笔记本电脑的电池续航时间。",
"label": "启用 NVIDIA GPU 监控"
},
"general": {
"section": {
"description": "配置系统监视器的行为和外观。",
@@ -2158,7 +2162,7 @@
"reset": "重置变暗桌面不透明度"
},
"panel-background-opacity": {
"description": "设置所有面板的背景不透明度(启动器、控制中心、设置等)。",
"description": "设置所有面板(栏、启动器、设置等)的背景不透明度。",
"label": "面板背景不透明度"
},
"panels-attached-to-bar": {
+4 -3
View File
@@ -2,11 +2,11 @@
"settingsVersion": 0,
"bar": {
"position": "top",
"backgroundOpacity": 1,
"monitors": [],
"density": "default",
"showCapsule": true,
"capsuleOpacity": 1,
"transparent": false,
"floating": false,
"marginVertical": 0.25,
"marginHorizontal": 0.25,
@@ -65,7 +65,7 @@
},
"general": {
"avatarImage": "",
"dimmerOpacity": 0.6,
"dimmerOpacity": 0.2,
"showScreenCorners": false,
"forceBlackScreenCorners": false,
"scaleRatio": 1,
@@ -92,7 +92,7 @@
"fontDefaultScale": 1,
"fontFixedScale": 1,
"tooltipsEnabled": true,
"panelBackgroundOpacity": 1,
"panelBackgroundOpacity": 0.85,
"panelsAttachedToBar": true,
"settingsPanelMode": "attached"
},
@@ -248,6 +248,7 @@
"cpuPollingInterval": 3000,
"tempPollingInterval": 3000,
"gpuPollingInterval": 3000,
"enableNvidiaGpu": false,
"memPollingInterval": 3000,
"diskPollingInterval": 3000,
"networkPollingInterval": 3000,
+19
View File
@@ -0,0 +1,19 @@
import QtQuick
QtObject {
id: root
// Migrate bar.backgroundOpacity to ui.panelBackgroundOpacity
function migrate(adapter, logger, rawJson) {
logger.i("Settings", "Migrating settings to v29");
// Check rawJson for old property (adapter doesn't expose removed properties)
if (rawJson?.bar?.backgroundOpacity !== undefined) {
adapter.ui.panelBackgroundOpacity = Math.max(0.4, rawJson.bar.backgroundOpacity);
adapter.bar.transparent = (rawJson.bar.backgroundOpacity < 0.1);
logger.i("Settings", "Migrated bar.backgroundOpacity to ui.panelBackgroundOpacity: " + adapter.ui.panelBackgroundOpacity);
}
return true;
}
}
+3 -1
View File
@@ -8,10 +8,12 @@ QtObject {
// Map of version number to migration component
readonly property var migrations: ({
27: migration27Component,
28: migration28Component
28: migration28Component,
29: migration29Component
})
// Migration components
property Component migration27Component: Migration27 {}
property Component migration28Component: Migration28 {}
property Component migration29Component: Migration29 {}
}
+6 -4
View File
@@ -23,7 +23,7 @@ Singleton {
- Default cache directory: ~/.cache/noctalia
*/
readonly property alias data: adapter // Used to access via Settings.data.xxx.yyy
readonly property int settingsVersion: 28
readonly property int settingsVersion: 29
readonly property bool isDebug: Quickshell.env("NOCTALIA_DEBUG") === "1"
readonly property string shellName: "noctalia"
readonly property string configDir: Quickshell.env("NOCTALIA_CONFIG_DIR") || (Quickshell.env("XDG_CONFIG_HOME") || Quickshell.env("HOME") + "/.config") + "/" + shellName + "/"
@@ -156,11 +156,11 @@ Singleton {
// bar
property JsonObject bar: JsonObject {
property string position: "top" // "top", "bottom", "left", or "right"
property real backgroundOpacity: 1.0
property list<string> monitors: [] // holds bar visibility per monitor
property string density: "default" // "compact", "default", "comfortable"
property bool showCapsule: true
property real capsuleOpacity: 1.0
property bool transparent: false
// Floating bar settings
property bool floating: false
@@ -230,7 +230,7 @@ Singleton {
// general
property JsonObject general: JsonObject {
property string avatarImage: ""
property real dimmerOpacity: 0.6
property real dimmerOpacity: 0.2
property bool showScreenCorners: false
property bool forceBlackScreenCorners: false
property real scaleRatio: 1.0
@@ -259,7 +259,7 @@ Singleton {
property real fontDefaultScale: 1.0
property real fontFixedScale: 1.0
property bool tooltipsEnabled: true
property real panelBackgroundOpacity: 1.0
property real panelBackgroundOpacity: 0.85
property bool panelsAttachedToBar: true
property string settingsPanelMode: "attached" // "centered", "attached", "window"
}
@@ -434,6 +434,7 @@ Singleton {
property int cpuPollingInterval: 3000
property int tempPollingInterval: 3000
property int gpuPollingInterval: 3000
property bool enableNvidiaGpu: false // Opt-in: nvidia-smi wakes dGPU on laptops, draining battery
property int memPollingInterval: 3000
property int diskPollingInterval: 3000
property int networkPollingInterval: 3000
@@ -585,6 +586,7 @@ Singleton {
property bool yazi: false
property bool emacs: false
property bool niri: false
property bool zed: false
property bool enableUserTemplates: false
}
+1 -1
View File
@@ -133,7 +133,7 @@ Loader {
anchors.fill: parent
visible: Settings.data.general.showScreenCorners
property color cornerColor: Settings.data.general.forceBlackScreenCorners ? Color.black : Qt.alpha(Color.mSurface, Settings.data.bar.backgroundOpacity)
property color cornerColor: Settings.data.general.forceBlackScreenCorners ? Color.black : Color.mSurface
property real cornerRadius: Style.screenRadius
property real cornerSize: Style.screenRadius
@@ -22,7 +22,7 @@ Item {
// Reference to MainScreen (for panel access)
required property var windowRoot
readonly property color panelBackgroundColor: Qt.alpha(Color.mSurface, Settings.data.ui.panelBackgroundOpacity)
readonly property color panelBackgroundColor: Color.mSurface
anchors.fill: parent
@@ -34,6 +34,9 @@ Item {
// This caches the Shape to a GPU texture, reducing GPU tessellation overhead
layer.enabled: true
// Apply opacity to all backgrounds
opacity: Settings.data.ui.panelBackgroundOpacity
// The unified Shape container
Shape {
id: backgroundsShape
@@ -55,7 +58,7 @@ Item {
bar: root.bar
shapeContainer: backgroundsShape
windowRoot: root.windowRoot
backgroundColor: Qt.alpha(Color.mSurface, Settings.data.bar.backgroundOpacity)
backgroundColor: Settings.data.bar.transparent ? Color.transparent : panelBackgroundColor
}
/**
+1 -1
View File
@@ -718,7 +718,7 @@ Item {
return Settings.data.ui.panelsAttachedToBar || root.forceAttachToBar;
}
readonly property bool allowAttachToBar: {
if (!(Settings.data.ui.panelsAttachedToBar || root.forceAttachToBar) || Settings.data.bar.backgroundOpacity < 1.0) {
if (!(Settings.data.ui.panelsAttachedToBar || root.forceAttachToBar) || Settings.data.bar.transparent) {
return false;
}
+1 -1
View File
@@ -840,7 +840,7 @@ SmartPanel {
}
}
width: resultsList.width - Style.marginS - resultsList.scrollBarTotalWidth
width: resultsList.width - Style.marginS
implicitHeight: entryHeight
radius: Style.radiusM
color: entry.isSelected ? Color.mHover : Color.mSurface
+11 -3
View File
@@ -341,11 +341,18 @@ Item {
// Sidebar
Rectangle {
id: sidebar
readonly property bool panelVeryTransparent: Settings.data.ui.panelBackgroundOpacity <= 0.75
clip: true
Layout.preferredWidth: root.sidebarExpanded ? 200 * Style.uiScaleRatio : (sidebarToggle.width + (sidebarList.verticalScrollBarActive ? sidebarList.scrollBarTotalWidth : 0))
Layout.preferredWidth: root.sidebarExpanded ? 200 * Style.uiScaleRatio : sidebarToggle.width + (panelVeryTransparent ? Style.marginM * 2 : 0)
Layout.fillHeight: true
Layout.alignment: Qt.AlignTop
color: Color.transparent
radius: sidebar.panelVeryTransparent ? Style.radiusM : 0
color: sidebar.panelVeryTransparent ? Color.mSurfaceVariant : Color.transparent
border.width: sidebar.panelVeryTransparent ? Style.borderS : 0
border.color: sidebar.panelVeryTransparent ? Color.mOutline : Color.transparent
Behavior on Layout.preferredWidth {
NumberAnimation {
@@ -357,6 +364,7 @@ Item {
ColumnLayout {
anchors.fill: parent
spacing: Style.marginS
anchors.margins: sidebar.panelVeryTransparent ? Style.marginM : 0
// Sidebar toggle button
Item {
@@ -426,7 +434,7 @@ Item {
delegate: Rectangle {
id: tabItem
width: sidebarList.verticalScrollBarActive ? sidebarList.width - sidebarList.scrollBarWidth - Style.marginXS : sidebarList.width
width: sidebarList.verticalScrollBarActive ? sidebarList.width - Style.marginXS : sidebarList.width
height: tabEntryRow.implicitHeight + Style.marginS * 2
radius: Style.radiusS
color: selected ? Color.mPrimary : (tabItem.hovering ? Color.mHover : Color.transparent)
+8 -20
View File
@@ -82,6 +82,14 @@ ColumnLayout {
onSelected: key => Settings.data.bar.density = key
}
NToggle {
Layout.fillWidth: true
label: I18n.tr("settings.bar.appearance.transparent.label")
description: I18n.tr("settings.bar.appearance.transparent.description")
checked: Settings.data.bar.transparent
onToggled: checked => Settings.data.bar.transparent = checked
}
NToggle {
Layout.fillWidth: true
label: I18n.tr("settings.bar.appearance.show-capsule.label")
@@ -187,26 +195,6 @@ ColumnLayout {
}
}
ColumnLayout {
spacing: Style.marginXXS
Layout.fillWidth: true
NLabel {
label: I18n.tr("settings.bar.appearance.background-opacity.label")
description: I18n.tr("settings.bar.appearance.background-opacity.description")
}
NValueSlider {
Layout.fillWidth: true
from: 0
to: 1
stepSize: 0.01
value: Settings.data.bar.backgroundOpacity
onMoved: value => Settings.data.bar.backgroundOpacity = value
text: Math.floor(Settings.data.bar.backgroundOpacity * 100) + "%"
}
}
NDivider {
Layout.fillWidth: true
Layout.topMargin: Style.marginL
@@ -896,6 +896,23 @@ ColumnLayout {
}
}
NCheckbox {
label: "Zeditor"
description: ProgramCheckerService.zedAvailable ? I18n.tr("settings.color-scheme.templates.programs.zed.description", {
"filepath": "~/.config/zed/themes/noctalia.json"
}) : I18n.tr("settings.color-scheme.templates.programs.zed.description-missing", {
"app": "zed"
})
checked: Settings.data.templates.zed
enabled: ProgramCheckerService.zedAvailable
onToggled: checked => {
if (ProgramCheckerService.zedAvailable) {
Settings.data.templates.zed = checked;
AppThemeService.generate();
}
}
}
NCheckbox {
label: "Emacs"
description: ProgramCheckerService.emacsAvailable ? I18n.tr("settings.color-scheme.templates.programs.emacs.description") : I18n.tr("settings.color-scheme.templates.programs.emacs.description-missing", {
@@ -18,6 +18,15 @@ ColumnLayout {
description: I18n.tr("settings.system-monitor.general.section.description")
}
NToggle {
Layout.fillWidth: true
Layout.topMargin: Style.marginM
label: I18n.tr("settings.system-monitor.enable-nvidia-gpu.label")
description: I18n.tr("settings.system-monitor.enable-nvidia-gpu.description")
checked: Settings.data.systemMonitor.enableNvidiaGpu
onToggled: checked => Settings.data.systemMonitor.enableNvidiaGpu = checked
}
// Colors Section
RowLayout {
Layout.fillWidth: true
@@ -18,34 +18,6 @@ ColumnLayout {
description: I18n.tr("settings.user-interface.section.description")
}
NToggle {
label: I18n.tr("settings.user-interface.tooltips.label")
description: I18n.tr("settings.user-interface.tooltips.description")
checked: Settings.data.ui.tooltipsEnabled
onToggled: checked => Settings.data.ui.tooltipsEnabled = checked
}
// Dim desktop opacity
ColumnLayout {
spacing: Style.marginXXS
Layout.fillWidth: true
NLabel {
label: I18n.tr("settings.user-interface.dimmer-opacity.label")
description: I18n.tr("settings.user-interface.dimmer-opacity.description")
}
NValueSlider {
Layout.fillWidth: true
from: 0
to: 1
stepSize: 0.01
value: Settings.data.general.dimmerOpacity
onMoved: value => Settings.data.general.dimmerOpacity = value
text: Math.floor(Settings.data.general.dimmerOpacity * 100) + "%"
}
}
// Panels attached to bar and screen edges
NToggle {
label: I18n.tr("settings.user-interface.panels-attached-to-bar.label")
@@ -54,6 +26,14 @@ ColumnLayout {
onToggled: checked => Settings.data.ui.panelsAttachedToBar = checked
}
NToggle {
visible: (Quickshell.screens.length > 1)
label: I18n.tr("settings.user-interface.allow-panels-without-bar.label")
description: I18n.tr("settings.user-interface.allow-panels-without-bar.description")
checked: Settings.data.general.allowPanelsOnScreenWithoutBar
onToggled: checked => Settings.data.general.allowPanelsOnScreenWithoutBar = checked
}
// Settings panel display mode
NComboBox {
label: I18n.tr("settings.user-interface.settings-panel-mode.label")
@@ -77,6 +57,61 @@ ColumnLayout {
onSelected: key => Settings.data.ui.settingsPanelMode = key
}
// Panel Background Opacity
ColumnLayout {
spacing: Style.marginXXS
Layout.fillWidth: true
NLabel {
label: I18n.tr("settings.user-interface.panel-background-opacity.label")
description: I18n.tr("settings.user-interface.panel-background-opacity.description")
}
NValueSlider {
Layout.fillWidth: true
from: 0.4
to: 1
stepSize: 0.01
value: Settings.data.ui.panelBackgroundOpacity
onMoved: value => Settings.data.ui.panelBackgroundOpacity = value
text: Math.floor(Settings.data.ui.panelBackgroundOpacity * 100) + "%"
}
}
// Dim desktop opacity
ColumnLayout {
spacing: Style.marginXXS
Layout.fillWidth: true
NLabel {
label: I18n.tr("settings.user-interface.dimmer-opacity.label")
description: I18n.tr("settings.user-interface.dimmer-opacity.description")
}
NValueSlider {
Layout.fillWidth: true
from: 0
to: 1
stepSize: 0.01
value: Settings.data.general.dimmerOpacity
onMoved: value => Settings.data.general.dimmerOpacity = value
text: Math.floor(Settings.data.general.dimmerOpacity * 100) + "%"
}
}
NDivider {
Layout.fillWidth: true
Layout.topMargin: Style.marginL
Layout.bottomMargin: Style.marginL
}
NToggle {
label: I18n.tr("settings.user-interface.tooltips.label")
description: I18n.tr("settings.user-interface.tooltips.description")
checked: Settings.data.ui.tooltipsEnabled
onToggled: checked => Settings.data.ui.tooltipsEnabled = checked
}
NToggle {
label: I18n.tr("settings.user-interface.shadows.label")
description: I18n.tr("settings.user-interface.shadows.description")
@@ -149,35 +184,6 @@ ColumnLayout {
}
}
// Panel Background Opacity
ColumnLayout {
spacing: Style.marginXXS
Layout.fillWidth: true
NLabel {
label: I18n.tr("settings.user-interface.panel-background-opacity.label")
description: I18n.tr("settings.user-interface.panel-background-opacity.description")
}
NValueSlider {
Layout.fillWidth: true
from: 0
to: 1
stepSize: 0.01
value: Settings.data.ui.panelBackgroundOpacity
onMoved: value => Settings.data.ui.panelBackgroundOpacity = value
text: Math.floor(Settings.data.ui.panelBackgroundOpacity * 100) + "%"
}
}
NToggle {
visible: (Quickshell.screens.length > 1)
label: I18n.tr("settings.user-interface.allow-panels-without-bar.label")
description: I18n.tr("settings.user-interface.allow-panels-without-bar.description")
checked: Settings.data.general.allowPanelsOnScreenWithoutBar
onToggled: checked => Settings.data.general.allowPanelsOnScreenWithoutBar = checked
}
NDivider {
Layout.fillWidth: true
Layout.topMargin: Style.marginL
@@ -430,27 +430,6 @@ ColumnLayout {
Layout.bottomMargin: Style.marginS
}
// Bar Background Opacity
ColumnLayout {
Layout.fillWidth: true
spacing: Style.marginM
NLabel {
label: I18n.tr("settings.bar.appearance.background-opacity.label")
description: I18n.tr("settings.bar.appearance.background-opacity.description")
}
NValueSlider {
Layout.fillWidth: true
from: 0
to: 1
stepSize: 0.01
value: Settings.data.bar.backgroundOpacity
onMoved: function (value) {
Settings.data.bar.backgroundOpacity = value;
}
text: Math.floor(Settings.data.bar.backgroundOpacity * 100) + "%"
}
}
// Divider
Rectangle {
Layout.fillWidth: true
+23
View File
@@ -14,6 +14,7 @@ Singleton {
property bool isNiri: false
property bool isSway: false
property bool isMango: false
property bool isLabwc: false
// Generic workspace and window data
property ListModel workspaces: ListModel {}
@@ -57,6 +58,7 @@ Singleton {
const niriSocket = Quickshell.env("NIRI_SOCKET");
const swaySock = Quickshell.env("SWAYSOCK");
const currentDesktop = Quickshell.env("XDG_CURRENT_DESKTOP");
const labwcPid = Quickshell.env("LABWC_PID");
// Check for MangoWC using XDG_CURRENT_DESKTOP environment variable
// MangoWC sets XDG_CURRENT_DESKTOP=mango
@@ -65,24 +67,36 @@ Singleton {
isNiri = false;
isSway = false;
isMango = true;
isLabwc = false;
backendLoader.sourceComponent = mangoComponent;
} else if (labwcPid && labwcPid.length > 0) {
isHyprland = false;
isNiri = false;
isSway = false;
isMango = false;
isLabwc = true;
backendLoader.sourceComponent = labwcComponent;
Logger.i("CompositorService", "Detected LabWC with PID: " + labwcPid);
} else if (niriSocket && niriSocket.length > 0) {
isHyprland = false;
isNiri = true;
isSway = false;
isMango = false;
isLabwc = false;
backendLoader.sourceComponent = niriComponent;
} else if (hyprlandSignature && hyprlandSignature.length > 0) {
isHyprland = true;
isNiri = false;
isSway = false;
isMango = false;
isLabwc = false;
backendLoader.sourceComponent = hyprlandComponent;
} else if (swaySock && swaySock.length > 0) {
isHyprland = false;
isNiri = false;
isSway = true;
isMango = false;
isLabwc = false;
backendLoader.sourceComponent = swayComponent;
} else {
// Always fallback to Niri
@@ -90,6 +104,7 @@ Singleton {
isNiri = true;
isSway = false;
isMango = false;
isLabwc = false;
backendLoader.sourceComponent = niriComponent;
}
}
@@ -155,6 +170,14 @@ Singleton {
}
}
// Labwc backend component
Component {
id: labwcComponent
LabwcService {
id: labwcBackend
}
}
function setupBackendConnections() {
if (!backend)
return;
+115
View File
@@ -0,0 +1,115 @@
import QtQuick
import Quickshell
import Quickshell.Io
import Quickshell.Wayland
import qs.Commons
Item {
id: root
property ListModel workspaces: ListModel {}
property var windows: []
property int focusedWindowIndex: -1
property var trackedToplevels: ({})
signal workspaceChanged
signal activeWindowChanged
signal windowListChanged
signal displayScalesChanged
function initialize() {
updateWindows();
Logger.i("LabwcService", "Service started");
}
Connections {
target: ToplevelManager.toplevels
function onValuesChanged() {
updateWindows();
}
}
function connectToToplevel(toplevel) {
if (!toplevel || !toplevel.address)
return;
toplevel.activatedChanged.connect(() => {
Qt.callLater(onToplevelActivationChanged);
});
toplevel.titleChanged.connect(() => {
Qt.callLater(updateWindows);
});
}
function onToplevelActivationChanged() {
updateWindows();
activeWindowChanged();
}
function updateWindows() {
const newWindows = [];
const toplevels = ToplevelManager.toplevels?.values || [];
const newTracked = {};
let focusedIdx = -1;
let idx = 0;
for (const toplevel of toplevels) {
if (!toplevel)
continue;
const addr = toplevel.address || "";
if (addr && !trackedToplevels[addr]) {
connectToToplevel(toplevel);
}
if (addr) {
newTracked[addr] = true;
}
newWindows.push({
"id": addr,
"appId": toplevel.appId || "",
"title": toplevel.title || "",
"workspaceId": 1,
"isFocused": toplevel.activated || false,
"toplevel": toplevel
});
if (toplevel.activated) {
focusedIdx = idx;
}
idx++;
}
trackedToplevels = newTracked;
windows = newWindows;
focusedWindowIndex = focusedIdx;
windowListChanged();
}
function focusWindow(window) {
if (window.toplevel && typeof window.toplevel.activate === "function") {
window.toplevel.activate();
}
}
function closeWindow(window) {
if (window.toplevel && typeof window.toplevel.close === "function") {
window.toplevel.close();
}
}
function switchToWorkspace(workspace) {
Logger.w("LabwcService", "Workspace switching not supported via ToplevelManager");
}
function logout() {
Logger.w("LabwcService", "Logout not directly supported");
}
function queryDisplayScales() {
Logger.w("LabwcService", "Display scale queries not supported via ToplevelManager");
}
}
@@ -31,6 +31,7 @@ Singleton {
property bool cavaAvailable: false
property bool yaziAvailable: false
property bool emacsAvailable: false
property bool zedAvailable: false
property bool niriAvailable: false
// Discord client auto-detection
@@ -190,6 +191,7 @@ Singleton {
"telegramAvailable": ["sh", "-c", "command -v telegram-desktop >/dev/null 2>&1 || command -v Telegram >/dev/null 2>&1 || (command -v flatpak >/dev/null 2>&1 && flatpak list --app | grep -q 'org.telegram.desktop')"],
"cavaAvailable": ["which", "cava"],
"yaziAvailable": ["which", "yazi"],
"zedAvailable": ["which", "zeditor"],
"emacsAvailable": ["sh", "-c", "test -d \"$HOME/.config/doom\" || test -d \"$HOME/.emacs.d\""],
"niriAvailable": ["which", "niri"]
})
+36 -4
View File
@@ -50,7 +50,8 @@ Singleton {
// GPU temperature detection
// On dual-GPU systems, we prioritize discrete GPUs over integrated GPUs
// Priority: NVIDIA > AMD dGPU > Intel Arc > AMD iGPU
// Priority: NVIDIA (opt-in) > AMD dGPU > Intel Arc > AMD iGPU
// Note: NVIDIA requires opt-in because nvidia-smi wakes the dGPU on laptops, draining battery
readonly property var supportedTempGpuSensorNames: ["amdgpu", "xe"]
property string gpuTempHwmonPath: ""
property var foundGpuSensors: [] // [{hwmonPath, type, hasDedicatedVram}]
@@ -67,6 +68,29 @@ Singleton {
gpuTempNameReader.checkNext();
}
// Re-run GPU detection when NVIDIA opt-in setting changes
Connections {
target: Settings.data.systemMonitor
function onEnableNvidiaGpuChanged() {
Logger.i("SystemStat", "NVIDIA opt-in setting changed, re-detecting GPUs");
restartGpuDetection();
}
}
function restartGpuDetection() {
// Reset GPU state
root.gpuAvailable = false;
root.gpuType = "";
root.gpuTempHwmonPath = "";
root.gpuTemp = 0;
root.foundGpuSensors = [];
root.gpuVramCheckIndex = 0;
// Restart GPU detection
gpuTempNameReader.currentIndex = 0;
gpuTempNameReader.checkNext();
}
// --------------------------------------------
// Timer for CPU usage
Timer {
@@ -295,9 +319,17 @@ Singleton {
function checkNext() {
if (currentIndex >= 16) {
// Finished scanning all hwmon entries, now check for NVIDIA
Logger.d("SystemStat", `Found ${root.foundGpuSensors.length} sysfs GPU sensor(s), checking for nvidia-smi`);
nvidiaSmiCheck.running = true;
// Finished scanning all hwmon entries
// Only check nvidia-smi if user has explicitly enabled NVIDIA monitoring (opt-in)
// because nvidia-smi wakes up the dGPU on laptops, draining battery
if (Settings.data.systemMonitor.enableNvidiaGpu) {
Logger.d("SystemStat", `Found ${root.foundGpuSensors.length} sysfs GPU sensor(s), checking nvidia-smi (opt-in enabled)`);
nvidiaSmiCheck.running = true;
} else {
Logger.d("SystemStat", `Found ${root.foundGpuSensors.length} sysfs GPU sensor(s), skipping nvidia-smi (opt-in disabled)`);
root.gpuVramCheckIndex = 0;
checkNextGpuVram();
}
return;
}
+11
View File
@@ -202,6 +202,17 @@ Singleton {
}
]
},
{
"id": "zed",
"name": "Zeditor",
"category": "applications",
"input": "zed.json",
"outputs": [
{
"path": "~/.config/zed/themes/noctalia.json"
}
]
},
{
"id": "spicetify",
"name": "Spicetify",
+2 -1
View File
@@ -215,7 +215,8 @@ Singleton {
"blacklist": [],
"colorizeIcons": false,
"pinned": [],
"drawerEnabled": true
"drawerEnabled": true,
"hidePassive": false
},
"VPN": {
"allowUserSettings": true,
-1
View File
@@ -29,7 +29,6 @@ Item {
return false;
return gridView.contentHeight > gridView.height;
}
readonly property real scrollBarWidth: verticalScrollBarActive ? handleWidth : 0
// Forward GridView properties
property alias model: gridView.model
+2 -6
View File
@@ -19,9 +19,6 @@ Item {
return false;
return listView.contentHeight > listView.height;
}
readonly property real scrollBarWidth: verticalScrollBarActive ? handleWidth : 0
readonly property real scrollBarSpacing: verticalScrollBarActive ? 4 : 0
readonly property real scrollBarTotalWidth: verticalScrollBarActive ? (handleWidth + 4) : 0
// Forward ListView properties
property alias model: listView.model
@@ -115,13 +112,12 @@ Item {
id: listView
anchors.fill: parent
anchors.rightMargin: root.verticalScrollBarActive ? root.handleWidth + 4 : 0
clip: true
boundsBehavior: Flickable.StopAtBounds
ScrollBar.vertical: ScrollBar {
parent: root // Position relative to root Item, not listView
x: listView.mirrored ? 0 : root.width - width
parent: listView
x: listView.mirrored ? 0 : listView.width - width
y: 0
height: listView.height
policy: root.verticalPolicy
+1 -1
View File
@@ -202,7 +202,7 @@ RowLayout {
id: defaultDelegate
ItemDelegate {
id: delegateRoot
width: listView.width - listView.scrollBarTotalWidth
width: listView.width
leftPadding: Style.marginM
rightPadding: Style.marginM
topPadding: Style.marginS
+1 -1
View File
@@ -10,7 +10,7 @@
nixpkgs,
...
}: let
eachSystem = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
eachSystem = nixpkgs.lib.genAttrs nixpkgs.lib.platforms.linux;
pkgsFor = eachSystem (system: nixpkgs.legacyPackages.${system}.appendOverlays [self.overlays.default]);
in {
formatter = eachSystem (system: pkgsFor.${system}.alejandra);