diff --git a/.scripts/change-wallpaper b/.scripts/change-wallpaper
index 3aaf983..2e93e8f 100755
--- a/.scripts/change-wallpaper
+++ b/.scripts/change-wallpaper
@@ -52,11 +52,9 @@ elif [ "$XDG_CURRENT_DESKTOP" = "niri" ]; then
exit 1
)
- (setsid swaybg -i "$blurred_image" -m fill)&
- disown
+ nohup swaybg -i "$blurred_image" -m fill > /dev/null 2> /dev/null &
- (setsid swww img "$image_copied" --transition-type fade --transition-duration 2)&
- disown
+ nohup swww img "$image_copied" --transition-type fade --transition-duration 2 > /dev/null 2> /dev/null &
notify-send "Wallpaper Changed" "$image"
fi
diff --git a/.scripts/config-switch b/.scripts/config-switch
index b2ba791..cbdc2ab 100755
--- a/.scripts/config-switch
+++ b/.scripts/config-switch
@@ -6,7 +6,7 @@ else
desktop="$1"
fi
-for item in "waybar" "kitty" "ghostty"; do
+for item in "waybar" "kitty" "ghostty" "wlogout"; do
[ -L "$HOME/.config/$item" ] || exit 1
rm "$HOME/.config/$item"
diff --git a/.scripts/niri-swayidle b/.scripts/niri-swayidle
new file mode 100755
index 0000000..84b435b
--- /dev/null
+++ b/.scripts/niri-swayidle
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+swayidle -w timeout 300 'hyprlock &' timeout 600 'niri msg action power-off-monitors' before-sleep 'hyprlock &'
\ No newline at end of file
diff --git a/.scripts/waybar-toggle b/.scripts/waybar-toggle
index 3e68ae7..91c80dd 100755
--- a/.scripts/waybar-toggle
+++ b/.scripts/waybar-toggle
@@ -19,8 +19,7 @@ function open() {
sleep 0.2
done
fi
- (setsid waybar > /dev/null 2> /dev/null &)&
- disown
+ nohup waybar >/dev/null 2>/dev/null &
# Reopen the lyrics widget if it was previously closed
if [ $lyrics_widget_closed -eq 1 ]; then
diff --git a/eww/Lyrics/eww.scss b/eww/Lyrics/eww.scss
index 092fe5d..bec06e9 100644
--- a/eww/Lyrics/eww.scss
+++ b/eww/Lyrics/eww.scss
@@ -10,7 +10,7 @@
}
.lyrics-window-single {
- background-color: rgba(30, 30, 46, 0.6);
+ background-color: rgba(30, 30, 46);
border-radius: 14px;
border: 2px solid $border;
}
diff --git a/eww/Lyrics/eww.yuck b/eww/Lyrics/eww.yuck
index 190c5a5..4ad294c 100644
--- a/eww/Lyrics/eww.yuck
+++ b/eww/Lyrics/eww.yuck
@@ -45,7 +45,7 @@
(button :class "player-prev" :onclick "playerctl previous --player=spotify" "")
(button :class "player-pp" :onclick "playerctl play-pause --player=spotify" "${play-button}")
(button :class "player-next" :onclick "playerctl next --player=spotify" "")
- (button :class "lyrics-info" :onclick "ghostty -e '\"spotify-lyrics\" fetch | less' &" "")
+ (button :class "lyrics-info" :onclick "ghostty -e sh -c 'spotify-lyrics fetch | less' &" "")
)
(box :class "offset-box"
:vexpand "false" :hexpand "true" :valign "center" :halign "center" :space-evenly "false" :orientation "h"
@@ -69,7 +69,7 @@
)
(box :class "control-box-single" :vexpand "false" :hexpand "false" :space-evenly "true" :orientation "v"
(box :class "control-row-1-single" :space-evenly "false" :orientation "h"
- (button :class "info-single" :onclick "ghostty -e '\"spotify-lyrics\" fetch | less' &" "")
+ (button :class "info-single" :onclick "ghostty -e sh -c 'spotify-lyrics fetch | less' &" "")
(button :class "offset-plus-single" :onclick "Lyrics/scripts/lyric-offset.py +500" "")
(button :class "offset-reset-single" :onclick "Lyrics/scripts/lyric-offset.py" "")
(button :class "offset-minus-single" :onclick "Lyrics/scripts/lyric-offset.py -500" "")
diff --git a/fish/prev.d/alias.fish b/fish/prev.d/alias.fish
index 9fe3699..264faf4 100644
--- a/fish/prev.d/alias.fish
+++ b/fish/prev.d/alias.fish
@@ -45,8 +45,8 @@ alias grep="grep --color=auto"
# nvim
if type -q nvim
- set -x EDITOR nvim
- set -x VISUAL nvim
+ set -x -g EDITOR nvim
+ set -x -g VISUAL nvim
end
# others
diff --git a/fish/prev.d/env.fish b/fish/prev.d/env.fish
index 4baa413..fb93583 100644
--- a/fish/prev.d/env.fish
+++ b/fish/prev.d/env.fish
@@ -6,6 +6,6 @@ fish_add_path $HOME/.scripts
# man
if type -q bat
- set -x MANPAGER "sh -c 'col -bx | bat -l man -p'"
- set -x MANROFFOPT -c
+ set -x -g MANPAGER "sh -c 'col -bx | bat -l man -p'"
+ set -x -g MANROFFOPT -c
end
\ No newline at end of file
diff --git a/niri/config.kdl b/niri/config.kdl
index 4718249..7cd28e7 100644
--- a/niri/config.kdl
+++ b/niri/config.kdl
@@ -65,7 +65,7 @@ layout {
proportion 1.0
}
- default-column-width { proportion 0.66667; }
+ default-column-width { proportion 0.7; }
focus-ring {
width 2
@@ -134,10 +134,9 @@ spawn-at-startup "nm-applet"
spawn-sh-at-startup "gnome-keyring-daemon --start --components=secrets"
spawn-at-startup "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1"
spawn-at-startup "mako"
-spawn-at-startup "xwayland-satellite"
// idle
-spawn-sh-at-startup "swayidle -w timeout 300 'hyprlock &' timeout 600 'niri msg action power-off-monitors' before-sleep 'hyprlock &'"
+spawn-sh-at-startup "niri-swayidle"
// Clipboard history
spawn-sh-at-startup "wl-paste --type text --watch cliphist store"
@@ -175,7 +174,6 @@ environment {
// Others
XCURSOR_SIZE "24"
ELECTRON_OZONE_PLATFORM_HINT "wayland"
- DISPLAY ":0"
}
/************************Rules************************/
@@ -202,6 +200,25 @@ window-rule {
window-rule {
match app-id="com.mitchellh.ghostty"
open-floating true
+ default-column-width { proportion 0.5; }
+}
+
+// Normal terminal
+window-rule {
+ match app-id="kitty"
+ default-column-width { proportion 0.5; }
+}
+
+// Scrcpy
+window-rule {
+ match app-id="scrcpy"
+ default-column-width { proportion 0.3; }
+}
+
+// Editor
+window-rule {
+ match app-id="org.gnome.TextEditor"
+ default-column-width { proportion 0.3; }
}
// Other floating
@@ -255,7 +272,7 @@ binds {
Mod+C { spawn-sh "code --password-store=gnome-libsecret"; }
Mod+E { spawn "dolphin"; }
Mod+W { spawn "zen"; }
- Mod+X { spawn "gnome-text-editor"; }
+ Mod+X { spawn "gnome-text-editor" "--new-window"; }
Mod+B { spawn-sh "killall btop || ghostty -e btop"; }
Mod+T { spawn "kitty"; }
Mod+Return { spawn "kitty"; }
@@ -381,7 +398,7 @@ binds {
Mod+Shift+F { fullscreen-window; }
Mod+Ctrl+F { expand-column-to-available-width; }
- Mod+Ctrl+C { center-column; }
+ Mod+Y { center-column; }
Mod+Minus { set-column-width "-10%"; }
Mod+Plus { set-column-width "+10%"; }
diff --git a/niri/config.kdl.template b/niri/config.kdl.template
index 3c80812..98b7068 100644
--- a/niri/config.kdl.template
+++ b/niri/config.kdl.template
@@ -65,7 +65,7 @@ layout {
proportion 1.0
}
- default-column-width { proportion 0.66667; }
+ default-column-width { proportion 0.7; }
focus-ring {
width 2
@@ -134,10 +134,9 @@ spawn-at-startup "nm-applet"
spawn-sh-at-startup "gnome-keyring-daemon --start --components=secrets"
spawn-at-startup "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1"
spawn-at-startup "mako"
-spawn-at-startup "xwayland-satellite"
// idle
-spawn-sh-at-startup "swayidle -w timeout 300 'hyprlock &' timeout 600 'niri msg action power-off-monitors' before-sleep 'hyprlock &'"
+spawn-sh-at-startup "niri-swayidle"
// Clipboard history
spawn-sh-at-startup "wl-paste --type text --watch cliphist store"
@@ -175,7 +174,6 @@ environment {
// Others
XCURSOR_SIZE "24"
ELECTRON_OZONE_PLATFORM_HINT "wayland"
- DISPLAY ":0"
}
/************************Rules************************/
@@ -202,6 +200,25 @@ window-rule {
window-rule {
match app-id="com.mitchellh.ghostty"
open-floating true
+ default-column-width { proportion 0.5; }
+}
+
+// Normal terminal
+window-rule {
+ match app-id="kitty"
+ default-column-width { proportion 0.5; }
+}
+
+// Scrcpy
+window-rule {
+ match app-id="scrcpy"
+ default-column-width { proportion 0.3; }
+}
+
+// Editor
+window-rule {
+ match app-id="org.gnome.TextEditor"
+ default-column-width { proportion 0.3; }
}
// Other floating
@@ -255,7 +272,7 @@ binds {
Mod+C { spawn-sh "code --password-store=gnome-libsecret"; }
Mod+E { spawn "dolphin"; }
Mod+W { spawn "zen"; }
- Mod+X { spawn "gnome-text-editor"; }
+ Mod+X { spawn "gnome-text-editor" "--new-window"; }
Mod+B { spawn-sh "killall btop || ghostty -e btop"; }
Mod+T { spawn "kitty"; }
Mod+Return { spawn "kitty"; }
@@ -381,7 +398,7 @@ binds {
Mod+Shift+F { fullscreen-window; }
Mod+Ctrl+F { expand-column-to-available-width; }
- Mod+Ctrl+C { center-column; }
+ Mod+Y { center-column; }
Mod+Minus { set-column-width "-10%"; }
Mod+Plus { set-column-width "+10%"; }
diff --git a/waybar-niri/config.jsonc b/waybar-niri/config.jsonc
index 44e6b2b..47914cb 100644
--- a/waybar-niri/config.jsonc
+++ b/waybar-niri/config.jsonc
@@ -17,7 +17,7 @@
"custom/mediaplayer"
],
"modules-center": ["clock"],
- "modules-right": ["group/monitors", "custom/separator", "group/tray-expander", "idle_inhibitor", "custom/power"],
+ "modules-right": ["group/monitors", "custom/separator", "group/tray-expander", "custom/caffeine", "custom/power"],
// -------------------------------------------------------------------------
// Modules
// -------------------------------------------------------------------------
@@ -53,6 +53,21 @@
"min-length": 2,
"max-length": 2
},
+ "custom/caffeine": {
+ "format": "{icon}",
+ "format-icons": {
+ "active": "",
+ "inactive": ""
+ },
+ "return-type": "json",
+ "interval": "once",
+ "exec": "$HOME/.config/waybar/modules/caffeine.sh",
+ "on-click": "$HOME/.config/waybar/modules/caffeine.sh toggle && sleep 0.2",
+ "exec-on-event": true,
+ "tooltip": false,
+ "min-length": 2,
+ "max-length": 2
+ },
// Time and Date
"clock": {
"format": "{:%H:%M | %e %b}",
@@ -166,7 +181,7 @@
"max-length": 6,
"min-length": 6
},
- // Hyprland
+ // Niri
"group/workspaceactions": {
"modules": ["niri/workspaces", "custom/workspacenew"],
"orientation": "inherit"
diff --git a/waybar-niri/modules/caffeine.sh b/waybar-niri/modules/caffeine.sh
new file mode 100755
index 0000000..f36e09b
--- /dev/null
+++ b/waybar-niri/modules/caffeine.sh
@@ -0,0 +1,31 @@
+#!/bin/env bash
+
+function output() {
+ jq -n --unbuffered --compact-output \
+ --arg alt "$1" \
+ --arg class "$2" \
+ '{alt: $alt, class: [$class]}'
+}
+
+if [ "$1" = "toggle" ]; then
+ pid=$(pgrep -x "swayidle")
+
+ if [ -n "$pid" ]; then
+ killall swayidle > /dev/null 2>&1
+ notify-send "Caffeine enabled" "POWERRR!!!"
+ else
+ nohup niri-swayidle > /dev/null 2>&1 &
+ notify-send "Caffeine disabled" "zzz..."
+ fi
+
+ exit 0
+fi
+
+# sleep 0.2 # Allow hypridle to start
+
+pid=$(pgrep -x "swayidle")
+if [ -n "$pid" ]; then
+ output "inactive" "inactive"
+else
+ output "active" "active"
+fi
\ No newline at end of file
diff --git a/waybar-niri/style.css b/waybar-niri/style.css
index bf34a33..b06846e 100644
--- a/waybar-niri/style.css
+++ b/waybar-niri/style.css
@@ -45,6 +45,7 @@ tooltip {
#tray,
#custom-rofi,
#idle_inhibitor,
+#custom-caffeine,
#custom-power {
padding: 0px 10px;
}
@@ -55,6 +56,7 @@ tooltip {
}
#custom-rofi,
+#custom-caffeine
#idle_inhibitor,
#custom-power,
#custom-expand-icon {
@@ -168,14 +170,17 @@ window#waybar.empty #window {
color: @green;
}
+#custom-caffeine,
#idle_inhibitor {
color: @yellow;
}
+#custom-caffeine:hover,
#idle_inhibitor:hover {
background-color: alpha(@yellow, 0.3);
}
+#custom-caffeine.active,
#idle_inhibitor.activated {
color: @peach;
}
diff --git a/waybar-niri/style.css.template b/waybar-niri/style.css.template
index 5fb3644..ea0218c 100644
--- a/waybar-niri/style.css.template
+++ b/waybar-niri/style.css.template
@@ -45,6 +45,7 @@ tooltip {
#tray,
#custom-rofi,
#idle_inhibitor,
+#custom-caffeine,
#custom-power {
padding: 0px 10px;
}
@@ -55,6 +56,7 @@ tooltip {
}
#custom-rofi,
+#custom-caffeine
#idle_inhibitor,
#custom-power,
#custom-expand-icon {
@@ -168,14 +170,17 @@ window#waybar.empty #window {
color: @green;
}
+#custom-caffeine,
#idle_inhibitor {
color: @yellow;
}
+#custom-caffeine:hover,
#idle_inhibitor:hover {
background-color: alpha(@yellow, 0.3);
}
+#custom-caffeine.active,
#idle_inhibitor.activated {
color: @peach;
}
diff --git a/wlogout-niri/icons/hibernate.svg b/wlogout-niri/icons/hibernate.svg
new file mode 100644
index 0000000..5626c72
--- /dev/null
+++ b/wlogout-niri/icons/hibernate.svg
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/wlogout-niri/icons/hibernate.svg.template b/wlogout-niri/icons/hibernate.svg.template
new file mode 100644
index 0000000..22b5945
--- /dev/null
+++ b/wlogout-niri/icons/hibernate.svg.template
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/wlogout-niri/icons/lock.svg b/wlogout-niri/icons/lock.svg
new file mode 100644
index 0000000..4b629fd
--- /dev/null
+++ b/wlogout-niri/icons/lock.svg
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/wlogout-niri/icons/lock.svg.template b/wlogout-niri/icons/lock.svg.template
new file mode 100644
index 0000000..83628cb
--- /dev/null
+++ b/wlogout-niri/icons/lock.svg.template
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/wlogout-niri/icons/logout.svg b/wlogout-niri/icons/logout.svg
new file mode 100644
index 0000000..3e0cc80
--- /dev/null
+++ b/wlogout-niri/icons/logout.svg
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/wlogout-niri/icons/logout.svg.template b/wlogout-niri/icons/logout.svg.template
new file mode 100644
index 0000000..669ecd8
--- /dev/null
+++ b/wlogout-niri/icons/logout.svg.template
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/wlogout-niri/icons/reboot.svg b/wlogout-niri/icons/reboot.svg
new file mode 100644
index 0000000..c05f000
--- /dev/null
+++ b/wlogout-niri/icons/reboot.svg
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/wlogout-niri/icons/reboot.svg.template b/wlogout-niri/icons/reboot.svg.template
new file mode 100644
index 0000000..8ee393a
--- /dev/null
+++ b/wlogout-niri/icons/reboot.svg.template
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/wlogout-niri/icons/shutdown.svg b/wlogout-niri/icons/shutdown.svg
new file mode 100644
index 0000000..6693b35
--- /dev/null
+++ b/wlogout-niri/icons/shutdown.svg
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/wlogout-niri/icons/shutdown.svg.template b/wlogout-niri/icons/shutdown.svg.template
new file mode 100644
index 0000000..0dc8f51
--- /dev/null
+++ b/wlogout-niri/icons/shutdown.svg.template
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/wlogout-niri/icons/suspend.svg b/wlogout-niri/icons/suspend.svg
new file mode 100644
index 0000000..08214b4
--- /dev/null
+++ b/wlogout-niri/icons/suspend.svg
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/wlogout-niri/icons/suspend.svg.template b/wlogout-niri/icons/suspend.svg.template
new file mode 100644
index 0000000..1c96603
--- /dev/null
+++ b/wlogout-niri/icons/suspend.svg.template
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/wlogout-niri/layout b/wlogout-niri/layout
new file mode 100644
index 0000000..a0b0dab
--- /dev/null
+++ b/wlogout-niri/layout
@@ -0,0 +1,36 @@
+{
+ "label": "lock",
+ "action": "loginctl lock-session",
+ "text": "Lock",
+ "keybind": "l"
+}
+{
+ "label": "hibernate",
+ "action": "systemctl hibernate",
+ "text": "Hibernate",
+ "keybind": "h"
+}
+{
+ "label": "logout",
+ "action": "niri msg action quit",
+ "text": "Logout",
+ "keybind": "e"
+}
+{
+ "label": "shutdown",
+ "action": "systemctl poweroff",
+ "text": "Shutdown",
+ "keybind": "s"
+}
+{
+ "label": "suspend",
+ "action": "sleep 0.1 && systemctl suspend",
+ "text": "Suspend",
+ "keybind": "u"
+}
+{
+ "label": "reboot",
+ "action": "systemctl reboot",
+ "text": "Reboot",
+ "keybind": "r"
+}
\ No newline at end of file
diff --git a/wlogout-niri/style.css b/wlogout-niri/style.css
new file mode 100644
index 0000000..408f348
--- /dev/null
+++ b/wlogout-niri/style.css
@@ -0,0 +1,120 @@
+* {
+ background-image: none;
+ font-size: 24px;
+ font-family: 'Sour Gummy Light';
+}
+
+window {
+ background-color: rgba(30, 30, 46, 0.5);
+}
+
+button {
+ color: #cdd6f4;
+ border-radius: 0;
+ outline-style: none;
+ background-color: alpha(#1e1e2e, 0.8);
+ border: none;
+ border-width: 0px;
+ border-radius: 0px;
+ border-color: #f5c2e7;
+ box-shadow: none;
+ text-shadow: none;
+ text-decoration-color: #cdd6f4;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 20%;
+ animation: gradient_f 20s ease-in infinite;
+}
+
+button:focus,
+button:active,
+button:hover {
+ background-size: 20%;
+ background-color: alpha(#1e1e2e, 0.7);
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, 0, 0.28, 1.682);
+}
+
+#lock {
+ background-image: image(url('./icons/lock.svg'));
+ border-radius: 32px 0 0 0;
+}
+
+#logout {
+ background-image: image(url('./icons/logout.svg'));
+}
+
+#suspend {
+ background-image: image(url('./icons/suspend.svg'));
+ border-radius: 0 32px 0 0;
+}
+
+#hibernate {
+ background-image: image(url('./icons/hibernate.svg'));
+ border-radius: 0 0 0 32px;
+}
+
+#shutdown {
+ background-image: image(url('./icons/shutdown.svg'));
+}
+
+#reboot {
+ background-image: image(url('./icons/reboot.svg'));
+ border-radius: 0 0 32px 0;
+}
+
+#lock:hover {
+ border-radius: 30px 0 0 0;
+ margin: -30px 0 0 -30px;
+}
+
+#logout:hover {
+ margin: -30px 0 0 0;
+}
+
+#suspend:hover {
+ border-radius: 0 30px 0 0;
+ margin: -30px -30px 0 0;
+}
+
+#hibernate:hover {
+ border-radius: 0 0 0 30px;
+ margin: 0 0 -30 -30px;
+}
+
+#shutdown:hover {
+ margin: 0 0 -30px 0;
+}
+
+#reboot:hover {
+ border-radius: 0 0 30px 0;
+ margin: 0 -30px -30px 0;
+}
+
+#lock:focus {
+ border-radius: 60px 0 0 0;
+ margin: -60px 0 0 -60px;
+}
+
+#logout:focus {
+ margin: -60px 0 0 0;
+}
+
+#suspend:focus {
+ border-radius: 0 60px 0 0;
+ margin: -60px -60px 0 0;
+}
+
+#hibernate:focus {
+ border-radius: 0 0 0 60px;
+ margin: 0 0 -60 -60px;
+}
+
+#shutdown:focus {
+ margin: 0 0 -60px 0;
+}
+
+#reboot:focus {
+ border-radius: 0 0 60px 0;
+ margin: 0 -60px -60px 0;
+}
diff --git a/wlogout-niri/style.css.template b/wlogout-niri/style.css.template
new file mode 100644
index 0000000..1384e56
--- /dev/null
+++ b/wlogout-niri/style.css.template
@@ -0,0 +1,120 @@
+* {
+ background-image: none;
+ font-size: 24px;
+ font-family: 'Sour Gummy Light';
+}
+
+window {
+ background-color: rgba(30, 30, 46, 0.5);
+}
+
+button {
+ color: #cdd6f4;
+ border-radius: 0;
+ outline-style: none;
+ background-color: alpha(#1e1e2e, 0.8);
+ border: none;
+ border-width: 0px;
+ border-radius: 0px;
+ border-color: #;
+ box-shadow: none;
+ text-shadow: none;
+ text-decoration-color: #cdd6f4;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 20%;
+ animation: gradient_f 20s ease-in infinite;
+}
+
+button:focus,
+button:active,
+button:hover {
+ background-size: 20%;
+ background-color: alpha(#1e1e2e, 0.7);
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, 0, 0.28, 1.682);
+}
+
+#lock {
+ background-image: image(url('./icons/lock.svg'));
+ border-radius: 32px 0 0 0;
+}
+
+#logout {
+ background-image: image(url('./icons/logout.svg'));
+}
+
+#suspend {
+ background-image: image(url('./icons/suspend.svg'));
+ border-radius: 0 32px 0 0;
+}
+
+#hibernate {
+ background-image: image(url('./icons/hibernate.svg'));
+ border-radius: 0 0 0 32px;
+}
+
+#shutdown {
+ background-image: image(url('./icons/shutdown.svg'));
+}
+
+#reboot {
+ background-image: image(url('./icons/reboot.svg'));
+ border-radius: 0 0 32px 0;
+}
+
+#lock:hover {
+ border-radius: 30px 0 0 0;
+ margin: -30px 0 0 -30px;
+}
+
+#logout:hover {
+ margin: -30px 0 0 0;
+}
+
+#suspend:hover {
+ border-radius: 0 30px 0 0;
+ margin: -30px -30px 0 0;
+}
+
+#hibernate:hover {
+ border-radius: 0 0 0 30px;
+ margin: 0 0 -30 -30px;
+}
+
+#shutdown:hover {
+ margin: 0 0 -30px 0;
+}
+
+#reboot:hover {
+ border-radius: 0 0 30px 0;
+ margin: 0 -30px -30px 0;
+}
+
+#lock:focus {
+ border-radius: 60px 0 0 0;
+ margin: -60px 0 0 -60px;
+}
+
+#logout:focus {
+ margin: -60px 0 0 0;
+}
+
+#suspend:focus {
+ border-radius: 0 60px 0 0;
+ margin: -60px -60px 0 0;
+}
+
+#hibernate:focus {
+ border-radius: 0 0 0 60px;
+ margin: 0 0 -60 -60px;
+}
+
+#shutdown:focus {
+ margin: 0 0 -60px 0;
+}
+
+#reboot:focus {
+ border-radius: 0 0 60px 0;
+ margin: 0 -60px -60px 0;
+}