Compare commits

...
13 Commits
435 changed files with 24213 additions and 24352 deletions
@@ -1,6 +0,0 @@
{
"positionX": 726,
"positionY": 321,
"scaling": 1,
"zIndex": 0
}
-6
View File
@@ -1,6 +0,0 @@
{
"positionX": 1231,
"positionY": 721,
"scaling": 2.200000000000001,
"zIndex": 0
}
@@ -1,6 +0,0 @@
{
"positionX": 925,
"positionY": 4,
"scaling": 11.399999999999977,
"zIndex": 0
}
+4 -4
View File
@@ -1,6 +1,6 @@
{
"positionX": 98,
"positionY": 1346,
"scaling": 2.2375000000000145,
"zIndex": 2
"positionX": 153,
"positionY": 1032,
"scaling": 1.749999999999999,
"zIndex": 1
}
+4 -4
View File
@@ -1,6 +1,6 @@
{
"positionX": 0,
"positionY": 1292,
"scaling": 3.7125000000000177,
"zIndex": 1
"positionX": 4,
"positionY": 968,
"scaling": 2.975000000000006,
"zIndex": 2
}
+3 -3
View File
@@ -1,6 +1,6 @@
{
"positionX": 125,
"positionY": 1292,
"scaling": 4.05000000000002,
"positionX": 197,
"positionY": 956,
"scaling": 3.050000000000006,
"zIndex": 0
}
+409
View File
@@ -0,0 +1,409 @@
### MangoHud configuration file
### Uncomment any options you wish to enable. Default options are left uncommented
### Use some_parameter=0 to disable a parameter (only works with on/off parameters)
### Everything below can be used / overridden with the environment variable MANGOHUD_CONFIG instead
################ INFORMATIONAL #################
## prints possible options on stdout
# help
################ PERFORMANCE #################
### Limit the application FPS. Comma-separated list of one or more FPS values (e.g. 0,30,60). 0 means unlimited (unless VSynced)
# fps_limit=144,60,0
### early = wait before present, late = wait after present
# fps_limit_method=
### VSync [0-3] 0 = adaptive; 1 = off; 2 = mailbox; 3 = on
vsync=2
### OpenGL VSync [0-N] 0 = off; >=1 = wait for N v-blanks, N > 1 acts as a FPS limiter (FPS = display refresh rate / N)
# gl_vsync=-2
### Mip-map LoD bias. Negative values will increase texture sharpness (and aliasing)
## Positive values will increase texture blurriness (-16 to 16)
# picmip=-17
### Anisotropic filtering level. Improves sharpness of textures viewed at an angle (0 to 16)
# af=-1
### Force bicubic filtering
# bicubic
### Force trilinear filtering
# trilinear
### Disable linear texture filtering. Makes textures look blocky
# retro
################### VISUAL ###################
### Legacy layout
# legacy_layout=0
### pre defined presets
# -1 = default
# 0 = no display
# 1 = fps only
# 2 = horizontal view
# 3 = extended
# 4 = high detailed information
# preset=-1
### Enable most of the toggleable parameters (currently excludes `histogram`)
# full
### Show FPS only. ***Not meant to be used with other display params***
# fps_only
### Display custom centered text, useful for a header
# custom_text_center=
### Display the current system time
# time
## removes the time label
# time_no_label
### Time formatting examples
## %H:%M
## [ %T %F ]
## %X # locally formatted time, because of limited glyph range, missing characters may show as '?' (e.g. Japanese)
# time_format="%T"
### Display MangoHud version
# version
### Display the current GPU information
## Note: gpu_mem_clock and gpu_mem_temp also need "vram" to be enabled
gpu_stats
# gpu_temp
# gpu_junction_temp
# gpu_core_clock
# gpu_mem_temp
# gpu_mem_clock
# gpu_power
# gpu_power_limit
# gpu_text=
# gpu_load_change
# gpu_load_value=60,90
# gpu_load_color=39F900,FDFD09,B22222
## GPU fan in rpm on AMD, FAN in percent on NVIDIA
# gpu_fan
## gpu_voltage only works on AMD GPUs
# gpu_voltage
## Select list of GPUs to display
# gpu_list=0,1
# gpu_efficiency
### Display the current CPU information
cpu_stats
# cpu_temp
# cpu_power
# cpu_text=
# cpu_mhz
# cpu_load_change
# cpu_load_value=60,90
# cpu_load_color=39F900,FDFD09,B22222
# cpu_efficiency
### Display the current CPU load & frequency for each core
# core_load
# core_load_change
# core_bars
# core_type
### Display IO read and write for the app (not system)
# io_read
# io_write
### Display system vram / ram / swap space usage
# vram
# ram
# swap
### Display per process memory usage
## Show resident memory and other types, if enabled
procmem
# procmem_shared
# procmem_virt
proc_vram
### Display battery information
# battery
# battery_icon
# device_battery=gamepad,mouse
# device_battery_icon
# battery_watt
# battery_time
### Display FPS and frametime
fps
# fps_sampling_period=500
# fps_color_change
# fps_value=30,60
# fps_color=B22222,FDFD09,39F900
# fps_text=""
frametime
# frame_count
## fps_metrics takes a list of decimal values or the value avg
# fps_metrics=avg,0.01
### Display GPU throttling status based on Power, current, temp or "other"
## Only shows if throttling is currently happening
throttling_status
## Same as throttling_status but displays throttling on the frametime graph
#throttling_status_graph
### Display miscellaneous information
# engine_version
# engine_short_names
# gpu_name
# vulkan_driver
# wine
# exec_name
# winesync
# present_mode
### Display loaded MangoHud architecture
# arch
### Display the frametime line graph
frame_timing
# frame_timing_detailed
# dynamic_frame_timing
# histogram
### Display GameMode / vkBasalt running status
# gamemode
# vkbasalt
### Gamescope related options
## Display the status of FSR (only works in gamescope)
# fsr
## Hides the sharpness info for the `fsr` option (only available in gamescope)
# hide_fsr_sharpness
## Shows the graph of gamescope app frametimes and latency (only on gamescope obviously)
# debug
## Display the status of HDR (only works in gamescope)
# hdr
## Display the current refresh rate (only works in gamescope)
# refresh_rate
### graphs displays one or more graphs that you chose
## separated by ",", available graphs are
## gpu_load,cpu_load,gpu_core_clock,gpu_mem_clock,vram,ram,cpu_temp,gpu_temp
# graphs=
### mangoapp related options
## Enables mangoapp to be displayed above the Steam UI
# mangoapp_steam
### Steam Deck options
## Shows the Steam Deck fan rpm
# fan
### Display current FPS limit
show_fps_limit
### Display the current resolution
# resolution
### Display current display session
# display_server
### Display temperature in fahrenheit
# temp_fahrenheit
## Display efficiency in joules per frame
# flip_efficiency
### Display custom text
# custom_text=
### Display output of Bash command in next column
# exec=
### Display media player metadata
# media_player
## for example spotify
# media_player_name=
## Format metadata, lines are delimited by ; (wip)
## example: {title};{artist};{album}
## example: Track:;{title};By:;{artist};From:;{album}
# media_player_format=title,artist,album
### Network interface throughput
# network
## Network can take arguments but it's not required.
## without arguments it shows all interfaces
## arguments set which interfaces will be displayed
# network=eth0,wlo1
### Change the hud font size
# font_size=24
# font_scale=1.0
# font_size_text=24
# font_scale_media_player=0.55
# no_small_font
### Change default font (set location to TTF/OTF file)
## Set font for the whole hud
# font_file=
## Set font only for text like media player metadata
# font_file_text=
## Set font glyph ranges. Defaults to Latin-only. Don't forget to set font_file/font_file_text to font that supports these
## Probably don't enable all at once because of memory usage and hardware limits concerns
## If you experience crashes or text is just squares, reduce glyph range or reduce font size
# font_glyph_ranges=korean,chinese,chinese_simplified,japanese,cyrillic,thai,vietnamese,latin_ext_a,latin_ext_b
### Outline text
text_outline
# text_outline_color = 000000
# text_outline_thickness = 1.5
### Change the hud position
# position=top-left
### Change the corner roundness
# round_corners=0
### Remove margins around MangoHud
# hud_no_margin
### Display compact version of MangoHud
# hud_compact
### Display MangoHud in a horizontal position
# horizontal
# horizontal_stretch
### Disable / hide the hud by default
# no_display
### Show FEX-Emu statistics
## Only useful for Arm64 devices running applications under emulation
# fex_stats
### Hud position offset
# offset_x=0
# offset_y=0
### Hud dimensions
# width=0
# height=140
# table_columns=3
# cellpadding_y=-0.085
### Hud transparency / alpha
# background_alpha=0.5
# alpha=1.0
### FCAT overlay
### This enables an FCAT overlay to perform frametime analysis on the final image stream.
### Enable the overlay
# fcat
### Set the width of the FCAT overlay.
### 24 is a performance optimization on AMD GPUs that should not have adverse effects on nVidia GPUs.
### A minimum of 20 pixels is recommended by nVidia.
# fcat_overlay_width=24
### Set the screen edge, this can be useful for special displays that don't update from top edge to bottom. This goes from 0 (left side) to 3 (top edge), counter-clockwise.
# fcat_screen_edge=0
### Color customization
# text_color=FFFFFF
# gpu_color=2E9762
# cpu_color=2E97CB
# vram_color=AD64C1
# ram_color=C26693
# engine_color=EB5B5B
# io_color=A491D3
# frametime_color=00FF00
# background_color=020202
# media_player_color=FFFFFF
# wine_color=EB5B5B
# battery_color=FF9078
# network_color=E07B85
# horizontal_separator_color=AD64C1
### Specify GPU with PCI bus ID
### Set to 'domain:bus:slot.function'
### Example:
### $ lspci | grep A770
### 03:00.0 VGA compatible controller: Intel Corporation DG2 [Arc A770] (rev 08)
# pci_dev=0000:03:00.0
### Blacklist
# blacklist=
### Control over socket
### Enable and set socket name, '%p' is replaced with process id
## example: mangohud
## example: mangohud-%p
# control = -1
### ftrace tracepoint display
## Enable display of tracepoint information gathered from ftrace. MangoHud will parse
## out the necessary data from the ftrace pipe, ftrace itself still has to be configured
## manually (enabling the desired event, applying any filtering etc.). The user running
## MangoHud will require permission to access the default-mounted tracefs (expected at
## /sys/kernel/tracing/).
##
## When parsing ftrace output, currently only the `key=value` format for event fields is
## expected. This is the most common format used in events, but it's not standardized.
##
## Three types of display are available:
## - `histogram/drm_vblank_event`, a histogram of event occurrence
## - `linegraph/devfreq_monitor/freq`, a line graph of an event field's numerical value
## - `label/devfreq_frequency/dev_name`, a textual presentation of an event field's value
##
## The displays are set through the `ftrace` option. Multiple displays can be specified.
# ftrace=histogram/drm_vblank_event+linegraph/devfreq_monitor/freq
################ WORKAROUNDS #################
### Options starting with "gl_*" are for OpenGL
### Specify what to use for getting display size. Options are "viewport", "scissorbox" or disabled. Defaults to using glXQueryDrawable
# gl_size_query=viewport
### (Re)bind given framebuffer before MangoHud gets drawn. Helps with Crusader Kings III
# gl_bind_framebuffer=0
### Don't swap origin if using GL_UPPER_LEFT. Helps with Ryujinx
# gl_dont_flip=1
################ INTERACTION #################
### Change toggle keybinds for the hud & logging
toggle_hud=Shift_R+F12
# toggle_hud_position=Shift_R+F11
# toggle_preset=Shift_R+F10
# toggle_fps_limit=Shift_L+F1
# toggle_logging=Shift_L+F2
# reload_cfg=Shift_L+F4
# upload_log=Shift_L+F3
# reset_fps_metrics=Shift_R+f9
#################### LOG #####################
### Automatically start the log after X seconds
# autostart_log=
### Set amount of time in seconds that the logging will run for
# log_duration=
### Change the default log interval, 0 is default
# log_interval=0
### Set location of the output files (required for logging)
# output_folder=/home/<USERNAME>/mangologs
### Permit uploading logs directly to FlightlessMango.com
## set to 1 to enable
# permit_upload=0
### Define a '+'-separated list of percentiles shown in the benchmark results
### Use "AVG" to get a mean average. Default percentiles are 97+AVG+1+0.1
## example: ['97', 'AVG', '1', '0.1']
# benchmark_percentiles=97,AVG
## Adds more headers and information such as versioning to the log. This format is not supported on flightlessmango.com (yet)
# log_versioning
## Enable automatic uploads of logs to flightlessmango.com
# upload_logs
# output_file=""
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+23 -109
View File
@@ -8,78 +8,20 @@
"Settings": [],
"Enable": true
},
"Filters": [
{
"Path": "RadialFollow.RadialFollowSmoothingScreenSpace",
"Settings": [
{
"Property": "OuterRadius",
"Value": 5.0
},
{
"Property": "InnerRadius",
"Value": 0.0
},
{
"Property": "SmoothingCoefficient",
"Value": 0.95
},
{
"Property": "SoftKneeScale",
"Value": 1.0
},
{
"Property": "SmoothingLeakCoefficient",
"Value": 0.0
}
],
"Enable": true
},
{
"Path": "RadialFollow.RadialFollowSmoothingTabletSpace",
"Settings": [
{
"Property": "OuterRadius",
"Value": 1.0
},
{
"Property": "InnerRadius",
"Value": 0.0
},
{
"Property": "SmoothingCoefficient",
"Value": 0.95
},
{
"Property": "SoftKneeScale",
"Value": 1.0
},
{
"Property": "SmoothingLeakCoefficient",
"Value": 0.0
}
],
"Enable": true
},
{
"Path": "erase_button.erase_button",
"Settings": [],
"Enable": true
}
],
"Filters": [],
"AbsoluteModeSettings": {
"Display": {
"Width": 1920.0,
"Height": 1080.0,
"X": 960.0,
"Y": 540.0,
"Width": 2560.0,
"Height": 1440.0,
"X": 1280.0,
"Y": 720.0,
"Rotation": 0.0
},
"Tablet": {
"Width": 152.0,
"Height": 95.0,
"X": 76.0,
"Y": 47.5,
"Width": 39.0,
"Height": 30.0,
"X": 75.0,
"Y": 24.0,
"Rotation": 0.0
},
"EnableClipping": true,
@@ -99,26 +41,23 @@
"EraserButton": null,
"PenButtons": [
{
"Path": "ScrollBinding.NewBulletproofScrollBinding",
"Path": "OpenTabletDriver.Desktop.Binding.LinuxArtistMode.LinuxArtistModeButtonBinding",
"Settings": [
{
"Property": "Property",
"Value": null
},
{
"Property": "Delay",
"Value": 15
},
{
"Property": "Amount",
"Value": 120
"Property": "Button",
"Value": "Pen Button 1"
}
],
"Enable": true
},
{
"Path": "erase_button.erase_button",
"Settings": [],
"Path": "OpenTabletDriver.Desktop.Binding.LinuxArtistMode.LinuxArtistModeButtonBinding",
"Settings": [
{
"Property": "Button",
"Value": "Pen Button 2"
}
],
"Enable": true
}
],
@@ -126,39 +65,14 @@
"MouseButtons": [],
"MouseScrollUp": null,
"MouseScrollDown": null,
"WheelBindings": [],
"DisablePressure": false,
"DisableTilt": false
"DisableTilt": false,
"EnableDragBindings": false
}
}
],
"LockUsableAreaDisplay": true,
"LockUsableAreaTablet": true,
"Tools": [
{
"Path": "ScrollBinding.ScrollBindingSettings",
"Settings": [
{
"Property": "ScrollDelay",
"Value": 15
},
{
"Property": "ForwardScroll",
"Value": 120
},
{
"Property": "BackwardScroll",
"Value": 120
},
{
"Property": "LeftScroll",
"Value": 120
},
{
"Property": "RightScroll",
"Value": 120
}
],
"Enable": true
}
]
"Tools": []
}
+104 -104
View File
@@ -1,112 +1,112 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"source": "/home/inorishio/Pictures/Gifs/Ai-Hoshino-Dancing.gif",
"type": "kitty-icat",
"padding": {
"top": 5,
"right": 2,
}
"source": "/home/inorishio/Pictures/Profile-Pictures/Nescia.png",
"type": "kitty-icat",
"padding": {
"top": 5,
"right": 2,
},
},
"display": {
"separator": " ➜ "
"separator": " ➜ ",
},
"modules": [
"break",
"break",
"break",
{
"type": "os",
"key": "OS ",
"keyColor": "31", // = color1
},
{
"type": "kernel",
"key": " ├  ",
"keyColor": "31",
},
{
"type": "packages",
"format": "{} (pacman)",
"key": " ├ 󰏖 ",
"keyColor": "31",
},
{
"type": "shell",
"key": " └  ",
"keyColor": "31",
},
"break",
{
"type": "wm",
"key": "WM ",
"keyColor": "32",
},
{
"type": "wmtheme",
"key": " ├ 󰉼 ",
"keyColor": "32",
},
{
"type": "icons",
"key": " ├ 󰀻 ",
"keyColor": "32",
},
{
"type": "cursor",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "terminal",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "terminalfont",
"key": " └  ",
"keyColor": "32",
},
"break",
{
"type": "host",
"format": "{5} {1} Type {2}",
"key": "PC ",
"keyColor": "33",
},
{
"type": "cpu",
"format": "{1} ({3}) @ {7} GHz",
"key": " ├  ",
"keyColor": "33",
},
{
"type": "gpu",
"format": "{1} {2} @ {12} GHz",
"key": " ├ 󰢮 ",
"keyColor": "33",
},
{
"type": "memory",
"key": " ├  ",
"keyColor": "33",
},
{
"type": "swap",
"key": " ├ 󰓡 ",
"keyColor": "33",
},
{
"type": "disk",
"key": " ├ 󰋊 ",
"keyColor": "33",
},
{
"type": "monitor",
"key": " └  ",
"keyColor": "33",
},
"break",
"break",
]
"break",
"break",
"break",
{
"type": "os",
"key": "OS ",
"keyColor": "31", // = color1
},
{
"type": "kernel",
"key": " ├  ",
"keyColor": "31",
},
{
"type": "packages",
"format": "{pacman} (pacman), {yay} (yay)",
"key": " ├ 󰏖 ",
"keyColor": "31",
},
{
"type": "shell",
"key": " └  ",
"keyColor": "31",
},
"break",
{
"type": "wm",
"key": "WM ",
"keyColor": "32",
},
{
"type": "wmtheme",
"key": " ├ 󰉼 ",
"keyColor": "32",
},
{
"type": "icons",
"key": " ├ 󰀻 ",
"keyColor": "32",
},
{
"type": "cursor",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "terminal",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "terminalfont",
"key": " └  ",
"keyColor": "32",
},
"break",
{
"type": "host",
"format": "{5} {1} Type {2}",
"key": "PC ",
"keyColor": "33",
},
{
"type": "cpu",
"format": "{1} ({3}) @ {7} GHz",
"key": " ├  ",
"keyColor": "33",
},
{
"type": "gpu",
"format": "{1} {2} @ {12} GHz",
"key": " ├ 󰢮 ",
"keyColor": "33",
},
{
"type": "memory",
"key": " ├  ",
"keyColor": "33",
},
{
"type": "swap",
"key": " ├ 󰓡 ",
"keyColor": "33",
},
{
"type": "disk",
"key": " ├ 󰋊 ",
"keyColor": "33",
},
{
"type": "monitor",
"key": " └  ",
"keyColor": "33",
},
"break",
"break",
],
}
+114
View File
@@ -0,0 +1,114 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "kitty-icat",
"source": "/home/inorishio/Pictures/Profile-Pictures/Nescia.png",
// "height": 60,
"width": 60,
"padding": {
"top": 3,
"right": 0,
},
},
"display": {
"separator": " ➜ ",
},
"modules": [
"break",
"break",
"break",
{
"type": "os",
"key": "OS ",
"keyColor": "32", // = color1
},
{
"type": "kernel",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "packages",
"format": "{pacman} (pacman)",
"key": " ├ 󰏖 ",
"keyColor": "32",
},
{
"type": "shell",
"key": " └  ",
"keyColor": "31",
},
"break",
{
"type": "wm",
"key": "WM ",
"keyColor": "32",
},
{
"type": "wmtheme",
"key": " ├ 󰉼 ",
"keyColor": "32",
},
{
"type": "icons",
"key": " ├ 󰀻 ",
"keyColor": "32",
},
{
"type": "cursor",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "terminal",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "terminalfont",
"key": " └  ",
"keyColor": "32",
},
"break",
{
"type": "host",
"format": "{5} {1} Type {2}",
"key": "PC ",
"keyColor": "33",
},
{
"type": "cpu",
"format": "{1} ({3}) @ {7} GHz",
"key": " ├  ",
"keyColor": "33",
},
{
"type": "gpu",
"format": "{1} {2} @ {12} GHz",
"key": " ├ 󰢮 ",
"keyColor": "33",
},
{
"type": "memory",
"key": " ├  ",
"keyColor": "33",
},
{
"type": "swap",
"key": " ├ 󰓡 ",
"keyColor": "33",
},
{
"type": "disk",
"key": " ├ 󰋊 ",
"keyColor": "33",
},
{
"type": "monitor",
"key": " └  ",
"keyColor": "33",
},
"break",
"break",
],
}
+350 -23
View File
@@ -1,24 +1,351 @@
# Run on boot
exec-once = uwsm app -S out -- zshell-cli shell start
exec-once = uwsm app -S out -- obs --scene "Recording" --startreplaybuffer --minimize-to-tray
exec-once = uwsm app -S out -- /usr/bin/otd-daemon
exec-once = uwsm app -S out -- ideskpet start
exec-once = uwsm app -S out -- hyprpm reload
exec-once = uwsm app -S out -- Telegram -startintray
exec-once = uwsm app -S out -- discord --start-minimized
exec-once = uwsm app -S out -- steam -silent
# Sourcing config files
source = ~/.config/hypr/conf/animations/InoriShio-animation.conf
source = ~/.config/hypr/conf/custom.conf
source = ~/.config/hypr/conf/decorations/InoriShio-decoration.conf
source = ~/.config/hypr/conf/environments/nvidia.conf
source = ~/.config/hypr/conf/keybindings/InoriShio-Keybindings.conf
source = ~/.config/hypr/conf/layers.conf
source = ~/.config/hypr/conf/layouts/computer.conf
source = ~/.config/hypr/conf/layouts/keyboard.conf
source = ~/.config/hypr/conf/misc.conf
source = ~/.config/hypr/conf/monitors/InoriShio-Display.conf
source = ~/.config/hypr/conf/windowrules/default.conf
source = ~/.config/hypr/conf/windows/default.conf
source = ~/.config/hypr/conf/scripts.conf
# #######################################################################################
# AUTOGENERATED HYPRLAND CONFIG.
# EDIT THIS CONFIG ACCORDING TO THE WIKI INSTRUCTIONS.
# #######################################################################################
autogenerated = 1 # remove this line to remove the warning
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hypr.land/Configuring/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
################
### MONITORS ###
################
# See https://wiki.hypr.land/Configuring/Monitors/
monitor=,preferred,auto,auto
###################
### MY PROGRAMS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
# Set programs that you use
$terminal = kitty
$fileManager = dolphin
$menu = hyprlauncher
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
# exec-once = $terminal
# exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hypr.land/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
###################
### PERMISSIONS ###
###################
# See https://wiki.hypr.land/Configuring/Permissions/
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
# for security reasons
# ecosystem {
# enforce_permissions = 1
# }
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hypr.land/Configuring/Variables/
# https://wiki.hypr.land/Configuring/Variables/#general
general {
gaps_in = 5
gaps_out = 20
border_size = 2
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hypr.land/Configuring/Variables/#decoration
decoration {
rounding = 10
rounding_power = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hypr.land/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 1
vibrancy = 0.1696
}
}
# https://wiki.hypr.land/Configuring/Variables/#animations
animations {
enabled = yes, please :)
# Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
# NAME, X0, Y0, X1, Y1
bezier = easeOutQuint, 0.23, 1, 0.32, 1
bezier = easeInOutCubic, 0.65, 0.05, 0.36, 1
bezier = linear, 0, 0, 1, 1
bezier = almostLinear, 0.5, 0.5, 0.75, 1
bezier = quick, 0.15, 0, 0.1, 1
# Default animations, see https://wiki.hypr.land/Configuring/Animations/
# NAME, ONOFF, SPEED, CURVE, [STYLE]
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.21, almostLinear, fade
animation = workspacesOut, 1, 1.94, almostLinear, fade
animation = zoomFactor, 1, 7, quick
}
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrule {
# name = no-gaps-wtv1
# match:float = false
# match:workspace = w[tv1]
#
# border_size = 0
# rounding = 0
# }
#
# windowrule {
# name = no-gaps-f1
# match:float = false
# match:workspace = f[1]
#
# border_size = 0
# rounding = 0
# }
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hypr.land/Configuring/Variables/#misc
misc {
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
mouse_move_enables_dpms = true
key_press_enables_dpms = true
}
#############
### INPUT ###
#############
# https://wiki.hypr.land/Configuring/Variables/#input
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
}
# See https://wiki.hypr.land/Configuring/Gestures
gesture = 3, horizontal, workspace
# Example per-device config
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
bind = $mainMod, Q, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, layoutmsg, togglesplit # dwindle
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
# Example windowrules that are useful
windowrule {
# Ignore maximize requests from all apps. You'll probably like this.
name = suppress-maximize-events
match:class = .*
suppress_event = maximize
}
windowrule {
# Fix some dragging issues with XWayland
name = fix-xwayland-drags
match:class = ^$
match:title = ^$
match:xwayland = true
match:float = true
match:fullscreen = false
match:pin = false
no_focus = true
}
# Hyprland-run windowrule
windowrule {
name = move-hyprland-run
match:class = hyprland-run
move = 20 monitor_h-120
float = yes
}
+7 -5
View File
@@ -1,9 +1,11 @@
require("settings.autostart")
require("settings.keybinds")
require("settings.custom")
require("settings.windowrules")
require("settings.layerrules")
require("settings.animation")
require("settings.autostart")
require("settings.config")
require("settings.custom")
require("settings.input")
require("settings.permissions")
require("settings.keybinds")
require("settings.monitor")
require("settings.misc")
require("settings.windowrules")
require("settings.permissions")
+5
View File
@@ -0,0 +1,5 @@
#!/usr/bin/env zsh
systemctl stop bluetooth
modprobe -r btusb btintel btrtl btbcm btmtk
modprobe btusb
systemctl start bluetooth
+5
View File
@@ -0,0 +1,5 @@
#!/usr/bin/env zsh
zoom=$(hyprctl getoption cursor:zoom_factor -j | jq '.float * 1.3')
hyprctl eval "hl.config({ cursor = { zoom_factor = $zoom } })"
+5
View File
@@ -0,0 +1,5 @@
#!/usr/bin/env zsh
zoom=$(hyprctl getoption cursor:zoom_factor -j | jq '(.float * 0.7) | if . < 1 then 1 else . end')
hyprctl eval "hl.config({ cursor = { zoom_factor = $zoom } })"
+17 -95
View File
@@ -1,114 +1,36 @@
local C = require("color")
local animations = {
{ leaf = "global", enabled = true, speed = 10, bezier = "default" },
{ leaf = "border", enabled = true, speed = 10, bezier = "default" },
{ leaf = "windows", enabled = true, speed = 3, bezier = "default" },
{ leaf = "windowsIn", enabled = true, speed = 3, bezier = "default" },
{ leaf = "windowsOut", enabled = true, speed = 3, bezier = "default" },
{ leaf = "windowsMove", enabled = true, speed = 1, bezier = "default" },
{ leaf = "border", enabled = true, speed = 10, bezier = "linear" },
{ leaf = "borderangle", enabled = true, speed = 3, bezier = "linear" },
{ leaf = "fadeOut", enabled = true, speed = 3, bezier = "default" },
{ leaf = "fadeIn", enabled = true, speed = 4, bezier = "default" },
{ leaf = "workspaces", enabled = true, speed = 4, bezier = "default" },
{ leaf = "layers", enabled = true, speed = 5, bezier = "default" },
{ leaf = "fadeLayers", enabled = true, speed = 1, bezier = "default" },
{ leaf = "fadePopups", enabled = true, speed = 1, bezier = "default" },
{ leaf = "global", enabled = true, speed = 10, bezier = "default" },
{ leaf = "layers", enabled = true, speed = 5, bezier = "cubic-bezier", style = "fade" },
{ leaf = "windows", enabled = true, speed = 3, bezier = "wind", style = "popin" },
{ leaf = "windowsIn", enabled = true, speed = 3, bezier = "winIn", style = "popin 70%" },
{ leaf = "windowsOut", enabled = true, speed = 3, bezier = "winOut", style = "popin 80%" },
{ leaf = "windowsMove", enabled = true, speed = 1, bezier = "wind", style = "slide" },
{ leaf = "workspaces", enabled = true, speed = 4, bezier = "default" },
}
local curves = {
{ name = "wind", config = { type = "bezier", points = { { 0.25, 0.1 }, { 0.25, 1 } } } },
{ name = "wind", config = { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1 } } } },
{ name = "winIn", config = { type = "bezier", points = { { 0.1, 1.0 }, { 0.1, 1 } } } },
{ name = "winOut", config = { type = "bezier", points = { { 1, 0.35 }, { 1, 1 } } } },
{ name = "linear", config = { type = "bezier", points = { { 1, 1 }, { 1, 1 } } } },
{ name = "cubic-bezier", config = { type = "bezier", points = { { 0.215, 0.61 }, { 0.355, 1 } } } },
{ name = "easeOutQuint", config = { type = "bezier", points = { { 0.23, 1 }, { 0.32, 1 } } } },
{ name = "easeInOutCubic", config = { type = "bezier", points = { { 0.65, 0.05 }, { 0.36, 1 } } } },
{ name = "linear", config = { type = "bezier", points = { { 0, 0 }, { 1, 1 } } } },
{ name = "almostLinear", config = { type = "bezier", points = { { 0.5, 0.5 }, { 0.75, 1 } } } },
{ name = "quick", config = { type = "bezier", points = { { 0.15, 0 }, { 0.1, 1 } } } },
{ name = "easy", config = { type = "spring", mass = 1, stiffness = 71.2633, dampening = 15.8273644 } },
}
hl.config({
general = {
gaps_in = 3,
gaps_out = 6,
border_size = 2,
col = {
active_border = { colors = { C.colors.vivian1, C.colors.ado }, angle = 90 },
inactive_border = { colors = { C.colors.pink, C.colors.vivian2 }, angle = 60 },
},
-- Set to true to enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = true,
-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
allow_tearing = false,
layout = "dwindle",
},
decoration = {
rounding = 10,
rounding_power = 2,
-- Change transparency of focused and unfocused windows
active_opacity = 1.0,
inactive_opacity = 1.0,
shadow = {
enabled = true,
range = 100,
render_power = 4,
color = 0x66000000,
color_inactive = 0x33000000,
offset = "0, 10",
scale = 1,
},
blur = {
enabled = true,
size = 2,
passes = 3,
new_optimizations = true,
ignore_opacity = true,
contrast = 1.0,
brightness = 1.0,
vibrancy = 0.0,
vibrancy_darkness = 0.0,
xray = false,
noise = 0,
popups = true,
input_methods = true,
},
},
animations = {
enabled = true,
},
})
for _, animation in ipairs(animations) do
hl.animation(animation)
end
for _, curve in ipairs(curves) do
hl.curve(curve.name, curve.config)
end
-- List of animation options
-- "global"
-- "border"
-- "windows"
-- "windowsIn"
-- "windowsOut"
-- "fadeIn"
-- "fadeOut"
-- "fade"
-- "layers"
-- "layersIn"
-- "layersOut"
-- "fadeLayersIn"
-- "fadeLayersOut"
-- "workspaces"
-- "workspacesIn"
-- "workspacesOut"
-- "zoomFactor"
for _, animation in ipairs(animations) do
hl.animation(animation)
end
+3 -2
View File
@@ -6,9 +6,10 @@ hl.on("hyprland.start", function()
hl.exec_cmd("sleep 3s; " .. prefix .. "obs --scene 'Recording' --startreplaybuffer --minimize-to-tray")
hl.exec_cmd("sleep 3s; " .. prefix .. "ideskpet start")
hl.exec_cmd("sleep 3s; " .. prefix .. "Telegram -startintray")
hl.exec_cmd("sleep 3s; " .. prefix .. "discord --enable-features=WaylandLinuxDrmSyncobj --start-minimized")
hl.exec_cmd("sleep 3s; " .. prefix .. "discord --startminimized") --enable-features=WaylandLinuxDrmSyncobj --start-minimized")
hl.exec_cmd("sleep 3s; " .. prefix .. "steam -silent")
hl.exec_cmd("sleep 3s; " .. prefix .. "~/.config/hypr/scripts/gtk.sh")
hl.exec_cmd("sleep 3s; " .. prefix .. "wl-paste --watch cliphist store")
-- hl.exec_cmd("sleep 15s; " .. prefix .. "hyprpm reload")
hl.exec_cmd("sleep 3s; " .. prefix .. "solaar -b symbolic --window hide")
hl.exec_cmd("sleep 3s; " .. prefix .. "openrgb --startminimized")
end)
+62
View File
@@ -0,0 +1,62 @@
local C = require("color")
hl.config({
general = {
gaps_in = 3,
gaps_out = 6,
border_size = 2,
col = {
active_border = { colors = { C.colors.vivian1, C.colors.ado }, angle = 90 },
inactive_border = { colors = { C.colors.pink, C.colors.vivian2 }, angle = 60 },
},
-- Set to true to enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = true,
-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
allow_tearing = false,
layout = "dwindle",
},
decoration = {
rounding = 10,
rounding_power = 2,
-- Change transparency of focused and unfocused windows
active_opacity = 1.0,
inactive_opacity = 1.0,
shadow = {
enabled = true,
range = 100,
render_power = 4,
color = 0x66000000,
color_inactive = 0x33000000,
offset = "0, 10",
scale = 1,
},
blur = {
enabled = true,
size = 2,
passes = 3,
new_optimizations = true,
ignore_opacity = true,
contrast = 1.0,
brightness = 1.0,
vibrancy = 0.0,
vibrancy_darkness = 0.0,
xray = false,
noise = 0,
popups = true,
input_methods = true,
},
},
animations = {
enabled = true,
},
})
+2 -1
View File
@@ -8,8 +8,9 @@ hl.config({
},
cursor = {
no_hardware_cursors = false,
no_hardware_cursors = true,
use_cpu_buffer = 2,
zoom_factor = 1.0,
},
xwayland = {
+5
View File
@@ -0,0 +1,5 @@
hl.gesture({
fingers = 3,
direction = "horizontal",
action = "workspace",
})
+2 -14
View File
@@ -1,7 +1,7 @@
hl.config({
input = {
kb_layout = "",
kb_variant = "",
kb_layout = "us",
kb_variant = "altgr-intl",
kb_model = "",
kb_options = "",
kb_rules = "",
@@ -19,15 +19,3 @@ hl.config({
},
},
})
hl.gesture({
fingers = 3,
direction = "horizontal",
action = "workspace",
})
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Devices/ for more
hl.device({
name = "epic-mouse-v1",
sensitivity = 0,
})
+86 -13
View File
@@ -1,13 +1,78 @@
-- Example binds, see https://wiki.hypr.land/Configuring/Basics/Binds/ for more
-- closeWindowBind:set_enabled(false)
local mainMod = "SUPER" -- Sets "Windows" key as main modifier
local mainMod = "SUPER"
local prefix = "app2unit -S out -- "
local fileManager = "dolphin"
local MAX_ZOOM = 10
local MIN_ZOOM = 1
local ZOOM_TOGGLE_FACTOR = 1.5
---@param offset number
---@return nil
local function zoom(offset)
local current = hl.get_config("cursor.zoom_factor")
if offset ~= nil then
current = current + offset
elseif current ~= MIN_ZOOM then
current = MIN_ZOOM
else
current = ZOOM_TOGGLE_FACTOR
end
current = math.max(MIN_ZOOM, math.min(MAX_ZOOM, current))
hl.config({ cursor = { zoom_factor = current } })
end
-- FOR TESTING PURPOSES DON'T FORGET OR DELETE
-- hl.notification.create({
-- text = "Found: " .. win.title,
-- timeout = 3000,
-- })
local function appSearch(appName)
local lookupName = {
["spotify-launcher"] = "Spotify",
["zterm"] = "ZTerm",
["Telegram"] = "org.telegram.desktop",
}
local name = lookupName[appName] or appName
local app = hl.get_window("title:" .. name)
or hl.get_window("class:" .. name)
or hl.get_window("initialtitle:" .. name)
or hl.get_window("initialclass:" .. name)
if app then
hl.dispatch(hl.dsp.focus({ workspace = app.workspace.id }))
hl.dispatch(hl.dsp.focus({ window = app }))
else
hl.dispatch(hl.dsp.exec_cmd(prefix .. appName))
end
end
-- Zooming
hl.bind(mainMod .. " + GRAVE", zoom)
hl.bind(mainMod .. " + mouse_up", function()
zoom(0.5)
end)
hl.bind(mainMod .. " + mouse_down", function()
zoom(-0.5)
end)
-- Zachjittery
hl.bind(mainMod .. " + CTRL + RETURN", hl.dsp.exec_cmd("zshell-cli shell call visibilities toggleLauncher ''"))
-- hl.bind(mainMod .. " + CTRL + RETURN", hl.dsp.global("zshell:toggle-launcher"))
hl.bind(mainMod .. " + RETURN", hl.dsp.exec_cmd(prefix .. "zterm"))
hl.bind(mainMod .. " + RETURN", function()
appSearch("zterm")
end)
hl.bind(mainMod .. " + CTRL + RETURN", hl.dsp.global("zshell:toggle-launcher"))
hl.bind(mainMod .. " + SHIFT + D", hl.dsp.global("zshell:toggle-drawing"))
hl.bind(mainMod .. " + N", hl.dsp.global("zshell:toggle-nc"))
hl.bind(mainMod .. " + SHIFT + S", hl.dsp.global("zshell:screenshot"))
hl.bind(mainMod .. " + CTRL + S", hl.dsp.global("zshell:screenshotFreeze"))
hl.bind(mainMod .. " + L", hl.dsp.global("zshell:lock"))
hl.bind(mainMod .. " + I", hl.dsp.global("zshell:toggle-settings"))
hl.bind(mainMod .. " + SHIFT + C", hl.dsp.global("zshell:toggle-clipboard"))
hl.bind(
mainMod .. " + CTRL + SHIFT + R",
hl.dsp.exec_cmd("zshell-cli shell kill; sleep 0.5; " .. prefix .. "zshell-cli shell start")
)
hl.bind(mainMod .. " + CTRL + SHIFT + K", hl.dsp.exec_cmd("zshell-cli shell kill"))
-- QML
hl.bind("CTRL + mouse:274", hl.dsp.exec_cmd("ideskpet toggle-region"))
@@ -15,11 +80,17 @@ hl.bind("SHIFT + mouse:274", hl.dsp.exec_cmd("ideskpet toggle-layer"))
hl.bind(mainMod .. " + Z", hl.dsp.exec_cmd("ideskpet cycle-zindex"))
-- Apps
hl.bind(mainMod .. " + C", hl.dsp.exec_cmd(prefix .. "Telegram"))
hl.bind(mainMod .. " + V", hl.dsp.exec_cmd(prefix .. "discord"))
hl.bind(mainMod .. " + V", function()
appSearch("discord")
end)
hl.bind(mainMod .. " + C", function()
appSearch("Telegram")
end)
hl.bind(mainMod .. " + S", function()
appSearch("spotify-launcher")
end)
hl.bind(mainMod .. " + B", hl.dsp.exec_cmd(prefix .. "librewolf"))
hl.bind(mainMod .. " + S", hl.dsp.exec_cmd(prefix .. "spotify-launcher"))
hl.bind(mainMod .. " + X", hl.dsp.exec_cmd("SDL_VIDEODRIVER='x11' " .. prefix .. "osu-lazer"))
hl.bind(mainMod .. " + X", hl.dsp.exec_cmd("SDL_VIDEODRIVER='wayland' " .. prefix .. "osu-lazer"))
hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager))
-- Media
@@ -27,7 +98,8 @@ hl.bind(mainMod .. " + F1", hl.dsp.exec_cmd("playerctl play-pause"))
hl.bind(mainMod .. " + F2", hl.dsp.exec_cmd("playerctl previous"))
hl.bind(mainMod .. " + F3", hl.dsp.exec_cmd("playerctl next"))
hl.bind("PRINT", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"))
hl.bind("code:51", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"))
hl.bind(mainMod .. " + PRINT", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 0.32"))
hl.bind("code:172", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"))
hl.bind("code:121", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"))
hl.bind("code:122", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"))
hl.bind("code:123", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+ --limit 1.0"))
@@ -39,6 +111,7 @@ hl.bind(mainMod .. " + T", hl.dsp.window.float({ action = "toggle" }))
hl.bind(mainMod .. " + K", hl.dsp.layout("swapsplit"))
hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit"))
hl.bind(mainMod .. " + F", hl.dsp.window.fullscreen())
hl.bind(mainMod .. " + SHIFT + F", hl.dsp.window.fullscreen_state({ internal = 3, client = 3, action = "toggle" }))
hl.bind(mainMod .. " + left", hl.dsp.focus({ direction = "left" }))
hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "right" }))
hl.bind(mainMod .. " + up", hl.dsp.focus({ direction = "up" }))
@@ -51,8 +124,8 @@ hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
-- Workspaces
-- hl.bind("code:113", hl.dsp.focus({ workspace = "m+1" }))
-- hl.bind("code:114", hl.dsp.focus({ workspace = "m-1" }))
hl.bind("code:171", hl.dsp.focus({ workspace = "m+1" }))
hl.bind("code:173", hl.dsp.focus({ workspace = "m-1" }))
hl.bind("ALT + TAB", hl.dsp.focus({ workspace = "m+1" }))
hl.bind(mainMod .. " + TAB", hl.dsp.focus({ workspace = "m-1" }))
hl.bind(mainMod .. " + CTRL + left", hl.dsp.window.swap({ direction = "left" }))
+11
View File
@@ -0,0 +1,11 @@
hl.layer_rule({
match = { namespace = "ZShell-Bar" },
blur = true,
ignore_alpha = 0.5,
})
hl.layer_rule({
match = { namespace = "ZShell-Auth" },
blur = true,
ignore_alpha = 0.5,
})
+1
View File
@@ -3,6 +3,7 @@ hl.config({
force_default_wallpaper = 1, -- Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true, -- If true disables the random hyprland logo / anime girl background. :(
mouse_move_enables_dpms = true,
key_press_enables_dpms = true,
disable_splash_rendering = true,
allow_session_lock_restore = true,
session_lock_xray = true,
+1 -1
View File
@@ -2,5 +2,5 @@ hl.monitor({
output = "DP-2",
mode = "2560x1440@143.97",
position = "auto",
scale = "1.33",
scale = "1.25",
})
+61 -15
View File
@@ -4,6 +4,7 @@ local classes = {
"nm-connection-editor",
"mpv",
"swayimg",
"xdg-desktop-portal-gtk",
".*org.pulseaudio.pavucontrol.*",
}
@@ -11,7 +12,6 @@ local titles = {
"Picture in Picture",
"Friends List",
"Save Image - *",
"AniShio",
}
for _, class in ipairs(classes) do
@@ -32,6 +32,60 @@ for _, title in ipairs(titles) do
})
end
hl.window_rule({
match = {
initial_title = "Star Rail",
},
fullscreen_state = 3,
render_unfocused = true,
content = "game",
})
hl.window_rule({
match = {
title = "Slay the Spire 2",
},
render_unfocused = true,
content = "game",
})
hl.window_rule({
match = {
title = "Honkai: Star Rail",
},
render_unfocused = true,
fullscreen_state = 3,
content = "game",
})
hl.window_rule({
match = {
initial_title = "Brawlhalla",
},
fullscreen_state = 3,
content = "game",
})
hl.window_rule({
match = {
class = "osu!",
title = "osu!",
},
fullscreen_state = 3,
content = "game",
})
hl.window_rule({
match = {
class = "hyprland-share-picker",
title = "hyprland-share-picker",
},
float = true,
pin = true,
center = true,
size = { 600, 400 },
})
hl.window_rule({
name = "fix-xwayland-drags",
match = {
@@ -56,9 +110,7 @@ hl.window_rule({
hl.window_rule({
match = {
fullscreen_state_client = 2,
fullscreen_state_internal = 2,
class = "librewolf",
},
idle_inhibit = "always",
@@ -66,22 +118,16 @@ hl.window_rule({
hl.window_rule({
match = {
fullscreen_state_client = 4,
fullscreen_state_internal = 4,
content = "game",
fullscreen_state_client = 2,
},
idle_inhibit = "always",
})
hl.layer_rule({
match = { namespace = "ZShell-Bar" },
blur = true,
ignore_alpha = 0.5,
})
hl.window_rule({
match = {
content = "game",
},
hl.layer_rule({
match = { namespace = "ZShell-Auth" },
blur = true,
ignore_alpha = 0.5,
idle_inhibit = "always",
})
+8
View File
@@ -0,0 +1,8 @@
version: 5
daemon:
log_level: info
admin_group: wheel
disable_clocks_cleanup: false
apply_settings_timer: 5
current_profile: null
auto_switch_profiles: false
+32
View File
@@ -0,0 +1,32 @@
selected_tab: oc_page
selected_gpu: 10DE:2C02-1462:5314-0000:08:00.0
plots_time_period: 60
plots_per_row: 2
stats_poll_interval_ms: 250
gpus:
10DE:2C02-1462:5314-0000:08:00.0:
plots:
- - !Temperature GPU
- !Temperature GPU Hotspot
- - GpuClock
- VramClock
- - FanRpm
- FanPwm
- - PowerCurrent
- PowerCap
10DE:1E81-1043:8712-0000:08:00.0:
plots:
- - !Temperature GPU
- !Temperature GPU Hotspot
- !Temperature VRAM
- - GpuClock
- VramClock
- - FanRpm
- FanPwm
- - PowerCurrent
- PowerCap
theme: automatic
color_scheme: Auto
window_size:
width: 2030
height: 1091
+30
View File
@@ -0,0 +1,30 @@
[Default Applications]
application/json=nvim.desktop;
application/pdf=librewolf.desktop;
application/toml=nvim.desktop;
application/x-extension.htm=librewolf.desktop;
application/x-extension.html=librewolf.desktop;
application/x-extension.shtml=librewolf.desktop;
application/x-extension.xht=librewolf.desktop;
application/x-extension.xhtml=librewolf.desktop;
application/x-shellscript=code.desktop;
application/xhtml+xml=librewolf.desktop;
image/*=swayimg.desktop;
image/jpeg=swayimg.desktop;
image/jpg=swayimg.desktop;
image/png=swayimg.desktop;
image/webp=swayimg.desktop;
inode/directory=org.kde.dolphin.desktop;
text/*=nvim.desktop;
text/html=librewolf.desktop
text/plain=nvim.desktop;
video/*=mpv.desktop;
video/mp4=mpv.desktop;
x-scheme-handler/discord-1216669957799018608=discord-1216669957799018608.desktop
x-scheme-handler/terminal=kitty.desktop;
x-scheme-handler/everest=/home/inorishio/.local/share/applications/Olympus.desktop
x-scheme-handler/ror2mm=r2modman.desktop
x-scheme-handler/http=librewolf.desktop
x-scheme-handler/https=librewolf.desktop
x-scheme-handler/about=librewolf.desktop
x-scheme-handler/unknown=librewolf.desktop
@@ -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
}
}
-7
View File
@@ -1,7 +0,0 @@
// shell.qml
import Quickshell
import qs.Widgets
Scope {
Bar {}
}
Binary file not shown.
-41
View File
@@ -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()
}
}
-526
View File
@@ -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()
}
}
-25
View File
@@ -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 { }
}
}
-27
View File
@@ -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
}
}
]
}
}
}
-200
View File
@@ -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
![Stars](https://img.shields.io/github/stars/keyitdev/sddm-astronaut-theme?color=dd864a&labelColor=1b1b25&style=for-the-badge)
![Forks](https://img.shields.io/github/forks/keyitdev/sddm-astronaut-theme?color=bf616a&labelColor=1b1b25&style=for-the-badge)
[![Ko-fi](https://img.shields.io/badge/support_me_on_ko--fi-F16061?style=for-the-badge&logo=kofi&logoColor=f5f5f5)](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
![all_themes.gif](https://github.com/Keyitdev/screenshots/blob/master/sddm-astronaut-theme/master/all_themes.gif?raw=true)
## 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**
|:--:|:--:|
![astronaut](https://github.com/Keyitdev/screenshots/blob/master/sddm-astronaut-theme/master/astronaut.png?raw=true)|![black_hole](https://github.com/Keyitdev/screenshots/blob/master/sddm-astronaut-theme/master/black_hole.png?raw=true)
**Japanese aesthetic**|**Pixel sakura static**
![japanese_aesthetic](https://github.com/Keyitdev/screenshots/blob/master/sddm-astronaut-theme/master/japanese_aesthetic.png?raw=true)|![pixel_sakura_static](https://github.com/Keyitdev/screenshots/blob/master/sddm-astronaut-theme/master/pixel_sakura_static.png?raw=true)
**Purple leaves**|**Cyberpunk**
![purple_leaves](https://github.com/Keyitdev/screenshots/blob/master/sddm-astronaut-theme/master/purple_leaves.png?raw=true)|![cyberpunk](https://github.com/Keyitdev/screenshots/blob/master/sddm-astronaut-theme/master/cyberpunk.png?raw=true)
**Post-apocalyptic hacker**|**xxx**
![post-apocalyptic_hacker](https://github.com/Keyitdev/screenshots/blob/master/sddm-astronaut-theme/master/post-apocalyptic_hacker.png?raw=true)|
**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)**.
[![Ko-fi](https://img.shields.io/badge/support_me_on_ko--fi-F16061?style=for-the-badge&logo=kofi&logoColor=f5f5f5)](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

Some files were not shown because too many files have changed in this diff Show More