Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
648de6c18a | ||
|
|
8253f168e6 | ||
|
|
4c7b7b7e54 |
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"positionX": 157,
|
"positionX": 153,
|
||||||
"positionY": 1031,
|
"positionY": 1032,
|
||||||
"scaling": 1.749999999999999,
|
"scaling": 1.749999999999999,
|
||||||
"zIndex": 1
|
"zIndex": 1
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"positionX": 24,
|
"positionX": 4,
|
||||||
"positionY": 951,
|
"positionY": 968,
|
||||||
"scaling": 2.9125000000000036,
|
"scaling": 2.975000000000006,
|
||||||
"zIndex": 2
|
"zIndex": 2
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"positionX": 198,
|
"positionX": 197,
|
||||||
"positionY": 956,
|
"positionY": 956,
|
||||||
"scaling": 3.050000000000006,
|
"scaling": 3.050000000000006,
|
||||||
"zIndex": 0
|
"zIndex": 0
|
||||||
|
|||||||
@@ -2879,3 +2879,123 @@
|
|||||||
"Level": 1,
|
"Level": 1,
|
||||||
"Notification": false
|
"Notification": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T21:05:49.4759354+02:00",
|
||||||
|
"Group": "HidSharpDeviceRootHub",
|
||||||
|
"Message": "Changes: 2, Add: 0, Remove: 2",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 0,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T21:05:49.5002288+02:00",
|
||||||
|
"Group": "RootHub",
|
||||||
|
"Message": "Invoking DevicesChanged",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 0,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T21:05:49.5634844+02:00",
|
||||||
|
"Group": "HidSharpDeviceRootHub",
|
||||||
|
"Message": "Changes: 1, Add: 0, Remove: 1",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 0,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T21:05:49.5837538+02:00",
|
||||||
|
"Group": "RootHub",
|
||||||
|
"Message": "Invoking DevicesChanged",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 0,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T21:05:49.6514808+02:00",
|
||||||
|
"Group": "HidSharpDeviceRootHub",
|
||||||
|
"Message": "Changes: 2, Add: 0, Remove: 2",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 0,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T21:05:49.6717444+02:00",
|
||||||
|
"Group": "RootHub",
|
||||||
|
"Message": "Invoking DevicesChanged",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 0,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T21:20:15.938358+02:00",
|
||||||
|
"Group": "HidSharpDeviceRootHub",
|
||||||
|
"Message": "Changes: 5, Add: 5, Remove: 0",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 0,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T21:20:15.9590295+02:00",
|
||||||
|
"Group": "RootHub",
|
||||||
|
"Message": "Invoking DevicesChanged",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 0,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T21:20:15.9675078+02:00",
|
||||||
|
"Group": "DriverDaemon",
|
||||||
|
"Message": "No known tablets added, skipping detect",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 0,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T22:58:45.737596+02:00",
|
||||||
|
"Group": "AssemblyLoadContext.Unloading",
|
||||||
|
"Message": "Terminating daemon..",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 1,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T22:58:45.7379517+02:00",
|
||||||
|
"Group": "closeDaemon",
|
||||||
|
"Message": "Waiting for daemon to terminate",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 1,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T22:58:45.8593913+02:00",
|
||||||
|
"Group": "IPC",
|
||||||
|
"Message": "Connected to a client.",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 0,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T22:58:45.9074327+02:00",
|
||||||
|
"Group": "IPC",
|
||||||
|
"Message": "Disconnected from a client.",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 0,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T22:58:45.9077185+02:00",
|
||||||
|
"Group": "ProgramMain",
|
||||||
|
"Message": "Daemon gracefully stopped",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 1,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Time": "2026-10-18T22:58:45.9380981+02:00",
|
||||||
|
"Group": "closeDaemon",
|
||||||
|
"Message": "Waiting for daemon finished",
|
||||||
|
"StackTrace": null,
|
||||||
|
"Level": 1,
|
||||||
|
"Notification": false
|
||||||
|
},
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
#!/usr/bin/env zsh
|
#!/usr/bin/env zsh
|
||||||
|
systemctl stop bluetooth
|
||||||
controller_mac="F5:17:E7:FC:F4:50"
|
modprobe -r btusb btintel btrtl btbcm btmtk
|
||||||
bluetoothctl scan on
|
modprobe btusb
|
||||||
bluetoothctl remove $controller_mac
|
systemctl start bluetooth
|
||||||
bluetoothctl trust $controller_mac
|
|
||||||
bluetoothctl pair $controller_mac
|
|
||||||
bluetoothctl connect $controller_mac
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ local titles = {
|
|||||||
"Picture in Picture",
|
"Picture in Picture",
|
||||||
"Friends List",
|
"Friends List",
|
||||||
"Save Image - *",
|
"Save Image - *",
|
||||||
"AniShio",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, class in ipairs(classes) do
|
for _, class in ipairs(classes) do
|
||||||
@@ -38,6 +37,15 @@ hl.window_rule({
|
|||||||
initial_title = "Star Rail",
|
initial_title = "Star Rail",
|
||||||
},
|
},
|
||||||
fullscreen_state = 3,
|
fullscreen_state = 3,
|
||||||
|
render_unfocused = true,
|
||||||
|
content = "game",
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.window_rule({
|
||||||
|
match = {
|
||||||
|
title = "Slay the Spire 2",
|
||||||
|
},
|
||||||
|
render_unfocused = true,
|
||||||
content = "game",
|
content = "game",
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -45,6 +53,7 @@ hl.window_rule({
|
|||||||
match = {
|
match = {
|
||||||
title = "Honkai: Star Rail",
|
title = "Honkai: Star Rail",
|
||||||
},
|
},
|
||||||
|
render_unfocused = true,
|
||||||
fullscreen_state = 3,
|
fullscreen_state = 3,
|
||||||
content = "game",
|
content = "game",
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://opencode.ai/v2/cli.json",
|
|
||||||
"theme": {
|
|
||||||
"name": "tokyonight"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://opencode.ai/config.json",
|
|
||||||
"lsp": true,
|
|
||||||
"provider": {
|
|
||||||
"llama.cpp": {
|
|
||||||
"npm": "@ai-sdk/openai-compatible",
|
|
||||||
"name": "llama-server (local)",
|
|
||||||
"options": {
|
|
||||||
"baseURL": "http://127.0.0.1:8080/v1"
|
|
||||||
},
|
|
||||||
"models": {
|
|
||||||
"Qwen3.8-27B-UD-IQ2_XXS": {
|
|
||||||
"name": "Qwen 3.8 27B",
|
|
||||||
"modalities": {
|
|
||||||
"input": [
|
|
||||||
"text"
|
|
||||||
],
|
|
||||||
"output": [
|
|
||||||
"text"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
// "limit": {
|
|
||||||
// "context": 8192,
|
|
||||||
// "output": 4096
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
"gemma-4-12b-it-Q4_K_M": {
|
|
||||||
"name": "Gemma 4 12B",
|
|
||||||
"modalities": {
|
|
||||||
"input": [
|
|
||||||
"image",
|
|
||||||
"text"
|
|
||||||
],
|
|
||||||
"output": [
|
|
||||||
"text"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"limit": {
|
|
||||||
"context": 100000,
|
|
||||||
"output": 65536
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"qwen3.8-flash-next-iq2_xs": {
|
|
||||||
"name": "Strata IQ2XS",
|
|
||||||
"modalities": {
|
|
||||||
"input": [
|
|
||||||
"text"
|
|
||||||
],
|
|
||||||
"output": [
|
|
||||||
"text"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"limit": {
|
|
||||||
"context": 262144,
|
|
||||||
"output": 70000
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"qwen3.8-flash-next-coder-iq1_m": {
|
|
||||||
"name": "Strata Coder",
|
|
||||||
"modalities": {
|
|
||||||
"input": [
|
|
||||||
"text"
|
|
||||||
],
|
|
||||||
"output": [
|
|
||||||
"text"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"limit": {
|
|
||||||
"context": 131072,
|
|
||||||
"output": 25000
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tools": {
|
|
||||||
"bash": true,
|
|
||||||
"read": true,
|
|
||||||
"webfetch": true,
|
|
||||||
"write": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,376 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "opencode",
|
|
||||||
"lockfileVersion": 3,
|
|
||||||
"requires": true,
|
|
||||||
"packages": {
|
|
||||||
"": {
|
|
||||||
"dependencies": {
|
|
||||||
"@opencode-ai/plugin": "1.4.9"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
|
|
||||||
"version": "3.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz",
|
|
||||||
"integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
|
|
||||||
"version": "3.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz",
|
|
||||||
"integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
|
|
||||||
"version": "3.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz",
|
|
||||||
"integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==",
|
|
||||||
"cpu": [
|
|
||||||
"arm"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
|
|
||||||
"version": "3.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz",
|
|
||||||
"integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
|
|
||||||
"version": "3.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz",
|
|
||||||
"integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
|
|
||||||
"version": "3.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz",
|
|
||||||
"integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@opencode-ai/plugin": {
|
|
||||||
"version": "1.4.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/@opencode-ai/plugin/-/plugin-1.4.9.tgz",
|
|
||||||
"integrity": "sha512-tUtPbPs5xP9wonwuz5d/2y8QTrqFR8HOtAVTXvZ6iG26NJfW0dnnw9oTusVOayEIemd5abytCESm7X9ZZOMftQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@opencode-ai/sdk": "1.4.9",
|
|
||||||
"effect": "4.0.0-beta.48",
|
|
||||||
"zod": "4.1.8"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@opentui/core": ">=0.1.100",
|
|
||||||
"@opentui/solid": ">=0.1.100"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"@opentui/core": {
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"@opentui/solid": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@opencode-ai/sdk": {
|
|
||||||
"version": "1.4.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/@opencode-ai/sdk/-/sdk-1.4.9.tgz",
|
|
||||||
"integrity": "sha512-S8WQLuBFu2WwvSc1wupsV4qskniBA+JN1VaZZs52BPWwiN2zQFTD5/6dMh6oiYOMDtPjKsTFZ6qLFxDvVPNggQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"cross-spawn": "7.0.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@standard-schema/spec": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/cross-spawn": {
|
|
||||||
"version": "7.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
|
||||||
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"path-key": "^3.1.0",
|
|
||||||
"shebang-command": "^2.0.0",
|
|
||||||
"which": "^2.0.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/detect-libc": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
|
|
||||||
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/effect": {
|
|
||||||
"version": "4.0.0-beta.48",
|
|
||||||
"resolved": "https://registry.npmjs.org/effect/-/effect-4.0.0-beta.48.tgz",
|
|
||||||
"integrity": "sha512-MMAM/ZabuNdNmgXiin+BAanQXK7qM8mlt7nfXDoJ/Gn9V8i89JlCq+2N0AiWmqFLXjGLA0u3FjiOjSOYQk5uMw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@standard-schema/spec": "^1.1.0",
|
|
||||||
"fast-check": "^4.6.0",
|
|
||||||
"find-my-way-ts": "^0.1.6",
|
|
||||||
"ini": "^6.0.0",
|
|
||||||
"kubernetes-types": "^1.30.0",
|
|
||||||
"msgpackr": "^1.11.9",
|
|
||||||
"multipasta": "^0.2.7",
|
|
||||||
"toml": "^4.1.1",
|
|
||||||
"uuid": "^13.0.0",
|
|
||||||
"yaml": "^2.8.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fast-check": {
|
|
||||||
"version": "4.7.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/fast-check/-/fast-check-4.7.0.tgz",
|
|
||||||
"integrity": "sha512-NsZRtqvSSoCP0HbNjUD+r1JH8zqZalyp6gLY9e7OYs7NK9b6AHOs2baBFeBG7bVNsuoukh89x2Yg3rPsul8ziQ==",
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"type": "individual",
|
|
||||||
"url": "https://github.com/sponsors/dubzzz"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "opencollective",
|
|
||||||
"url": "https://opencollective.com/fast-check"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"pure-rand": "^8.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.17.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/find-my-way-ts": {
|
|
||||||
"version": "0.1.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/find-my-way-ts/-/find-my-way-ts-0.1.6.tgz",
|
|
||||||
"integrity": "sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/ini": {
|
|
||||||
"version": "6.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz",
|
|
||||||
"integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==",
|
|
||||||
"license": "ISC",
|
|
||||||
"engines": {
|
|
||||||
"node": "^20.17.0 || >=22.9.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/isexe": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
|
|
||||||
"license": "ISC"
|
|
||||||
},
|
|
||||||
"node_modules/kubernetes-types": {
|
|
||||||
"version": "1.30.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/kubernetes-types/-/kubernetes-types-1.30.0.tgz",
|
|
||||||
"integrity": "sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q==",
|
|
||||||
"license": "Apache-2.0"
|
|
||||||
},
|
|
||||||
"node_modules/msgpackr": {
|
|
||||||
"version": "1.11.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.9.tgz",
|
|
||||||
"integrity": "sha512-FkoAAyyA6HM8wL882EcEyFZ9s7hVADSwG9xrVx3dxxNQAtgADTrJoEWivID82Iv1zWDsv/OtbrrcZAzGzOMdNw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optionalDependencies": {
|
|
||||||
"msgpackr-extract": "^3.0.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/msgpackr-extract": {
|
|
||||||
"version": "3.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz",
|
|
||||||
"integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==",
|
|
||||||
"hasInstallScript": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"node-gyp-build-optional-packages": "5.2.2"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"download-msgpackr-prebuilds": "bin/download-prebuilds.js"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3",
|
|
||||||
"@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3",
|
|
||||||
"@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3",
|
|
||||||
"@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3",
|
|
||||||
"@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3",
|
|
||||||
"@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/multipasta": {
|
|
||||||
"version": "0.2.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/multipasta/-/multipasta-0.2.7.tgz",
|
|
||||||
"integrity": "sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/node-gyp-build-optional-packages": {
|
|
||||||
"version": "5.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
|
|
||||||
"integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"detect-libc": "^2.0.1"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"node-gyp-build-optional-packages": "bin.js",
|
|
||||||
"node-gyp-build-optional-packages-optional": "optional.js",
|
|
||||||
"node-gyp-build-optional-packages-test": "build-test.js"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/path-key": {
|
|
||||||
"version": "3.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
|
||||||
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/pure-rand": {
|
|
||||||
"version": "8.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-8.4.0.tgz",
|
|
||||||
"integrity": "sha512-IoM8YF/jY0hiugFo/wOWqfmarlE6J0wc6fDK1PhftMk7MGhVZl88sZimmqBBFomLOCSmcCCpsfj7wXASCpvK9A==",
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"type": "individual",
|
|
||||||
"url": "https://github.com/sponsors/dubzzz"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "opencollective",
|
|
||||||
"url": "https://opencollective.com/fast-check"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/shebang-command": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"shebang-regex": "^3.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/shebang-regex": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/toml": {
|
|
||||||
"version": "4.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/toml/-/toml-4.1.1.tgz",
|
|
||||||
"integrity": "sha512-EBJnVBr3dTXdA89WVFoAIPUqkBjxPMwRqsfuo1r240tKFHXv3zgca4+NJib/h6TyvGF7vOawz0jGuryJCdNHrw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=20"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/uuid": {
|
|
||||||
"version": "13.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz",
|
|
||||||
"integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==",
|
|
||||||
"funding": [
|
|
||||||
"https://github.com/sponsors/broofa",
|
|
||||||
"https://github.com/sponsors/ctavan"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"bin": {
|
|
||||||
"uuid": "dist-node/bin/uuid"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/which": {
|
|
||||||
"version": "2.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
|
||||||
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
|
||||||
"license": "ISC",
|
|
||||||
"dependencies": {
|
|
||||||
"isexe": "^2.0.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"node-which": "bin/node-which"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/yaml": {
|
|
||||||
"version": "2.8.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
|
|
||||||
"integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
|
|
||||||
"license": "ISC",
|
|
||||||
"bin": {
|
|
||||||
"yaml": "bin.mjs"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 14.6"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/eemeli"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/zod": {
|
|
||||||
"version": "4.1.8",
|
|
||||||
"license": "MIT",
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/colinhacks"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"password": "Wols7V_Q9_t4mdh5R6uZGB3171eJYZeMygRSNKrJ5QY"
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
// 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
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
// shell.qml
|
|
||||||
import Quickshell
|
|
||||||
import qs.Widgets
|
|
||||||
|
|
||||||
Scope {
|
|
||||||
Bar {}
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
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 = ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
// 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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,526 +0,0 @@
|
|||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,149 +0,0 @@
|
|||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
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 { }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
<?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>
|
|
||||||
|
Before Width: | Height: | Size: 1.7 KiB |
@@ -1,2 +0,0 @@
|
|||||||
<?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>
|
|
||||||
|
Before Width: | Height: | Size: 426 B |
@@ -1,22 +0,0 @@
|
|||||||
<?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>
|
|
||||||
|
Before Width: | Height: | Size: 1.6 KiB |
@@ -1,36 +0,0 @@
|
|||||||
<?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>
|
|
||||||
|
Before Width: | Height: | Size: 1.6 KiB |
@@ -1,31 +0,0 @@
|
|||||||
<?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>
|
|
||||||
|
Before Width: | Height: | Size: 1.4 KiB |
@@ -1,31 +0,0 @@
|
|||||||
<?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>
|
|
||||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1,52 +0,0 @@
|
|||||||
<?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>
|
|
||||||
|
Before Width: | Height: | Size: 1.9 KiB |
@@ -1,70 +0,0 @@
|
|||||||
// 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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,526 +0,0 @@
|
|||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,149 +0,0 @@
|
|||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,200 +0,0 @@
|
|||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,136 +0,0 @@
|
|||||||
# 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.
|
|
||||||
@@ -1,152 +0,0 @@
|
|||||||
[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=""
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
[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
|
|
||||||
@@ -1,219 +0,0 @@
|
|||||||
# 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 = alpha
|
|
||||||
# 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,212 @@
|
|||||||
|
swayimg.mode = "viewer"
|
||||||
|
swayimg.appid = "swayimg"
|
||||||
|
|
||||||
|
swayimg.imagelist.order = "mtime"
|
||||||
|
-- "none": unsorted (whatever order the system returns)
|
||||||
|
-- "alpha": lexicographic, so 1, 10, 2, 20, a, b, c
|
||||||
|
-- "numeric": numeric-aware, so 1, 2, 3, 10, 100, a, b, c
|
||||||
|
-- "mtime": by modification time
|
||||||
|
-- "size": by file size
|
||||||
|
-- "random": shuffled
|
||||||
|
swayimg.imagelist.adjacent = true -- INI list.all = yes (default: false)
|
||||||
|
|
||||||
|
-- Text overlay
|
||||||
|
swayimg.text.visible = false -- INI info.show = no (default: true)
|
||||||
|
swayimg.text.size = 19 -- INI font.size = 14pt; Lua uses pixels (14pt ~ 19px)
|
||||||
|
swayimg.text.shadow = 0xd0000000 -- INI font.shadow = #000000d0 (ARGB here)
|
||||||
|
|
||||||
|
-- INI info.viewer layout: image size at top left, frame info at bottom left
|
||||||
|
swayimg.viewer.text = {
|
||||||
|
topleft = {
|
||||||
|
"File:\t{name}",
|
||||||
|
"Format:\t{format}",
|
||||||
|
"File size:\t{sizehr}",
|
||||||
|
"File time:\t{time}",
|
||||||
|
"Size:\t{frame.width}x{frame.height}",
|
||||||
|
"EXIF date:\t{meta.Exif.Photo.DateTimeOriginal}",
|
||||||
|
"EXIF camera:\t{meta.Exif.Image.Model}",
|
||||||
|
},
|
||||||
|
topright = {
|
||||||
|
"Image:\t{list.index} of {list.total}",
|
||||||
|
},
|
||||||
|
bottomleft = {
|
||||||
|
"Scale:\t{scale}",
|
||||||
|
"Frame:\t{frame.index} of {frame.total}",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- INI info.gallery layout: only the file name, bottom right
|
||||||
|
swayimg.gallery.text = {
|
||||||
|
bottomright = { "{name}" },
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Gallery appearance
|
||||||
|
swayimg.gallery.border_color = 0xff000000 -- INI gallery.border = #000000ff (default: 0xffaaaaaa)
|
||||||
|
|
||||||
|
-- Helpers
|
||||||
|
local function next_frame()
|
||||||
|
swayimg.viewer.frame = swayimg.viewer.frame + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
local function prev_frame()
|
||||||
|
local frame = swayimg.viewer.frame
|
||||||
|
if frame > 0 then
|
||||||
|
swayimg.viewer.frame = frame - 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- INI "skip_file": drop the current image from the list
|
||||||
|
local function skip_image(img)
|
||||||
|
if img then
|
||||||
|
swayimg.imagelist.remove(img.path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- INI: exec rm "%"; skip_file (permanently deletes the file from disk!)
|
||||||
|
local function delete_image(img)
|
||||||
|
if img then
|
||||||
|
local path = img.path
|
||||||
|
os.remove(path)
|
||||||
|
swayimg.imagelist.remove(path)
|
||||||
|
swayimg.text.status = "Deleted " .. path
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Signals (INI general.sigusr1 = reload, general.sigusr2 = next_file)
|
||||||
|
swayimg.viewer.on_signal("USR1", function()
|
||||||
|
swayimg.viewer.reload()
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_signal("USR2", function()
|
||||||
|
swayimg.viewer.open("next")
|
||||||
|
end)
|
||||||
|
swayimg.slideshow.on_signal("USR1", function()
|
||||||
|
swayimg.slideshow.reload()
|
||||||
|
end)
|
||||||
|
swayimg.slideshow.on_signal("USR2", function()
|
||||||
|
swayimg.slideshow.open("next")
|
||||||
|
end)
|
||||||
|
swayimg.gallery.on_signal("USR1", function()
|
||||||
|
swayimg.gallery.reload()
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Viewer key bindings
|
||||||
|
-- file navigation
|
||||||
|
swayimg.viewer.on_key("h", function()
|
||||||
|
swayimg.viewer.open("first")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("l", function()
|
||||||
|
swayimg.viewer.open("last")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("j", function()
|
||||||
|
swayimg.viewer.open("prev")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("k", function()
|
||||||
|
swayimg.viewer.open("next")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("Home", function()
|
||||||
|
swayimg.viewer.open("first")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("End", function()
|
||||||
|
swayimg.viewer.open("last")
|
||||||
|
end)
|
||||||
|
-- NOTE: Left/Right switch images, as in the INI. The default (pan image)
|
||||||
|
-- is overridden; scroll or the vertical arrows still pan.
|
||||||
|
swayimg.viewer.on_key("left", function()
|
||||||
|
swayimg.viewer.open("prev")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("right", function()
|
||||||
|
swayimg.viewer.open("next")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("space", function()
|
||||||
|
swayimg.viewer.open("next")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("Shift+r", function()
|
||||||
|
swayimg.viewer.open("random")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("Shift+d", function()
|
||||||
|
swayimg.viewer.open("prev_dir")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("d", function()
|
||||||
|
swayimg.viewer.open("next_dir")
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- frames / animation / slideshow
|
||||||
|
swayimg.viewer.on_key("Shift+o", prev_frame)
|
||||||
|
swayimg.viewer.on_key("o", next_frame)
|
||||||
|
swayimg.viewer.on_key("s", function() -- INI: s = animation (toggle)
|
||||||
|
swayimg.viewer.animation = not swayimg.viewer.animation
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("Shift+s", function() -- INI: Shift+s = slideshow
|
||||||
|
swayimg.mode = "slideshow"
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- skip / delete
|
||||||
|
swayimg.viewer.on_key("c", function()
|
||||||
|
skip_image(swayimg.viewer.get_image())
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("Shift+Delete", function()
|
||||||
|
delete_image(swayimg.viewer.get_image())
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- zoom
|
||||||
|
swayimg.viewer.on_key("plus", function()
|
||||||
|
swayimg.viewer.scale = swayimg.viewer.scale + swayimg.viewer.scale / 10
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("w", function()
|
||||||
|
swayimg.viewer.set_fix_scale("width")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("Shift+w", function()
|
||||||
|
swayimg.viewer.set_fix_scale("height")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("z", function()
|
||||||
|
swayimg.viewer.set_fix_scale("fit")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("Shift+z", function()
|
||||||
|
swayimg.viewer.set_fix_scale("fill")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("0", function()
|
||||||
|
swayimg.viewer.set_fix_scale("real")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("backspace", function()
|
||||||
|
swayimg.viewer.set_fix_scale("optimal")
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- misc
|
||||||
|
swayimg.viewer.on_key("r", function()
|
||||||
|
swayimg.viewer.reload()
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("i", function()
|
||||||
|
swayimg.text.visible = not swayimg.text.visible
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_key("q", function()
|
||||||
|
swayimg.exit()
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- mouse
|
||||||
|
swayimg.viewer.on_mouse("Shift+ScrollUp", function()
|
||||||
|
swayimg.viewer.open("prev")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_mouse("Shift+ScrollDown", function()
|
||||||
|
swayimg.viewer.open("next")
|
||||||
|
end)
|
||||||
|
swayimg.viewer.on_mouse("Alt+ScrollUp", prev_frame)
|
||||||
|
swayimg.viewer.on_mouse("Alt+ScrollDown", next_frame)
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Gallery key bindings
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
swayimg.gallery.on_key("c", function()
|
||||||
|
skip_image(swayimg.gallery.get_image())
|
||||||
|
end)
|
||||||
|
swayimg.gallery.on_key("Shift+Delete", function()
|
||||||
|
delete_image(swayimg.gallery.get_image())
|
||||||
|
end)
|
||||||
|
swayimg.gallery.on_key("r", function()
|
||||||
|
swayimg.gallery.reload()
|
||||||
|
end)
|
||||||
|
swayimg.gallery.on_key("i", function()
|
||||||
|
swayimg.text.visible = not swayimg.text.visible
|
||||||
|
end)
|
||||||
|
swayimg.gallery.on_key("q", function()
|
||||||
|
swayimg.exit()
|
||||||
|
end)
|
||||||
@@ -23,7 +23,8 @@
|
|||||||
},
|
},
|
||||||
"background": {
|
"background": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"wallFadeDuration": 300
|
"wallFadeDuration": 300,
|
||||||
|
"wallTransition": "Fade"
|
||||||
},
|
},
|
||||||
"bar": {
|
"bar": {
|
||||||
"autoHide": false,
|
"autoHide": false,
|
||||||
@@ -171,50 +172,16 @@
|
|||||||
"showStorage": true,
|
"showStorage": true,
|
||||||
"showVram": true
|
"showVram": true
|
||||||
},
|
},
|
||||||
"processColumns": [
|
|
||||||
{
|
|
||||||
"id": "command",
|
|
||||||
"width": 298.5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "cpuUsage",
|
|
||||||
"width": 298.5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "memoryUsage",
|
|
||||||
"width": 298.5
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"resourceUpdateInterval": 1000,
|
"resourceUpdateInterval": 1000,
|
||||||
"showDashboard": true,
|
"showOnHover": false
|
||||||
"showMedia": true,
|
|
||||||
"showOnHover": false,
|
|
||||||
"showProcesses": true,
|
|
||||||
"showWeather": true,
|
|
||||||
"sizes": {
|
|
||||||
"dateTimeWidth": 110,
|
|
||||||
"infoIconSize": 25,
|
|
||||||
"infoWidth": 200,
|
|
||||||
"mediaCoverArtSize": 150,
|
|
||||||
"mediaProgressSweep": 180,
|
|
||||||
"mediaProgressThickness": 8,
|
|
||||||
"mediaVisualizerSize": 200,
|
|
||||||
"mediaWidth": 200,
|
|
||||||
"resourceProgessThickness": 10,
|
|
||||||
"resourceSize": 200,
|
|
||||||
"tabIndicatorHeight": 3,
|
|
||||||
"tabIndicatorSpacing": 5,
|
|
||||||
"weatherWidth": 250
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"display": {
|
"display": {
|
||||||
"nightlight": {
|
"nightlight": {
|
||||||
"fadeDuration": 240000,
|
"fadeDuration": 600000,
|
||||||
"schedule": true,
|
"schedule": true,
|
||||||
"scheduleEnd": 630,
|
"scheduleEnd": 570,
|
||||||
"scheduleStart": 1200,
|
"scheduleStart": 1200,
|
||||||
"temp": 2600,
|
"temp": 2800
|
||||||
"useNative": true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dock": {
|
"dock": {
|
||||||
@@ -428,6 +395,9 @@
|
|||||||
},
|
},
|
||||||
"uwsm": true
|
"uwsm": true
|
||||||
},
|
},
|
||||||
|
"llm": {
|
||||||
|
"model": "qwen3.8-flash-next-coder-iq1_m"
|
||||||
|
},
|
||||||
"lock": {
|
"lock": {
|
||||||
"blurAmount": 0,
|
"blurAmount": 0,
|
||||||
"enableFprint": false,
|
"enableFprint": false,
|
||||||
@@ -520,29 +490,29 @@
|
|||||||
"enabled": true,
|
"enabled": true,
|
||||||
"id": "dnd"
|
"id": "dnd"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"id": "wifi"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"id": "settings"
|
"id": "settings"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
|
"id": "gameMode"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enabled": false,
|
||||||
|
"id": "wifi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enabled": false,
|
||||||
"id": "bluetooth"
|
"id": "bluetooth"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"enabled": true,
|
"enabled": false,
|
||||||
"id": "mic"
|
"id": "mic"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"enabled": true,
|
"enabled": false,
|
||||||
"id": "audio"
|
"id": "audio"
|
||||||
},
|
|
||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"id": "gameMode"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"sizes": {
|
"sizes": {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
export EDITOR=nvim
|
export EDITOR=nvim
|
||||||
export PATH="/home/inorishio/.cargo/bin:/usr/lib/ccache/bin/:$PATH"
|
export PATH="$HOME/.cargo/bin:/usr/lib/ccache/bin/:$PATH"
|
||||||
export ZSH="$HOME/.oh-my-zsh"
|
export ZSH="$HOME/.oh-my-zsh"
|
||||||
export PSModulePath="/home/inorishio/.local/share/nvim/mason/packages/powershell-editor-services:$PSModulePath"
|
export PSModulePath="/home/inorishio/.local/share/nvim/mason/packages/powershell-editor-services:$PSModulePath"
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ alias up='yay -Syu --devel --noconfirm'
|
|||||||
alias exit='systemctl poweroff'
|
alias exit='systemctl poweroff'
|
||||||
alias reboot='systemctl reboot'
|
alias reboot='systemctl reboot'
|
||||||
alias p='python3'
|
alias p='python3'
|
||||||
|
alias cat='bat'
|
||||||
|
|
||||||
# Github
|
# Github
|
||||||
alias gcredential='git config credential.helper store'
|
alias gcredential='git config credential.helper store'
|
||||||
@@ -17,3 +18,5 @@ alias dot='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
|
|||||||
alias dotfiles='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
|
alias dotfiles='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
|
||||||
alias dotto='python3 /home/inorishio/.dotfiles/sync.py'
|
alias dotto='python3 /home/inorishio/.dotfiles/sync.py'
|
||||||
alias dotedit='v /home/inorishio/.dotfiles/sync.py'
|
alias dotedit='v /home/inorishio/.dotfiles/sync.py'
|
||||||
|
|
||||||
|
alias controller='/home/inorishio/.config/hypr/scripts/controller.sh'
|
||||||
|
|||||||
@@ -0,0 +1,120 @@
|
|||||||
|
#main-window {
|
||||||
|
--uc-sidebar-width: 34px;
|
||||||
|
--uc-sidebar-hover-width: 170px;
|
||||||
|
--uc-transition: 200ms ease-in-out;
|
||||||
|
--uc-mouseout-delay: 250ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
#TabsToolbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebar-header {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-splitter {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box {
|
||||||
|
position: relative;
|
||||||
|
z-index: 10;
|
||||||
|
min-width: var(--uc-sidebar-width) !important;
|
||||||
|
width: var(--uc-sidebar-width) !important;
|
||||||
|
max-width: var(--uc-sidebar-width) !important;
|
||||||
|
overflow: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box:not(:hover) #sidebar-header {
|
||||||
|
overflow: clip !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) .sidebar-browser-stack {
|
||||||
|
min-width: var(--uc-sidebar-width) !important;
|
||||||
|
width: var(--uc-sidebar-width) !important;
|
||||||
|
max-width: var(--uc-sidebar-width) !important;
|
||||||
|
overflow: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) :is(.sidebar-browser-stack, #sidebar, #sidebar-header, #sidebar-header #sidebar-switcher-target) {
|
||||||
|
min-width: var(--uc-sidebar-width) !important;
|
||||||
|
width: var(--uc-sidebar-width) !important;
|
||||||
|
max-width: var(--uc-sidebar-width) !important;
|
||||||
|
transition:
|
||||||
|
min-width var(--uc-transition) var(--uc-mouseout-delay),
|
||||||
|
max-width var(--uc-transition) var(--uc-mouseout-delay),
|
||||||
|
width var(--uc-transition) var(--uc-mouseout-delay) !important;
|
||||||
|
will-change: min-width;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box:hover>.sidebar-browser-stack,
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box:hover>.sidebar-browser-stack>#sidebar,
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box:hover>#sidebar-header,
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box:hover>#sidebar-header>#sidebar-switcher-target {
|
||||||
|
transition:
|
||||||
|
min-width var(--uc-transition),
|
||||||
|
max-width var(--uc-transition),
|
||||||
|
width var(--uc-transition) !important;
|
||||||
|
min-width: var(--uc-sidebar-hover-width) !important;
|
||||||
|
width: var(--uc-sidebar-hover-width) !important;
|
||||||
|
max-width: var(--uc-sidebar-hover-width) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box[positionend="true"] {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box[positionend="true"]>* {
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box[positionend="true"]:-moz-locale-dir(rtl) {
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box[positionend="true"]:-moz-locale-dir(rtl)>* {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window[sizemode="fullscreen"] #PersonalToolbar {
|
||||||
|
overflow: hidden !important;
|
||||||
|
min-height: 0 !important;
|
||||||
|
max-height: 0 !important;
|
||||||
|
padding-top: 0 !important;
|
||||||
|
padding-bottom: 0 !important;
|
||||||
|
border-top-width: 0 !important;
|
||||||
|
transition:
|
||||||
|
min-height var(--uc-transition) var(--uc-mouseout-delay),
|
||||||
|
max-height var(--uc-transition) var(--uc-mouseout-delay) !important;
|
||||||
|
will-change: min-height;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window[sizemode="fullscreen"] #navigator-toolbox:hover #PersonalToolbar {
|
||||||
|
min-height: 28px !important;
|
||||||
|
max-height: 28px !important;
|
||||||
|
transition:
|
||||||
|
min-height var(--uc-transition),
|
||||||
|
max-height var(--uc-transition) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window[sizemode="fullscreen"] #PersonalToolbar {
|
||||||
|
overflow: hidden !important;
|
||||||
|
min-height: 0 !important;
|
||||||
|
max-height: 0 !important;
|
||||||
|
padding-top: 0 !important;
|
||||||
|
padding-bottom: 0 !important;
|
||||||
|
border-top-width: 0 !important;
|
||||||
|
transition:
|
||||||
|
min-height var(--uc-transition) var(--uc-mouseout-delay),
|
||||||
|
max-height var(--uc-transition) var(--uc-mouseout-delay) !important;
|
||||||
|
will-change: min-height;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window[sizemode="fullscreen"] #navigator-toolbox:hover #PersonalToolbar {
|
||||||
|
min-height: 28px !important;
|
||||||
|
max-height: 28px !important;
|
||||||
|
transition:
|
||||||
|
min-height var(--uc-transition),
|
||||||
|
max-height var(--uc-transition) !important;
|
||||||
|
}
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
#main-window {
|
||||||
|
--uc-sidebar-width: 34px;
|
||||||
|
--uc-sidebar-hover-width: 170px;
|
||||||
|
--uc-transition: 200ms ease-in-out;
|
||||||
|
--uc-mouseout-delay: 250ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
#TabsToolbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebar-header {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-splitter {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box {
|
||||||
|
position: relative;
|
||||||
|
z-index: 10;
|
||||||
|
min-width: var(--uc-sidebar-width) !important;
|
||||||
|
width: var(--uc-sidebar-width) !important;
|
||||||
|
max-width: var(--uc-sidebar-width) !important;
|
||||||
|
overflow: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box:not(:hover) #sidebar-header {
|
||||||
|
overflow: clip !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) .sidebar-browser-stack {
|
||||||
|
min-width: var(--uc-sidebar-width) !important;
|
||||||
|
width: var(--uc-sidebar-width) !important;
|
||||||
|
max-width: var(--uc-sidebar-width) !important;
|
||||||
|
overflow: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) :is(.sidebar-browser-stack, #sidebar, #sidebar-header, #sidebar-header #sidebar-switcher-target) {
|
||||||
|
min-width: var(--uc-sidebar-width) !important;
|
||||||
|
width: var(--uc-sidebar-width) !important;
|
||||||
|
max-width: var(--uc-sidebar-width) !important;
|
||||||
|
transition:
|
||||||
|
min-width var(--uc-transition) var(--uc-mouseout-delay),
|
||||||
|
max-width var(--uc-transition) var(--uc-mouseout-delay),
|
||||||
|
width var(--uc-transition) var(--uc-mouseout-delay) !important;
|
||||||
|
will-change: min-width;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box:hover>.sidebar-browser-stack,
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box:hover>.sidebar-browser-stack>#sidebar,
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box:hover>#sidebar-header,
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box:hover>#sidebar-header>#sidebar-switcher-target {
|
||||||
|
transition:
|
||||||
|
min-width var(--uc-transition),
|
||||||
|
max-width var(--uc-transition),
|
||||||
|
width var(--uc-transition) !important;
|
||||||
|
min-width: var(--uc-sidebar-hover-width) !important;
|
||||||
|
width: var(--uc-sidebar-hover-width) !important;
|
||||||
|
max-width: var(--uc-sidebar-hover-width) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box[positionend="true"] {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box[positionend="true"]>* {
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box[positionend="true"]:-moz-locale-dir(rtl) {
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([customizing]):has(#sidebar-box[checked="true"] #sidebar-title[value="Sidebery"]) #sidebar-box[positionend="true"]:-moz-locale-dir(rtl)>* {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
@@ -23,7 +23,7 @@ for f in ~/.config/zshrc/*; do
|
|||||||
[[ -f $c ]] && source $c || source $f
|
[[ -f $c ]] && source $c || source $f
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
export PATH=/home/inorishio/.local/bin:/usr/lib/ccache/bin/:/usr/lib/ccache/bin/:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
|
export PATH=/home/inorishio/.local/bin:/usr/lib/ccache/bin/:/usr/lib/ccache/bin/:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/inorishio/.cargo/bin
|
||||||
|
|
||||||
eval "$(zoxide init --cmd cd zsh)"
|
eval "$(zoxide init --cmd cd zsh)"
|
||||||
|
|
||||||
|
|||||||