Update dotfiles (2026-01-19 19:48:47)
@@ -0,0 +1,113 @@
|
|||||||
|
// Thanks to Bina
|
||||||
|
{
|
||||||
|
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||||
|
"logo": {
|
||||||
|
"source": "/home/inorishio/Pictures/Gifs/Ai-Hoshino-Dancing.gif",
|
||||||
|
"type": "iterm",
|
||||||
|
"padding": {
|
||||||
|
"top": 5,
|
||||||
|
"left": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"separator": " ➜ "
|
||||||
|
},
|
||||||
|
"modules": [
|
||||||
|
"break",
|
||||||
|
"break",
|
||||||
|
"break",
|
||||||
|
{
|
||||||
|
"type": "os",
|
||||||
|
"key": "OS ",
|
||||||
|
"keyColor": "31", // = color1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "kernel",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "31",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "packages",
|
||||||
|
"format": "{} (pacman)",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "31",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "shell",
|
||||||
|
"key": " └ ",
|
||||||
|
"keyColor": "31",
|
||||||
|
},
|
||||||
|
"break",
|
||||||
|
{
|
||||||
|
"type": "wm",
|
||||||
|
"key": "WM ",
|
||||||
|
"keyColor": "32",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "wmtheme",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "32",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "icons",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "32",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "cursor",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "32",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "terminal",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "32",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "terminalfont",
|
||||||
|
"key": " └ ",
|
||||||
|
"keyColor": "32",
|
||||||
|
},
|
||||||
|
"break",
|
||||||
|
{
|
||||||
|
"type": "host",
|
||||||
|
"format": "{5} {1} Type {2}",
|
||||||
|
"key": "PC ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "cpu",
|
||||||
|
"format": "{1} ({3}) @ {7} GHz",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "gpu",
|
||||||
|
"format": "{1} {2} @ {12} GHz",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "memory",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "swap",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "disk",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "monitor",
|
||||||
|
"key": " └ ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
"break",
|
||||||
|
"break",
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,155 @@
|
|||||||
|
// By jan-rex
|
||||||
|
// Modified from: https://github.com/fastfetch-cli/fastfetch/discussions/1269
|
||||||
|
{
|
||||||
|
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||||
|
"logo": {
|
||||||
|
"source": "/home/inorishio/Pictures/Gifs/Ai-Hoshino-Dancing.gif",
|
||||||
|
"type": "iterm",
|
||||||
|
"padding": {
|
||||||
|
"top": 1.5,
|
||||||
|
"left": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"separator": "",
|
||||||
|
"constants": [
|
||||||
|
// CONSTANT {$1} - COLOR BACKGROUND FOR KEY
|
||||||
|
"\u001b[48;2;43;43;69m",
|
||||||
|
// CONSTANT {$2} - COLOR BACKGROUND FOR OUTPUT
|
||||||
|
"\u001b[48;2;56;59;78m",
|
||||||
|
// CONSTANT {$3} - VERTICAL BARS AT START AND 75th CHARACTERS FORWARD AND BACKWARD
|
||||||
|
"\u001b[90m│ │\u001b[60D\u001b[39m",
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"modules": [
|
||||||
|
// CUSTOM - Top UI bar
|
||||||
|
{
|
||||||
|
"type": "custom",
|
||||||
|
"key": "{#90}{$1}╭─────────────╮",
|
||||||
|
"format": "{#90}{$2}╭────────────────────────────────────────────────────────────╮",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "title",
|
||||||
|
"key": "{#90}{$1}│ {#92}User {#90}│",
|
||||||
|
"format": "{$2}{$3}{user-name} {#2}[{home-dir}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "users",
|
||||||
|
"key": "{#90}{$1}│ {#92}Users {#90}│",
|
||||||
|
"myselfOnly": false,
|
||||||
|
"format": "{$2}{$3}{1}@{host-name}{/host-name}localhost{/}{?client-ip} {#2}[IP:{client-ip}]{?} {#2}[Login time: {login-time}]",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "datetime",
|
||||||
|
"key": "{#90}{$1}│ {#92}Datetime {#90}│",
|
||||||
|
"format": "{$2}{$3}{year}-{month-pretty}-{day-in-month} {hour-pretty}:{minute-pretty}:{second-pretty} {#2}{weekday} {#2}[W{week}] {#2}[UTC{offset-from-utc}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "title",
|
||||||
|
"key": "{#90}{$1}│ {#93}Host: {#90}│",
|
||||||
|
"format": "{$2}{$3}{#1}{#36}{host-name}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "host",
|
||||||
|
"key": "{#90}{$1}│ {#93}Machine {#90}│",
|
||||||
|
"format": "{$2}{$3}{name} {#2}{version}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "os",
|
||||||
|
"key": "{#90}{$1}│ {#93}OS {#90}│",
|
||||||
|
"format": "{$2}{$3}{pretty-name} {codename} {#2}[v{version}] {#2}[{arch}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "kernel",
|
||||||
|
"key": "{#90}{$1}│ {#93}Kernel {#90}│",
|
||||||
|
"format": "{$2}{$3}{sysname} {#2}[v{release}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "uptime",
|
||||||
|
"key": "{#90}{$1}│ {#93}Uptime {#90}│",
|
||||||
|
"format": "{$2}{$3}{?days}{days} Days + {?}{hours}:{minutes}:{seconds}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "cpu",
|
||||||
|
"key": "{#90}{$1}│ {#91}CPU {#90}│",
|
||||||
|
"showPeCoreCount": true,
|
||||||
|
"temp": true,
|
||||||
|
"format": "{$2}{$3}{name} {#2}[C:{core-types}] {#2}[{freq-max}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "gpu",
|
||||||
|
"key": "{#90}{$1}│ {#91}GPU {#90}│",
|
||||||
|
"detectionMethod": "auto",
|
||||||
|
"driverSpecific": true,
|
||||||
|
"format": "{$2}{$3}{name} {#2}[C:{core-count}] {#2}[{type}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "memory",
|
||||||
|
"key": "{#90}{$1}│ {#91}Memory {#90}│",
|
||||||
|
"format": "{$2}{$3}{used} / {total} ({percentage}{$2})"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "disk",
|
||||||
|
"key": "{#90}{$1}│ {#91}Disk {#90}│",
|
||||||
|
"format": "{$2}{$3}{size-used} / {size-total} ({size-percentage}{$2})"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "poweradapter",
|
||||||
|
"key": "{#90}{$1}│ {#91}Power {#90}│",
|
||||||
|
"format": "{$2}{$3}{name}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "terminal",
|
||||||
|
"key": "{#90}{$1}│ {#95}Terminal {#90}│",
|
||||||
|
"format": "{$2}{$3}{pretty-name} {#2}[{version}] [PID:{pid}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "terminalfont",
|
||||||
|
"key": "{#90}{$1}│ {#95}Font {#90}│",
|
||||||
|
"format": "{$2}{$3}{name} {#2}[{size}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "shell",
|
||||||
|
"key": "{#90}{$1}│ {#95}Shell {#90}│",
|
||||||
|
"format": "{$2}{$3}{pretty-name} {#2}[v{version}] [PID:{pid}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// localip IPv4
|
||||||
|
"type": "localip",
|
||||||
|
"key": "{#90}{$1}│ {#94}Local IPv4 {#90}│",
|
||||||
|
"showPrefixLen": true,
|
||||||
|
"showIpv4": true,
|
||||||
|
"showIpv6": false,
|
||||||
|
"showMtu": true,
|
||||||
|
"format": "{$2}{$3}{ifname}: {ipv4} {#2}[MTU:{mtu}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// localip IPv6
|
||||||
|
"type": "localip",
|
||||||
|
"key": "{#90}{$1}│ {#94}Local IPv6 {#90}│",
|
||||||
|
"showPrefixLen": true,
|
||||||
|
"showIpv4": false,
|
||||||
|
"showIpv6": true,
|
||||||
|
"showMtu": true,
|
||||||
|
"format": "{$2}{$3}{ifname}: {ipv6} {#2}[MTU:{mtu}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "publicip",
|
||||||
|
"key": "{#90}{$1}│ {#94}Public IPv4 {#90}│",
|
||||||
|
"ipv6": false,
|
||||||
|
"format": "{$2}{$3}{ip} {#2}[{location}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "publicip",
|
||||||
|
"key": "{#90}{$1}│ {#94}Public IPv6 {#90}│",
|
||||||
|
"ipv6": true,
|
||||||
|
"format": "{$2}{$3}{ip} {#2}[{location}]"
|
||||||
|
},
|
||||||
|
// CUSTOM - Button UI bar
|
||||||
|
{
|
||||||
|
"type": "custom",
|
||||||
|
"key": "{#90}{$1}╰─────────────╯",
|
||||||
|
"format": "{#90}{$2}╰────────────────────────────────────────────────────────────╯",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||||
|
"logo": {
|
||||||
|
"source": "/home/inorishio/Pictures/Profile-Pictures/Koito-Minase.jpg",
|
||||||
|
"type": "auto",
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"separator": " ➜ "
|
||||||
|
},
|
||||||
|
"modules": [
|
||||||
|
"break",
|
||||||
|
{
|
||||||
|
"type": "os",
|
||||||
|
"key": "OS ",
|
||||||
|
"keyColor": "31" // = color1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "kernel",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "31"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "packages",
|
||||||
|
"format": "{} (pacman)",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "31"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "shell",
|
||||||
|
"key": " └ ",
|
||||||
|
"keyColor": "31"
|
||||||
|
},
|
||||||
|
"break",
|
||||||
|
{
|
||||||
|
"type": "wm",
|
||||||
|
"key": "WM ",
|
||||||
|
"keyColor": "32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "wmtheme",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "icons",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "cursor",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "terminal",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "terminalfont",
|
||||||
|
"key": " └ ",
|
||||||
|
"keyColor": "32"
|
||||||
|
},
|
||||||
|
"break",
|
||||||
|
{
|
||||||
|
"type": "host",
|
||||||
|
"format": "{5} {1} Type {2}",
|
||||||
|
"key": "PC ",
|
||||||
|
"keyColor": "33"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "cpu",
|
||||||
|
"format": "{1} ({3}) @ {7} GHz",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "gpu",
|
||||||
|
"format": "{1} {2} @ {12} GHz",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "memory",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "swap",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "disk",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "monitor",
|
||||||
|
"key": " └ ",
|
||||||
|
"keyColor": "33"
|
||||||
|
},
|
||||||
|
"break"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||||
|
"logo": {
|
||||||
|
"source": "/home/inorishio/Pictures/Gifs/Ai-Hoshino-Dancing.gif",
|
||||||
|
"type": "kitty-icat",
|
||||||
|
"padding": {
|
||||||
|
"top": 5,
|
||||||
|
"right": 2,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"separator": " ➜ "
|
||||||
|
},
|
||||||
|
"modules": [
|
||||||
|
"break",
|
||||||
|
"break",
|
||||||
|
"break",
|
||||||
|
{
|
||||||
|
"type": "os",
|
||||||
|
"key": "OS ",
|
||||||
|
"keyColor": "31", // = color1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "kernel",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "31",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "packages",
|
||||||
|
"format": "{} (pacman)",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "31",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "shell",
|
||||||
|
"key": " └ ",
|
||||||
|
"keyColor": "31",
|
||||||
|
},
|
||||||
|
"break",
|
||||||
|
{
|
||||||
|
"type": "wm",
|
||||||
|
"key": "WM ",
|
||||||
|
"keyColor": "32",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "wmtheme",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "32",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "icons",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "32",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "cursor",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "32",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "terminal",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "32",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "terminalfont",
|
||||||
|
"key": " └ ",
|
||||||
|
"keyColor": "32",
|
||||||
|
},
|
||||||
|
"break",
|
||||||
|
{
|
||||||
|
"type": "host",
|
||||||
|
"format": "{5} {1} Type {2}",
|
||||||
|
"key": "PC ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "cpu",
|
||||||
|
"format": "{1} ({3}) @ {7} GHz",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "gpu",
|
||||||
|
"format": "{1} {2} @ {12} GHz",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "memory",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "swap",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "disk",
|
||||||
|
"key": " ├ ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "monitor",
|
||||||
|
"key": " └ ",
|
||||||
|
"keyColor": "33",
|
||||||
|
},
|
||||||
|
"break",
|
||||||
|
"break",
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,228 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
||||||
|
"async": true,
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"alignment": "left",
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"foreground": "#f8f8f2",
|
||||||
|
"style": "plain",
|
||||||
|
"template": "\u256d\u2500",
|
||||||
|
"type": "text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#282a36",
|
||||||
|
"foreground": "#f8f8f2",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "{{ .UserName }}",
|
||||||
|
"type": "session"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#282a36",
|
||||||
|
"foreground": "#ff5555",
|
||||||
|
"powerline_symbol": "\ue0b0",
|
||||||
|
"style": "powerline",
|
||||||
|
"template": "\udb85\udc0b",
|
||||||
|
"type": "root"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#282a36",
|
||||||
|
"foreground": "#f8f8f2",
|
||||||
|
"powerline_symbol": "\ue0b0",
|
||||||
|
"style": "powerline",
|
||||||
|
"template": "{{ .Icon }} ",
|
||||||
|
"type": "os"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#bd93f9",
|
||||||
|
"foreground": "#282a36",
|
||||||
|
"properties": {
|
||||||
|
"display_root": true,
|
||||||
|
"style": "full"
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": " \udb80\ude56 {{ path .Path .Location }}",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"type": "path"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "prompt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alignment": "right",
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"background": "#f1fa8c",
|
||||||
|
"foreground": "#282a36",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"properties": {
|
||||||
|
"time_format": "15:04:05"
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "\udb80\udd09 {{ .CurrentDate | date .Format }} \u2022",
|
||||||
|
"type": "time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#f1fa8c",
|
||||||
|
"foreground": "#282a36",
|
||||||
|
"properties": {
|
||||||
|
"always_enabled": true,
|
||||||
|
"style": "austin",
|
||||||
|
"threshold": 500
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": " \ueba2 {{ .FormattedMs }}",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"type": "executiontime"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#ffb86c",
|
||||||
|
"foreground": "#282a36",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"properties": {
|
||||||
|
"branch_icon": "",
|
||||||
|
"fetch_status": true,
|
||||||
|
"fetch_upstream_icon": true
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "\ue725 ({{ url .UpstreamIcon .UpstreamURL }} {{ url .HEAD .UpstreamURL }}){{ if gt .Ahead 0 }}<#50fa7b> +{{ .Ahead }}</>{{ end }}{{ if gt .Behind 0 }}<#ff5555> -{{ .Behind }}</>{{ end }}{{ if .Working.Changed }}<#f8f8f2> \uf044 {{ .Working.String }}</>{{ end }}{{ if .Staging.Changed }}<#f8f8f2> \uf046 {{ .Staging.String }}</>{{ end }}",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"type": "git"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#50fa7b",
|
||||||
|
"foreground": "#282a36",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"properties": {
|
||||||
|
"cache_duration": "2h"
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "\ue718 {{ .Full }}",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"type": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#ff5555",
|
||||||
|
"foreground": "#282a36",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"properties": {
|
||||||
|
"cache_duration": "2h",
|
||||||
|
"display_mode": "files",
|
||||||
|
"extensions": [
|
||||||
|
"package-lock.json"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "\ue71e {{ .Full }}",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"type": "npm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#ffb86c",
|
||||||
|
"foreground": "#282a36",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"properties": {
|
||||||
|
"cache_duration": "2h",
|
||||||
|
"display_mode": "files",
|
||||||
|
"extensions": [
|
||||||
|
"pnpm-lock.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "\udb80\udec1 {{ .Full }}",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"type": "pnpm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#50fa7b",
|
||||||
|
"foreground": "#282a36",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"properties": {
|
||||||
|
"cache_duration": "2h",
|
||||||
|
"display_mode": "files"
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "\ue73c {{ .Full }}",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"type": "python"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#ff79c6",
|
||||||
|
"foreground": "#282a36",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"properties": {
|
||||||
|
"cache_duration": "2h"
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "\ue738 {{ .Full }}",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"type": "java"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#8be9fd",
|
||||||
|
"foreground": "#282a36",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"properties": {
|
||||||
|
"display_mode": "files"
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "\uf308 {{ .Context }}",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"type": "docker"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#6272a4",
|
||||||
|
"foreground": "#f8f8f2",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"properties": {
|
||||||
|
"cache_duration": "2h"
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "\ue73d {{ .Full }}",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"type": "php"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "prompt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alignment": "left",
|
||||||
|
"newline": true,
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"foreground": "#f8f8f2",
|
||||||
|
"properties": {
|
||||||
|
"always_enabled": true
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "\u2570\u2500 \u276f\u276f",
|
||||||
|
"type": "text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "prompt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"enable_cursor_positioning": true,
|
||||||
|
"final_space": true,
|
||||||
|
"patch_pwsh_bleed": true,
|
||||||
|
"secondary_prompt": {
|
||||||
|
"background": "transparent",
|
||||||
|
"foreground": "#f8f8f2",
|
||||||
|
"template": " \u276f "
|
||||||
|
},
|
||||||
|
"transient_prompt": {
|
||||||
|
"background": "transparent",
|
||||||
|
"foreground": "#f8f8f2",
|
||||||
|
"newline": true,
|
||||||
|
"template": " \u276f\u276f {{ .AbsolutePWD }}\n \u276f "
|
||||||
|
},
|
||||||
|
"upgrade": {
|
||||||
|
"auto": false,
|
||||||
|
"interval": "168h",
|
||||||
|
"notice": false,
|
||||||
|
"source": "cdn"
|
||||||
|
},
|
||||||
|
"version": 3
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
||||||
|
"upgrade": {
|
||||||
|
"source": "cdn",
|
||||||
|
"interval": "168h",
|
||||||
|
"auto": false,
|
||||||
|
"notice": false
|
||||||
|
},
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"type": "prompt",
|
||||||
|
"alignment": "left",
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"template": "➜ ",
|
||||||
|
"foreground": "#f1184c",
|
||||||
|
"type": "text",
|
||||||
|
"style": "plain"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"newline": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 4
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
||||||
|
"upgrade": {
|
||||||
|
"source": "cdn",
|
||||||
|
"interval": "168h",
|
||||||
|
"auto": false,
|
||||||
|
"notice": false
|
||||||
|
},
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"type": "prompt",
|
||||||
|
"alignment": "left",
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"template": "➜ ",
|
||||||
|
"foreground": "#f1184c",
|
||||||
|
"type": "text",
|
||||||
|
"style": "plain"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"newline": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 3
|
||||||
|
}
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
||||||
|
"palette": {
|
||||||
|
"os": "#ACB0BE",
|
||||||
|
"pink": "#F5BDE6",
|
||||||
|
"lavender": "#B7BDF8",
|
||||||
|
"blue": "#8AADF4",
|
||||||
|
"wight": "#FFFFFF",
|
||||||
|
"text": "#494D64"
|
||||||
|
},
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"alignment": "left",
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"background": "p:blue",
|
||||||
|
"foreground": "p:wight",
|
||||||
|
"powerline_symbol": "\ue0b4",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "{{.Icon}} ",
|
||||||
|
"type": "os"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "p:blue",
|
||||||
|
"foreground": "p:text",
|
||||||
|
"powerline_symbol": "\ue0b4",
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "pwsh",
|
||||||
|
"type": "session"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "p:pink",
|
||||||
|
"foreground": "p:text",
|
||||||
|
"properties": {
|
||||||
|
"folder_icon": "..\ue5fe..",
|
||||||
|
"home_icon": "~",
|
||||||
|
"style": "agnoster_short"
|
||||||
|
},
|
||||||
|
"powerline_symbol": "\ue0b4",
|
||||||
|
"style": "powerline",
|
||||||
|
"template": " {{ .Path }}",
|
||||||
|
"type": "path"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "p:lavender",
|
||||||
|
"foreground": "p:text",
|
||||||
|
"style": "powerline",
|
||||||
|
"properties": {
|
||||||
|
"branch_icon": "\ue725 ",
|
||||||
|
"cherry_pick_icon": "\ue29b ",
|
||||||
|
"commit_icon": "\uf417 ",
|
||||||
|
"fetch_status": false,
|
||||||
|
"fetch_upstream_icon": false,
|
||||||
|
"merge_icon": "\ue727 ",
|
||||||
|
"no_commits_icon": "\uf0c3 ",
|
||||||
|
"rebase_icon": "\ue728 ",
|
||||||
|
"revert_icon": "\uf0e2 ",
|
||||||
|
"tag_icon": "\uf412 "
|
||||||
|
},
|
||||||
|
"powerline_symbol": "\ue0b4",
|
||||||
|
"template": " {{ .HEAD }}",
|
||||||
|
"type": "git"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "prompt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"final_space": true,
|
||||||
|
"version": 3
|
||||||
|
}
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
||||||
|
"palette": {
|
||||||
|
"os": "#ACB0BE",
|
||||||
|
"pink": "#F5BDE6",
|
||||||
|
"lavender": "#B7BDF8",
|
||||||
|
"blue": "#8AADF4",
|
||||||
|
"wight": "#FFFFFF",
|
||||||
|
"text": "#494D64"
|
||||||
|
},
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"alignment": "left",
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"background": "p:blue",
|
||||||
|
"foreground": "p:wight",
|
||||||
|
"powerline_symbol": "\ue0b4",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "{{.Icon}} ",
|
||||||
|
"type": "os"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "p:blue",
|
||||||
|
"foreground": "p:text",
|
||||||
|
"powerline_symbol": "\ue0b4",
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "{{ .UserName }}",
|
||||||
|
"type": "session"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "p:pink",
|
||||||
|
"foreground": "p:text",
|
||||||
|
"properties": {
|
||||||
|
"folder_icon": "..\ue5fe..",
|
||||||
|
"home_icon": "~",
|
||||||
|
"style": "agnoster_short"
|
||||||
|
},
|
||||||
|
"powerline_symbol": "\ue0b4",
|
||||||
|
"style": "powerline",
|
||||||
|
"template": " {{ .Path }}",
|
||||||
|
"type": "path"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "p:lavender",
|
||||||
|
"foreground": "p:text",
|
||||||
|
"style": "powerline",
|
||||||
|
"properties": {
|
||||||
|
"branch_icon": "\ue725 ",
|
||||||
|
"cherry_pick_icon": "\ue29b ",
|
||||||
|
"commit_icon": "\uf417 ",
|
||||||
|
"fetch_status": false,
|
||||||
|
"fetch_upstream_icon": false,
|
||||||
|
"merge_icon": "\ue727 ",
|
||||||
|
"no_commits_icon": "\uf0c3 ",
|
||||||
|
"rebase_icon": "\ue728 ",
|
||||||
|
"revert_icon": "\uf0e2 ",
|
||||||
|
"tag_icon": "\uf412 "
|
||||||
|
},
|
||||||
|
"powerline_symbol": "\ue0b4",
|
||||||
|
"template": " {{ .HEAD }}",
|
||||||
|
"type": "git"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "prompt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"final_space": true,
|
||||||
|
"version": 3
|
||||||
|
}
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
||||||
|
"palette": {
|
||||||
|
"os": "#ACB0BE",
|
||||||
|
"pink": "#F5BDE6",
|
||||||
|
"lavender": "#B7BDF8",
|
||||||
|
"blue": "#8AADF4",
|
||||||
|
"wight": "#FFFFFF",
|
||||||
|
"text": "#494D64"
|
||||||
|
},
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"alignment": "left",
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"background": "p:blue",
|
||||||
|
"foreground": "p:wight",
|
||||||
|
"powerline_symbol": "\ue0b4",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "{{.Icon}} ",
|
||||||
|
"type": "os"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "p:blue",
|
||||||
|
"foreground": "p:text",
|
||||||
|
"powerline_symbol": "\ue0b4",
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "{{ .UserName }}",
|
||||||
|
"type": "session"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "p:pink",
|
||||||
|
"foreground": "p:text",
|
||||||
|
"properties": {
|
||||||
|
"folder_icon": "..\ue5fe..",
|
||||||
|
"home_icon": "~",
|
||||||
|
"style": "agnoster_short"
|
||||||
|
},
|
||||||
|
"powerline_symbol": "\ue0b4",
|
||||||
|
"style": "powerline",
|
||||||
|
"template": " {{ .Path }}",
|
||||||
|
"type": "path"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "p:lavender",
|
||||||
|
"foreground": "p:text",
|
||||||
|
"style": "powerline",
|
||||||
|
"properties": {
|
||||||
|
"branch_icon": "\ue725 ",
|
||||||
|
"cherry_pick_icon": "\ue29b ",
|
||||||
|
"commit_icon": "\uf417 ",
|
||||||
|
"fetch_status": false,
|
||||||
|
"fetch_upstream_icon": false,
|
||||||
|
"merge_icon": "\ue727 ",
|
||||||
|
"no_commits_icon": "\uf0c3 ",
|
||||||
|
"rebase_icon": "\ue728 ",
|
||||||
|
"revert_icon": "\uf0e2 ",
|
||||||
|
"tag_icon": "\uf412 "
|
||||||
|
},
|
||||||
|
"powerline_symbol": "\ue0b4",
|
||||||
|
"template": " {{ .HEAD }}",
|
||||||
|
"type": "git"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "prompt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"final_space": true,
|
||||||
|
"version": 3
|
||||||
|
}
|
||||||
@@ -0,0 +1,125 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
||||||
|
"async": true,
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"type": "prompt",
|
||||||
|
"alignment": "left",
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"style": "mixed"
|
||||||
|
},
|
||||||
|
"leading_diamond": "\u256d\u2500\ue0b6",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"template": "\ue5ff {{ .Path }}",
|
||||||
|
"foreground": "#ffffff",
|
||||||
|
"background": "#29315A",
|
||||||
|
"type": "path",
|
||||||
|
"style": "diamond"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"branch_max_length": 25,
|
||||||
|
"fetch_stash_count": true,
|
||||||
|
"fetch_status": true,
|
||||||
|
"fetch_upstream_icon": true
|
||||||
|
},
|
||||||
|
"leading_diamond": " \ue0b6",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"template": " {{ .UpstreamIcon }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} \uf044 {{ .Working.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Staging.Changed }} \uf046 {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0 }} \uf692 {{ .StashCount }}{{ end }} ",
|
||||||
|
"foreground": "#43CCEA",
|
||||||
|
"background": "#29315A",
|
||||||
|
"type": "git",
|
||||||
|
"style": "diamond",
|
||||||
|
"foreground_templates": [
|
||||||
|
"{{ if or (.Working.Changed) (.Staging.Changed) }}#FF9248{{ end }}",
|
||||||
|
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}#ff4500{{ end }}",
|
||||||
|
"{{ if gt .Ahead 0 }}#B388FF{{ end }}",
|
||||||
|
"{{ if gt .Behind 0 }}#B388FF{{ end }}"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"always_enabled": true
|
||||||
|
},
|
||||||
|
"template": " {{ if gt .Code 0 }}\uf525{{ else }}\uf469{{ end }}",
|
||||||
|
"foreground": "#2e9599",
|
||||||
|
"powerline_symbol": "\ue0b0",
|
||||||
|
"type": "exit",
|
||||||
|
"style": "diamond",
|
||||||
|
"foreground_templates": [
|
||||||
|
"{{ if gt .Code 0 }}red{{ end }}"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "prompt",
|
||||||
|
"alignment": "right",
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"always_enabled": true
|
||||||
|
},
|
||||||
|
"template": "\ufbab {{ .FormattedMs }} ",
|
||||||
|
"foreground": "#ffffff",
|
||||||
|
"type": "executiontime",
|
||||||
|
"style": "powerline"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"display_mode": "files",
|
||||||
|
"fetch_package_manager": true,
|
||||||
|
"fetch_version": true,
|
||||||
|
"npm_icon": "<#FE4A49>\ue71e npm</> ",
|
||||||
|
"yarn_icon": "<#44FFD2>\ue6a7 yarn</> "
|
||||||
|
},
|
||||||
|
"template": "{{ if .PackageManagerIcon }}{{ .PackageManagerIcon }}{{ end }} \ue718 {{ .Full }} ",
|
||||||
|
"foreground": "#5fb157",
|
||||||
|
"type": "node",
|
||||||
|
"style": "plain"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"display_mode": "context",
|
||||||
|
"fetch_virtual_env": false
|
||||||
|
},
|
||||||
|
"template": " {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}",
|
||||||
|
"foreground": "#FED142",
|
||||||
|
"type": "python",
|
||||||
|
"style": "plain"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"time_format": "3:04:05 PM"
|
||||||
|
},
|
||||||
|
"template": "{{ .CurrentDate | date .Format }}",
|
||||||
|
"foreground": "#43CCEA",
|
||||||
|
"type": "time",
|
||||||
|
"style": "plain"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "prompt",
|
||||||
|
"alignment": "left",
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"template": "\u2570\u2500",
|
||||||
|
"foreground": "#29315A",
|
||||||
|
"type": "text",
|
||||||
|
"style": "plain"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"template": " <#45F1C2><b>{{ .UserName }}</b> <#45F1C2>❯ </>",
|
||||||
|
"foreground": "#CD4277",
|
||||||
|
"type": "text",
|
||||||
|
"style": "plain"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"newline": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 3
|
||||||
|
}
|
||||||
@@ -0,0 +1,140 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"alignment": "left",
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"background": "#29315A",
|
||||||
|
"foreground": "#ffffff",
|
||||||
|
"leading_diamond": "\u256d\u2500\ue0b6",
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "\uf120 {{ .Name }} ",
|
||||||
|
"type": "shell"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#29315A",
|
||||||
|
"foreground": "#ffffff",
|
||||||
|
"style": "diamond",
|
||||||
|
"trailing_diamond": "\ue0b4 ",
|
||||||
|
"template": "{{ .Icon }} ",
|
||||||
|
"type": "os"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#29315A",
|
||||||
|
"foreground": "#3EC669",
|
||||||
|
"leading_diamond": "\ue0b6",
|
||||||
|
"properties": {
|
||||||
|
"style": "mixed"
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": "\ue5ff {{ .Path }}",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"type": "path"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#29315A",
|
||||||
|
"foreground": "#43CCEA",
|
||||||
|
"foreground_templates": [
|
||||||
|
"{{ if or (.Working.Changed) (.Staging.Changed) }}#FF9248{{ end }}",
|
||||||
|
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}#ff4500{{ end }}",
|
||||||
|
"{{ if gt .Ahead 0 }}#B388FF{{ end }}",
|
||||||
|
"{{ if gt .Behind 0 }}#B388FF{{ end }}"
|
||||||
|
],
|
||||||
|
"leading_diamond": " \ue0b6",
|
||||||
|
"properties": {
|
||||||
|
"branch_max_length": 25,
|
||||||
|
"fetch_stash_count": true,
|
||||||
|
"fetch_status": true,
|
||||||
|
"fetch_upstream_icon": true
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": " {{ .UpstreamIcon }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} \uf044 {{ .Working.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Staging.Changed }} \uf046 {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0 }} \uf692 {{ .StashCount }}{{ end }} ",
|
||||||
|
"trailing_diamond": "\ue0b4",
|
||||||
|
"type": "git"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"foreground": "#2e9599",
|
||||||
|
"foreground_templates": [
|
||||||
|
"{{ if gt .Code 0 }}red{{ end }}"
|
||||||
|
],
|
||||||
|
"powerline_symbol": "\ue0b0",
|
||||||
|
"properties": {
|
||||||
|
"always_enabled": true
|
||||||
|
},
|
||||||
|
"style": "diamond",
|
||||||
|
"template": " {{ if gt .Code 0 }}\uf525{{ else }}\uf469{{ end }}",
|
||||||
|
"type": "exit"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "prompt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alignment": "right",
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"foreground": "#ffffff",
|
||||||
|
"properties": {
|
||||||
|
"always_enabled": true
|
||||||
|
},
|
||||||
|
"style": "powerline",
|
||||||
|
"template": "\ufbab {{ .FormattedMs }} ",
|
||||||
|
"type": "executiontime"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"foreground": "#5fb157",
|
||||||
|
"properties": {
|
||||||
|
"display_mode": "files",
|
||||||
|
"fetch_package_manager": true,
|
||||||
|
"fetch_version": true,
|
||||||
|
"npm_icon": "<#FE4A49>\ue71e npm</> ",
|
||||||
|
"yarn_icon": "<#44FFD2>\ue6a7 yarn</> "
|
||||||
|
},
|
||||||
|
"style": "plain",
|
||||||
|
"template": "{{ if .PackageManagerIcon }}{{ .PackageManagerIcon }}{{ end }} \ue718 {{ .Full }} ",
|
||||||
|
"type": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"foreground": "#FED142",
|
||||||
|
"properties": {
|
||||||
|
"display_mode": "context",
|
||||||
|
"fetch_virtual_env": false
|
||||||
|
},
|
||||||
|
"style": "plain",
|
||||||
|
"template": " {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}",
|
||||||
|
"type": "python"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"foreground": "#43CCEA",
|
||||||
|
"properties": {
|
||||||
|
"time_format": "3:04:05 PM"
|
||||||
|
},
|
||||||
|
"style": "plain",
|
||||||
|
"template": "{{ .CurrentDate | date .Format }}",
|
||||||
|
"type": "time"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "prompt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alignment": "left",
|
||||||
|
"newline": true,
|
||||||
|
"segments": [
|
||||||
|
{
|
||||||
|
"foreground": "#29315A",
|
||||||
|
"style": "plain",
|
||||||
|
"template": "\u2570\u2500",
|
||||||
|
"type": "text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"foreground": "#CD4277",
|
||||||
|
"style": "plain",
|
||||||
|
"template": " <#45F1C2><b>\u26a1</b></><b>{{ .UserName }}</b> <#45F1C2>\u276f </>",
|
||||||
|
"type": "text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "prompt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
console_title_template = '{{ .Shell }} in {{ .Folder }}'
|
||||||
|
version = 3
|
||||||
|
final_space = true
|
||||||
|
|
||||||
|
[secondary_prompt]
|
||||||
|
template = '❯❯ '
|
||||||
|
foreground = 'magenta'
|
||||||
|
background = 'transparent'
|
||||||
|
|
||||||
|
[transient_prompt]
|
||||||
|
template = '❯ '
|
||||||
|
background = 'transparent'
|
||||||
|
foreground_templates = ['{{if gt .Code 0}}red{{end}}', '{{if eq .Code 0}}magenta{{end}}']
|
||||||
|
|
||||||
|
[[blocks]]
|
||||||
|
type = 'prompt'
|
||||||
|
alignment = 'left'
|
||||||
|
newline = true
|
||||||
|
|
||||||
|
[[blocks.segments]]
|
||||||
|
style = 'plain'
|
||||||
|
template = '{{ .Path }}'
|
||||||
|
foreground = 'blue'
|
||||||
|
background = 'transparent'
|
||||||
|
type = 'path'
|
||||||
|
|
||||||
|
[blocks.segments.properties]
|
||||||
|
style = 'full'
|
||||||
|
|
||||||
|
[[blocks.segments]]
|
||||||
|
style = 'plain'
|
||||||
|
template = ' {{ .HEAD }}{{ if or (.Working.Changed) (.Staging.Changed) }}*{{ end }} <cyan>{{ if gt .Behind 0 }}⇣{{ end }}{{ if gt .Ahead 0 }}⇡{{ end }}</>'
|
||||||
|
foreground = 'p:grey'
|
||||||
|
background = 'transparent'
|
||||||
|
type = 'git'
|
||||||
|
|
||||||
|
[blocks.segments.properties]
|
||||||
|
branch_icon = ''
|
||||||
|
commit_icon = '@'
|
||||||
|
fetch_status = true
|
||||||
|
|
||||||
|
[[blocks]]
|
||||||
|
type = 'rprompt'
|
||||||
|
overflow = 'hidden'
|
||||||
|
|
||||||
|
[[blocks.segments]]
|
||||||
|
style = 'plain'
|
||||||
|
template = '{{ .FormattedMs }}'
|
||||||
|
foreground = 'yellow'
|
||||||
|
background = 'transparent'
|
||||||
|
type = 'executiontime'
|
||||||
|
|
||||||
|
[blocks.segments.properties]
|
||||||
|
threshold = 5000
|
||||||
|
|
||||||
|
[[blocks]]
|
||||||
|
type = 'prompt'
|
||||||
|
alignment = 'left'
|
||||||
|
newline = true
|
||||||
|
|
||||||
|
[[blocks.segments]]
|
||||||
|
style = 'plain'
|
||||||
|
template = '❯'
|
||||||
|
background = 'transparent'
|
||||||
|
type = 'text'
|
||||||
|
foreground_templates = ['{{if gt .Code 0}}red{{end}}', '{{if eq .Code 0}}magenta{{end}}']
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
#:schema https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json
|
||||||
|
|
||||||
|
version = 2
|
||||||
|
final_space = true
|
||||||
|
console_title_template = '{{ .Shell }} in {{ .Folder }}'
|
||||||
|
|
||||||
|
[[blocks]]
|
||||||
|
type = 'prompt'
|
||||||
|
alignment = 'left'
|
||||||
|
newline = true
|
||||||
|
|
||||||
|
[[blocks.segments]]
|
||||||
|
type = 'path'
|
||||||
|
style = 'plain'
|
||||||
|
background = 'transparent'
|
||||||
|
foreground = 'blue'
|
||||||
|
template = '{{ .Path }}'
|
||||||
|
|
||||||
|
[blocks.segments.properties]
|
||||||
|
style = 'full'
|
||||||
|
|
||||||
|
[[blocks.segments]]
|
||||||
|
type = 'git'
|
||||||
|
style = 'plain'
|
||||||
|
foreground = 'p:grey'
|
||||||
|
background = 'transparent'
|
||||||
|
template = ' {{ .HEAD }}{{ if or (.Working.Changed) (.Staging.Changed) }}*{{ end }} <cyan>{{ if gt .Behind 0 }}⇣{{ end }}{{ if gt .Ahead 0 }}⇡{{ end }}</>'
|
||||||
|
|
||||||
|
[blocks.segments.properties]
|
||||||
|
branch_icon = ''
|
||||||
|
commit_icon = '@'
|
||||||
|
fetch_status = true
|
||||||
|
|
||||||
|
[[blocks]]
|
||||||
|
type = 'rprompt'
|
||||||
|
overflow = 'hidden'
|
||||||
|
|
||||||
|
[[blocks.segments]]
|
||||||
|
type = 'executiontime'
|
||||||
|
style = 'plain'
|
||||||
|
foreground = 'yellow'
|
||||||
|
background = 'transparent'
|
||||||
|
template = '{{ .FormattedMs }}'
|
||||||
|
|
||||||
|
[blocks.segments.properties]
|
||||||
|
threshold = 5000
|
||||||
|
|
||||||
|
[[blocks]]
|
||||||
|
type = 'prompt'
|
||||||
|
alignment = 'left'
|
||||||
|
newline = true
|
||||||
|
|
||||||
|
[[blocks.segments]]
|
||||||
|
type = 'text'
|
||||||
|
style = 'plain'
|
||||||
|
foreground_templates = [
|
||||||
|
"{{if gt .Code 0}}red{{end}}",
|
||||||
|
"{{if eq .Code 0}}magenta{{end}}",
|
||||||
|
]
|
||||||
|
background = 'transparent'
|
||||||
|
template = '❯'
|
||||||
|
|
||||||
|
[transient_prompt]
|
||||||
|
foreground_templates = [
|
||||||
|
"{{if gt .Code 0}}red{{end}}",
|
||||||
|
"{{if eq .Code 0}}magenta{{end}}",
|
||||||
|
]
|
||||||
|
background = 'transparent'
|
||||||
|
template = '❯ '
|
||||||
|
|
||||||
|
[secondary_prompt]
|
||||||
|
foreground = 'magenta'
|
||||||
|
background = 'transparent'
|
||||||
|
template = '❯❯ '
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
// Bar.qml
|
||||||
|
import Quickshell
|
||||||
|
import qs.Widgets
|
||||||
|
|
||||||
|
Scope {
|
||||||
|
// no more time object
|
||||||
|
|
||||||
|
Variants {
|
||||||
|
model: Quickshell.screens
|
||||||
|
|
||||||
|
PanelWindow {
|
||||||
|
required property var modelData
|
||||||
|
screen: modelData
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
top: true
|
||||||
|
left: true
|
||||||
|
right: true
|
||||||
|
}
|
||||||
|
|
||||||
|
implicitHeight: 30
|
||||||
|
|
||||||
|
Clock {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
// no more time binding
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
// ClockWidget.qml
|
||||||
|
import QtQuick
|
||||||
|
|
||||||
|
Text {
|
||||||
|
// we no longer need time as an input
|
||||||
|
|
||||||
|
// directly access the time property from the Time singleton
|
||||||
|
text: Time.time
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
// Time.qml
|
||||||
|
pragma Singleton
|
||||||
|
|
||||||
|
import Quickshell
|
||||||
|
import QtQuick
|
||||||
|
|
||||||
|
Singleton {
|
||||||
|
id: root
|
||||||
|
// an expression can be broken across multiple lines using {}
|
||||||
|
readonly property string time: {
|
||||||
|
// The passed format string matches the default output of
|
||||||
|
// the `date` command.
|
||||||
|
Qt.formatDateTime(clock.date, "ddd MMM d hh:mm:ss AP t yyyy")
|
||||||
|
}
|
||||||
|
|
||||||
|
SystemClock {
|
||||||
|
id: clock
|
||||||
|
precision: SystemClock.Seconds
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
// shell.qml
|
||||||
|
import Quickshell
|
||||||
|
import qs.Widgets
|
||||||
|
|
||||||
|
Scope {
|
||||||
|
Bar {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
import QtQuick
|
||||||
|
import Quickshell
|
||||||
|
import Quickshell.Wayland
|
||||||
|
|
||||||
|
WlSessionLockSurface {
|
||||||
|
id: lockSurface
|
||||||
|
|
||||||
|
// match monitor resolution
|
||||||
|
anchors.fill: screen
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
anchors.fill: parent
|
||||||
|
color: "#000000bb"
|
||||||
|
|
||||||
|
Column {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
spacing: 12
|
||||||
|
|
||||||
|
Text {
|
||||||
|
text: "Locked"
|
||||||
|
color: "white"
|
||||||
|
font.pointSize: 24
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: password
|
||||||
|
width: 240
|
||||||
|
placeholderText: "Password"
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
|
||||||
|
Keys.onReturnPressed: {
|
||||||
|
if (password.text === "hello") {
|
||||||
|
locker.unlock()
|
||||||
|
} else {
|
||||||
|
password.text = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
// Config created by Keyitdev https://github.com/Keyitdev/sddm-astronaut-theme
|
||||||
|
// Copyright (C) 2022-2025 Keyitdev
|
||||||
|
// Based on https://github.com/MarianArlt/sddm-sugar-dark
|
||||||
|
// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
|
||||||
|
Column {
|
||||||
|
id: clock
|
||||||
|
|
||||||
|
width: parent.width / 2
|
||||||
|
spacing: 0
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id:headerTextLabel
|
||||||
|
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
font.pointSize: root.font.pointSize * 4
|
||||||
|
color: config.HeaderTextColor
|
||||||
|
renderType: Text.QtRendering
|
||||||
|
text: config.HeaderText
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: timeLabel
|
||||||
|
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
font.pointSize: root.font.pointSize * 9
|
||||||
|
font.bold: true
|
||||||
|
color: config.TimeTextColor
|
||||||
|
renderType: Text.QtRendering
|
||||||
|
|
||||||
|
function updateTime() {
|
||||||
|
text = new Date().toLocaleTimeString(Qt.locale(config.Locale), config.HourFormat == "long" ? Locale.LongFormat : config.HourFormat !== "" ? config.HourFormat : Locale.ShortFormat)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: dateLabel
|
||||||
|
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
color: config.DateTextColor
|
||||||
|
font.pointSize: root.font.pointSize * 3
|
||||||
|
font.bold: true
|
||||||
|
renderType: Text.QtRendering
|
||||||
|
|
||||||
|
function updateTime() {
|
||||||
|
text = new Date().toLocaleDateString(Qt.locale(config.Locale), config.DateFormat == "short" ? Locale.ShortFormat : config.DateFormat !== "" ? config.DateFormat : Locale.LongFormat)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
interval: 1000
|
||||||
|
repeat: true
|
||||||
|
running: true
|
||||||
|
onTriggered: {
|
||||||
|
dateLabel.updateTime()
|
||||||
|
timeLabel.updateTime()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
dateLabel.updateTime()
|
||||||
|
timeLabel.updateTime()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,526 @@
|
|||||||
|
// Config created by Keyitdev https://github.com/Keyitdev/sddm-astronaut-theme
|
||||||
|
// Copyright (C) 2022-2025 Keyitdev
|
||||||
|
// Based on https://github.com/MarianArlt/sddm-sugar-dark
|
||||||
|
// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
|
||||||
|
Column {
|
||||||
|
id: inputContainer
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
property ComboBox exposeSession: sessionSelect.exposeSession
|
||||||
|
property bool failed
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: errorMessageField
|
||||||
|
|
||||||
|
// change also in selectSession
|
||||||
|
height: root.font.pointSize * 2
|
||||||
|
width: parent.width / 2
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: errorMessage
|
||||||
|
|
||||||
|
width: parent.width
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
|
||||||
|
text: failed ? config.TranslateLoginFailedWarning || textConstants.loginFailed + "!" : keyboard.capsLock ? config.TranslateCapslockWarning || textConstants.capslockWarning : null
|
||||||
|
font.pointSize: root.font.pointSize * 0.8
|
||||||
|
font.italic: true
|
||||||
|
color: config.WarningColor
|
||||||
|
opacity: 0
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "fail"
|
||||||
|
when: failed
|
||||||
|
PropertyChanges {
|
||||||
|
target: errorMessage
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "capslock"
|
||||||
|
when: keyboard.capsLock
|
||||||
|
PropertyChanges {
|
||||||
|
target: errorMessage
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "opacity"
|
||||||
|
duration: 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: usernameField
|
||||||
|
|
||||||
|
height: root.font.pointSize * 4.5
|
||||||
|
width: parent.width / 2
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: selectUser
|
||||||
|
|
||||||
|
width: parent.height
|
||||||
|
height: parent.height
|
||||||
|
anchors.left: parent.left
|
||||||
|
z: 2
|
||||||
|
|
||||||
|
model: userModel
|
||||||
|
currentIndex: model.lastIndex
|
||||||
|
textRole: "name"
|
||||||
|
hoverEnabled: true
|
||||||
|
onActivated: {
|
||||||
|
username.text = currentText
|
||||||
|
}
|
||||||
|
|
||||||
|
property var popkey: config.RightToLeftLayout == "true" ? Qt.Key_Right : Qt.Key_Left
|
||||||
|
Keys.onPressed: function(event) {
|
||||||
|
if (event.key == Qt.Key_Down && !popup.opened)
|
||||||
|
username.forceActiveFocus();
|
||||||
|
if ((event.key == Qt.Key_Up || event.key == popkey) && !popup.opened)
|
||||||
|
popup.open();
|
||||||
|
}
|
||||||
|
KeyNavigation.down: username
|
||||||
|
KeyNavigation.right: username
|
||||||
|
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
// minus padding
|
||||||
|
width: popupHandler.width - 20
|
||||||
|
anchors.horizontalCenter: popupHandler.horizontalCenter
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
|
||||||
|
text: model.name
|
||||||
|
font.pointSize: root.font.pointSize * 0.8
|
||||||
|
font.capitalization: Font.AllLowercase
|
||||||
|
font.family: root.font.family
|
||||||
|
color: config.DropdownTextColor
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: selectUser.highlightedIndex === index ? config.DropdownSelectedBackgroundColor : "transparent"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
indicator: Button {
|
||||||
|
id: usernameIcon
|
||||||
|
|
||||||
|
width: selectUser.height * 1
|
||||||
|
height: parent.height
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
anchors.leftMargin: selectUser.height * 0
|
||||||
|
|
||||||
|
icon.height: parent.height * 0.25
|
||||||
|
icon.width: parent.height * 0.25
|
||||||
|
enabled: false
|
||||||
|
icon.color: config.UserIconColor
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/User.svg")
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: "transparent"
|
||||||
|
border.color: "transparent"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: "transparent"
|
||||||
|
border.color: "transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
popup: Popup {
|
||||||
|
id: popupHandler
|
||||||
|
|
||||||
|
implicitHeight: contentItem.implicitHeight
|
||||||
|
width: usernameField.width
|
||||||
|
y: parent.height - username.height / 3
|
||||||
|
x: config.RightToLeftLayout == "true" ? -loginButton.width + selectUser.width : 0
|
||||||
|
rightMargin: config.RightToLeftLayout == "true" ? root.padding + usernameField.width / 2 : undefined
|
||||||
|
padding: 10
|
||||||
|
|
||||||
|
contentItem: ListView {
|
||||||
|
implicitHeight: contentHeight + 20
|
||||||
|
|
||||||
|
clip: true
|
||||||
|
model: selectUser.popup.visible ? selectUser.delegateModel : null
|
||||||
|
currentIndex: selectUser.highlightedIndex
|
||||||
|
ScrollIndicator.vertical: ScrollIndicator { }
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
radius: config.RoundCorners / 2
|
||||||
|
color: config.DropdownBackgroundColor
|
||||||
|
layer.enabled: true
|
||||||
|
}
|
||||||
|
|
||||||
|
enter: Transition {
|
||||||
|
NumberAnimation { property: "opacity"; from: 0; to: 1 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "pressed"
|
||||||
|
when: selectUser.down
|
||||||
|
PropertyChanges {
|
||||||
|
target: usernameIcon
|
||||||
|
icon.color: Qt.lighter(config.HoverUserIconColor, 1.1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: selectUser.hovered
|
||||||
|
PropertyChanges {
|
||||||
|
target: usernameIcon
|
||||||
|
icon.color: Qt.lighter(config.HoverUserIconColor, 1.2)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: selectUser.activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: usernameIcon
|
||||||
|
icon.color: config.HoverUserIconColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "color, border.color, icon.color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: username
|
||||||
|
|
||||||
|
anchors.centerIn: parent
|
||||||
|
height: root.font.pointSize * 3
|
||||||
|
width: parent.width
|
||||||
|
horizontalAlignment: TextInput.AlignHCenter
|
||||||
|
z: 1
|
||||||
|
|
||||||
|
text: config.ForceLastUser == "true" ? selectUser.currentText : null
|
||||||
|
color: config.LoginFieldTextColor
|
||||||
|
font.bold: true
|
||||||
|
font.capitalization: config.AllowUppercaseLettersInUsernames == "false" ? Font.AllLowercase : Font.MixedCase
|
||||||
|
placeholderText: config.TranslatePlaceholderUsername || textConstants.userName
|
||||||
|
placeholderTextColor: config.PlaceholderTextColor
|
||||||
|
selectByMouse: true
|
||||||
|
renderType: Text.QtRendering
|
||||||
|
|
||||||
|
onFocusChanged:{
|
||||||
|
if(focus)
|
||||||
|
selectAll()
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: config.LoginFieldBackgroundColor
|
||||||
|
opacity: 0.6
|
||||||
|
border.color: "transparent"
|
||||||
|
border.width: parent.activeFocus ? 2 : 1
|
||||||
|
radius: config.RoundCorners || 0
|
||||||
|
}
|
||||||
|
|
||||||
|
onAccepted: config.AllowUppercaseLettersInUsernames == "false" ? sddm.login(username.text.toLowerCase(), password.text, sessionSelect.selectedSession) : sddm.login(username.text, password.text, sessionSelect.selectedSession)
|
||||||
|
KeyNavigation.down: passwordIcon
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: username.activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: username.background
|
||||||
|
border.color: config.HighlightBorderColor
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: username
|
||||||
|
color: Qt.lighter(config.LoginFieldTextColor, 1.15)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: passwordField
|
||||||
|
|
||||||
|
height: root.font.pointSize * 4.5
|
||||||
|
width: parent.width / 2
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: passwordIcon
|
||||||
|
|
||||||
|
height: parent.height
|
||||||
|
width: selectUser.height * 1
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: selectUser.height * 0
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
z: 2
|
||||||
|
|
||||||
|
icon.height: parent.height * 0.25
|
||||||
|
icon.width: parent.height * 0.25
|
||||||
|
icon.color: config.PasswordIconColor
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/Password2.svg")
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: "transparent"
|
||||||
|
border.color: "transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "visiblePasswordFocused"
|
||||||
|
when: passwordIcon.checked && passwordIcon.activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: passwordIcon
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/Password.svg")
|
||||||
|
icon.color: config.HoverPasswordIconColor
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "visiblePasswordHovered"
|
||||||
|
when: passwordIcon.checked && passwordIcon.hovered
|
||||||
|
PropertyChanges {
|
||||||
|
target: passwordIcon
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/Password.svg")
|
||||||
|
icon.color: config.HoverPasswordIconColor
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "visiblePassword"
|
||||||
|
when: passwordIcon.checked
|
||||||
|
PropertyChanges {
|
||||||
|
target: passwordIcon
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/Password.svg")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hiddenPasswordFocused"
|
||||||
|
when: passwordIcon.enabled && passwordIcon.activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: passwordIcon
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/Password2.svg")
|
||||||
|
icon.color: config.HoverPasswordIconColor
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hiddenPasswordHovered"
|
||||||
|
when: passwordIcon.hovered
|
||||||
|
PropertyChanges {
|
||||||
|
target: passwordIcon
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/Password2.svg")
|
||||||
|
icon.color: config.HoverPasswordIconColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
onClicked: toggle()
|
||||||
|
Keys.onReturnPressed: toggle()
|
||||||
|
Keys.onEnterPressed: toggle()
|
||||||
|
KeyNavigation.down: password
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: password
|
||||||
|
|
||||||
|
height: root.font.pointSize * 3
|
||||||
|
width: parent.width
|
||||||
|
anchors.centerIn: parent
|
||||||
|
horizontalAlignment: TextInput.AlignHCenter
|
||||||
|
|
||||||
|
font.bold: true
|
||||||
|
color: config.PasswordFieldTextColor
|
||||||
|
focus: config.PasswordFocus == "true" ? true : false
|
||||||
|
echoMode: passwordIcon.checked ? TextInput.Normal : TextInput.Password
|
||||||
|
placeholderText: config.TranslatePlaceholderPassword || textConstants.password
|
||||||
|
placeholderTextColor: config.PlaceholderTextColor
|
||||||
|
passwordCharacter: "•"
|
||||||
|
passwordMaskDelay: config.HideCompletePassword == "true" ? undefined : 1000
|
||||||
|
renderType: Text.QtRendering
|
||||||
|
selectByMouse: true
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: config.PasswordFieldBackgroundColor
|
||||||
|
opacity: 0.6
|
||||||
|
border.color: "transparent"
|
||||||
|
border.width: parent.activeFocus ? 2 : 1
|
||||||
|
radius: config.RoundCorners || 0
|
||||||
|
}
|
||||||
|
onAccepted: config.AllowUppercaseLettersInUsernames == "false" ? sddm.login(username.text.toLowerCase(), password.text, sessionSelect.selectedSession) : sddm.login(username.text, password.text, sessionSelect.selectedSession)
|
||||||
|
KeyNavigation.down: loginButton
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: password.activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: password.background
|
||||||
|
border.color: config.HighlightBorderColor
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: password
|
||||||
|
color: Qt.lighter(config.LoginFieldTextColor, 1.15)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "color, border.color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: login
|
||||||
|
|
||||||
|
// important
|
||||||
|
// try 4 or 9 ...
|
||||||
|
height: root.font.pointSize * 9
|
||||||
|
width: parent.width / 2
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
visible: config.HideLoginButton == "true" ? false : true
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: loginButton
|
||||||
|
|
||||||
|
height: root.font.pointSize * 3
|
||||||
|
implicitWidth: parent.width
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
|
||||||
|
text: config.TranslateLogin || textConstants.login
|
||||||
|
enabled: config.AllowEmptyPassword == "true" || username.text != "" && password.text != "" ? true : false
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
|
||||||
|
font.bold: true
|
||||||
|
font.pointSize: root.font.pointSize
|
||||||
|
font.family: root.font.family
|
||||||
|
color: config.LoginButtonTextColor
|
||||||
|
text: parent.text
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
id: buttonBackground
|
||||||
|
|
||||||
|
color: config.LoginButtonBackgroundColor
|
||||||
|
opacity: 0.0
|
||||||
|
radius: config.RoundCorners || 0
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "pressed"
|
||||||
|
when: loginButton.down
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonBackground
|
||||||
|
color: Qt.darker(config.LoginButtonBackgroundColor, 1.1)
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: loginButton.contentItem
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: loginButton.hovered
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonBackground
|
||||||
|
color: Qt.lighter(config.LoginButtonBackgroundColor, 1.15)
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: loginButton.contentItem
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: loginButton.activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonBackground
|
||||||
|
color: Qt.lighter(config.LoginButtonBackgroundColor, 1.2)
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: loginButton.contentItem
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "enabled"
|
||||||
|
when: loginButton.enabled
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonBackground;
|
||||||
|
color: config.LoginButtonBackgroundColor;
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: loginButton.contentItem;
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "opacity, color";
|
||||||
|
duration: 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
onClicked: config.AllowUppercaseLettersInUsernames == "false" ? sddm.login(username.text.toLowerCase(), password.text, sessionSelect.selectedSession) : sddm.login(username.text, password.text, sessionSelect.selectedSession)
|
||||||
|
Keys.onReturnPressed: clicked()
|
||||||
|
Keys.onEnterPressed: clicked()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: sddm
|
||||||
|
function onLoginSucceeded() {}
|
||||||
|
function onLoginFailed() {
|
||||||
|
failed = true
|
||||||
|
resetError.running ? resetError.stop() && resetError.start() : resetError.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
id: resetError
|
||||||
|
interval: 2000
|
||||||
|
onTriggered: failed = false
|
||||||
|
running: false
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
// Config created by Keyitdev https://github.com/Keyitdev/sddm-astronaut-theme
|
||||||
|
// Copyright (C) 2022-2025 Keyitdev
|
||||||
|
// Based on https://github.com/MarianArlt/sddm-sugar-dark
|
||||||
|
// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
|
import SddmComponents 2.0 as SDDM
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: formContainer
|
||||||
|
SDDM.TextConstants { id: textConstants }
|
||||||
|
|
||||||
|
property int p: config.ScreenPadding == "" ? 0 : config.ScreenPadding
|
||||||
|
property string a: config.FormPosition
|
||||||
|
|
||||||
|
Clock {
|
||||||
|
id: clock
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||||
|
// important
|
||||||
|
Layout.preferredHeight: root.height / 2
|
||||||
|
Layout.leftMargin: p != "0" ? a == "left" ? -p : a == "right" ? p : 0 : 0
|
||||||
|
}
|
||||||
|
|
||||||
|
Input {
|
||||||
|
id: input
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
Layout.preferredHeight: root.height / 20
|
||||||
|
Layout.leftMargin: p != "0" ? a == "left" ? -p : a == "right" ? p : 0 : 0
|
||||||
|
Layout.topMargin: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
SystemButtons {
|
||||||
|
id: systemButtons
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||||
|
Layout.preferredHeight: root.height / 5
|
||||||
|
Layout.maximumHeight: root.height / 5
|
||||||
|
Layout.leftMargin: p != "0" ? a == "left" ? -p : a == "right" ? p : 0 : 0
|
||||||
|
|
||||||
|
exposedSession: input.exposeSession
|
||||||
|
}
|
||||||
|
|
||||||
|
SessionButton {
|
||||||
|
id: sessionSelect
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||||
|
Layout.preferredHeight: root.height / 54
|
||||||
|
Layout.maximumHeight: root.height / 54
|
||||||
|
Layout.leftMargin: p != "0" ? a == "left" ? -p : a == "right" ? p : 0 : 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
// Config created by Keyitdev https://github.com/Keyitdev/sddm-astronaut-theme
|
||||||
|
// Copyright (C) 2022-2025 Keyitdev
|
||||||
|
// Based on https://github.com/MarianArlt/sddm-sugar-dark
|
||||||
|
// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: sessionButton
|
||||||
|
|
||||||
|
height: root.font.pointSize
|
||||||
|
width: parent.width / 2
|
||||||
|
|
||||||
|
property var selectedSession: selectSession.currentIndex
|
||||||
|
property string textConstantSession
|
||||||
|
property int loginButtonWidth
|
||||||
|
property ComboBox exposeSession: selectSession
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: selectSession
|
||||||
|
|
||||||
|
// important
|
||||||
|
// change also in errorMessage
|
||||||
|
height: root.font.pointSize * 2
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
model: sessionModel
|
||||||
|
currentIndex: model.lastIndex
|
||||||
|
textRole: "name"
|
||||||
|
|
||||||
|
Keys.onPressed: function(event) {
|
||||||
|
if ((event.key == Qt.Key_Left || event.key == Qt.Key_Right) && !popup.opened) {
|
||||||
|
popup.open();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
// minus padding
|
||||||
|
width: popupHandler.width - 20
|
||||||
|
anchors.horizontalCenter: popupHandler.horizontalCenter
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
|
||||||
|
text: model.name
|
||||||
|
font.pointSize: root.font.pointSize * 0.8
|
||||||
|
font.family: root.font.family
|
||||||
|
color: config.DropdownTextColor
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: selectSession.highlightedIndex === index ? config.DropdownSelectedBackgroundColor : "transparent"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
indicator {
|
||||||
|
visible: false
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
id: displayedItem
|
||||||
|
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
|
||||||
|
text: (config.TranslateSessionSelection || "Session") + " (" + selectSession.currentText + ")"
|
||||||
|
color: config.SessionButtonTextColor
|
||||||
|
font.pointSize: root.font.pointSize * 0.8
|
||||||
|
font.family: root.font.family
|
||||||
|
|
||||||
|
Keys.onReleased: parent.popup.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
height: parent.visualFocus ? 2 : 0
|
||||||
|
width: displayedItem.implicitWidth
|
||||||
|
|
||||||
|
color: "transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
popup: Popup {
|
||||||
|
id: popupHandler
|
||||||
|
|
||||||
|
implicitHeight: contentItem.implicitHeight
|
||||||
|
width: sessionButton.width
|
||||||
|
y: parent.height - 1
|
||||||
|
x: -popupHandler.width/2 + displayedItem.width/2
|
||||||
|
padding: 10
|
||||||
|
|
||||||
|
contentItem: ListView {
|
||||||
|
implicitHeight: contentHeight + 20
|
||||||
|
|
||||||
|
clip: true
|
||||||
|
model: selectSession.popup.visible ? selectSession.delegateModel : null
|
||||||
|
currentIndex: selectSession.highlightedIndex
|
||||||
|
ScrollIndicator.vertical: ScrollIndicator { }
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
radius: config.RoundCorners / 2
|
||||||
|
color: config.DropdownBackgroundColor
|
||||||
|
layer.enabled: true
|
||||||
|
}
|
||||||
|
|
||||||
|
enter: Transition {
|
||||||
|
NumberAnimation { property: "opacity"; from: 0; to: 1 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "pressed"
|
||||||
|
when: selectSession.down
|
||||||
|
PropertyChanges {
|
||||||
|
target: displayedItem
|
||||||
|
color: Qt.darker(config.HoverSessionButtonTextColor, 1.1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: selectSession.hovered
|
||||||
|
PropertyChanges {
|
||||||
|
target: displayedItem
|
||||||
|
color: Qt.lighter(config.HoverSessionButtonTextColor, 1.1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: selectSession.visualFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: displayedItem
|
||||||
|
color: config.HoverSessionButtonTextColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
// Config created by Keyitdev https://github.com/Keyitdev/sddm-astronaut-theme
|
||||||
|
// Copyright (C) 2022-2025 Keyitdev
|
||||||
|
// Based on https://github.com/MarianArlt/sddm-sugar-dark
|
||||||
|
// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
|
||||||
|
spacing: root.font.pointSize
|
||||||
|
|
||||||
|
property var shutdown: ["Shutdown", config.TranslateShutdown || textConstants.shutdown, sddm.canPowerOff]
|
||||||
|
property var reboot: ["Reboot", config.TranslateReboot || textConstants.reboot, sddm.canReboot]
|
||||||
|
property var suspend: ["Suspend", config.TranslateSuspend || textConstants.suspend, sddm.canSuspend]
|
||||||
|
property var hibernate: ["Hibernate", config.TranslateHibernate || textConstants.hibernate, sddm.canHibernate]
|
||||||
|
|
||||||
|
property ComboBox exposedSession
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
id: systemButtons
|
||||||
|
|
||||||
|
model: [shutdown, reboot, suspend, hibernate]
|
||||||
|
|
||||||
|
RoundButton {
|
||||||
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
|
||||||
|
Layout.topMargin: root.font.pointSize * 6.5
|
||||||
|
|
||||||
|
text: modelData[1]
|
||||||
|
font.pointSize: root.font.pointSize * 0.8
|
||||||
|
icon.source: modelData ? Qt.resolvedUrl("../Assets/" + modelData[0] + ".svg") : ""
|
||||||
|
icon.height: 2 * Math.round((root.font.pointSize * 3) / 2)
|
||||||
|
icon.width: 2 * Math.round((root.font.pointSize * 3) / 2)
|
||||||
|
icon.color: config.SystemButtonsIconsColor
|
||||||
|
palette.buttonText: config.SystemButtonsIconsColor
|
||||||
|
display: AbstractButton.TextUnderIcon
|
||||||
|
visible: config.HideSystemButtons != "true" && (config.BypassSystemButtonsChecks == "true" ? 1 : modelData[2])
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
height: 2
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
color: "transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onReturnPressed: clicked()
|
||||||
|
onClicked: {
|
||||||
|
parent.forceActiveFocus()
|
||||||
|
index == 0 ? sddm.powerOff() : index == 1 ? sddm.reboot() : index == 2 ? sddm.suspend() : sddm.hibernate()
|
||||||
|
}
|
||||||
|
KeyNavigation.left: index > 0 ? parent.children[index-1] : null
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "pressed"
|
||||||
|
when: parent.children[index].down
|
||||||
|
PropertyChanges {
|
||||||
|
target: parent.children[index]
|
||||||
|
icon.color: root.palette.buttonText
|
||||||
|
palette.buttonText: Qt.darker(root.palette.buttonText, 1.1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: parent.children[index].hovered
|
||||||
|
PropertyChanges {
|
||||||
|
target: parent.children[index]
|
||||||
|
icon.color: root.palette.buttonText
|
||||||
|
palette.buttonText: Qt.lighter(root.palette.buttonText, 1.1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: parent.children[index].activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: parent.children[index]
|
||||||
|
icon.color: root.palette.buttonText
|
||||||
|
palette.buttonText: root.palette.buttonText
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "palette.buttonText, border.color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import QtQuick
|
||||||
|
import Quickshell
|
||||||
|
import Quickshell.Wayland
|
||||||
|
|
||||||
|
QtObject {
|
||||||
|
id: sessionLocker
|
||||||
|
|
||||||
|
// store the lock object properly
|
||||||
|
property WlSessionLock lock: WlSessionLock {
|
||||||
|
id: theLock
|
||||||
|
|
||||||
|
onLocked: {
|
||||||
|
console.log("Session LOCKED")
|
||||||
|
}
|
||||||
|
|
||||||
|
onFinished: {
|
||||||
|
console.log("Session UNLOCKED")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function startLock() {
|
||||||
|
lock.requestLock()
|
||||||
|
}
|
||||||
|
|
||||||
|
function unlock() {
|
||||||
|
lock.unlockAndDestroy()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
import Quickshell
|
||||||
|
import Quickshell.Wayland
|
||||||
|
import Quickshell.Hyprland
|
||||||
|
import QtQuick
|
||||||
|
|
||||||
|
PanelWindow {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
SessionLocker {
|
||||||
|
id: locker
|
||||||
|
}
|
||||||
|
|
||||||
|
// create a lock surface per monitor
|
||||||
|
Component.onCompleted: {
|
||||||
|
locker.startLock()
|
||||||
|
for (let screen of Screens) {
|
||||||
|
lockSurfaceComponent.createObject(root, { "screen": screen })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: lockSurfaceComponent
|
||||||
|
LockSurface { }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
import QtQuick
|
||||||
|
import Quickshell
|
||||||
|
import QtMultimedia
|
||||||
|
import Quickshell.Wayland
|
||||||
|
|
||||||
|
PanelWindow {
|
||||||
|
WlrLayershell.layer: WlrLayer.Background
|
||||||
|
WlrLayershell.exclusiveZone: 1
|
||||||
|
implicitHeight: Screen.height
|
||||||
|
implicitWidth: Screen.width
|
||||||
|
anchors {
|
||||||
|
top: true
|
||||||
|
bottom: true
|
||||||
|
right: true
|
||||||
|
left: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Video {
|
||||||
|
visible: true
|
||||||
|
anchors.fill: parent
|
||||||
|
source: "file:///home/inorishio/Videos/clips/IHateWomen.mp4"
|
||||||
|
loops: MediaPlayer.Infinite
|
||||||
|
autoPlay: true
|
||||||
|
muted: true
|
||||||
|
fillMode: VideoOutput.PreserveAspectCrop
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
id="svg8"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 34 34"
|
||||||
|
height="34"
|
||||||
|
width="34">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<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></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<path
|
||||||
|
style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
|
||||||
|
d="M 17,1 C 8.163444,1 1,8.163444 1,17 1,25.836556 8.163444,33 17,33 25.836556,33 33,25.836556 33,17 33,8.163444 25.836556,1 17,1 Z m 0,1 C 25.284271,2 32,8.7157288 32,17 32,25.284271 25.284271,32 17,32 8.7157288,32 2,25.284271 2,17 2,8.7157288 8.7157288,2 17,2 Z"
|
||||||
|
id="path831" />
|
||||||
|
<path
|
||||||
|
id="path816"
|
||||||
|
d="M 17 11 C 13.686292 11 11 13.686292 11 17 C 11 20.313708 13.686292 23 17 23 C 20.313708 23 23 20.313708 23 17 C 23 13.686292 20.313708 11 17 11 z M 17 12 A 5 5 0 0 1 22 17 A 5 5 0 0 1 17 22 A 5 5 0 0 1 12 17 A 5 5 0 0 1 17 12 z "
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.71428573;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 24 24" width="512" height="512"><path d="M23.821,11.181v0C22.943,9.261,19.5,3,12,3S1.057,9.261.179,11.181a1.969,1.969,0,0,0,0,1.64C1.057,14.739,4.5,21,12,21s10.943-6.261,11.821-8.181A1.968,1.968,0,0,0,23.821,11.181ZM12,18a6,6,0,1,1,6-6A6.006,6.006,0,0,1,12,18Z"/><circle cx="12" cy="12" r="4"/></svg>
|
||||||
|
After Width: | Height: | Size: 426 B |
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 25.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 512.19 512.19" style="enable-background:new 0 0 512.19 512.19;" xml:space="preserve" width="512" height="512">
|
||||||
|
<g>
|
||||||
|
<path d="M496.543,200.771c-19.259-31.537-43.552-59.707-71.915-83.392l59.733-59.733c8.185-8.475,7.95-21.98-0.525-30.165 c-8.267-7.985-21.374-7.985-29.641,0l-64.96,65.045c-40.269-23.918-86.306-36.385-133.141-36.053 c-132.075,0-207.339,90.411-240.448,144.299c-20.862,33.743-20.862,76.379,0,110.123c19.259,31.537,43.552,59.707,71.915,83.392 l-59.733,59.733c-8.475,8.185-8.71,21.691-0.525,30.165c8.185,8.475,21.691,8.71,30.165,0.525c0.178-0.172,0.353-0.347,0.525-0.525 l65.109-65.109c40.219,23.915,86.201,36.402,132.992,36.117c132.075,0,207.339-90.411,240.448-144.299 C517.405,277.151,517.405,234.515,496.543,200.771z M128.095,255.833c-0.121-70.575,56.992-127.885,127.567-128.006 c26.703-0.046,52.75,8.275,74.481,23.793l-30.976,30.976c-13.004-7.842-27.887-12.022-43.072-12.096 c-47.128,0-85.333,38.205-85.333,85.333c0.074,15.185,4.254,30.068,12.096,43.072l-30.976,30.976 C136.414,308.288,128.096,282.394,128.095,255.833z M256.095,383.833c-26.561-0.001-52.455-8.319-74.048-23.787l30.976-30.976 c13.004,7.842,27.887,12.022,43.072,12.096c47.128,0,85.333-38.205,85.333-85.333c-0.074-15.185-4.254-30.068-12.096-43.072 l30.976-30.976c41.013,57.434,27.702,137.242-29.732,178.255C308.845,375.558,282.798,383.879,256.095,383.833z"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="34"
|
||||||
|
height="34"
|
||||||
|
viewBox="0 0 34 34"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<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></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
transform="matrix(1.000593,0,0,1.0006688,0.99050505,-287.73702)">
|
||||||
|
<path
|
||||||
|
style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.00189281;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
|
||||||
|
d="M 19.001953,1.1308594 V 2 H 19 v 11 h 1 V 2.3359375 A 15,15 45 0 1 32,17 15,15 45 0 1 21.001953,31.455078 v 1.033203 A 16.009488,16.010701 45 0 0 33.009766,17 16.009488,16.010701 45 0 0 19.001953,1.1308594 Z M 12.998047,1.5117188 A 16.009488,16.010701 45 0 0 0.99023438,17 16.009488,16.010701 45 0 0 14.998047,32.869141 V 32 H 15 V 21 H 14 V 31.664062 A 15,15 45 0 1 2,17 15,15 45 0 1 12.998047,2.5449219 Z"
|
||||||
|
transform="matrix(0.70668771,-0.70663419,0.70668771,0.70663419,-8.0273788,304.53335)"
|
||||||
|
id="path817" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
id="svg8"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 34 34"
|
||||||
|
height="34"
|
||||||
|
width="34">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<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></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<path
|
||||||
|
id="path822"
|
||||||
|
d="M 14 1 L 14 13 L 15 13 L 15 1 L 14 1 z M 19 1 L 19 13 L 20 13 L 20 1 L 19 1 z M 9 3.1855469 C 4.1702837 5.9748853 1.0026451 11.162345 1 17 C 1 25.836556 8.163444 33 17 33 C 25.836556 33 33 25.836556 33 17 C 32.99593 11.163669 29.828666 5.9780498 25 3.1894531 L 25 4.3496094 C 29.280842 7.0494632 31.988612 11.788234 32 17 C 32 25.284271 25.284271 32 17 32 C 8.7157288 32 2 25.284271 2 17 C 2.0120649 11.788824 4.7195457 7.0510246 9 4.3515625 L 9 3.1855469 z "
|
||||||
|
style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
id="svg8"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 34 34"
|
||||||
|
height="34"
|
||||||
|
width="34">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<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></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<path
|
||||||
|
style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
|
||||||
|
d="M 17,1 C 8.163444,1 1,8.163444 1,17 1,25.836556 8.163444,33 17,33 25.836556,33 33,25.836556 33,17 33,8.163444 25.836556,1 17,1 Z m 0,1 C 25.284271,2 32,8.7157288 32,17 32,25.284271 25.284271,32 17,32 8.7157288,32 2,25.284271 2,17 2,8.7157288 8.7157288,2 17,2 Z m -4,9 v 12 h 1 V 11 Z m 7,0 v 12 h 1 V 11 Z"
|
||||||
|
id="path831" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1,52 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
height="28"
|
||||||
|
width="28"
|
||||||
|
id="svg12"
|
||||||
|
xml:space="preserve"
|
||||||
|
viewBox="0 0 28 28"
|
||||||
|
y="0px"
|
||||||
|
x="0px"
|
||||||
|
version="1.1"
|
||||||
|
sodipodi:docname="user.svgz"
|
||||||
|
inkscape:version="0.92.2 2405546, 2018-03-11"><sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1440"
|
||||||
|
inkscape:window-height="843"
|
||||||
|
id="namedview8"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:zoom="3.2721019"
|
||||||
|
inkscape:cx="11.317087"
|
||||||
|
inkscape:cy="22.626613"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="22"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg12" /><metadata
|
||||||
|
id="metadata18"><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></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||||
|
id="defs16" /><g
|
||||||
|
id="g6"
|
||||||
|
transform="scale(0.06862745)"><g
|
||||||
|
id="g4"><path
|
||||||
|
id="path2"
|
||||||
|
d="M 204,204 C 260.1,204 306,158.1 306,102 306,45.9 260.1,0 204,0 147.9,0 102,45.9 102,102 c 0,56.1 45.9,102 102,102 z m 0,51 C 135.15,255 0,288.15 0,357 v 51 H 408 V 357 C 408,288.15 272.85,255 204,255 Z"
|
||||||
|
inkscape:connector-curvature="0" /></g></g></svg>
|
||||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
// Config created by Keyitdev https://github.com/Keyitdev/sddm-astronaut-theme
|
||||||
|
// Copyright (C) 2022-2025 Keyitdev
|
||||||
|
// Based on https://github.com/MarianArlt/sddm-sugar-dark
|
||||||
|
// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
|
||||||
|
Column {
|
||||||
|
id: clock
|
||||||
|
|
||||||
|
width: parent.width / 2
|
||||||
|
spacing: 0
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id:headerTextLabel
|
||||||
|
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
font.pointSize: root.font.pointSize * 4
|
||||||
|
color: config.HeaderTextColor
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
text: config.HeaderText
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: timeLabel
|
||||||
|
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
font.pointSize: root.font.pointSize * 9
|
||||||
|
font.bold: true
|
||||||
|
color: config.TimeTextColor
|
||||||
|
renderType: Text.QtRendering
|
||||||
|
|
||||||
|
function updateTime() {
|
||||||
|
text = new Date().toLocaleTimeString(Qt.locale(config.Locale), config.HourFormat == "long" ? Locale.LongFormat : config.HourFormat !== "" ? config.HourFormat : Locale.ShortFormat)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: dateLabel
|
||||||
|
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
color: config.DateTextColor
|
||||||
|
font.pointSize: root.font.pointSize * 3
|
||||||
|
font.bold: true
|
||||||
|
renderType: Text.QtRendering
|
||||||
|
|
||||||
|
function updateTime() {
|
||||||
|
text = new Date().toLocaleDateString(Qt.locale(config.Locale), config.DateFormat == "short" ? Locale.ShortFormat : config.DateFormat !== "" ? config.DateFormat : Locale.LongFormat)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
interval: 1000
|
||||||
|
repeat: true
|
||||||
|
running: true
|
||||||
|
onTriggered: {
|
||||||
|
dateLabel.updateTime()
|
||||||
|
timeLabel.updateTime()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
dateLabel.updateTime()
|
||||||
|
timeLabel.updateTime()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,526 @@
|
|||||||
|
// Config created by Keyitdev https://github.com/Keyitdev/sddm-astronaut-theme
|
||||||
|
// Copyright (C) 2022-2025 Keyitdev
|
||||||
|
// Based on https://github.com/MarianArlt/sddm-sugar-dark
|
||||||
|
// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
|
||||||
|
Column {
|
||||||
|
id: inputContainer
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
property ComboBox exposeSession: sessionSelect.exposeSession
|
||||||
|
property bool failed
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: errorMessageField
|
||||||
|
|
||||||
|
// change also in selectSession
|
||||||
|
height: root.font.pointSize * 2
|
||||||
|
width: parent.width / 2
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: errorMessage
|
||||||
|
|
||||||
|
width: parent.width
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
|
||||||
|
text: failed ? config.TranslateLoginFailedWarning || textConstants.loginFailed + "!" : keyboard.capsLock ? config.TranslateCapslockWarning || textConstants.capslockWarning : null
|
||||||
|
font.pointSize: root.font.pointSize * 0.8
|
||||||
|
font.italic: true
|
||||||
|
color: config.WarningColor
|
||||||
|
opacity: 0
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "fail"
|
||||||
|
when: failed
|
||||||
|
PropertyChanges {
|
||||||
|
target: errorMessage
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "capslock"
|
||||||
|
when: keyboard.capsLock
|
||||||
|
PropertyChanges {
|
||||||
|
target: errorMessage
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "opacity"
|
||||||
|
duration: 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: usernameField
|
||||||
|
|
||||||
|
height: root.font.pointSize * 4.5
|
||||||
|
width: parent.width / 2
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: selectUser
|
||||||
|
|
||||||
|
width: parent.height
|
||||||
|
height: parent.height
|
||||||
|
anchors.left: parent.left
|
||||||
|
z: 2
|
||||||
|
|
||||||
|
model: userModel
|
||||||
|
currentIndex: model.lastIndex
|
||||||
|
textRole: "name"
|
||||||
|
hoverEnabled: true
|
||||||
|
onActivated: {
|
||||||
|
username.text = currentText
|
||||||
|
}
|
||||||
|
|
||||||
|
property var popkey: config.RightToLeftLayout == "true" ? Qt.Key_Right : Qt.Key_Left
|
||||||
|
Keys.onPressed: function(event) {
|
||||||
|
if (event.key == Qt.Key_Down && !popup.opened)
|
||||||
|
username.forceActiveFocus();
|
||||||
|
if ((event.key == Qt.Key_Up || event.key == popkey) && !popup.opened)
|
||||||
|
popup.open();
|
||||||
|
}
|
||||||
|
KeyNavigation.down: username
|
||||||
|
KeyNavigation.right: username
|
||||||
|
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
// minus padding
|
||||||
|
width: popupHandler.width - 20
|
||||||
|
anchors.horizontalCenter: popupHandler.horizontalCenter
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
|
||||||
|
text: model.name
|
||||||
|
font.pointSize: root.font.pointSize * 0.8
|
||||||
|
font.capitalization: Font.AllLowercase
|
||||||
|
font.family: root.font.family
|
||||||
|
color: config.DropdownTextColor
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: selectUser.highlightedIndex === index ? config.DropdownSelectedBackgroundColor : "transparent"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
indicator: Button {
|
||||||
|
id: usernameIcon
|
||||||
|
|
||||||
|
width: selectUser.height * 1
|
||||||
|
height: parent.height
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
anchors.leftMargin: selectUser.height * 0
|
||||||
|
|
||||||
|
icon.height: parent.height * 0.25
|
||||||
|
icon.width: parent.height * 0.25
|
||||||
|
enabled: false
|
||||||
|
icon.color: config.UserIconColor
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/User.svg")
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: "transparent"
|
||||||
|
border.color: "transparent"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: "transparent"
|
||||||
|
border.color: "transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
popup: Popup {
|
||||||
|
id: popupHandler
|
||||||
|
|
||||||
|
implicitHeight: contentItem.implicitHeight
|
||||||
|
width: usernameField.width
|
||||||
|
y: parent.height - username.height / 3
|
||||||
|
x: config.RightToLeftLayout == "true" ? -loginButton.width + selectUser.width : 0
|
||||||
|
rightMargin: config.RightToLeftLayout == "true" ? root.padding + usernameField.width / 2 : undefined
|
||||||
|
padding: 10
|
||||||
|
|
||||||
|
contentItem: ListView {
|
||||||
|
implicitHeight: contentHeight + 20
|
||||||
|
|
||||||
|
clip: true
|
||||||
|
model: selectUser.popup.visible ? selectUser.delegateModel : null
|
||||||
|
currentIndex: selectUser.highlightedIndex
|
||||||
|
ScrollIndicator.vertical: ScrollIndicator { }
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
radius: config.RoundCorners / 2
|
||||||
|
color: config.DropdownBackgroundColor
|
||||||
|
layer.enabled: true
|
||||||
|
}
|
||||||
|
|
||||||
|
enter: Transition {
|
||||||
|
NumberAnimation { property: "opacity"; from: 0; to: 1 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "pressed"
|
||||||
|
when: selectUser.down
|
||||||
|
PropertyChanges {
|
||||||
|
target: usernameIcon
|
||||||
|
icon.color: Qt.lighter(config.HoverUserIconColor, 1.1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: selectUser.hovered
|
||||||
|
PropertyChanges {
|
||||||
|
target: usernameIcon
|
||||||
|
icon.color: Qt.lighter(config.HoverUserIconColor, 1.2)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: selectUser.activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: usernameIcon
|
||||||
|
icon.color: config.HoverUserIconColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "color, border.color, icon.color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: username
|
||||||
|
|
||||||
|
anchors.centerIn: parent
|
||||||
|
height: root.font.pointSize * 3
|
||||||
|
width: parent.width
|
||||||
|
horizontalAlignment: TextInput.AlignHCenter
|
||||||
|
z: 1
|
||||||
|
|
||||||
|
text: config.ForceLastUser == "true" ? selectUser.currentText : null
|
||||||
|
color: config.LoginFieldTextColor
|
||||||
|
font.bold: true
|
||||||
|
font.capitalization: config.AllowUppercaseLettersInUsernames == "false" ? Font.AllLowercase : Font.MixedCase
|
||||||
|
placeholderText: config.TranslatePlaceholderUsername || textConstants.userName
|
||||||
|
placeholderTextColor: config.PlaceholderTextColor
|
||||||
|
selectByMouse: true
|
||||||
|
renderType: Text.QtRendering
|
||||||
|
|
||||||
|
onFocusChanged:{
|
||||||
|
if(focus)
|
||||||
|
selectAll()
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: config.LoginFieldBackgroundColor
|
||||||
|
opacity: 0.6
|
||||||
|
border.color: "transparent"
|
||||||
|
border.width: parent.activeFocus ? 2 : 1
|
||||||
|
radius: config.RoundCorners || 0
|
||||||
|
}
|
||||||
|
|
||||||
|
onAccepted: config.AllowUppercaseLettersInUsernames == "false" ? sddm.login(username.text.toLowerCase(), password.text, sessionSelect.selectedSession) : sddm.login(username.text, password.text, sessionSelect.selectedSession)
|
||||||
|
KeyNavigation.down: passwordIcon
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: username.activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: username.background
|
||||||
|
border.color: config.HighlightBorderColor
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: username
|
||||||
|
color: Qt.lighter(config.LoginFieldTextColor, 1.15)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: passwordField
|
||||||
|
|
||||||
|
height: root.font.pointSize * 4.5
|
||||||
|
width: parent.width / 2
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: passwordIcon
|
||||||
|
|
||||||
|
height: parent.height
|
||||||
|
width: selectUser.height * 1
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: selectUser.height * 0
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
z: 2
|
||||||
|
|
||||||
|
icon.height: parent.height * 0.25
|
||||||
|
icon.width: parent.height * 0.25
|
||||||
|
icon.color: config.PasswordIconColor
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/Password2.svg")
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: "transparent"
|
||||||
|
border.color: "transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "visiblePasswordFocused"
|
||||||
|
when: passwordIcon.checked && passwordIcon.activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: passwordIcon
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/Password.svg")
|
||||||
|
icon.color: config.HoverPasswordIconColor
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "visiblePasswordHovered"
|
||||||
|
when: passwordIcon.checked && passwordIcon.hovered
|
||||||
|
PropertyChanges {
|
||||||
|
target: passwordIcon
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/Password.svg")
|
||||||
|
icon.color: config.HoverPasswordIconColor
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "visiblePassword"
|
||||||
|
when: passwordIcon.checked
|
||||||
|
PropertyChanges {
|
||||||
|
target: passwordIcon
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/Password.svg")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hiddenPasswordFocused"
|
||||||
|
when: passwordIcon.enabled && passwordIcon.activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: passwordIcon
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/Password2.svg")
|
||||||
|
icon.color: config.HoverPasswordIconColor
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hiddenPasswordHovered"
|
||||||
|
when: passwordIcon.hovered
|
||||||
|
PropertyChanges {
|
||||||
|
target: passwordIcon
|
||||||
|
icon.source: Qt.resolvedUrl("../Assets/Password2.svg")
|
||||||
|
icon.color: config.HoverPasswordIconColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
onClicked: toggle()
|
||||||
|
Keys.onReturnPressed: toggle()
|
||||||
|
Keys.onEnterPressed: toggle()
|
||||||
|
KeyNavigation.down: password
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: password
|
||||||
|
|
||||||
|
height: root.font.pointSize * 3
|
||||||
|
width: parent.width
|
||||||
|
anchors.centerIn: parent
|
||||||
|
horizontalAlignment: TextInput.AlignHCenter
|
||||||
|
|
||||||
|
font.bold: true
|
||||||
|
color: config.PasswordFieldTextColor
|
||||||
|
focus: config.PasswordFocus == "true" ? true : false
|
||||||
|
echoMode: passwordIcon.checked ? TextInput.Normal : TextInput.Password
|
||||||
|
placeholderText: config.TranslatePlaceholderPassword || textConstants.password
|
||||||
|
placeholderTextColor: config.PlaceholderTextColor
|
||||||
|
passwordCharacter: "•"
|
||||||
|
passwordMaskDelay: config.HideCompletePassword == "true" ? undefined : 1000
|
||||||
|
renderType: Text.QtRendering
|
||||||
|
selectByMouse: true
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: config.PasswordFieldBackgroundColor
|
||||||
|
opacity: 0.6
|
||||||
|
border.color: "transparent"
|
||||||
|
border.width: parent.activeFocus ? 2 : 1
|
||||||
|
radius: config.RoundCorners || 0
|
||||||
|
}
|
||||||
|
onAccepted: config.AllowUppercaseLettersInUsernames == "false" ? sddm.login(username.text.toLowerCase(), password.text, sessionSelect.selectedSession) : sddm.login(username.text, password.text, sessionSelect.selectedSession)
|
||||||
|
KeyNavigation.down: loginButton
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: password.activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: password.background
|
||||||
|
border.color: config.HighlightBorderColor
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: password
|
||||||
|
color: Qt.lighter(config.LoginFieldTextColor, 1.15)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "color, border.color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: login
|
||||||
|
|
||||||
|
// important
|
||||||
|
// try 4 or 9 ...
|
||||||
|
height: root.font.pointSize * 9
|
||||||
|
width: parent.width / 2
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
visible: config.HideLoginButton == "true" ? false : true
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: loginButton
|
||||||
|
|
||||||
|
height: root.font.pointSize * 3
|
||||||
|
implicitWidth: parent.width
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
|
||||||
|
text: config.TranslateLogin || textConstants.login
|
||||||
|
enabled: config.AllowEmptyPassword == "true" || username.text != "" && password.text != "" ? true : false
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
|
||||||
|
font.bold: true
|
||||||
|
font.pointSize: root.font.pointSize
|
||||||
|
font.family: root.font.family
|
||||||
|
color: config.LoginButtonTextColor
|
||||||
|
text: parent.text
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
id: buttonBackground
|
||||||
|
|
||||||
|
color: config.LoginButtonBackgroundColor
|
||||||
|
opacity: 0.0
|
||||||
|
radius: config.RoundCorners || 0
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "pressed"
|
||||||
|
when: loginButton.down
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonBackground
|
||||||
|
color: Qt.darker(config.LoginButtonBackgroundColor, 1.1)
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: loginButton.contentItem
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: loginButton.hovered
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonBackground
|
||||||
|
color: Qt.lighter(config.LoginButtonBackgroundColor, 1.15)
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: loginButton.contentItem
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: loginButton.activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonBackground
|
||||||
|
color: Qt.lighter(config.LoginButtonBackgroundColor, 1.2)
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: loginButton.contentItem
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "enabled"
|
||||||
|
when: loginButton.enabled
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonBackground;
|
||||||
|
color: config.LoginButtonBackgroundColor;
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: loginButton.contentItem;
|
||||||
|
opacity: 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "opacity, color";
|
||||||
|
duration: 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
onClicked: config.AllowUppercaseLettersInUsernames == "false" ? sddm.login(username.text.toLowerCase(), password.text, sessionSelect.selectedSession) : sddm.login(username.text, password.text, sessionSelect.selectedSession)
|
||||||
|
Keys.onReturnPressed: clicked()
|
||||||
|
Keys.onEnterPressed: clicked()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: sddm
|
||||||
|
function onLoginSucceeded() {}
|
||||||
|
function onLoginFailed() {
|
||||||
|
failed = true
|
||||||
|
resetError.running ? resetError.stop() && resetError.start() : resetError.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
id: resetError
|
||||||
|
interval: 2000
|
||||||
|
onTriggered: failed = false
|
||||||
|
running: false
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
// Config created by Keyitdev https://github.com/Keyitdev/sddm-astronaut-theme
|
||||||
|
// Copyright (C) 2022-2025 Keyitdev
|
||||||
|
// Based on https://github.com/MarianArlt/sddm-sugar-dark
|
||||||
|
// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
|
import SddmComponents 2.0 as SDDM
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: formContainer
|
||||||
|
SDDM.TextConstants { id: textConstants }
|
||||||
|
|
||||||
|
property int p: config.ScreenPadding == "" ? 0 : config.ScreenPadding
|
||||||
|
property string a: config.FormPosition
|
||||||
|
|
||||||
|
Clock {
|
||||||
|
id: clock
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||||
|
// important
|
||||||
|
Layout.preferredHeight: root.height / 2
|
||||||
|
Layout.leftMargin: p != "0" ? a == "left" ? -p : a == "right" ? p : 0 : 0
|
||||||
|
}
|
||||||
|
|
||||||
|
Input {
|
||||||
|
id: input
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
Layout.preferredHeight: root.height / 20
|
||||||
|
Layout.leftMargin: p != "0" ? a == "left" ? -p : a == "right" ? p : 0 : 0
|
||||||
|
Layout.topMargin: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
SystemButtons {
|
||||||
|
id: systemButtons
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||||
|
Layout.preferredHeight: root.height / 5
|
||||||
|
Layout.maximumHeight: root.height / 5
|
||||||
|
Layout.leftMargin: p != "0" ? a == "left" ? -p : a == "right" ? p : 0 : 0
|
||||||
|
|
||||||
|
exposedSession: input.exposeSession
|
||||||
|
}
|
||||||
|
|
||||||
|
SessionButton {
|
||||||
|
id: sessionSelect
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||||
|
Layout.preferredHeight: root.height / 54
|
||||||
|
Layout.maximumHeight: root.height / 54
|
||||||
|
Layout.leftMargin: p != "0" ? a == "left" ? -p : a == "right" ? p : 0 : 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
// Config created by Keyitdev https://github.com/Keyitdev/sddm-astronaut-theme
|
||||||
|
// Copyright (C) 2022-2025 Keyitdev
|
||||||
|
// Based on https://github.com/MarianArlt/sddm-sugar-dark
|
||||||
|
// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: sessionButton
|
||||||
|
|
||||||
|
height: root.font.pointSize
|
||||||
|
width: parent.width / 2
|
||||||
|
|
||||||
|
property var selectedSession: selectSession.currentIndex
|
||||||
|
property string textConstantSession
|
||||||
|
property int loginButtonWidth
|
||||||
|
property ComboBox exposeSession: selectSession
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: selectSession
|
||||||
|
|
||||||
|
// important
|
||||||
|
// change also in errorMessage
|
||||||
|
height: root.font.pointSize * 2
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
model: sessionModel
|
||||||
|
currentIndex: model.lastIndex
|
||||||
|
textRole: "name"
|
||||||
|
|
||||||
|
Keys.onPressed: function(event) {
|
||||||
|
if ((event.key == Qt.Key_Left || event.key == Qt.Key_Right) && !popup.opened) {
|
||||||
|
popup.open();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
// minus padding
|
||||||
|
width: popupHandler.width - 20
|
||||||
|
anchors.horizontalCenter: popupHandler.horizontalCenter
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
|
||||||
|
text: model.name
|
||||||
|
font.pointSize: root.font.pointSize * 0.8
|
||||||
|
font.family: root.font.family
|
||||||
|
color: config.DropdownTextColor
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: selectSession.highlightedIndex === index ? config.DropdownSelectedBackgroundColor : "transparent"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
indicator {
|
||||||
|
visible: false
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
id: displayedItem
|
||||||
|
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
|
||||||
|
text: (config.TranslateSessionSelection || "Session") + " (" + selectSession.currentText + ")"
|
||||||
|
color: config.SessionButtonTextColor
|
||||||
|
font.pointSize: root.font.pointSize * 0.8
|
||||||
|
font.family: root.font.family
|
||||||
|
|
||||||
|
Keys.onReleased: parent.popup.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
height: parent.visualFocus ? 2 : 0
|
||||||
|
width: displayedItem.implicitWidth
|
||||||
|
|
||||||
|
color: "transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
popup: Popup {
|
||||||
|
id: popupHandler
|
||||||
|
|
||||||
|
implicitHeight: contentItem.implicitHeight
|
||||||
|
width: sessionButton.width
|
||||||
|
y: parent.height - 1
|
||||||
|
x: -popupHandler.width/2 + displayedItem.width/2
|
||||||
|
padding: 10
|
||||||
|
|
||||||
|
contentItem: ListView {
|
||||||
|
implicitHeight: contentHeight + 20
|
||||||
|
|
||||||
|
clip: true
|
||||||
|
model: selectSession.popup.visible ? selectSession.delegateModel : null
|
||||||
|
currentIndex: selectSession.highlightedIndex
|
||||||
|
ScrollIndicator.vertical: ScrollIndicator { }
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
radius: config.RoundCorners / 2
|
||||||
|
color: config.DropdownBackgroundColor
|
||||||
|
layer.enabled: true
|
||||||
|
}
|
||||||
|
|
||||||
|
enter: Transition {
|
||||||
|
NumberAnimation { property: "opacity"; from: 0; to: 1 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "pressed"
|
||||||
|
when: selectSession.down
|
||||||
|
PropertyChanges {
|
||||||
|
target: displayedItem
|
||||||
|
color: Qt.darker(config.HoverSessionButtonTextColor, 1.1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: selectSession.hovered
|
||||||
|
PropertyChanges {
|
||||||
|
target: displayedItem
|
||||||
|
color: Qt.lighter(config.HoverSessionButtonTextColor, 1.1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: selectSession.visualFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: displayedItem
|
||||||
|
color: config.HoverSessionButtonTextColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
// Config created by Keyitdev https://github.com/Keyitdev/sddm-astronaut-theme
|
||||||
|
// Copyright (C) 2022-2025 Keyitdev
|
||||||
|
// Based on https://github.com/MarianArlt/sddm-sugar-dark
|
||||||
|
// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
|
||||||
|
spacing: root.font.pointSize
|
||||||
|
|
||||||
|
property var shutdown: ["Shutdown", config.TranslateShutdown || textConstants.shutdown, sddm.canPowerOff]
|
||||||
|
property var reboot: ["Reboot", config.TranslateReboot || textConstants.reboot, sddm.canReboot]
|
||||||
|
property var suspend: ["Suspend", config.TranslateSuspend || textConstants.suspend, sddm.canSuspend]
|
||||||
|
property var hibernate: ["Hibernate", config.TranslateHibernate || textConstants.hibernate, sddm.canHibernate]
|
||||||
|
|
||||||
|
property ComboBox exposedSession
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
id: systemButtons
|
||||||
|
|
||||||
|
model: [shutdown, reboot, suspend, hibernate]
|
||||||
|
|
||||||
|
RoundButton {
|
||||||
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
|
||||||
|
Layout.topMargin: root.font.pointSize * 6.5
|
||||||
|
|
||||||
|
text: modelData[1]
|
||||||
|
font.pointSize: root.font.pointSize * 0.8
|
||||||
|
icon.source: modelData ? Qt.resolvedUrl("../Assets/" + modelData[0] + ".svg") : ""
|
||||||
|
icon.height: 2 * Math.round((root.font.pointSize * 3) / 2)
|
||||||
|
icon.width: 2 * Math.round((root.font.pointSize * 3) / 2)
|
||||||
|
icon.color: config.SystemButtonsIconsColor
|
||||||
|
palette.buttonText: config.SystemButtonsIconsColor
|
||||||
|
display: AbstractButton.TextUnderIcon
|
||||||
|
visible: config.HideSystemButtons != "true" && (config.BypassSystemButtonsChecks == "true" ? 1 : modelData[2])
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
height: 2
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
color: "transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onReturnPressed: clicked()
|
||||||
|
onClicked: {
|
||||||
|
parent.forceActiveFocus()
|
||||||
|
index == 0 ? sddm.powerOff() : index == 1 ? sddm.reboot() : index == 2 ? sddm.suspend() : sddm.hibernate()
|
||||||
|
}
|
||||||
|
KeyNavigation.left: index > 0 ? parent.children[index-1] : null
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "pressed"
|
||||||
|
when: parent.children[index].down
|
||||||
|
PropertyChanges {
|
||||||
|
target: parent.children[index]
|
||||||
|
icon.color: root.palette.buttonText
|
||||||
|
palette.buttonText: Qt.darker(root.palette.buttonText, 1.1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: parent.children[index].hovered
|
||||||
|
PropertyChanges {
|
||||||
|
target: parent.children[index]
|
||||||
|
icon.color: root.palette.buttonText
|
||||||
|
palette.buttonText: Qt.lighter(root.palette.buttonText, 1.1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: parent.children[index].activeFocus
|
||||||
|
PropertyChanges {
|
||||||
|
target: parent.children[index]
|
||||||
|
icon.color: root.palette.buttonText
|
||||||
|
palette.buttonText: root.palette.buttonText
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "palette.buttonText, border.color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,200 @@
|
|||||||
|
// Config created by Keyitdev https://github.com/Keyitdev/sddm-astronaut-theme
|
||||||
|
// Copyright (C) 2022-2025 Keyitdev
|
||||||
|
// Based on https://github.com/MarianArlt/sddm-sugar-dark
|
||||||
|
// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
import QtQuick.Effects
|
||||||
|
import QtMultimedia
|
||||||
|
|
||||||
|
import "Components"
|
||||||
|
|
||||||
|
Pane {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
height: config.ScreenHeight || Screen.height
|
||||||
|
width: config.ScreenWidth || Screen.ScreenWidth
|
||||||
|
padding: config.ScreenPadding
|
||||||
|
|
||||||
|
LayoutMirroring.enabled: config.RightToLeftLayout == "true" ? true : Qt.application.layoutDirection === Qt.RightToLeft
|
||||||
|
LayoutMirroring.childrenInherit: true
|
||||||
|
|
||||||
|
palette.window: config.BackgroundColor
|
||||||
|
palette.highlight: config.HighlightBackgroundColor
|
||||||
|
palette.highlightedText: config.HighlightTextColor
|
||||||
|
palette.buttonText: config.HoverSystemButtonsIconsColor
|
||||||
|
|
||||||
|
font.family: config.Font
|
||||||
|
font.pointSize: config.FontSize !== "" ? config.FontSize : parseInt(height / 80) || 13
|
||||||
|
|
||||||
|
focus: true
|
||||||
|
|
||||||
|
property bool leftleft: config.HaveFormBackground == "true" &&
|
||||||
|
config.PartialBlur == "false" &&
|
||||||
|
config.FormPosition == "left" &&
|
||||||
|
config.BackgroundHorizontalAlignment == "left"
|
||||||
|
|
||||||
|
property bool leftcenter: config.HaveFormBackground == "true" &&
|
||||||
|
config.PartialBlur == "false" &&
|
||||||
|
config.FormPosition == "left" &&
|
||||||
|
config.BackgroundHorizontalAlignment == "center"
|
||||||
|
|
||||||
|
property bool rightright: config.HaveFormBackground == "true" &&
|
||||||
|
config.PartialBlur == "false" &&
|
||||||
|
config.FormPosition == "right" &&
|
||||||
|
config.BackgroundHorizontalAlignment == "right"
|
||||||
|
|
||||||
|
property bool rightcenter: config.HaveFormBackground == "true" &&
|
||||||
|
config.PartialBlur == "false" &&
|
||||||
|
config.FormPosition == "right" &&
|
||||||
|
config.BackgroundHorizontalAlignment == "center"
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: sizeHelper
|
||||||
|
|
||||||
|
height: parent.height
|
||||||
|
width: parent.width
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: tintLayer
|
||||||
|
|
||||||
|
height: parent.height
|
||||||
|
width: parent.width
|
||||||
|
anchors.fill: parent
|
||||||
|
z: 1
|
||||||
|
color: config.DimBackgroundColor
|
||||||
|
opacity: config.DimBackground
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: formBackground
|
||||||
|
|
||||||
|
anchors.fill: form
|
||||||
|
anchors.centerIn: form
|
||||||
|
z: 1
|
||||||
|
|
||||||
|
color: config.FormBackgroundColor
|
||||||
|
visible: config.HaveFormBackground == "true" ? true : false
|
||||||
|
opacity: config.PartialBlur == "true" ? 0.3 : 1
|
||||||
|
}
|
||||||
|
|
||||||
|
LoginForm {
|
||||||
|
id: form
|
||||||
|
|
||||||
|
height: parent.height
|
||||||
|
width: parent.width / 2.5
|
||||||
|
anchors.left: config.FormPosition == "left" ? parent.left : undefined
|
||||||
|
anchors.horizontalCenter: config.FormPosition == "center" ? parent.horizontalCenter : undefined
|
||||||
|
anchors.right: config.FormPosition == "right" ? parent.right : undefined
|
||||||
|
z: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: backgroundPlaceholderImage
|
||||||
|
|
||||||
|
z: 10
|
||||||
|
source: config.BackgroundPlaceholder
|
||||||
|
visible: false
|
||||||
|
}
|
||||||
|
|
||||||
|
AnimatedImage {
|
||||||
|
id: backgroundImage
|
||||||
|
|
||||||
|
MediaPlayer {
|
||||||
|
id: player
|
||||||
|
|
||||||
|
videoOutput: videoOutput
|
||||||
|
autoPlay: true
|
||||||
|
playbackRate: config.BackgroundSpeed == "" ? 1.0 : config.BackgroundSpeed
|
||||||
|
loops: -1
|
||||||
|
onPlayingChanged: {
|
||||||
|
console.log("Video started.")
|
||||||
|
backgroundPlaceholderImage.visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VideoOutput {
|
||||||
|
id: videoOutput
|
||||||
|
|
||||||
|
fillMode: config.CropBackground == "true" ? VideoOutput.PreserveAspectCrop : VideoOutput.PreserveAspectFit
|
||||||
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
|
||||||
|
height: parent.height
|
||||||
|
width: config.HaveFormBackground == "true" && config.FormPosition != "center" && config.PartialBlur != "true" ? parent.width - formBackground.width : parent.width
|
||||||
|
anchors.left: leftleft || leftcenter ? formBackground.right : undefined
|
||||||
|
anchors.right: rightright || rightcenter ? formBackground.left : undefined
|
||||||
|
|
||||||
|
horizontalAlignment: config.BackgroundHorizontalAlignment == "left" ?
|
||||||
|
Image.AlignLeft :
|
||||||
|
config.BackgroundHorizontalAlignment == "right" ?
|
||||||
|
Image.AlignRight : Image.AlignHCenter
|
||||||
|
|
||||||
|
verticalAlignment: config.BackgroundVerticalAlignment == "top" ?
|
||||||
|
Image.AlignTop :
|
||||||
|
config.BackgroundVerticalAlignment == "bottom" ?
|
||||||
|
Image.AlignBottom : Image.AlignVCenter
|
||||||
|
|
||||||
|
speed: config.BackgroundSpeed == "" ? 1.0 : config.BackgroundSpeed
|
||||||
|
paused: config.PauseBackground == "true" ? 1 : 0
|
||||||
|
fillMode: config.CropBackground == "true" ? Image.PreserveAspectCrop : Image.PreserveAspectFit
|
||||||
|
asynchronous: true
|
||||||
|
cache: true
|
||||||
|
clip: true
|
||||||
|
mipmap: true
|
||||||
|
|
||||||
|
Component.onCompleted:{
|
||||||
|
var fileType = config.Background.substring(config.Background.lastIndexOf(".") + 1)
|
||||||
|
const videoFileTypes = ["avi", "mp4", "mov", "mkv", "m4v", "webm"];
|
||||||
|
if (videoFileTypes.includes(fileType)) {
|
||||||
|
backgroundPlaceholderImage.visible = true;
|
||||||
|
player.source = Qt.resolvedUrl(config.Background)
|
||||||
|
player.play();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
backgroundImage.source = config.background || config.Background
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: backgroundImage
|
||||||
|
onClicked: parent.forceActiveFocus()
|
||||||
|
}
|
||||||
|
|
||||||
|
ShaderEffectSource {
|
||||||
|
id: blurMask
|
||||||
|
|
||||||
|
height: parent.height
|
||||||
|
width: form.width
|
||||||
|
anchors.centerIn: form
|
||||||
|
|
||||||
|
sourceItem: backgroundImage
|
||||||
|
sourceRect: Qt.rect(x,y,width,height)
|
||||||
|
visible: config.FullBlur == "true" || config.PartialBlur == "true" ? true : false
|
||||||
|
}
|
||||||
|
|
||||||
|
MultiEffect {
|
||||||
|
id: blur
|
||||||
|
|
||||||
|
height: parent.height
|
||||||
|
|
||||||
|
// width: config.FullBlur == "true" ? parent.width : form.width
|
||||||
|
// anchors.centerIn: config.FullBlur == "true" ? parent : form
|
||||||
|
|
||||||
|
// This solves problem when FullBlur and HaveFormBackground is set to true but PartialBlur is false and FormPosition isn't center.
|
||||||
|
width: (config.FullBlur == "true" && config.PartialBlur == "false" && config.FormPosition != "center" ) ? parent.width - formBackground.width : config.FullBlur == "true" ? parent.width : form.width
|
||||||
|
anchors.centerIn: config.FullBlur == "true" ? backgroundImage : form
|
||||||
|
|
||||||
|
source: config.FullBlur == "true" ? backgroundImage : blurMask
|
||||||
|
blurEnabled: true
|
||||||
|
autoPaddingEnabled: false
|
||||||
|
blur: config.Blur == "" ? 2.0 : config.Blur
|
||||||
|
blurMax: config.BlurMax == "" ? 48 : config.BlurMax
|
||||||
|
visible: config.FullBlur == "true" || config.PartialBlur == "true" ? true : false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
# sddm-astronaut-theme
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
[](https://ko-fi.com/keyitdev)
|
||||||
|
|
||||||
|
[sddm-astronaut-theme](https://github.com/Keyitdev/sddm-astronaut-theme) is a series of themes for the [SDDM](https://github.com/sddm/sddm/) display manager made by **[Keyitdev](https://github.com/Keyitdev)**.
|
||||||
|
|
||||||
|
It's written using the latest version of Qt, which is **Qt6**. Its key features include **virtual keyboard support** and an **installation script**. This theme also support **animated wallpapers**. You can easily change its appearance by choosing another of the ten pre-made themes or creating your own. Each of these themes was created by modifying just one file - **[config](./Themes/astronaut.conf)**.
|
||||||
|
|
||||||
|
All themes were created for 1080p. However, they should work well in other resolutions.
|
||||||
|
|
||||||
|
## Preview of all themes
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Preview of animated themes
|
||||||
|
|
||||||
|
https://github.com/user-attachments/assets/2cfc947e-4621-4e98-b5f3-07d5e224b80c
|
||||||
|
|
||||||
|
<h2><a href="https://youtu.be/4tQ56xh7wBc" target="_blank">Watch more on Youtube!</a></h2>
|
||||||
|
<details>
|
||||||
|
<summary><h2>Detailed previews</h2></summary>
|
||||||
|
|
||||||
|
**Astronaut**|**Black hole**
|
||||||
|
|:--:|:--:|
|
||||||
|
|
|
||||||
|
**Japanese aesthetic**|**Pixel sakura static**
|
||||||
|
|
|
||||||
|
**Purple leaves**|**Cyberpunk**
|
||||||
|
|
|
||||||
|
**Post-apocalyptic hacker**|**xxx**
|
||||||
|
|
|
||||||
|
|
||||||
|
**Hyprland Kath**
|
||||||
|
|
||||||
|
https://github.com/user-attachments/assets/1d926e76-44f7-4d99-ac6d-d1abcd7ed688
|
||||||
|
|
||||||
|
**Pixel sakura**
|
||||||
|
|
||||||
|
https://github.com/user-attachments/assets/ea004765-7e84-4a0d-90cd-aaac97679f62
|
||||||
|
|
||||||
|
**Jake the dog**
|
||||||
|
|
||||||
|
https://github.com/user-attachments/assets/181d48c2-f152-45f5-b568-21145be180f6
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Automatic Installation
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sh -c "$(curl -fsSL https://raw.githubusercontent.com/keyitdev/sddm-astronaut-theme/master/setup.sh)"
|
||||||
|
```
|
||||||
|
> Works on distributions using pacman, xbps-install, dnf, zypper.
|
||||||
|
> Remember to always read the scripts you run from the internet.
|
||||||
|
|
||||||
|
### Manual Installation
|
||||||
|
|
||||||
|
1. Install **dependencies**
|
||||||
|
|
||||||
|
[`sddm >= 0.21.0`](https://github.com/sddm/sddm), [`qt6 >= 6.8`](https://doc.qt.io/qt-6/index.html), [`qt6-svg >= 6.8`](https://doc.qt.io/qt-6/qtsvg-index.html), [`qt6-virtualkeyboard >= 6.8`](https://doc.qt.io/qt-6/qtvirtualkeyboard-index.html), [`qt6-multimedia >= 6.8`](https://doc.qt.io/qt-6/qtmultimedia-index.html)
|
||||||
|
|
||||||
|
You may also want to install additional video codecs like h.264.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sddm qt6-svg qt6-virtualkeyboard qt6-multimedia-ffmpeg # Arch
|
||||||
|
sddm qt6-svg qt6-virtualkeyboard qt6-multimedia # Void
|
||||||
|
sddm qt6-qtsvg qt6-qtvirtualkeyboard qt6-qtmultimedia # Fedora
|
||||||
|
sddm-qt6 libQt6Svg6 qt6-virtualkeyboard qt6-virtualkeyboard-imports qt6-multimedia qt6-multimedia-imports # OpenSUSE
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Clone this repository
|
||||||
|
```sh
|
||||||
|
sudo git clone -b master --depth 1 https://github.com/keyitdev/sddm-astronaut-theme.git /usr/share/sddm/themes/sddm-astronaut-theme
|
||||||
|
```
|
||||||
|
3. Copy fonts to `/usr/share/fonts/`
|
||||||
|
```sh
|
||||||
|
sudo cp -r /usr/share/sddm/themes/sddm-astronaut-theme/Fonts/* /usr/share/fonts/
|
||||||
|
```
|
||||||
|
4. Edit `/etc/sddm.conf`
|
||||||
|
```sh
|
||||||
|
echo "[Theme]
|
||||||
|
Current=sddm-astronaut-theme" | sudo tee /etc/sddm.conf
|
||||||
|
```
|
||||||
|
5. Edit `/etc/sddm.conf.d/virtualkbd.conf`
|
||||||
|
```sh
|
||||||
|
echo "[General]
|
||||||
|
InputMethod=qtvirtualkeyboard" | sudo tee /etc/sddm.conf.d/virtualkbd.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
## Selecting a theme
|
||||||
|
|
||||||
|
You can select theme by editing [metadata](./metadata.desktop) (`/usr/share/sddm/themes/sddm-astronaut-theme/metadata.desktop`).
|
||||||
|
|
||||||
|
Just edit this line:
|
||||||
|
```
|
||||||
|
ConfigFile=Themes/astronaut.conf
|
||||||
|
```
|
||||||
|
All available configs are in [Themes](./Themes/) directory.
|
||||||
|
|
||||||
|
## Previewing a theme
|
||||||
|
|
||||||
|
You can preview the set theme without logging out by runnning:
|
||||||
|
```sh
|
||||||
|
sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/sddm-astronaut-theme/
|
||||||
|
```
|
||||||
|
> Note that depending on the system configuration, the preview may differ slightly from the actual login screen.
|
||||||
|
|
||||||
|
## Sources
|
||||||
|
|
||||||
|
Initially the theme was independed fork of [MarianArlt's theme](https://github.com/MarianArlt/sddm-sugar-dark) but now the project has come a long way and started to significantly deviate from the original.
|
||||||
|
Many of the wallpapers and fonts used in this project are very popular and copied from one user to another, so I don't know who the original creator is.
|
||||||
|
I also redesigned many of them, but here are links to some of the orginal artists who created these wonderful wallpapers:
|
||||||
|
|
||||||
|
- Astronaut: [wallpaper](https://wallhaven.cc/w/e76pew), [font](https://fonts.google.com/specimen/Open+Sans/about)
|
||||||
|
- Black hole: [wallpaper](https://images2.alphacoders.com/114/1141632.jpg), [font](https://www.1001fonts.com/espacion-font.html)
|
||||||
|
- Japanese aesthetic: [wallpaper](https://imgur.com/a/pua0dYx) by [gharly](https://www.artstation.com/gharly), [font](https://www.1001fonts.com/electroharmonix-font.html)
|
||||||
|
- Purple leaves: [wallpaper](https://wallha.com/wallpaper/artwork-abstract-leaves-purple-texture-pattern-1414432), [font](https://fonts.google.com/specimen/Open+Sans/about)
|
||||||
|
- Cyberpunk: [wallpaper](https://images5.alphacoders.com/133/1330479.png) by [patrika](https://alphacoders.com/users/profile/227699/patrika), [font](https://www.1001fonts.com/kognigear-font.html)
|
||||||
|
- Post-apocalyptic hacker: [wallpaper](https://images.alphacoders.com/137/thumb-1920-1375178.png) by [patrika](https://alphacoders.com/users/profile/227699/patrika), [font](https://www.1001fonts.com/fragile-bombers-font.html)
|
||||||
|
- Hyprland Kath: [wallpaper](https://motionbgs.com/andvari-last-origin), [font](https://www.1001fonts.com/pixelon-font.html)
|
||||||
|
- Pixel sakura: [wallpaper](https://imgur.com/gallery/sakura-tree-with-petals-flying-off-t5tg4N8), [font](https://www.1001fonts.com/arcadeclassic-font.html)
|
||||||
|
- Jake the dog: [wallpaper](https://motionbgs.com/jake-the-dog), [font](https://fontmeme.com/fonts/thunderman-font/)
|
||||||
|
|
||||||
|
## Supporting project
|
||||||
|
|
||||||
|
You can support me simply by dropping a **star** on **[github](https://github.com/Keyitdev/sddm-astronaut-theme)** or giving a **subscription** on **[YouTube](http://www.youtube.com/channel/UCVoGVyAP2sHPQyegwBMJKyQ?sub_confirmation=1)**.
|
||||||
|
|
||||||
|
If you enjoyed it and would like to show your appreciation, you can make a **[donation](https://ko-fi.com/keyitdev)** using **[kofi](https://ko-fi.com/keyitdev)**.
|
||||||
|
|
||||||
|
[](https://ko-fi.com/keyitdev)
|
||||||
|
|
||||||
|
Distributed under the **[GPLv3+](https://www.gnu.org/licenses/gpl-3.0.html) License**.
|
||||||
|
Copyright (C) 2022-2025 Keyitdev.
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
[General]
|
||||||
|
#################### General ####################
|
||||||
|
|
||||||
|
ScreenWidth="2560"
|
||||||
|
ScreenHeight="1440"
|
||||||
|
ScreenPadding=""
|
||||||
|
# Default 0, Options: from 0 to min(screen width/2,screen height/2).
|
||||||
|
|
||||||
|
Font="Pixelon"
|
||||||
|
FontSize="24"
|
||||||
|
# Default is screen height divided by 80 (1080/80=13.5), Options: 0-inf.
|
||||||
|
|
||||||
|
KeyboardSize="0.4"
|
||||||
|
# Default 0.4, Options 0.1-1.0
|
||||||
|
|
||||||
|
RoundCorners="20"
|
||||||
|
|
||||||
|
Locale=""
|
||||||
|
# Locale for data and time format. I suggest leaving it blank.
|
||||||
|
HourFormat="HH:mm"
|
||||||
|
# Default Locale.ShortFormat.
|
||||||
|
DateFormat="dddd d"
|
||||||
|
# Default Locale.LongFormat.
|
||||||
|
|
||||||
|
HeaderText="InoriShio"
|
||||||
|
# You can put somehting fun.
|
||||||
|
|
||||||
|
#################### Background ####################
|
||||||
|
|
||||||
|
BackgroundPlaceholder=""
|
||||||
|
# Must be a relative path.
|
||||||
|
# Background displayed before the actual background is loaded.
|
||||||
|
# Use only if the background is a video, otherwise leave blank.
|
||||||
|
# Connected with: Background.
|
||||||
|
Background="Backgrounds/Bocchi.mp4"
|
||||||
|
# Must be a relative path.
|
||||||
|
# Supports: png, jpg, jpeg, webp, gif, avi, mp4, mov, mkv, m4v, webm.
|
||||||
|
BackgroundSpeed=""
|
||||||
|
# Default 1.0. Options: 0.0-10.0 (can go higher).
|
||||||
|
# Speed of animated wallpaper.
|
||||||
|
# Connected with: Background.
|
||||||
|
PauseBackground=""
|
||||||
|
# Default false.
|
||||||
|
# If set to true, stops playback of gifs. Works only with gifs.
|
||||||
|
# Connected with: Background.
|
||||||
|
DimBackground="0.0"
|
||||||
|
# Options: 0.0-1.0.
|
||||||
|
# Connected with: DimBackgroundColor
|
||||||
|
CropBackground="true"
|
||||||
|
# Default false.
|
||||||
|
# Crop or fit background.
|
||||||
|
# Connected with: BackgroundHorizontalAlignment and BackgroundVerticalAlignment dosn't work when set to true.
|
||||||
|
BackgroundHorizontalAlignment="center"
|
||||||
|
# Default: center, Options: left, center, right.
|
||||||
|
# Horizontal position of the background picture.
|
||||||
|
# Connected with: CropBackground must be set to false.
|
||||||
|
BackgroundVerticalAlignment="center"
|
||||||
|
# Horizontal position of the background picture.
|
||||||
|
# Default: center, Options: bottom, center, top.
|
||||||
|
# Connected with: CropBackground must be set to false.
|
||||||
|
|
||||||
|
#################### Colors ####################
|
||||||
|
|
||||||
|
HeaderTextColor="#21222c"
|
||||||
|
DateTextColor="#21222c"
|
||||||
|
TimeTextColor="#21222c"
|
||||||
|
|
||||||
|
FormBackgroundColor="#21222c"
|
||||||
|
BackgroundColor="#21222c"
|
||||||
|
DimBackgroundColor="#21222c"
|
||||||
|
|
||||||
|
LoginFieldBackgroundColor="#21222c"
|
||||||
|
PasswordFieldBackgroundColor="#21222c"
|
||||||
|
LoginFieldTextColor="#ffffff"
|
||||||
|
PasswordFieldTextColor="#ffffff"
|
||||||
|
UserIconColor="#ffffff"
|
||||||
|
PasswordIconColor="#ffffff"
|
||||||
|
|
||||||
|
PlaceholderTextColor="#7c6f64"
|
||||||
|
WarningColor="#32302f"
|
||||||
|
|
||||||
|
LoginButtonTextColor="#32302f"
|
||||||
|
LoginButtonBackgroundColor="#ffffff"
|
||||||
|
SystemButtonsIconsColor="#32302f"
|
||||||
|
SessionButtonTextColor="#32302f"
|
||||||
|
|
||||||
|
DropdownTextColor="#ffffff"
|
||||||
|
DropdownSelectedBackgroundColor="#7c6f64"
|
||||||
|
DropdownBackgroundColor="#32302f"
|
||||||
|
|
||||||
|
HighlightTextColor="#877bb0"
|
||||||
|
HighlightBackgroundColor="#ffffff"
|
||||||
|
HighlightBorderColor="transparent"
|
||||||
|
|
||||||
|
HoverUserIconColor="#877bb0"
|
||||||
|
HoverPasswordIconColor="#877bb0"
|
||||||
|
HoverSystemButtonsIconsColor="#7c6f64"
|
||||||
|
HoverSessionButtonTextColor="#7c6f64"
|
||||||
|
|
||||||
|
#################### Form ####################
|
||||||
|
|
||||||
|
PartialBlur=""
|
||||||
|
# Default false.
|
||||||
|
FullBlur=""
|
||||||
|
# Default false.
|
||||||
|
# If you use FullBlur I recommend setting BlurMax to 64 and Blur to 1.0.
|
||||||
|
BlurMax=""
|
||||||
|
# Default 48, Options: 2-64 (can go higher because depends on Blur).
|
||||||
|
# Connected with: Blur.
|
||||||
|
Blur=""
|
||||||
|
# Default 2.0, Options: 0.0-3.0 (without 3.0).
|
||||||
|
# Connected with: BlurMax.
|
||||||
|
|
||||||
|
HaveFormBackground="false"
|
||||||
|
# Form background is transparent if set to false.
|
||||||
|
# Connected with: PartialBlur and BackgroundColor.
|
||||||
|
FormPosition="left"
|
||||||
|
# Default: left, Options: left, center, right.
|
||||||
|
|
||||||
|
#################### Interface Behavior ####################
|
||||||
|
|
||||||
|
HideSystemButtons="true"
|
||||||
|
HideLoginButton="false"
|
||||||
|
|
||||||
|
ForceLastUser="true"
|
||||||
|
# If set to true last successfully logged in user appeares automatically in the username field.
|
||||||
|
PasswordFocus="true"
|
||||||
|
# Automaticaly focuses password field.
|
||||||
|
HideCompletePassword="true"
|
||||||
|
# Hides the password while typing.
|
||||||
|
AllowEmptyPassword="false"
|
||||||
|
# Enable login for users without a password.
|
||||||
|
AllowUppercaseLettersInUsernames="false"
|
||||||
|
# Do not change this! Uppercase letters are generally not allowed in usernames. This option is only for systems that differ from this standard!
|
||||||
|
BypassSystemButtonsChecks="false"
|
||||||
|
# Skips checking if sddm can perform shutdown, restart, suspend or hibernate, always displays all system buttons.
|
||||||
|
RightToLeftLayout="false"
|
||||||
|
# Revert the layout either because you would like the login to be on the right hand side or SDDM won't respect your language locale for some reason. This will reverse the current position of FormPosition if it is either left or right and in addition position some smaller elements on the right hand side of the form itself (also when FormPosition is set to center).
|
||||||
|
|
||||||
|
#################### Translation ####################
|
||||||
|
|
||||||
|
# These don't necessarily need to translate anything. You can enter whatever you want here.
|
||||||
|
TranslatePlaceholderUsername=""
|
||||||
|
TranslatePlaceholderPassword=""
|
||||||
|
TranslateLogin=""
|
||||||
|
TranslateLoginFailedWarning=""
|
||||||
|
TranslateCapslockWarning=""
|
||||||
|
TranslateSuspend=""
|
||||||
|
TranslateHibernate=""
|
||||||
|
TranslateReboot=""
|
||||||
|
TranslateShutdown=""
|
||||||
|
TranslateSessionSelection=""
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
[SddmGreeterTheme]
|
||||||
|
Name=inorishio-theme
|
||||||
|
Description=cream-da-la-cream
|
||||||
|
Author=inorishio
|
||||||
|
Website=https://github.com/inorishio
|
||||||
|
License=GPL-3.0-or-later
|
||||||
|
Type=sddm-theme
|
||||||
|
Version=1.3
|
||||||
|
ConfigFile=Themes/inorishio_aesthetic.conf
|
||||||
|
MainScript=Main.qml
|
||||||
|
TranslationsDirectory=translations
|
||||||
|
Theme-Id=sddm-astronaut-theme
|
||||||
|
Theme-API=2.0
|
||||||
|
QtVersion=6
|
||||||
@@ -0,0 +1,219 @@
|
|||||||
|
# Swayimg configuration file.
|
||||||
|
# vim: filetype=dosini
|
||||||
|
|
||||||
|
# This file contains the default configuration.
|
||||||
|
# The viewer searches for the config file in the following locations:
|
||||||
|
# 1. $XDG_CONFIG_HOME/swayimg/config
|
||||||
|
# 2. $HOME/.config/swayimg/config
|
||||||
|
# 3. $XDG_CONFIG_DIRS/swayimg/config
|
||||||
|
# 4. /etc/xdg/swayimg/config
|
||||||
|
|
||||||
|
# Any of these options can be overridden using the --config argument
|
||||||
|
# on the command line, for instance:
|
||||||
|
# $ swayimg --config="general.mode=gallery"
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# General configuration
|
||||||
|
################################################################################
|
||||||
|
[general]
|
||||||
|
# Mode at startup (viewer/gallery)
|
||||||
|
mode = viewer
|
||||||
|
# Window position (parent or absolute coordinates, e.g. 100,200)
|
||||||
|
position = parent
|
||||||
|
# Window size (fullscreen/parent/image, or absolute size, e.g. 800,600)
|
||||||
|
size = parent
|
||||||
|
# Action performed by SIGUSR1 signal (same format as for key bindings)
|
||||||
|
sigusr1 = reload
|
||||||
|
# Action performed by SIGUSR2 signal (same format as for key bindings)
|
||||||
|
sigusr2 = next_file
|
||||||
|
# Application ID and window class name
|
||||||
|
app_id = swayimg
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Viewer mode configuration
|
||||||
|
################################################################################
|
||||||
|
[viewer]
|
||||||
|
# Window background color (RGBA)
|
||||||
|
window = #000000ff
|
||||||
|
# Background for transparent images (grid/RGBA)
|
||||||
|
transparency = grid
|
||||||
|
# Default image scale (optimal/fit/width/height/fill/real)
|
||||||
|
scale = optimal
|
||||||
|
# Initial image position
|
||||||
|
position = center
|
||||||
|
# Fix position of the image on the window surface (yes/no)
|
||||||
|
fixed = yes
|
||||||
|
# Anti-aliasing (yes/no)
|
||||||
|
antialiasing = yes
|
||||||
|
# Run slideshow at startup (yes/no)
|
||||||
|
slideshow = no
|
||||||
|
# Slideshow image display time (seconds)
|
||||||
|
slideshow_time = 0
|
||||||
|
# Number of previously viewed images to store in cache
|
||||||
|
history = 1
|
||||||
|
# Number of preloaded images (read ahead)
|
||||||
|
preload = 1
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Gallery mode configuration
|
||||||
|
################################################################################
|
||||||
|
[gallery]
|
||||||
|
# Max size of the thumbnail (pixels)
|
||||||
|
size = 200
|
||||||
|
# Max number of thumbnails in cache, 0 to unlimit
|
||||||
|
cache = 100
|
||||||
|
# Fill the entire tile with thumbnail (yes/no)
|
||||||
|
fill = yes
|
||||||
|
# Use anti-aliasing for thumbnails (yes/no)
|
||||||
|
antialiasing = no
|
||||||
|
# Background color of the window (RGBA)
|
||||||
|
window = #000000ff
|
||||||
|
# Background color of the tile (RGBA)
|
||||||
|
background = #202020ff
|
||||||
|
# Background color of the selected tile (RGBA)
|
||||||
|
select = #404040ff
|
||||||
|
# Border color of the selected tile (RGBA)
|
||||||
|
border = #000000ff
|
||||||
|
# Shadow color of the selected tile (RGBA)
|
||||||
|
shadow = #000000ff
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Image list configuration
|
||||||
|
################################################################################
|
||||||
|
[list]
|
||||||
|
# Default order (none/alpha/reverse/random)
|
||||||
|
order = none
|
||||||
|
# Looping list of images (yes/no)
|
||||||
|
loop = yes
|
||||||
|
# Read directories recursively (yes/no)
|
||||||
|
recursive = no
|
||||||
|
# Open all files in the start directory (yes/no)
|
||||||
|
all = yes
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Font configuration
|
||||||
|
################################################################################
|
||||||
|
[font]
|
||||||
|
# Font name
|
||||||
|
name = monospace
|
||||||
|
# Font size (pt)
|
||||||
|
size = 14
|
||||||
|
# Font color (RGBA)
|
||||||
|
color = #ccccccff
|
||||||
|
# Shadow color (RGBA)
|
||||||
|
shadow = #000000d0
|
||||||
|
# Background color (RGBA)
|
||||||
|
background = #00000000
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Image meta info scheme (format, size, EXIF, etc)
|
||||||
|
################################################################################
|
||||||
|
[info]
|
||||||
|
# Show on startup (yes/no)
|
||||||
|
show = no
|
||||||
|
# Timeout to hide info (seconds, 0 to always show)
|
||||||
|
info_timeout = 5
|
||||||
|
# Timeout to hide status message (seconds)
|
||||||
|
status_timeout = 3
|
||||||
|
|
||||||
|
# Display scheme for viewer mode (position = content)
|
||||||
|
[info.viewer]
|
||||||
|
top_left = +name,+format,+filesize,+imagesize,+exif
|
||||||
|
top_right = index
|
||||||
|
bottom_left = scale,frame
|
||||||
|
bottom_right = status
|
||||||
|
|
||||||
|
# Display scheme for gallery mode (position = content)
|
||||||
|
[info.gallery]
|
||||||
|
top_left = none
|
||||||
|
top_right = none
|
||||||
|
bottom_left = none
|
||||||
|
bottom_right = name,status
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Viewer mode key binding configuration: key = action [parameters]
|
||||||
|
################################################################################
|
||||||
|
[keys.viewer]
|
||||||
|
F1 = help
|
||||||
|
h = first_file
|
||||||
|
l = last_file
|
||||||
|
j = prev_file
|
||||||
|
k = next_file
|
||||||
|
Home = first_file
|
||||||
|
End = last_file
|
||||||
|
Left = prev_file
|
||||||
|
Right = next_file
|
||||||
|
Space = next_file
|
||||||
|
Shift+r = rand_file
|
||||||
|
Shift+d = prev_dir
|
||||||
|
d = next_dir
|
||||||
|
Shift+o = prev_frame
|
||||||
|
o = next_frame
|
||||||
|
c = skip_file
|
||||||
|
Shift+s = slideshow
|
||||||
|
s = animation
|
||||||
|
f = fullscreen
|
||||||
|
Return = mode
|
||||||
|
#Left = step_left 10
|
||||||
|
#Right = step_right 10
|
||||||
|
#Up = step_up 10
|
||||||
|
#Down = step_down 10
|
||||||
|
Equal = zoom +10
|
||||||
|
Plus = zoom +10
|
||||||
|
Minus = zoom -10
|
||||||
|
w = zoom width
|
||||||
|
Shift+w = zoom height
|
||||||
|
z = zoom fit
|
||||||
|
Shift+z = zoom fill
|
||||||
|
0 = zoom real
|
||||||
|
BackSpace = zoom optimal
|
||||||
|
Alt+s = scale
|
||||||
|
bracketleft = rotate_left
|
||||||
|
bracketright = rotate_right
|
||||||
|
m = flip_vertical
|
||||||
|
Shift+m = flip_horizontal
|
||||||
|
a = antialiasing
|
||||||
|
r = reload
|
||||||
|
i = info
|
||||||
|
Shift+Delete = exec rm "%"; skip_file
|
||||||
|
Escape = exit
|
||||||
|
q = exit
|
||||||
|
# Mouse related
|
||||||
|
ScrollLeft = step_right 5
|
||||||
|
ScrollRight = step_left 5
|
||||||
|
ScrollUp = step_up 5
|
||||||
|
ScrollDown = step_down 5
|
||||||
|
Ctrl+ScrollUp = zoom +10
|
||||||
|
Ctrl+ScrollDown = zoom -10
|
||||||
|
Shift+ScrollUp = prev_file
|
||||||
|
Shift+ScrollDown = next_file
|
||||||
|
Alt+ScrollUp = prev_frame
|
||||||
|
Alt+ScrollDown = next_frame
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Gallery mode key binding configuration: key = action [parameters]
|
||||||
|
################################################################################
|
||||||
|
[keys.gallery]
|
||||||
|
F1 = help
|
||||||
|
Home = first_file
|
||||||
|
End = last_file
|
||||||
|
Left = step_left
|
||||||
|
Right = step_right
|
||||||
|
Up = step_up
|
||||||
|
Down = step_down
|
||||||
|
Prior = page_up
|
||||||
|
Next = page_down
|
||||||
|
c = skip_file
|
||||||
|
f = fullscreen
|
||||||
|
Return = mode
|
||||||
|
a = antialiasing
|
||||||
|
r = reload
|
||||||
|
i = info
|
||||||
|
Shift+Delete = exec rm "%"; skip_file
|
||||||
|
Escape = exit
|
||||||
|
q = exit
|
||||||
|
# Mouse related
|
||||||
|
ScrollLeft = step_right
|
||||||
|
ScrollRight = step_left
|
||||||
|
ScrollUp = step_up
|
||||||
|
ScrollDown = step_down
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# Nvidia
|
||||||
|
export SDL_VIDEODRIVER="wayland"
|
||||||
|
export MOZ_ENABLE_WAYLAND=1
|
||||||
|
export MOZ_DISABLE_RDD_SANDBOX=1
|
||||||
|
export GBM_BACKEND=nvidia-drm
|
||||||
|
export NVD_BACKEND=direct # Hardware acceleration egl or direct
|
||||||
|
export LIBVA_DRIVER_NAME=nvidia
|
||||||
|
export WLR_NO_HARDWARE_CURSORS=0 # Hardware acceleration cursor
|
||||||
|
export __GLX_VENDOR_LIBRARY_NAME=nvidia
|
||||||
|
export __GL_GSYNC_ALLOWED=1
|
||||||
|
export __GL_VRR_ALLOWED=0 # Adaptive sync recommended 0
|
||||||
|
|
||||||
|
# GTK Settings
|
||||||
|
export GDK_SCALE=2
|
||||||
|
|
||||||
|
# Ml4w aids
|
||||||
|
export QT_QPA_PLATFORM="wayland;xcb"
|
||||||
|
export QT_QPA_PLATFORMTHEME="qt6ct"
|
||||||
|
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
|
||||||
|
export QT_AUTO_SCREEN_SCALE_FACTOR=1
|
||||||
|
export QT_SCALE_FACTOR=1
|
||||||
|
export GDK_SCALE=1
|
||||||
|
export GDK_BACKEND="wayland,x11,*"
|
||||||
|
export CLUTTER_BACKEND="wayland"
|
||||||
|
export MOZ_ENABLE_WAYLAND=1
|
||||||
|
export XCURSOR_THEME=BreezeX-RosePine-Linux
|
||||||
|
export XCURSOR_SIZE=52
|
||||||
|
export APPIMAGELAUNCHER_DISABLE=1
|
||||||
|
export OZONE_PLATFORM="wayland"
|
||||||
|
export KWIN_FORCE_SW_CURSOR=1
|
||||||
|
|
||||||
|
# Hyprland
|
||||||
|
export ELECTRON_OZONE_PLATFORM_HINT=auto
|
||||||
|
|
||||||
|
# xkb aids
|
||||||
|
export XKB_DEFAULT_LAYOUT=us
|
||||||
|
export XKB_DEFAULT_OPTIONS=caps:swapescape
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
# Hyprland env
|
||||||
|
export HYPRCURSOR_THEME=rose-pine-hyprcursor
|
||||||
|
export HYPRCURSOR_SIZE=48
|
||||||
|
# /usr/share/icons/
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"appCount": 16,
|
||||||
|
|
||||||
|
"accentColor": {
|
||||||
|
"accents": {
|
||||||
|
"primary": "#a388db",
|
||||||
|
"primaryAlt": "#6a4c9c",
|
||||||
|
"warning": "#e46a97"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"transparency": {
|
||||||
|
"enabled": true,
|
||||||
|
"base": 0.6,
|
||||||
|
"layer": 0.4
|
||||||
|
},
|
||||||
|
|
||||||
|
"animScale": 0.8,
|
||||||
|
|
||||||
|
"wallpaperPath": "/home/inorishio/Pictures/Backgrounds/",
|
||||||
|
"useDynamicColors": true,
|
||||||
|
"wallust": true,
|
||||||
|
|
||||||
|
"lock": {
|
||||||
|
"fixLockScreen": false,
|
||||||
|
"useWallpaper": true
|
||||||
|
},
|
||||||
|
|
||||||
|
"idle": {
|
||||||
|
"timeouts": [
|
||||||
|
{
|
||||||
|
"timeout": 240,
|
||||||
|
"idleAction": "lock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timeout": 300,
|
||||||
|
"idleAction": "dpms off",
|
||||||
|
"activeAction": "dpms on"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# -----------------------------------------------------
|
||||||
|
# INIT
|
||||||
|
# -----------------------------------------------------
|
||||||
|
|
||||||
|
# -----------------------------------------------------
|
||||||
|
# Exports
|
||||||
|
# -----------------------------------------------------
|
||||||
|
export EDITOR=nvim
|
||||||
|
export PATH="/usr/lib/ccache/bin/:$PATH"
|
||||||
|
export ZSH="$HOME/.oh-my-zsh"
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# -----------------------------------------------------
|
||||||
|
# ALIASES
|
||||||
|
# -----------------------------------------------------
|
||||||
|
|
||||||
|
alias ff='fastfetch'
|
||||||
|
alias v='$EDITOR'
|
||||||
|
alias cod='conda deactivate'
|
||||||
|
alias grub='sudo grub-mkconfig -o /boot/grub/grub.cfg'
|
||||||
|
alias up='yay -Syu --noconfirm'
|
||||||
|
alias exit='systemctl poweroff'
|
||||||
|
alias reboot="hyprshutdown --post-cmd 'systemctl reboot'"
|
||||||
|
alias shutdown="hyprshutdown --post-cmd 'systemctl poweroff'"
|
||||||
|
|
||||||
|
alias gcredential="git config credential.helper store"
|
||||||
|
alias gitup='python ~/.config/hypr/scripts/Github.py'
|
||||||
|
|
||||||
|
alias dot='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
|
||||||
|
alias dotfiles='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
# -----------------------------------------------------
|
||||||
|
# CUSTOMIZATION
|
||||||
|
# -----------------------------------------------------
|
||||||
|
|
||||||
|
precmd() {
|
||||||
|
echo -ne "\e[6 q"
|
||||||
|
}
|
||||||
|
|
||||||
|
# -----------------------------------------------------
|
||||||
|
# oh-myzsh themes: https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
|
||||||
|
# -----------------------------------------------------
|
||||||
|
# ZSH_THEME=catppuccin-mocha
|
||||||
|
|
||||||
|
# -----------------------------------------------------
|
||||||
|
# oh-myzsh plugins
|
||||||
|
# -----------------------------------------------------
|
||||||
|
plugins=(
|
||||||
|
git
|
||||||
|
sudo
|
||||||
|
web-search
|
||||||
|
archlinux
|
||||||
|
zsh-autosuggestions
|
||||||
|
zsh-syntax-highlighting
|
||||||
|
fast-syntax-highlighting
|
||||||
|
copyfile
|
||||||
|
copybuffer
|
||||||
|
dirhistory
|
||||||
|
universalarchive
|
||||||
|
tldr
|
||||||
|
extract
|
||||||
|
)
|
||||||
|
|
||||||
|
# Set-up oh-my-zsh
|
||||||
|
source $ZSH/oh-my-zsh.sh
|
||||||
|
|
||||||
|
# -----------------------------------------------------
|
||||||
|
# Set-up FZF key bindings (CTRL R for fuzzy history finder)
|
||||||
|
# -----------------------------------------------------
|
||||||
|
source <(fzf --zsh)
|
||||||
|
|
||||||
|
# zsh history
|
||||||
|
HISTFILE=~/.zsh_history
|
||||||
|
HISTSIZE=10000
|
||||||
|
SAVEHIST=10000
|
||||||
|
setopt appendhistory
|
||||||
|
|
||||||
|
# -----------------------------------------------------
|
||||||
|
# Starship promt
|
||||||
|
# -----------------------------------------------------
|
||||||
|
# eval "$(starship init zsh)"
|
||||||
|
|
||||||
|
# -----------------------------------------------------
|
||||||
|
# oh-my-posh promt
|
||||||
|
# -----------------------------------------------------
|
||||||
|
# Custom Theme
|
||||||
|
eval "$(oh-my-posh init zsh --config $HOME/.config/ohmyposh/Zachjittery.omp.json)"
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# -----------------------------------------------------
|
||||||
|
# AUTOSTART
|
||||||
|
# -----------------------------------------------------
|
||||||
|
|
||||||
|
# Fastfetch
|
||||||
|
if [[ $(tty) == *"pts"* ]]; then
|
||||||
|
fastfetch --config ~/.config/fastfetch/Gif.jsonc
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
if [ -f /bin/qtile ]; then
|
||||||
|
echo "Start Qtile X11 with command Qtile"
|
||||||
|
fi
|
||||||
|
if [ -f /bin/hyprctl ]; then
|
||||||
|
echo "Start Hyprland with command Hyprland"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Tmux
|
||||||
|
# if command -v tmux &> /dev/null && [ -z "$TMUX" ]; then
|
||||||
|
# tmux attach-session -t default || tmux new-session -s default
|
||||||
|
# fi
|
||||||
|
#
|
||||||
|
# Vencord alias
|
||||||
|
vencord() {
|
||||||
|
zsh -c "$(curl -sS https://raw.githubusercontent.com/Vendicated/VencordInstaller/main/install.sh)"
|
||||||
|
}
|
||||||