mirror of
https://github.com/basecamp/omarchy.git
synced 2025-07-27 12:19:24 +00:00
Compare commits
26 Commits
v1.3.2
...
03f7403cdd
Author | SHA1 | Date | |
---|---|---|---|
03f7403cdd | |||
3d060c384e | |||
c9b1935054 | |||
2035790817 | |||
0caeeeed73 | |||
1f0b8eb923 | |||
e50780e5bd | |||
7af3230825 | |||
dc0032c9c3 | |||
59b59807a9 | |||
4f60ac6797 | |||
6433511873 | |||
41b5893d32 | |||
920e236fc7 | |||
745a16f2a4 | |||
bde3d915c2 | |||
13bc31ad0f | |||
fb3aaaba5f | |||
83877298b7 | |||
1df035864d | |||
dd207232e1 | |||
b761d3df0b | |||
a477b41593 | |||
e8b47de2a9 | |||
bd2fc67abc | |||
2d5285fc56 |
10
applications/xtras/typora.desktop
Normal file
10
applications/xtras/typora.desktop
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=Typora
|
||||||
|
GenericName=Markdown Editor
|
||||||
|
Exec=typora --enable-wayland-ime %U
|
||||||
|
Icon=typora
|
||||||
|
Type=Application
|
||||||
|
StartupNotify=true
|
||||||
|
Categories=Office;WordProcessor;
|
||||||
|
MimeType=text/markdown;text/x-markdown;
|
||||||
|
|
@ -15,7 +15,7 @@ show_power_menu() {
|
|||||||
case "$selection" in
|
case "$selection" in
|
||||||
*Lock*) hyprlock ;;
|
*Lock*) hyprlock ;;
|
||||||
*Suspend*) systemctl suspend ;;
|
*Suspend*) systemctl suspend ;;
|
||||||
*Relaunch*) hyprctl dispatch exit ;;
|
*Relaunch*) uwsm stop ;;
|
||||||
*Restart*) systemctl reboot ;;
|
*Restart*) systemctl reboot ;;
|
||||||
*Shutdown*) systemctl poweroff ;;
|
*Shutdown*) systemctl poweroff ;;
|
||||||
esac
|
esac
|
||||||
|
@ -3,20 +3,22 @@
|
|||||||
THEMES_DIR="$HOME/.config/omarchy/themes/"
|
THEMES_DIR="$HOME/.config/omarchy/themes/"
|
||||||
CURRENT_THEME_LINK="$HOME/.config/omarchy/current/theme"
|
CURRENT_THEME_LINK="$HOME/.config/omarchy/current/theme"
|
||||||
|
|
||||||
THEMES=($(find "$THEMES_DIR" -mindepth 1 | sort))
|
THEMES=($(find "$THEMES_DIR" -mindepth 1 -maxdepth 1 | sort))
|
||||||
TOTAL=${#THEMES[@]}
|
TOTAL=${#THEMES[@]}
|
||||||
|
|
||||||
# Get current theme from symlink
|
# Get current theme from symlink
|
||||||
if [[ -L "$CURRENT_THEME_LINK" ]]; then
|
if [[ -L "$CURRENT_THEME_LINK" ]]; then
|
||||||
CURRENT_THEME=$(readlink "$CURRENT_THEME_LINK")
|
CURRENT_THEME=$(realpath "$CURRENT_THEME_LINK")
|
||||||
else
|
else
|
||||||
# Default to first theme if no symlink exists
|
# Default to first theme if no symlink exists
|
||||||
CURRENT_THEME=${THEMES[0]}
|
CURRENT_THEME=$(realpath "${THEMES[0]}")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Find current theme index
|
# Find current theme index
|
||||||
INDEX=0
|
INDEX=0
|
||||||
for i in "${!THEMES[@]}"; do
|
for i in "${!THEMES[@]}"; do
|
||||||
|
THEMES[$i]=$(realpath "${THEMES[$i]}")
|
||||||
|
|
||||||
if [[ "${THEMES[$i]}" == "$CURRENT_THEME" ]]; then
|
if [[ "${THEMES[$i]}" == "$CURRENT_THEME" ]]; then
|
||||||
INDEX=$i
|
INDEX=$i
|
||||||
break
|
break
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
INPUT_METHOD=fcitx
|
INPUT_METHOD=fcitx
|
||||||
GTK_IM_MODULE=fcitx
|
|
||||||
QT_IM_MODULE=fcitx
|
QT_IM_MODULE=fcitx
|
||||||
XMODIFIERS=@im=fcitx
|
XMODIFIERS=@im=fcitx
|
||||||
SDL_IM_MODULE=fcitx
|
SDL_IM_MODULE=fcitx
|
||||||
|
@ -1,104 +1,189 @@
|
|||||||
{
|
{
|
||||||
|
"reload_style_on_change": true,
|
||||||
"layer": "top",
|
"layer": "top",
|
||||||
"position": "top",
|
"position": "top",
|
||||||
"spacing": 0,
|
"spacing": 0,
|
||||||
"height": 26,
|
"height": 26,
|
||||||
"modules-left": [
|
"modules-left": [
|
||||||
"hyprland/workspaces"
|
"hyprland/workspaces"
|
||||||
],
|
],
|
||||||
"modules-center": [
|
"modules-center": [
|
||||||
"clock"
|
"clock"
|
||||||
],
|
],
|
||||||
"modules-right": [
|
"modules-right": [
|
||||||
"bluetooth",
|
"group/tray-expander",
|
||||||
"network",
|
"bluetooth",
|
||||||
"pulseaudio",
|
"network",
|
||||||
"cpu",
|
"pulseaudio",
|
||||||
"battery"
|
"cpu",
|
||||||
],
|
"battery"
|
||||||
"hyprland/workspaces": {
|
],
|
||||||
"on-click": "activate",
|
"hyprland/workspaces": {
|
||||||
"format": "{icon}",
|
"on-click": "activate",
|
||||||
"format-icons": {
|
"format": "{icon}",
|
||||||
"default": "",
|
"format-icons": {
|
||||||
"1": "1",
|
"default": "",
|
||||||
"2": "2",
|
"1": "1",
|
||||||
"3": "3",
|
"2": "2",
|
||||||
"4": "4",
|
"3": "3",
|
||||||
"5": "5",
|
"4": "4",
|
||||||
"6": "6",
|
"5": "5",
|
||||||
"7": "7",
|
"6": "6",
|
||||||
"8": "8",
|
"7": "7",
|
||||||
"9": "9",
|
"8": "8",
|
||||||
"active": ""
|
"9": "9",
|
||||||
},
|
"active": ""
|
||||||
"persistent-workspaces": {
|
|
||||||
"1": [],
|
|
||||||
"2": [],
|
|
||||||
"3": [],
|
|
||||||
"4": [],
|
|
||||||
"5": []
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"cpu": {
|
"persistent-workspaces": {
|
||||||
"interval": 5,
|
"1": [],
|
||||||
"format": "",
|
"2": [],
|
||||||
"on-click": "alacritty -e btop"
|
"3": [],
|
||||||
},
|
"4": [],
|
||||||
"clock": {
|
"5": []
|
||||||
"format": "{:%A %H:%M}",
|
|
||||||
"format-alt": "{:%d %B W%V %Y}",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
"format-icons": ["","","","",""],
|
|
||||||
"format" : "{icon}",
|
|
||||||
"format-wifi" : "{icon}",
|
|
||||||
"format-ethernet" : "",
|
|
||||||
"format-disconnected" : "",
|
|
||||||
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
|
||||||
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
|
||||||
"tooltip-format-disconnected": "Disconnected",
|
|
||||||
"interval": 3,
|
|
||||||
"nospacing": 1,
|
|
||||||
"on-click": "alacritty --class=Impala -e impala"
|
|
||||||
},
|
|
||||||
"battery": {
|
|
||||||
"format": "{capacity}% {icon}",
|
|
||||||
"format-discharging": "{icon}",
|
|
||||||
"format-charging": "{icon}",
|
|
||||||
"format-plugged": "",
|
|
||||||
"format-icons": {
|
|
||||||
"charging": [
|
|
||||||
"", "", "", "", "", "", "", "", "", ""
|
|
||||||
],
|
|
||||||
"default": [
|
|
||||||
"", "", "", "", "", "", "", "", "", ""
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"format-full": "",
|
|
||||||
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
|
|
||||||
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
|
|
||||||
"interval": 5,
|
|
||||||
"states": {
|
|
||||||
"warning": 20,
|
|
||||||
"critical": 10
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"bluetooth": {
|
|
||||||
"format": "",
|
|
||||||
"format-disabled": "",
|
|
||||||
"format-connected": "",
|
|
||||||
"tooltip-format": "Devices connected: {num_connections}",
|
|
||||||
"on-click": "GTK_THEME=Adwaita-dark blueberry"
|
|
||||||
},
|
|
||||||
"pulseaudio": {
|
|
||||||
"format": "",
|
|
||||||
"format-muted": "",
|
|
||||||
"scroll-step": 5,
|
|
||||||
"on-click": "GTK_THEME=Adwaita-dark pavucontrol",
|
|
||||||
"tooltip-format": "Playing at {volume}%",
|
|
||||||
"on-click-right": "pamixer -t",
|
|
||||||
"ignored-sinks": ["Easy Effects Sink"]
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"interval": 5,
|
||||||
|
"format": "",
|
||||||
|
"on-click": "alacritty -e btop"
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
"format": "{:%A %H:%M}",
|
||||||
|
"format-alt": "{:%d %B W%V %Y}",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"format-icons": ["","","","",""],
|
||||||
|
"format" : "{icon}",
|
||||||
|
"format-wifi" : "{icon}",
|
||||||
|
"format-ethernet" : "",
|
||||||
|
"format-disconnected" : "",
|
||||||
|
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
||||||
|
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
||||||
|
"tooltip-format-disconnected": "Disconnected",
|
||||||
|
"interval": 3,
|
||||||
|
"nospacing": 1,
|
||||||
|
"on-click": "alacritty --class=Impala -e impala"
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-discharging": "{icon}",
|
||||||
|
"format-charging": "{icon}",
|
||||||
|
"format-plugged": "",
|
||||||
|
"format-icons": {
|
||||||
|
"charging": [
|
||||||
|
"", "", "", "", "", "", "", "", "", ""
|
||||||
|
],
|
||||||
|
"default": [
|
||||||
|
"", "", "", "", "", "", "", "", "", ""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"format-full": "",
|
||||||
|
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
|
||||||
|
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
|
||||||
|
"interval": 5,
|
||||||
|
"states": {
|
||||||
|
"warning": 20,
|
||||||
|
"critical": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bluetooth": {
|
||||||
|
"format": "",
|
||||||
|
"format-disabled": "",
|
||||||
|
"format-connected": "",
|
||||||
|
"tooltip-format": "Devices connected: {num_connections}",
|
||||||
|
"on-click": "GTK_THEME=Adwaita-dark blueberry"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"on-click": "GTK_THEME=Adwaita-dark pavucontrol",
|
||||||
|
"on-click-right": "pamixer -t",
|
||||||
|
"tooltip-format": "Playing at {volume}%",
|
||||||
|
"scroll-step": 5,
|
||||||
|
"format-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"default": ["", "", ""]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"group/tray-expander": {
|
||||||
|
"orientation": "inherit",
|
||||||
|
"drawer": {
|
||||||
|
"transition-duration": 600,
|
||||||
|
"children-class": "tray-group-item"
|
||||||
|
},
|
||||||
|
"modules": [
|
||||||
|
"custom/expand-icon",
|
||||||
|
"tray"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"custom/expand-icon": {
|
||||||
|
"format": " ",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 12,
|
||||||
|
"spacing": 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"interval": 5,
|
||||||
|
"format": "",
|
||||||
|
"on-click": "alacritty -e btop"
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
"format": "{:%A %H:%M}",
|
||||||
|
"format-alt": "{:%d %B W%V %Y}",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"format-icons": ["","","","",""],
|
||||||
|
"format" : "{icon}",
|
||||||
|
"format-wifi" : "{icon}",
|
||||||
|
"format-ethernet" : "",
|
||||||
|
"format-disconnected" : "",
|
||||||
|
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
||||||
|
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
||||||
|
"tooltip-format-disconnected": "Disconnected",
|
||||||
|
"interval": 3,
|
||||||
|
"nospacing": 1,
|
||||||
|
"on-click": "alacritty --class=Impala -e impala"
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-discharging": "{icon}",
|
||||||
|
"format-charging": "{icon}",
|
||||||
|
"format-plugged": "",
|
||||||
|
"format-icons": {
|
||||||
|
"charging": [
|
||||||
|
"", "", "", "", "", "", "", "", "", ""
|
||||||
|
],
|
||||||
|
"default": [
|
||||||
|
"", "", "", "", "", "", "", "", "", ""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"format-full": "",
|
||||||
|
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
|
||||||
|
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
|
||||||
|
"interval": 5,
|
||||||
|
"states": {
|
||||||
|
"warning": 20,
|
||||||
|
"critical": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bluetooth": {
|
||||||
|
"format": "",
|
||||||
|
"format-disabled": "",
|
||||||
|
"format-connected": "",
|
||||||
|
"tooltip-format": "Devices connected: {num_connections}",
|
||||||
|
"on-click": "GTK_THEME=Adwaita-dark blueberry"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
"format": "",
|
||||||
|
"format-muted": "",
|
||||||
|
"scroll-step": 5,
|
||||||
|
"on-click": "GTK_THEME=Adwaita-dark pavucontrol",
|
||||||
|
"tooltip-format": "Playing at {volume}%",
|
||||||
|
"on-click-right": "pamixer -t",
|
||||||
|
"ignored-sinks": ["Easy Effects Sink"]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#custom-dropbox,
|
#custom-dropbox,
|
||||||
|
#tray,
|
||||||
#cpu,
|
#cpu,
|
||||||
#battery,
|
#battery,
|
||||||
#network,
|
#network,
|
||||||
@ -28,6 +29,10 @@
|
|||||||
margin-right: 13px;
|
margin-right: 13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#custom-expand-icon {
|
||||||
|
margin-right: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
tooltip {
|
tooltip {
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
}
|
}
|
||||||
|
@ -95,5 +95,5 @@ master {
|
|||||||
misc {
|
misc {
|
||||||
disable_hyprland_logo = true
|
disable_hyprland_logo = true
|
||||||
disable_splash_rendering = true
|
disable_splash_rendering = true
|
||||||
|
focus_on_activate = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ global.fake_progress_active = 0; # 0 / 1 boolean
|
|||||||
global.animation_frame = 0;
|
global.animation_frame = 0;
|
||||||
global.fake_progress_start_time = 0; # Track when fake progress started
|
global.fake_progress_start_time = 0; # Track when fake progress started
|
||||||
global.password_shown = 0; # Track if password dialog has been shown
|
global.password_shown = 0; # Track if password dialog has been shown
|
||||||
|
global.max_progress = 0.0; # Track the maximum progress reached to prevent backwards movement
|
||||||
|
|
||||||
fun refresh_callback ()
|
fun refresh_callback ()
|
||||||
{
|
{
|
||||||
@ -55,11 +56,16 @@ Plymouth.SetRefreshFunction (refresh_callback);
|
|||||||
|
|
||||||
fun update_progress_bar(progress)
|
fun update_progress_bar(progress)
|
||||||
{
|
{
|
||||||
width = Math.Int(progress_bar.original_image.GetWidth() * progress);
|
# Only update if progress is moving forward
|
||||||
if (width < 1) width = 1; # Ensure minimum width of 1 pixel
|
if (progress > global.max_progress)
|
||||||
|
{
|
||||||
|
global.max_progress = progress;
|
||||||
|
width = Math.Int(progress_bar.original_image.GetWidth() * progress);
|
||||||
|
if (width < 1) width = 1; # Ensure minimum width of 1 pixel
|
||||||
|
|
||||||
progress_bar.image = progress_bar.original_image.Scale(width, progress_bar.original_image.GetHeight());
|
progress_bar.image = progress_bar.original_image.Scale(width, progress_bar.original_image.GetHeight());
|
||||||
progress_bar.sprite.SetImage(progress_bar.image);
|
progress_bar.sprite.SetImage(progress_bar.image);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun show_progress_bar()
|
fun show_progress_bar()
|
||||||
@ -90,11 +96,15 @@ fun hide_password_dialog()
|
|||||||
|
|
||||||
fun start_fake_progress()
|
fun start_fake_progress()
|
||||||
{
|
{
|
||||||
global.fake_progress = 0.0;
|
# Don't reset if we already have progress
|
||||||
global.real_progress = 0.0;
|
if (global.max_progress == 0.0)
|
||||||
|
{
|
||||||
|
global.fake_progress = 0.0;
|
||||||
|
global.real_progress = 0.0;
|
||||||
|
update_progress_bar(0.0);
|
||||||
|
}
|
||||||
global.fake_progress_active = 1;
|
global.fake_progress_active = 1;
|
||||||
global.animation_frame = 0;
|
global.animation_frame = 0;
|
||||||
update_progress_bar(0.0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun stop_fake_progress()
|
fun stop_fake_progress()
|
||||||
@ -149,8 +159,12 @@ fun display_password_callback (prompt, bullets)
|
|||||||
{
|
{
|
||||||
global.password_shown = 1; # Mark that password dialog has been shown
|
global.password_shown = 1; # Mark that password dialog has been shown
|
||||||
|
|
||||||
|
# Reset progress when password dialog appears
|
||||||
stop_fake_progress();
|
stop_fake_progress();
|
||||||
hide_progress_bar();
|
hide_progress_bar();
|
||||||
|
global.max_progress = 0.0;
|
||||||
|
global.fake_progress = 0.0;
|
||||||
|
global.real_progress = 0.0;
|
||||||
show_password_dialog();
|
show_password_dialog();
|
||||||
|
|
||||||
# Clear all bullets first
|
# Clear all bullets first
|
||||||
|
@ -7,14 +7,6 @@ mkdir -p ~/.local/share/applications
|
|||||||
# Use default bashrc from Omarchy
|
# Use default bashrc from Omarchy
|
||||||
echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc
|
echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc
|
||||||
|
|
||||||
# Login directly as user, rely on disk encryption + hyprlock for security
|
|
||||||
sudo mkdir -p /etc/systemd/system/getty@tty1.service.d
|
|
||||||
sudo tee /etc/systemd/system/getty@tty1.service.d/override.conf >/dev/null <<EOF
|
|
||||||
[Service]
|
|
||||||
ExecStart=
|
|
||||||
ExecStart=-/usr/bin/agetty --autologin $USER --noclear %I \$TERM
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Set common git aliases
|
# Set common git aliases
|
||||||
git config --global alias.co checkout
|
git config --global alias.co checkout
|
||||||
git config --global alias.br branch
|
git config --global alias.br branch
|
||||||
|
@ -2,6 +2,3 @@ yay -S --noconfirm --needed \
|
|||||||
hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \
|
hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \
|
||||||
wofi waybar mako swaybg \
|
wofi waybar mako swaybg \
|
||||||
xdg-desktop-portal-hyprland xdg-desktop-portal-gtk
|
xdg-desktop-portal-hyprland xdg-desktop-portal-gtk
|
||||||
|
|
||||||
# Start Hyprland on first session
|
|
||||||
echo "[[ -z \$DISPLAY && \$(tty) == /dev/tty1 ]] && exec Hyprland" >~/.bash_profile
|
|
||||||
|
115
install/login.sh
Normal file
115
install/login.sh
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Hyprland launched via UWSM and login directly as user, rely on disk encryption + hyprlock for security
|
||||||
|
yay -S --noconfirm --needed uwsm
|
||||||
|
|
||||||
|
# Compile the seamless login helper -- needed to prevent seeing terminal between loader and desktop
|
||||||
|
cat <<'CCODE' >/tmp/seamless-login.c
|
||||||
|
/*
|
||||||
|
* Seamless Login - Minimal SDDM-style Plymouth transition
|
||||||
|
* Replicates SDDM's VT management for seamless auto-login
|
||||||
|
*/
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <linux/kd.h>
|
||||||
|
#include <linux/vt.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
int vt_fd;
|
||||||
|
int vt_num = 1; // TTY1
|
||||||
|
char vt_path[32];
|
||||||
|
|
||||||
|
if (argc < 2) {
|
||||||
|
fprintf(stderr, "Usage: %s <session_command>\n", argv[0]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open the VT (simple approach like SDDM)
|
||||||
|
snprintf(vt_path, sizeof(vt_path), "/dev/tty%d", vt_num);
|
||||||
|
vt_fd = open(vt_path, O_RDWR);
|
||||||
|
if (vt_fd < 0) {
|
||||||
|
perror("Failed to open VT");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Activate the VT
|
||||||
|
if (ioctl(vt_fd, VT_ACTIVATE, vt_num) < 0) {
|
||||||
|
perror("VT_ACTIVATE failed");
|
||||||
|
close(vt_fd);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wait for VT to be active
|
||||||
|
if (ioctl(vt_fd, VT_WAITACTIVE, vt_num) < 0) {
|
||||||
|
perror("VT_WAITACTIVE failed");
|
||||||
|
close(vt_fd);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Critical: Set graphics mode to prevent console text
|
||||||
|
if (ioctl(vt_fd, KDSETMODE, KD_GRAPHICS) < 0) {
|
||||||
|
perror("KDSETMODE KD_GRAPHICS failed");
|
||||||
|
close(vt_fd);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear VT and close (like SDDM does)
|
||||||
|
const char *clear_seq = "\33[H\33[2J";
|
||||||
|
if (write(vt_fd, clear_seq, strlen(clear_seq)) < 0) {
|
||||||
|
perror("Failed to clear VT");
|
||||||
|
}
|
||||||
|
|
||||||
|
close(vt_fd);
|
||||||
|
|
||||||
|
// Set working directory to user's home
|
||||||
|
const char *home = getenv("HOME");
|
||||||
|
if (home) chdir(home);
|
||||||
|
|
||||||
|
// Now execute the session command
|
||||||
|
execvp(argv[1], &argv[1]);
|
||||||
|
perror("Failed to exec session");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
CCODE
|
||||||
|
|
||||||
|
gcc -o /tmp/seamless-login /tmp/seamless-login.c
|
||||||
|
sudo mv /tmp/seamless-login /usr/local/bin/seamless-login
|
||||||
|
sudo chmod +x /usr/local/bin/seamless-login
|
||||||
|
rm /tmp/seamless-login.c
|
||||||
|
|
||||||
|
cat <<EOF | sudo tee /etc/systemd/system/omarchy-seamless-login.service
|
||||||
|
[Unit]
|
||||||
|
Description=Omarchy Seamless Auto-Login
|
||||||
|
Documentation=https://github.com/basecamp/omarchy
|
||||||
|
Conflicts=getty@tty1.service
|
||||||
|
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service systemd-logind.service
|
||||||
|
PartOf=graphical.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/local/bin/seamless-login uwsm start -- hyprland.desktop
|
||||||
|
Restart=always
|
||||||
|
RestartSec=2
|
||||||
|
User=$USER
|
||||||
|
TTYPath=/dev/tty1
|
||||||
|
TTYReset=yes
|
||||||
|
TTYVHangup=yes
|
||||||
|
TTYVTDisallocate=yes
|
||||||
|
StandardInput=tty
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal+console
|
||||||
|
PAMName=login
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=graphical.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable omarchy-seamless-login.service
|
||||||
|
|
||||||
|
# Disable getty@tty1 to prevent conflicts
|
||||||
|
sudo systemctl disable getty@tty1.service
|
@ -75,12 +75,12 @@ if ! command -v plymouth &>/dev/null; then
|
|||||||
# Relying on mkinitcpio to assemble a UKI
|
# Relying on mkinitcpio to assemble a UKI
|
||||||
# https://wiki.archlinux.org/title/Unified_kernel_image
|
# https://wiki.archlinux.org/title/Unified_kernel_image
|
||||||
if ! grep -q splash /etc/cmdline.d/*.conf; then
|
if ! grep -q splash /etc/cmdline.d/*.conf; then
|
||||||
# Need splash, create the omarchy file
|
# Need splash, create the omarchy file
|
||||||
echo "splash" | sudo tee -a /etc/cmdline.d/omarchy.conf
|
echo "splash" | sudo tee -a /etc/cmdline.d/omarchy.conf
|
||||||
fi
|
fi
|
||||||
if ! grep -q quiet /etc/cmdline.d/*.conf; then
|
if ! grep -q quiet /etc/cmdline.d/*.conf; then
|
||||||
# Need quiet, create or append the omarchy file
|
# Need quiet, create or append the omarchy file
|
||||||
echo "quiet" | sudo tee -a /etc/cmdline.d/omarchy.conf
|
echo "quiet" | sudo tee -a /etc/cmdline.d/omarchy.conf
|
||||||
fi
|
fi
|
||||||
elif [ -f "/etc/kernel/cmdline" ]; then
|
elif [ -f "/etc/kernel/cmdline" ]; then
|
||||||
# Alternate UKI kernel cmdline location
|
# Alternate UKI kernel cmdline location
|
||||||
@ -95,10 +95,10 @@ if ! command -v plymouth &>/dev/null; then
|
|||||||
# Add splash and quiet if not present
|
# Add splash and quiet if not present
|
||||||
new_cmdline="$current_cmdline"
|
new_cmdline="$current_cmdline"
|
||||||
if [[ ! "$current_cmdline" =~ splash ]]; then
|
if [[ ! "$current_cmdline" =~ splash ]]; then
|
||||||
new_cmdline="$new_cmdline splash"
|
new_cmdline="$new_cmdline splash"
|
||||||
fi
|
fi
|
||||||
if [[ ! "$current_cmdline" =~ quiet ]]; then
|
if [[ ! "$current_cmdline" =~ quiet ]]; then
|
||||||
new_cmdline="$new_cmdline quiet"
|
new_cmdline="$new_cmdline quiet"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Trim any leading/trailing spaces
|
# Trim any leading/trailing spaces
|
||||||
|
4
migrations/.sh
Normal file
4
migrations/.sh
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
echo "Fix XCompose use in Typora"
|
||||||
|
if command -v typora &>/dev/null; then
|
||||||
|
cp ~/.local/share/omarchy/applications/xtras/typora.desktop ~/.local/share/applications/
|
||||||
|
fi
|
13
migrations/1752249974.sh
Normal file
13
migrations/1752249974.sh
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
echo "Add new matte black theme"
|
||||||
|
|
||||||
|
BACKGROUNDS_DIR=~/.config/omarchy/backgrounds/
|
||||||
|
download_background_image() {
|
||||||
|
local url="$1"
|
||||||
|
local path="$2"
|
||||||
|
gum spin --title "Downloading $url as $path..." -- curl -sL -o "$BACKGROUNDS_DIR/$path" "$url"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ ! -L "~/.config/omarchy/themes/matte-black" ]]; then
|
||||||
|
ln -snf ~/.local/share/omarchy/themes/matte-black ~/.config/omarchy/themes/
|
||||||
|
source ~/.local/share/omarchy/themes/matte-black/backgrounds.sh
|
||||||
|
fi
|
18
migrations/1752292967.sh
Normal file
18
migrations/1752292967.sh
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
echo "Update to use UWSM and seamless login"
|
||||||
|
sudo rm /etc/systemd/system/getty@tty1.service.d/override.conf
|
||||||
|
sudo rmdir /etc/systemd/system/getty@tty1.service.d/ 2>/dev/null || true
|
||||||
|
|
||||||
|
if [ -f "$HOME/.bash_profile" ]; then
|
||||||
|
# Remove the specific line
|
||||||
|
sed -i '/^\[\[ -z \$DISPLAY && \$(tty) == \/dev\/tty1 \]\] && exec Hyprland$/d' "$HOME/.bash_profile"
|
||||||
|
echo "Cleaned up .bash_profile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$HOME/.config/environment.d/fcitx.conf" ]; then
|
||||||
|
echo "Removing GTK_IM_MODULE from fcitx config for Wayland..."
|
||||||
|
sed -i 's/^GTK_IM_MODULE=fcitx$//' "$HOME/.config/environment.d/fcitx.conf"
|
||||||
|
fi
|
||||||
|
|
||||||
|
omarchy-refresh-plymouth
|
||||||
|
|
||||||
|
source ~/.local/share/omarchy/install/login.sh
|
@ -7,6 +7,7 @@ padding=10
|
|||||||
border-size=2
|
border-size=2
|
||||||
font=Liberation Sans 11
|
font=Liberation Sans 11
|
||||||
anchor=top-right
|
anchor=top-right
|
||||||
|
outer-margin=20
|
||||||
default-timeout=5000
|
default-timeout=5000
|
||||||
max-icon-size=32
|
max-icon-size=32
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ padding=10
|
|||||||
border-size=2
|
border-size=2
|
||||||
font=Liberation Sans 11
|
font=Liberation Sans 11
|
||||||
anchor=top-right
|
anchor=top-right
|
||||||
|
outer-margin=20
|
||||||
default-timeout=5000
|
default-timeout=5000
|
||||||
max-icon-size=32
|
max-icon-size=32
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ padding=10
|
|||||||
border-size=2
|
border-size=2
|
||||||
font=Liberation Sans 11
|
font=Liberation Sans 11
|
||||||
anchor=top-right
|
anchor=top-right
|
||||||
|
outer-margin=20
|
||||||
default-timeout=5000
|
default-timeout=5000
|
||||||
max-icon-size=32
|
max-icon-size=32
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ padding=10
|
|||||||
border-size=2
|
border-size=2
|
||||||
font=Liberation Sans 11
|
font=Liberation Sans 11
|
||||||
anchor=top-right
|
anchor=top-right
|
||||||
|
outer-margin=20
|
||||||
default-timeout=5000
|
default-timeout=5000
|
||||||
max-icon-size=32
|
max-icon-size=32
|
||||||
|
|
||||||
|
63
themes/matte-black/alacritty.toml
Normal file
63
themes/matte-black/alacritty.toml
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# ────────────────────────────────────────────────────────────
|
||||||
|
# Matte Black Theme for Alacritty
|
||||||
|
# By noiseRandom
|
||||||
|
# https://github.com/tahayvr
|
||||||
|
# ────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
[window]
|
||||||
|
# window padding {px}
|
||||||
|
padding.x = 12
|
||||||
|
padding.y = 12
|
||||||
|
|
||||||
|
[font]
|
||||||
|
size = 12.0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
[colors.primary]
|
||||||
|
background = "#121212"
|
||||||
|
foreground = "#eaeaea"
|
||||||
|
dim_foreground = "#a5abb6"
|
||||||
|
|
||||||
|
[colors.cursor]
|
||||||
|
text = "#121212"
|
||||||
|
cursor = "#eaeaea"
|
||||||
|
|
||||||
|
[colors.vi_mode_cursor]
|
||||||
|
text = "#2e3440"
|
||||||
|
cursor = "#d8dee9"
|
||||||
|
|
||||||
|
[colors.selection]
|
||||||
|
text = "CellForeground"
|
||||||
|
background = "#333333" #charcoal
|
||||||
|
|
||||||
|
[colors.normal]
|
||||||
|
black = "#2c2c2c"
|
||||||
|
red = "#bf616a"
|
||||||
|
green = "#a3be8c"
|
||||||
|
yellow = "#ebcb8b"
|
||||||
|
blue = "#81a1c1"
|
||||||
|
magenta = "#b48ead"
|
||||||
|
cyan = "#88c0d0"
|
||||||
|
white = "#e5e9f0"
|
||||||
|
|
||||||
|
[colors.bright]
|
||||||
|
black = "#8a8a8d"
|
||||||
|
red = "#bf616a"
|
||||||
|
green = "#a3be8c"
|
||||||
|
yellow = "#ebcb8b"
|
||||||
|
blue = "#81a1c1"
|
||||||
|
magenta = "#b48ead"
|
||||||
|
cyan = "#8fbcbb"
|
||||||
|
white = "#eceff4"
|
||||||
|
|
||||||
|
[colors.dim]
|
||||||
|
black = "#373e4d"
|
||||||
|
red = "#94545d"
|
||||||
|
green = "#809575"
|
||||||
|
yellow = "#b29e75"
|
||||||
|
blue = "#68809a"
|
||||||
|
magenta = "#8c738c"
|
||||||
|
cyan = "#6d96a5"
|
||||||
|
white = "#aeb3bb"
|
2
themes/matte-black/backgrounds.sh
Normal file
2
themes/matte-black/backgrounds.sh
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
mkdir -p "$BACKGROUNDS_DIR/matte-black"
|
||||||
|
download_background_image "https://raw.githubusercontent.com/tahayvr/omarchy-matte-black/refs/heads/main/images/1-matte-black.jpg" "matte-black/1-matte-black.jpg"
|
92
themes/matte-black/btop.theme
Normal file
92
themes/matte-black/btop.theme
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# ────────────────────────────────────────────────────────────
|
||||||
|
# Bashtop theme with Matte Black palette
|
||||||
|
# by noiseRandom
|
||||||
|
# https://github.com/tahayvr
|
||||||
|
# ────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
# Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
|
||||||
|
# example for white: "#ffffff", "#ff" or "255 255 255".
|
||||||
|
|
||||||
|
# All graphs and meters can be gradients
|
||||||
|
# For single color graphs leave "mid" and "end" variable empty.
|
||||||
|
# Use "start" and "end" variables for two color gradient
|
||||||
|
# Use "start", "mid" and "end" for three color gradient
|
||||||
|
|
||||||
|
# Main background, empty for terminal default, need to be empty if you want transparent background
|
||||||
|
theme[main_bg]=""
|
||||||
|
|
||||||
|
# Main text color
|
||||||
|
theme[main_fg]="#EAEAEA"
|
||||||
|
|
||||||
|
# Title color for boxes
|
||||||
|
theme[title]="#8a8a8d"
|
||||||
|
|
||||||
|
# Highlight color for keyboard shortcuts
|
||||||
|
theme[hi_fg]="#f59e0b"
|
||||||
|
|
||||||
|
# Background color of selected item in processes box
|
||||||
|
theme[selected_bg]="#f59e0b"
|
||||||
|
|
||||||
|
# Foreground color of selected item in processes box
|
||||||
|
theme[selected_fg]="#EAEAEA"
|
||||||
|
|
||||||
|
# Color of inactive/disabled text
|
||||||
|
theme[inactive_fg]="#333333"
|
||||||
|
|
||||||
|
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
|
||||||
|
theme[proc_misc]="#8a8a8d"
|
||||||
|
|
||||||
|
# Cpu box outline color
|
||||||
|
theme[cpu_box]="#8a8a8d"
|
||||||
|
|
||||||
|
# Memory/disks box outline color
|
||||||
|
theme[mem_box]="#8a8a8d"
|
||||||
|
|
||||||
|
# Net up/down box outline color
|
||||||
|
theme[net_box]="#8a8a8d"
|
||||||
|
|
||||||
|
# Processes box outline color
|
||||||
|
theme[proc_box]="#8a8a8d"
|
||||||
|
|
||||||
|
# Box divider line and small boxes line color
|
||||||
|
theme[div_line]="#8a8a8d"
|
||||||
|
|
||||||
|
# Temperature graph colors
|
||||||
|
theme[temp_start]="#8a8a8d"
|
||||||
|
theme[temp_mid]="#f59e0b"
|
||||||
|
theme[temp_end]="#b91c1c"
|
||||||
|
|
||||||
|
# CPU graph colors
|
||||||
|
theme[cpu_start]="#8a8a8d"
|
||||||
|
theme[cpu_mid]="#f59e0b"
|
||||||
|
theme[cpu_end]="#b91c1c"
|
||||||
|
|
||||||
|
# Mem/Disk free meter
|
||||||
|
theme[free_start]="#8a8a8d"
|
||||||
|
theme[free_mid]="#f59e0b"
|
||||||
|
theme[free_end]="#b91c1c"
|
||||||
|
|
||||||
|
# Mem/Disk cached meter
|
||||||
|
theme[cached_start]="#8a8a8d"
|
||||||
|
theme[cached_mid]="#f59e0b"
|
||||||
|
theme[cached_end]="#b91c1c"
|
||||||
|
|
||||||
|
# Mem/Disk available meter
|
||||||
|
theme[available_start]="#8a8a8d"
|
||||||
|
theme[available_mid]="#f59e0b"
|
||||||
|
theme[available_end]="#b91c1c"
|
||||||
|
|
||||||
|
# Mem/Disk used meter
|
||||||
|
theme[used_start]="#8a8a8d"
|
||||||
|
theme[used_mid]="#f59e0b"
|
||||||
|
theme[used_end]="#b91c1c"
|
||||||
|
|
||||||
|
# Download graph colors
|
||||||
|
theme[download_start]="#8a8a8d"
|
||||||
|
theme[download_mid]="#f59e0b"
|
||||||
|
theme[download_end]="#b91c1c"
|
||||||
|
|
||||||
|
# Upload graph colors
|
||||||
|
theme[upload_start]="#8a8a8d"
|
||||||
|
theme[upload_mid]="#f59e0b"
|
||||||
|
theme[upload_end]="#b91c1c"
|
4
themes/matte-black/hyprland.conf
Normal file
4
themes/matte-black/hyprland.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
general {
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||||
|
col.active_border = rgb(8A8A8D)
|
||||||
|
}
|
9
themes/matte-black/hyprlock.conf
Normal file
9
themes/matte-black/hyprlock.conf
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
$color = rgba(12,12,12,1.0) # #333333 matte black
|
||||||
|
|
||||||
|
$inner_color = rgba(138,138,141,0.3) # #8a8a8d with opacity
|
||||||
|
$outer_color = rgba(234,234,234,0.5) # #EAEAEA
|
||||||
|
|
||||||
|
$font_color = rgba(234,234,234,1.0) # #EAEAEA
|
||||||
|
|
||||||
|
$placeholder_color = rgba(234,234,234,0.6) # #EAEAEA with opacity
|
||||||
|
$check_color = rgba(245,158,11,1.0) # #f59e0b amber accent
|
21
themes/matte-black/mako.ini
Normal file
21
themes/matte-black/mako.ini
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
text-color=#8a8a8d
|
||||||
|
border-color=#8A8A8D
|
||||||
|
background-color=#1e1e1e
|
||||||
|
width=420
|
||||||
|
height=110
|
||||||
|
padding=10
|
||||||
|
border-size=2
|
||||||
|
font=Liberation Sans 11
|
||||||
|
anchor=top-right
|
||||||
|
outer-margin=20
|
||||||
|
default-timeout=5000
|
||||||
|
max-icon-size=32
|
||||||
|
|
||||||
|
[app-name=Spotify]
|
||||||
|
invisible=1
|
||||||
|
|
||||||
|
[mode=do-not-disturb]
|
||||||
|
invisible=true
|
||||||
|
|
||||||
|
[mode=do-not-disturb app-name=notify-send]
|
||||||
|
invisible=false
|
30
themes/matte-black/neovim.lua
Normal file
30
themes/matte-black/neovim.lua
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
return {
|
||||||
|
{ "rebelot/kanagawa.nvim"},
|
||||||
|
{ "EdenEast/nightfox.nvim" },
|
||||||
|
{
|
||||||
|
"LazyVim/LazyVim",
|
||||||
|
opts = {
|
||||||
|
colorscheme = "carbonfox",
|
||||||
|
},
|
||||||
|
init = function()
|
||||||
|
-- Custom highlight groups for dashboard colors only
|
||||||
|
vim.api.nvim_create_autocmd("ColorScheme", {
|
||||||
|
pattern = "*",
|
||||||
|
callback = function()
|
||||||
|
vim.api.nvim_set_hl(0, "SnacksDashboardHeader", { fg = "#8a8a8d", bold = true })
|
||||||
|
vim.api.nvim_set_hl(0, "SnacksDashboardIcon", { fg = "#8a8a8d" })
|
||||||
|
vim.api.nvim_set_hl(0, "SnacksDashboardDir", { fg = "#8a8a8d" })
|
||||||
|
vim.api.nvim_set_hl(0, "SnacksDashboardFile", { fg = "#8a8a8d" })
|
||||||
|
vim.api.nvim_set_hl(0, "SnacksDashboardFooter", { fg = "#8a8a8d", italic = true })
|
||||||
|
vim.api.nvim_set_hl(0, "SnacksDashboardKey", { fg = "#ffffff", bold = true })
|
||||||
|
vim.api.nvim_set_hl(0, "SnacksDashboardDesc", { fg = "#ffffff" })
|
||||||
|
vim.api.nvim_set_hl(0, "SnacksDashboardSpecial", { fg = "#ffffff", bold = true })
|
||||||
|
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.cmd("doautocmd ColorScheme")
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
4
themes/matte-black/waybar.css
Normal file
4
themes/matte-black/waybar.css
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
* {
|
||||||
|
color: #8a8a8d;
|
||||||
|
background-color: #1e1e1e;
|
||||||
|
}
|
8
themes/matte-black/wofi.css
Normal file
8
themes/matte-black/wofi.css
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
@define-color selected-text #B91C1C;
|
||||||
|
@define-color text #EAEAEA;
|
||||||
|
@define-color base #121212;
|
||||||
|
|
||||||
|
@define-color selected-text #B91C1C;
|
||||||
|
@define-color text #EAEAEA;
|
||||||
|
@define-color base #121212;
|
||||||
|
@define-color border #EAEAEA;
|
@ -7,6 +7,7 @@ padding=10
|
|||||||
border-size=2
|
border-size=2
|
||||||
font=Liberation Sans 11
|
font=Liberation Sans 11
|
||||||
anchor=top-right
|
anchor=top-right
|
||||||
|
outer-margin=20
|
||||||
default-timeout=5000
|
default-timeout=5000
|
||||||
max-icon-size=32
|
max-icon-size=32
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ padding=10
|
|||||||
border-size=2
|
border-size=2
|
||||||
font=Liberation Sans 11
|
font=Liberation Sans 11
|
||||||
anchor=top-right
|
anchor=top-right
|
||||||
|
outer-margin=20
|
||||||
default-timeout=5000
|
default-timeout=5000
|
||||||
max-icon-size=32
|
max-icon-size=32
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user