diff --git a/ags/.gitignore b/ags/.gitignore
new file mode 100644
index 0000000..298eb4d
--- /dev/null
+++ b/ags/.gitignore
@@ -0,0 +1,2 @@
+node_modules/
+@girs/
diff --git a/ags/app.ts b/ags/app.ts
new file mode 100644
index 0000000..221ce58
--- /dev/null
+++ b/ags/app.ts
@@ -0,0 +1,13 @@
+import { Gio, monitorFile, readFile, Process } from "astal";
+import { App } from "astal/gtk3"
+
+import { Bar } from "./window/Bar";
+import { runStyleHandler } from "./scripts/style-handler";
+
+runStyleHandler();
+
+App.start({
+ main() {
+ Bar(0);
+ }
+});
diff --git a/ags/env.d.ts b/ags/env.d.ts
new file mode 100644
index 0000000..467c0a4
--- /dev/null
+++ b/ags/env.d.ts
@@ -0,0 +1,21 @@
+declare const SRC: string
+
+declare module "inline:*" {
+ const content: string
+ export default content
+}
+
+declare module "*.scss" {
+ const content: string
+ export default content
+}
+
+declare module "*.blp" {
+ const content: string
+ export default content
+}
+
+declare module "*.css" {
+ const content: string
+ export default content
+}
diff --git a/ags/package-lock.json b/ags/package-lock.json
new file mode 100644
index 0000000..c9970a7
--- /dev/null
+++ b/ags/package-lock.json
@@ -0,0 +1,21 @@
+{
+ "name": "astal-shell",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "astal-shell",
+ "dependencies": {
+ "astal": "/usr/share/astal/gjs"
+ }
+ },
+ "../../../../usr/share/astal/gjs": {
+ "name": "astal",
+ "license": "LGPL-2.1"
+ },
+ "node_modules/astal": {
+ "resolved": "../../../../usr/share/astal/gjs",
+ "link": true
+ }
+ }
+}
diff --git a/ags/package.json b/ags/package.json
new file mode 100644
index 0000000..44226f2
--- /dev/null
+++ b/ags/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "astal-shell",
+ "dependencies": {
+ "astal": "/usr/share/astal/gjs"
+ }
+}
diff --git a/ags/scripts/pywal.ts b/ags/scripts/pywal.ts
new file mode 100644
index 0000000..25e2f17
--- /dev/null
+++ b/ags/scripts/pywal.ts
@@ -0,0 +1,10 @@
+import { readFile } from "astal";
+import { getUserDirs } from "./user";
+
+export abstract class Wal {
+ getColors(): JSON {
+ return JSON.parse(
+ readFile(`${getUserDirs().cache}/wal/colors.json`)!
+ );
+ }
+}
diff --git a/ags/scripts/style-handler.ts b/ags/scripts/style-handler.ts
new file mode 100644
index 0000000..433305e
--- /dev/null
+++ b/ags/scripts/style-handler.ts
@@ -0,0 +1,57 @@
+// handles reloading stylesheet and pywal colors
+
+import { readFile, monitorFile, Process, Gio } from "astal";
+import { App } from "astal/gtk3";
+import { getUserDirs } from "./user";
+
+const stylePath = `${getUserDirs().state}/ags/style`
+const watchPaths = [
+ "./style",
+ "./style.scss"
+];
+
+export function runStyleHandler(): void {
+ reloadStyle();
+ watch();
+}
+
+export function reloadStyle(): void {
+ compileStyle();
+ applyStyle();
+}
+
+export function compileStyle(): void {
+ console.log("[LOG] Compiling sass (stylesheet)");
+ Process.exec(`mkdir -p ${stylePath}`);
+ Process.exec(`bash -c "sass -I ./style ./style.scss ${stylePath}/style.css"`);
+}
+
+export function applyStyle(): void {
+ console.log("[LOG] Applying stylesheet");
+ App.reset_css();
+ App.apply_css(
+ readFile(`${stylePath}/style.css`)!
+ );
+}
+
+function watch(): void {
+ // Monitor changes on stylesheet at runtime
+ watchPaths.map((path: string) =>
+ monitorFile(
+ `${path}`,
+ (file: string) => {
+ console.log(`[LOG] Stylesheet ${file} file updated`)
+ compileStyle();
+ applyStyle();
+ }
+ )
+ )
+
+ // Monitor PyWal colorscheme file
+ monitorFile(
+ `${getUserDirs().cache}/wal/colors.scss`,
+ (file: string) => {
+ Process.exec(`bash -c "cp -f ${file} ./style/_wal.scss"`)
+ }
+ );
+}
diff --git a/ags/scripts/user.ts b/ags/scripts/user.ts
new file mode 100644
index 0000000..db36739
--- /dev/null
+++ b/ags/scripts/user.ts
@@ -0,0 +1,11 @@
+import { GLib } from "astal";
+
+export function getUserDirs() {
+ return {
+ home: GLib.getenv("HOME"),
+ state: GLib.getenv("XDG_STATE_HOME"),
+ cache: GLib.getenv("XDG_CACHE_HOME"),
+ config: GLib.getenv("XDG_CONFIG_HOME"),
+ data: GLib.getenv("XDG_DATA_HOME")
+ } as const;
+}
diff --git a/ags/style.scss b/ags/style.scss
new file mode 100644
index 0000000..4275cd5
--- /dev/null
+++ b/ags/style.scss
@@ -0,0 +1,16 @@
+@use "./style/bar";
+@use "./style/wal";
+
+* {
+ all: unset;
+ transition: 120ms linear;
+}
+
+button {
+ padding: 6px;
+ border-radius: 12px;
+
+ &:hover {
+ background: wal.$color1;
+ }
+}
diff --git a/ags/style/_bar.scss b/ags/style/_bar.scss
new file mode 100644
index 0000000..ba430bb
--- /dev/null
+++ b/ags/style/_bar.scss
@@ -0,0 +1,47 @@
+@use "./_wal";
+
+.bar-container {
+ padding: 6px;
+ padding-bottom: 0px;
+ .bar-centerbox > * {
+ background: rgba($color: wal.$background, $alpha: .6);
+ padding: 6px;
+ border-radius: 18px;
+ }
+}
+
+label {
+ font-size: 12px;
+ font-family: "Cantarell", "Noto Sans";
+ font-weight: 500;
+}
+
+.workspaces {
+ & button {
+ transition: 80ms linear;
+ padding: 0 12px;
+ background: wal.$color1;
+ margin: 3px 2px;
+
+ &.focus {
+ background: wal.$foreground;
+ padding: 0 20px;
+ }
+ }
+}
+
+.logo button {
+ $padding-inline: 12px;
+ padding-left: $padding-inline;
+ padding-right: calc($padding-inline + 3.9px);
+
+ & label {
+ font-size: 14px;
+ }
+}
+
+.cc-toggle button {
+ $padding-inline: 12px;
+ padding-left: $padding-inline;
+ padding-right: calc($padding-inline + 2px);
+}
diff --git a/ags/style/_mixins.scss b/ags/style/_mixins.scss
new file mode 100644
index 0000000..e69de29
diff --git a/ags/style/_wal.scss b/ags/style/_wal.scss
new file mode 100644
index 0000000..e2dc560
--- /dev/null
+++ b/ags/style/_wal.scss
@@ -0,0 +1,26 @@
+// SCSS Variables
+// Generated by 'wal'
+$wallpaper: "/home/joaov/wallpapers/Garden Kita.png";
+
+// Special
+$background: #101212;
+$foreground: #c3c3c3;
+$cursor: #c3c3c3;
+
+// Colors
+$color0: #101212;
+$color1: #59662a;
+$color2: #517047;
+$color3: #87863c;
+$color4: #707b48;
+$color5: #4b6266;
+$color6: #84876e;
+$color7: #8e9898;
+$color8: #596d6d;
+$color9: #778839;
+$color10: #6C965F;
+$color11: #B4B350;
+$color12: #96A460;
+$color13: #658388;
+$color14: #B0B493;
+$color15: #c3c3c3;
diff --git a/ags/tsconfig.json b/ags/tsconfig.json
new file mode 100644
index 0000000..1fc22db
--- /dev/null
+++ b/ags/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "compilerOptions": {
+ "experimentalDecorators": true,
+ "strict": true,
+ "target": "ES2022",
+ "module": "ES2022",
+ "moduleResolution": "Bundler",
+ "checkJs": true,
+ "allowJs": true,
+ "jsx": "react-jsx",
+ "jsxImportSource": "astal/gtk3"
+ }
+}
diff --git a/ags/widget/bar/Audio.tsx b/ags/widget/bar/Audio.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/ags/widget/bar/CCToggle.tsx b/ags/widget/bar/CCToggle.tsx
new file mode 100644
index 0000000..896036e
--- /dev/null
+++ b/ags/widget/bar/CCToggle.tsx
@@ -0,0 +1,11 @@
+import {Process} from "astal";
+import { Box, Button } from "astal/gtk3/widget";
+
+export function CCToggle() {
+ return (
+
+
+ )
+}
diff --git a/ags/widget/bar/Clock.tsx b/ags/widget/bar/Clock.tsx
new file mode 100644
index 0000000..6a5563a
--- /dev/null
+++ b/ags/widget/bar/Clock.tsx
@@ -0,0 +1,14 @@
+import { Box, Button } from "astal/gtk3/widget";
+import { GLib, Variable } from "astal";
+
+const dateTimeFormat = "%A %d, %H:%M"
+const time = new Variable("").poll(600, () =>
+ GLib.DateTime.new_now_local().format(dateTimeFormat)!);
+
+export function Clock(): JSX.Element {
+ return (
+
+
+
+ )
+}
diff --git a/ags/widget/bar/Logo.tsx b/ags/widget/bar/Logo.tsx
new file mode 100644
index 0000000..f563620
--- /dev/null
+++ b/ags/widget/bar/Logo.tsx
@@ -0,0 +1,10 @@
+import { Box, Button } from "astal/gtk3/widget";
+import { Process } from "astal";
+
+export function Logo() {
+ return (
+
+
+ )
+}
diff --git a/ags/widget/bar/Tray.tsx b/ags/widget/bar/Tray.tsx
new file mode 100644
index 0000000..22bdfa1
--- /dev/null
+++ b/ags/widget/bar/Tray.tsx
@@ -0,0 +1,17 @@
+import { Box, Label } from "astal/gtk3/widget";
+import AstalTray from "gi://AstalTray"
+
+const astalTray = AstalTray.get_default();
+let items: Array = astalTray.items;
+
+const handlerId = astalTray.connect("item-added", () => {
+ items = astalTray.items;
+ console.log(astalTray.items);
+}) as number;
+
+export function Tray() {
+ return (
+
+
+ );
+}
diff --git a/ags/widget/bar/Workspaces.tsx b/ags/widget/bar/Workspaces.tsx
new file mode 100644
index 0000000..bb402b3
--- /dev/null
+++ b/ags/widget/bar/Workspaces.tsx
@@ -0,0 +1,21 @@
+import { bind } from "astal";
+import { Widget } from "astal/gtk3";
+import AstalHyprland from "gi://AstalHyprland";
+
+const hyprland = AstalHyprland.get_default();
+
+export function Workspaces() {
+ return new Widget.Box({
+ className: "workspaces",
+ children: bind(hyprland, "workspaces").as((workspaces) =>
+ workspaces.sort((a: AstalHyprland.Workspace, b: AstalHyprland.Workspace) =>
+ a.get_id() - b.get_id())
+ .map((workspace: AstalHyprland.Workspace) =>
+ new Widget.Button({
+ className: bind(hyprland, "focusedWorkspace").as((focusedWs: AstalHyprland.Workspace) => workspace === focusedWs ? "focus" : ""),
+ onClicked: () => workspace.focus()
+ } as Widget.ButtonProps)
+ )
+ )
+ } as Widget.BoxProps);
+}
diff --git a/ags/window/Bar.tsx b/ags/window/Bar.tsx
new file mode 100644
index 0000000..7f49820
--- /dev/null
+++ b/ags/window/Bar.tsx
@@ -0,0 +1,44 @@
+import { Box, CenterBox } from "astal/gtk3/widget";
+import { Astal, Gtk } from "astal/gtk3";
+import Gdk from "gi://Gdk?version=3.0";
+
+import { Clock } from "../widget/bar/Clock";
+import { Logo } from "../widget/bar/Logo";
+import { CCToggle } from "../widget/bar/CCToggle";
+//import { Tray } from "../widget/bar/Tray";
+import { Workspaces } from "../widget/bar/Workspaces";
+
+export function Bar(monitor: number = 0, width: (number|undefined) = undefined, height: (number|undefined) = undefined) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/**/}
+
+
+
+
+
+ )
+}
diff --git a/apply.sh b/apply.sh
index 396ac88..5767f6c 100755
--- a/apply.sh
+++ b/apply.sh
@@ -10,7 +10,7 @@ echo "######################################"
printf "\n"
CONFIG_DIR="$HOME/.config"
-DOTFILES_DIRS=("hypr" "eww" "kitty" "anyrun" "wal" "fastfetch" "mako")
+DOTFILES_DIRS=("hypr" "ags" "kitty" "anyrun" "wal" "fastfetch")
DOTFILES_BACKUP_DIR="$HOME/hyprland-dotfiles-bkp"
echo "Welcome to my dotfiles installation script!"
diff --git a/eww/eww.scss b/eww/eww.scss
deleted file mode 100644
index badd0e7..0000000
--- a/eww/eww.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-
-@import "../../.cache/wal/colors.scss";
-
-@import "styles/general.scss";
-@import "styles/bar.scss";
-@import "styles/calendar.scss";
-@import "styles/control-center.scss";
-@import "styles/powermenu.scss";
-@import "styles/volume-control.scss";
-@import "styles/floating-notifications.scss";
diff --git a/eww/eww.yuck b/eww/eww.yuck
deleted file mode 100644
index 97a6190..0000000
--- a/eww/eww.yuck
+++ /dev/null
@@ -1,17 +0,0 @@
-; Variables
-(include "variables.yuck")
-
-; Windows
-(include "windows/calendar-window.yuck")
-(include "windows/control-center.yuck")
-(include "windows/bar.yuck")
-(include "windows/powermenu.yuck")
-(include "windows/volume-control.yuck")
-(include "windows/volume-popup.yuck")
-(include "windows/floating-media.yuck")
-(include "windows/floating-notifications.yuck")
-(include "windows/hardware-monitor.yuck")
-
-; Universal Widgets
-(include "widgets/big-media.yuck")
-(include "widgets/separator.yuck")
diff --git a/eww/scripts/active-window.sh b/eww/scripts/active-window.sh
deleted file mode 100644
index 1c55066..0000000
--- a/eww/scripts/active-window.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env bash
-
-# output current window before event trigger to prevent issues
-hyprctl -j activewindow | jq -c | sed 's/\\[n]//g'
-
-handle() {
- case $1 in
- activewindow*) hyprctl -j activewindow | jq -c | sed 's/\\[n]//g' ;;
- esac
-}
-
-socat -U - UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock | while read -r line; do handle "$line"; done
diff --git a/eww/scripts/color-picker.sh b/eww/scripts/color-picker.sh
deleted file mode 100644
index 77786ff..0000000
--- a/eww/scripts/color-picker.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env bash
-
-send_notification() {
- notify-send -u normal -a "Color Picker" "$1" "$2"
-}
-
-# Check if user has hyprpicker installed
-if ! [[ -f /bin/hyprpicker ]]; then
- send_notification "An error occurred" "Looks like you don't have Hyprpicker installed! Try installing it before using the Color Picker tool."
- exit 1
-fi
-
-selected_color=$(hyprpicker)
-
-if ! [[ $selected_color == "" ]]; then
- wl-copy $selected_color
- send_notification "Selected Color" "The selected color is $selected_color, it was also copied to your clipboard!"
-fi
diff --git a/eww/scripts/eww-reload.sh b/eww/scripts/eww-reload.sh
deleted file mode 100644
index f6bf4d3..0000000
--- a/eww/scripts/eww-reload.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env bash
-
-# This script reloads eww configuration and updates
-# window status variables, used in eww-window.sh
-# script. Avoids issues with widgets that use status
-# variables to dinamically change their content.
-# ----------
-# Licensed under the MIT License
-# Made by retrozinndev (João Dias)
-# From https://github.com/retrozinndev/Hyprland-Dots
-
-# TODO
-
-open_windows=$(eww active-windows | awk -F: '{ print $1 }' | sed -e 's/ /\\[n]/g')
-echo $open_windows
-
-#for window in $()
diff --git a/eww/scripts/eww-window.sh b/eww/scripts/eww-window.sh
deleted file mode 100644
index 96e982e..0000000
--- a/eww/scripts/eww-window.sh
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/usr/bin/env bash
-
-# arg1($1) should be one of the options listed in help command;
-# arg2($2) should be the literal window name as defined in eww configuration.
-
-function help_message() {
- printf \
-"This is a helper script that helps opening/closing eww windows on
-retrozinndev's Hyprland Dots, by checking if the window is already
-open/closed before doing anything, also changes eww state variables.
-This needs a variable like window_state_WINDOWNAME to work, where
-WINDOWNAME is the literal name of the declared window inside the
-eww configuration you are using.
-
-Usage:
- arg1 arg2
- ./eww-window.sh [SINGLE OPTION] [WINDOW_NAME]
-
-Options:
- -h, --help, help: Shows this help message;
- --open, open: Opens a window and changes its state variable to
- \"open\" if not open, or else does nothing;
- --toggle, toggle: Toggles a window. If open, the specified
- window is closed, if closed, the
- specified window is open. Same thing goes to
- the eww window state variable;
- --close, close: Closes a window and also changes its state
- variable to \"closed\" if open, or else does
- nothing.
-
-
-Developer: retrozinndev (João Dias), https://github.com/retrozinndev
-Issue tracker: https://github.com/retrozinndev/Hyprland-Dots/issues
-Licensed under the MIT License, as in retrozinndev's Hyprland-Dots repo."
-}
-
-function send_log() {
- case "$1" in
- err*)
- tag_color="\e[31m"
- ;;
- warn*)
- tag_color="\e[33m"
- ;;
- *)
- tag_color="\e[34m"
- ;;
- esac
-
- echo -e "[$tag_color$1\e[0m] $2"
-}
-
-function check_if_empty() {
- if [[ $1 == "" ]]; then
- send_log "error" "argument \$1 is empty!"
- help_message
- exit 1
- fi
-}
-
-function toggle_eww_window() {
- if ! [[ $(eww active-windows) =~ "$1" ]]; then
- eww open "$1"
- eww update "window_state_$1=open"
- else
- eww close "$1"
- eww update "window_state_$1=closed"
- fi
-}
-
-case "$1" in
- --help | -h | help | h)
- help_message
- ;;
-
- --open | open)
- check_if_empty $2 "WINDOW_NAME"
- if ! [[ $(eww active-windows) =~ "$2" ]]; then
- eww open "$2"
- eww update "window_state_$2=open"
- else
- send_log "info" "Window '$2' is already open, ignored."
- fi
- ;;
-
- --close | close)
- check_if_empty $2 "WINDOW_NAME"
- if [[ $(eww active-windows) =~ "$2" ]]; then
- eww close "$2"
- eww update "window_state_$2=closed"
- else
- send_log "info" "Window '$2' is already closed, ignored."
- fi
- ;;
-
- --toggle | toggle)
- check_if_empty $2 "WINDOW_NAME"
- toggle_eww_window $2
- ;;
- *)
- send_log "error" "Action not specified or incorrect command order. Good example: \`./eww-window.sh open bar\`"
- help_message
- ;;
-esac
diff --git a/eww/scripts/get-volume-watch.sh b/eww/scripts/get-volume-watch.sh
deleted file mode 100644
index 844ab6f..0000000
--- a/eww/scripts/get-volume-watch.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env bash
-
-sink_="@DEFAULT_AUDIO_SINK@"
-source_="@DEFAULT_AUDIO_SOURCE@"
-
-print_json() {
- echo "{ \"output\": $output_vol, \"source\": $source_vol }"
-}
-
-get_vol() {
- echo $(wpctl get-volume $1 | awk "{print int(\$2*100)}")
-}
-
-output_vol=$(get_vol $sink_)
-source_vol=$(get_vol $source_)
-
-print_json
-
-# Loop
-pactl subscribe | grep --line-buffered -e "on sink" -e "on source" | while read -r; do
-
- output_vol=$(get_vol $sink_)
- source_vol=$(get_vol $source_)
-
- print_json
-done
diff --git a/eww/scripts/mediaplayer.py b/eww/scripts/mediaplayer.py
deleted file mode 100755
index 038b886..0000000
--- a/eww/scripts/mediaplayer.py
+++ /dev/null
@@ -1,205 +0,0 @@
-#!/usr/bin/env python3
-
-# Original code is from Alexays/Waybar repo in https://github.com/Alexays/Waybar
-# Modified by retrozinndev to work on Eww and more players.
-# Dotfiles: https://github.com/retrozinndev/Hyprland-Dots
-
-import gi
-gi.require_version("Playerctl", "2.0")
-from gi.repository import Playerctl, GLib
-from gi.repository.Playerctl import Player
-import argparse
-import logging
-import sys
-import signal
-import gi
-import json
-import os
-from typing import List
-
-logger = logging.getLogger(__name__)
-
-def signal_handler(sig, frame):
- logger.info("Received signal to stop, exiting")
- sys.stdout.write("\n")
- sys.stdout.flush()
- # loop.quit()
- sys.exit(0)
-
-
-class PlayerManager:
- def __init__(self, selected_player=None, excluded_player=[]):
- self.manager = Playerctl.PlayerManager()
- self.loop = GLib.MainLoop()
- self.manager.connect(
- "name-appeared", lambda *args: self.on_player_appeared(*args))
- self.manager.connect(
- "player-vanished", lambda *args: self.on_player_vanished(*args))
-
- signal.signal(signal.SIGINT, signal_handler)
- signal.signal(signal.SIGTERM, signal_handler)
- signal.signal(signal.SIGPIPE, signal.SIG_DFL)
- self.selected_player = selected_player
- self.excluded_player = excluded_player.split(',') if excluded_player else []
-
- self.init_players()
-
- def init_players(self):
- for player in self.manager.props.player_names:
- if player.name in self.excluded_player:
- continue
- if self.selected_player is not None and self.selected_player != player.name:
- logger.debug(f"{player.name} is not the filtered player, skipping it")
- continue
- self.init_player(player)
-
- def run(self):
- logger.info("Starting main loop")
- self.loop.run()
-
- def init_player(self, player):
- logger.info(f"Initialize new player: {player.name}")
- player = Playerctl.Player.new_from_name(player)
- player.connect("playback-status",
- self.on_playback_status_changed, None)
- player.connect("metadata", self.on_metadata_changed, None)
- self.manager.manage_player(player)
- self.on_metadata_changed(player, player.props.metadata)
-
- def get_players(self) -> List[Player]:
- return self.manager.props.players
-
- def clear_output(self):
- sys.stdout.write("\n")
- sys.stdout.flush()
-
- def on_playback_status_changed(self, player, status, _=None):
- logger.debug(f"Playback status changed for player {player.props.player_name}: {status}")
- self.on_metadata_changed(player, player.props.metadata)
-
- def get_first_playing_player(self):
- players = self.get_players()
- logger.debug(f"Getting first playing player from {len(players)} players")
- if len(players) > 0:
- # if any are playing, show the first one that is playing
- # reverse order, so that the most recently added ones are preferred
- for player in players[::-1]:
- if player.props.status == "Playing":
- return player
- # if none are playing, show the first one
- return players[0]
- else:
- logger.debug("No players found")
- return None
-
- def show_most_important_player(self):
- logger.debug("Showing most important player")
- # show the currently playing player
- # or else show the first paused player
- # or else show nothing
- current_player = self.get_first_playing_player()
- if current_player is not None:
- self.on_metadata_changed(current_player, current_player.props.metadata)
- else:
- self.clear_output()
-
- def on_metadata_changed(self, player, metadata, _=None):
- logger.debug(f"Metadata changed for player {player.props.player_name}")
- player_name = player.props.player_name
- artist = player.get_artist()
- title = player.get_title()
-
- track_info = ""
- if ((player_name == "spotify") and "mpris:trackid" in metadata.keys() and ":ad:" in player.props.metadata["mpris:trackid"]):
- track_info = "Advertisement"
- elif artist != None and title != None:
- track_info = f"{artist} - {title}"
- else:
- track_info = title
-
- # only print output if no other player is playing
- current_playing = self.get_first_playing_player()
- if current_playing is None or current_playing.props.player_name == player.props.player_name:
- self.write_output(track_info, player)
- else:
- logger.debug(f"Other player {current_playing.props.player_name} is playing, skipping")
-
- def write_output(self, text, player):
- logger.debug(f"Writing output: {text}")
-
- artUrl = player.print_metadata_prop("mpris:artUrl")
-
- if artUrl is not None and not artUrl.startswith("file://") and not artUrl.startswith("http://") and not artUrl.startswith("https://") and artUrl != "null":
- artUrl = f"file://{artUrl}"
-
- output = {
- "status": player.props.status.lower(),
- "title": player.get_title(),
- "artist": player.get_artist(),
- "player": player.props.player_name.lower(),
- "artUrl": artUrl,
- "length": player.print_metadata_prop("mpris:length"),
- "url": player.print_metadata_prop("xesam:url")
- }
-
- sys.stdout.write(json.dumps(output) + "\n")
- sys.stdout.flush()
-
- def on_player_appeared(self, _, player):
- logger.info(f"Player has appeared: {player.name}")
- if player.name in self.excluded_player:
- logger.debug(
- "New player appeared, but it's in exclude player list, skipping")
- return
- if player is not None and (self.selected_player is None or player.name == self.selected_player):
- self.init_player(player)
- else:
- logger.debug(
- "New player appeared, but it's not the selected player, skipping")
-
- def on_player_vanished(self, _, player):
- logger.info(f"Player {player.props.player_name} has vanished")
- self.show_most_important_player()
-
-def parse_arguments():
- parser = argparse.ArgumentParser()
-
- # Increase verbosity with every occurrence of -v
- parser.add_argument("-v", "--verbose", action="count", default=0)
-
- parser.add_argument("-x", "--exclude", "- Comma-separated list of excluded player")
-
- # Define for which player we"re listening
- parser.add_argument("--player")
-
- parser.add_argument("--enable-logging", action="store_true")
-
- return parser.parse_args()
-
-
-def main():
- arguments = parse_arguments()
-
- # Initialize logging
- if arguments.enable_logging:
- logfile = os.path.join(os.path.dirname(
- os.path.realpath(__file__)), "media-player.log")
- logging.basicConfig(filename=logfile, level=logging.DEBUG,
- format="%(asctime)s %(name)s %(levelname)s:%(lineno)d %(message)s")
-
- # Logging is set by default to WARN and higher.
- # With every occurrence of -v it's lowered by one
- logger.setLevel(max((3 - arguments.verbose) * 10, 0))
-
- logger.info("Creating player manager")
- if arguments.player:
- logger.info(f"Filtering for player: {arguments.player}")
- if arguments.exclude:
- logger.info(f"Exclude player {arguments.exclude}")
-
- player = PlayerManager(arguments.player, arguments.exclude)
- player.run()
-
-
-if __name__ == "__main__":
- main()
diff --git a/eww/scripts/night-light.sh b/eww/scripts/night-light.sh
deleted file mode 100644
index e4e546f..0000000
--- a/eww/scripts/night-light.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-pidfile="$HOME/.cache/night-light.pid"
-temperature=4500 # in K
-
-# run only if pid file does not exist
-if ! [[ -f $pidfile ]]; then
- touch $pidfile
- hyprsunset -t $temperature &
- _pid=$!
- echo -e $_pid > $pidfile
- wait $_pid && rm -f $pidfile
-else
- echo "There's already an instance running! Mistake? Delete \"~/.cache/night-light.pid\"."
- exit 1
-fi
diff --git a/eww/scripts/notification-clear.sh b/eww/scripts/notification-clear.sh
deleted file mode 100644
index 6f604f1..0000000
--- a/eww/scripts/notification-clear.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-
-lockfile=$HOME/.cache/notification-history.lock
-json_history_file=$HOME/.cache/notification-history.json
-
-if ! [[ -f $lockfile ]]; then
- echo "{ \"history\": [] }" > $json_history_file
-fi
diff --git a/eww/scripts/notification-handler.sh b/eww/scripts/notification-handler.sh
deleted file mode 100644
index 67e6994..0000000
--- a/eww/scripts/notification-handler.sh
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/env bash
-
-# A notification logger, saves notifications inside
-# a file instead of saving on memory! file is located
-# in `~/.cache/notification-history.json`.
-# -----------
-# Licensed under the MIT License
-# Made by retrozinndev (João Dias)
-# From https://github.com/retrozinndev/Hyprland-Dots
-
-set -e
-
-json_history_file="$HOME/.cache/notification-history.json"
-lock_file="$HOME/.cache/notification-history.lock"
-
-# get max entries from mako file
-max_entries=$(cat $HOME/.config/mako/config | grep "max-history=" | awk -F= '{ print $2 }')
-
-touch $json_history_file
-
-function Init_history_file() {
- if [[ $(cat $json_history_file) == "" ]]; then
- echo -e "{\"history\":[]}" > $json_history_file
- fi
-}
-
-function Check_history_file() {
- if ! [[ -f $json_history_file ]]; then
- touch $json_history_file
- fi
-}
-
-function Treat_specials() {
- echo $@ | sed -e 's/\\[n]/\\n/g' -e 's/&/&/g'
-}
-
-Check_history_file
-Init_history_file
-
-json_latest_notification="$(makoctl history | jq -c '.data[][0]')"
-
-while true; do
- sleep .1
- if ! [[ -f $lock_file ]]; then
- json_actual_latest="$(makoctl history | jq -c '.data[][0]')"
- if ! [[ $json_actual_latest == $json_latest_notification ]]; then
- if [[ $(echo $(Treat_specials $json_actual_latest) | jq -c '.id.data') == $(echo $(Treat_specials $json_latest_notification) | jq -c '.id.data') ]]; then
- if [[ $(echo $(Treat_specials $json_actual_latest) | jq -c '.summary.data') == $(echo $(Treat_specials $json_latest_notification) | jq -c '.summary.data') ]]; then
- continue
- else
- sh $HOME/.config/eww/scripts/notification-remove.sh $(echo $(Treat_specials $json_latest_notification) | jq -c '.id.data') &
- fi
- fi
-
- Check_history_file
- Init_history_file
- json_latest_notification=$(makoctl history | jq -c '.data[][0]')
- json_first_notification=$(jq -c ".history[$(jq -c '.history | length - 1' $json_history_file)]" $json_history_file)
-
- if ! [[ $(makoctl mode) =~ "dnd" ]]; then
- sh $HOME/.config/eww/scripts/notification-popup.sh "$(Treat_specials $json_latest_notification)" &
- fi
-
- if [[ $(jq -c ".history | length" $json_history_file) == $max_entries ]]; then
- sh $HOME/.config/eww/scripts/notification-remove.sh $(echo $json_first_notification | jq -c '.id.data')
- fi
-
- json_output=$(jq -c ".history |= [$(Treat_specials $json_latest_notification)] + ." $json_history_file)
-
- echo -e "$json_output" > $json_history_file
- fi
- fi
-done
diff --git a/eww/scripts/notification-popup-remove.sh b/eww/scripts/notification-popup-remove.sh
deleted file mode 100644
index 0b5d3ba..0000000
--- a/eww/scripts/notification-popup-remove.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env bash
-
-# Removes notification from popup by id provided
-# in arg1.
-# ---------
-# Licensed under the MIT License
-# Made by retrozinndev (João Dias)
-# From https://github.com/retrozinndev/Hyprland-Dots
-
-
-if ! [[ $1 == "" ]]; then
- json_popup_notifications=$(eww get json_popup_notifications)
- if [[ $(eww get json_popup_notifications | jq -c '.notifications | length') == 1 ]]; then
- sh $HOME/.config/eww/scripts/eww-window.sh close floating-notifications >> /dev/null
- fi
- eww update "json_popup_notifications=$(echo $json_popup_notifications | jq -c "del(.notifications[] | select(.id.data == $1))")"
- exit 0
-fi
-
-echo "[error] Notification Id not provided!"
-exit 1
diff --git a/eww/scripts/notification-popup.sh b/eww/scripts/notification-popup.sh
deleted file mode 100644
index 0888cde..0000000
--- a/eww/scripts/notification-popup.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env bash
-
-# This scripts receives a notification from arg1,
-# in a json format, displays in eww, counting
-# down depending on notification urgency and
-# removes the notification from json.
-
-# Timeout in seconds
-# When set to 0, notification will disappear
-# only when hovering it.
-timeout_low=3
-timeout_normal=6
-timeout_critical=0
-
-if ! [[ $@ == "" ]]; then
- # Urgency levels:
- # Low: 0, Normal: 1, Critical: 2
- urgency=$(echo $@ | jq -c ".urgency.data")
- id=$(echo $@ | jq -c ".id.data")
- json_popup_notifications="$(eww get json_popup_notifications)"
- json_notification=$(echo $@ | jq -c '.')
-
- if [[ $json_popup_notifications == "" ]]; then
- eww update "json_popup_notifications="'{"notifications":[]}' >> /dev/null
- json_popup_notifications='{"notifications":[]}'
- fi
-
- eww update "json_popup_notifications=$(echo $json_popup_notifications | jq -c ".notifications |= [$json_notification] + .")" >> /dev/null
- sh $HOME/.config/eww/scripts/eww-window.sh open floating-notifications >> /dev/null
-
- # Critical urgency is handled by eww, no need to count down
- case $urgency in
- 0)
- sleep $timeout_low
- ;;
- 1)
- sleep $timeout_normal
- ;;
- 2) ;;
- *)
- sleep $timeout_normal
- ;;
- esac
-
- if ! [[ $urgency == 2 ]]; then
- sh $HOME/.config/eww/scripts/notification-popup-remove.sh "$id" &
- fi
-fi
-
-
-exit 0
diff --git a/eww/scripts/notification-remove.sh b/eww/scripts/notification-remove.sh
deleted file mode 100644
index b2f1ac3..0000000
--- a/eww/scripts/notification-remove.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-
-# Removes notification from history file by
-# id provided in arg1.
-# ---------
-# Licensed under the MIT License
-# Made by retrozinndev (João Dias)
-# From https://github.com/retrozinndev/Hyprland-Dots
-
-json_history_file="$HOME/.cache/notification-history.json"
-lock_file="$HOME/.cache/notification-history.lock"
-
-if [[ -f $HOME/.cache/notification-history.json ]] && ! [[ $1 == "" ]]; then
- touch $lock_file
- json_updated_history=$(jq -c "del(.history[] | select(.id.data == $1))" $json_history_file)
- echo -e $json_updated_history > $json_history_file
- rm -f $lock_file
-else
- echo "[error] Notification history not reachable or id not provided"
- exit 1
-fi
-
-exit 0
diff --git a/eww/scripts/notification-watch.sh b/eww/scripts/notification-watch.sh
deleted file mode 100644
index 1bf7e81..0000000
--- a/eww/scripts/notification-watch.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env bash
-
-# This script watches notification file changes
-# and output file contents.
-# -----------
-# Licensed under the MIT License
-# Made by retrozinndev (João Dias)
-# From https://github.com/retrozinndev/Hyprland-Dots
-
-set -e
-
-json_history_file="$HOME/.cache/notification-history.json"
-
-if ! [[ -f $json_history_file ]]; then
- echo -e "{\"history\":[]}" > $json_history_file
-fi
-
-json_history="$(cat $json_history_file)"
-
-echo $json_history
-
-while true; do
- sleep .1
- json_newest_history=$(cat $json_history_file)
-
- if ! [[ "$json_history" == "$json_newest_history" ]]; then
- json_history="$json_newest_history"
- echo $json_history
- fi
-done
-
-exit 0
diff --git a/eww/scripts/screen-recording.sh b/eww/scripts/screen-recording.sh
deleted file mode 100644
index eadc5a8..0000000
--- a/eww/scripts/screen-recording.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-dest="$HOME/Recordings"
-if ! [[ $(xdg-user-dir VIDEOS) == "" ]]; then
- dest="$(xdg-user-dir VIDEOS)/Recordings"
-fi
-lock="$HOME/.cache/recording.lock"
-pidfile="$HOME/.cache/recording.pid"
-ext="mp4" # mp4,mkv...
-filename=$(date +"%Y-%m-%d-%H%M%S_rec.$ext")
-
-mkdir -p $dest
-
-# run only if lockfile does not exist
-if ! [[ -f $lock ]]; then
- touch $lock
- wf-recorder -f "$dest/$filename" &
- rec_pid=$!
- echo -e $rec_pid > $pidfile
- wait $rec_pid && (
- notify-send -a "Screen Recorder" "Recording Done" "The screen recording has been saved as '$dest/$filename'!"
- rm -f $lock $pidfile
- )
-else
- notify-send -a "Screen Recorder" "Recording Error" "There's already an instance running! Mistake? Delete $lock and $pidfile."
- exit 1
-fi
diff --git a/eww/scripts/volume-popup-trigger.sh b/eww/scripts/volume-popup-trigger.sh
deleted file mode 100644
index a75d8ec..0000000
--- a/eww/scripts/volume-popup-trigger.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env bash
-
-while true; do
- if [[ $(eww get hold_volume_popup) == true ]]; then
- sleep 4
- sh ./eww-window.sh close volume-popup
- eww update "hold_volume_popup=false"
- else
- break
- fi
-done
-
-exit 0
diff --git a/eww/scripts/workspaces.sh b/eww/scripts/workspaces.sh
deleted file mode 100644
index 789751d..0000000
--- a/eww/scripts/workspaces.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env bash
-
-print_workspaces_literal() {
- active_workspace_id=$(hyprctl -j activeworkspace | jq -c '.id' | xargs)
- json_workspaces=$(hyprctl -j workspaces | jq -c '.')
- existing_workspaces=$(echo $json_workspaces | jq -c '.[].id' | xargs)
-
- output="
- (box :space-evenly false
- :orientation \"horizontal\""
-
- for i in {1..10}; do
- output=$output"
- (button :onclick \"hyprctl dispatch workspace $i >> /dev/null \"
- :class \"\${ $active_workspace_id == $i ? 'active' : '' } $( [[ $(echo $json_workspaces | jq -c ".[$i - 1].name") =~ "special:" ]] && echo 'special' )\"
- :visible { \"$existing_workspaces\" =~ $i ? true : false }
- :tooltip \"Workspace ${i}\"
- \"\")"
-
- if [ $i == 10 ]; then
- output=$output")" # closes box if last
- fi
- done
-
- echo "$(echo $output | xargs -0)"
-}
-
-# display workspaces on startup
-print_workspaces_literal
-
-handle() {
- case $1 in
- workspace*) print_workspaces_literal;;
- esac
-}
-
-socat -U - UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock | while read -r line; do handle "$line"; done
diff --git a/eww/styles/bar.scss b/eww/styles/bar.scss
deleted file mode 100644
index 96f6f61..0000000
--- a/eww/styles/bar.scss
+++ /dev/null
@@ -1,270 +0,0 @@
-
-.bar {
- background: transparent;
- padding: 4px;
- padding-bottom: 0;
-
- & label {
- font-weight: 500;
- }
-}
-
-/* Styles .widgets-[left/center/right] */
-.widgets-left,
-.widgets-center,
-.widgets-right {
- background: rgba($background, 0.6);
- border-radius: 18px;
- padding: 6px;
-
- & > * {
- margin: 0 3px;
- border-radius: 12px;
- &.button {
- margin: 0;
- & > box {
- margin: 0 3px;
- }
- }
- }
-
- & > *:first-child {
- margin-left: 0;
- }
-
- & > *:last-child {
- margin-right: 0;
- }
-
- & > *:only-child {
- margin: 0 0px;
- }
-}
-
-// Styles the literal script for workspace indicators
-.workspaces {
- border-radius: 50%;
-
- & button {
- border-radius: 16px;
- margin: 0 2px;
- padding: 5px 12px;
- background: lighten($color: $color1, $amount: 10);
-
- &:not(.active):hover {
- box-shadow: inset 0 0 0 50px rgba($color: $foreground, $alpha: .5);
- }
-
- &.active {
- padding-right: 22px;
- padding-left: 22px;
- background: $foreground;
- }
-
- &.special {
- background: darken($color: $color3, $amount: 5);
- }
- }
-}
-
-.distro-logo {
- padding: 0;
- padding-left: 12px;
- padding-right: 6px;
-
- & > label {
- font-size: 15px;
- padding-right: 2px;
- }
-}
-
-.systray {
- all: unset;
-
- & > * > * {
- margin: 0 6px;
- }
-}
-
-.mediaplayer {
- border-radius: 12px;
-
- & > .media {
- border-radius: inherit;
-
- &:hover {
- & > box {
- box-shadow: inset 0 0 0 50px rgba($color: $foreground, $alpha: .1);
- }
- }
- & > box {
- border-radius: inherit;
- background: darken($color: $color3, $amount: 5);
-
- & > label {
- color: $foreground;
- font-size: inherit;
-
- &:first-child {
- margin-left: 8px;
- }
-
- &:last-child {
- margin-right: 8px;
- }
- }
- }
- }
-
- &.revealed {
- transition: 80ms linear;
-
- .media > box {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
- }
-
- .media-controls {
- padding: 3px;
- background: darken($color: $color3, $amount: 10);
- border-top-right-radius: 12px;
- border-bottom-right-radius: 12px;
-
- & button {
- background: $color2;
- margin: 0 1px;
- border-radius: 2px;
-
- &:hover {
- background: lighten($color: $color2, $amount: 5);
- }
-
- &:first-child {
- border-top-left-radius: 8px;
- border-bottom-left-radius: 8px;
- margin-left: 0;
- }
-
- &:last-child {
- border-top-right-radius: 8px;
- border-bottom-right-radius: 8px;
- margin-right: 0;
- }
- }
- }
- }
-
- button {
- padding: 0 7px;
- border-radius: 0px;
- }
-}
-
-.window {
- padding: 0 6px;
-
- & > .icon {
- margin-right: 6px;
- }
-
- & > box.info {
- & > label.window-class {
- font-size: 9.8px;
- font-family: monospace;
- color: darken($color: $foreground, $amount: 20);
- margin-top: -1px;
- }
-
- & > label.window-title {
- font-size: 12px;
- color: $foreground;
- margin-top: -1px;
- }
- }
-}
-
-.network-eventbox > box {
- padding-left: 10px;
- padding-right: 7px;
-}
-
-.bluetooth button {
- padding-left: 10px;
- padding-right: 7px;
-}
-
-.audio-eventbox {
- &:hover box.audio {
- background: darken($color: $color2, $amount: 5);
- }
-
- & > .audio {
- padding: 0 8px;
- border-radius: 12px;
-
- &.open {
- background: darken($color: $color3, $amount: 10);
- }
-
- label {
- font-weight: 600;
-
- &:first-child {
- margin-right: 2px;
- }
-
- &:last-child {
- margin-left: 2px;
- }
- }
- }
-}
-
-.clock {
- & .cal-open > box {
- background: darken($color: $color3, $amount: 10);
- }
-
- & .icon {
- margin-right: 6px;
- }
-
- & label:not(.icon) {
- margin-right: 3px;
- }
-}
-
-.control-center-toggle {
- border-radius: 12px;
-
- &:hover {
- background: darken($color: $color2, $amount: 10);
- }
-
- & > box {
- padding-left: 12px;
- padding-right: 14px;
-
- label {
- font-size: 12px;
- }
- }
-
- &.open {
- background: darken($color: $color3, $amount: 10);
- }
-}
-
-.hardware {
- & > box {
- margin: 0 5px;
-
- &:first-child {
- margin-left: 0;
- }
-
- &:last-child {
- margin-right: 0;
- }
- }
-}
diff --git a/eww/styles/calendar.scss b/eww/styles/calendar.scss
deleted file mode 100644
index 005f00b..0000000
--- a/eww/styles/calendar.scss
+++ /dev/null
@@ -1,41 +0,0 @@
-
-.calendar-box {
- padding: 10px;
- background: rgba($background, 0.6);
- border-radius: 16px;
-
- & > .time {
- font-size: 42px;
- font-weight: 700;
- }
-
- & > .date {
- font-size: 12px;
- font-weight: 600;
- margin-bottom: 8px;
- }
-
- .month-calendar {
- border-radius: 12px;
- padding: 0 5px;
- padding-top: 10px;
- font-weight: 500;
-
- & > .header {
- background: unset;
- border-radius: 6px;
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
- border-bottom: solid .5px gray;
- }
-
- &:hover {
- background: $color2;
- }
-
- // Selected day / Current day
- &:selected {
- border: 1px solid $color2;
- }
- }
-}
diff --git a/eww/styles/control-center.scss b/eww/styles/control-center.scss
deleted file mode 100644
index c01eb11..0000000
--- a/eww/styles/control-center.scss
+++ /dev/null
@@ -1,202 +0,0 @@
-box.cc {
- margin: 12px;
- margin-right: 0;
- background: rgba($background, .85);
- border-top-left-radius: 24px;
- border-bottom-left-radius: 24px;
- padding: 18px;
- box-shadow: 0 3px 4px 1px $background;
-}
-
-.top-bar {
- margin-bottom: 15px;
-
- & label {
- &.hostname {
- font-size: 13.3px;
- font-weight: 700;
- border-bottom: .5px solid rgba(darken($color: $foreground, $amount: 15), .5);
- padding-bottom: 4px;
- }
-
- &.uptime {
- font-size: 11.7px;
- font-weight: 500;
- }
- }
-
- .button-row {
- margin: 7px 0;
- }
-
- .wallpaper {
- padding-left: 9px;
- padding-right: 12px;
- }
-
- .screenshot {
- padding-left: 9px;
- padding-right: 12px;
- }
-
- .color-picker {
- padding-right: 11px;
- }
-
- .powermenu {
- padding-right: 11px;
- }
-}
-
-.cc-notifications {
- &.scroll {
- .notifications {
- box.notification {
- background: darken($color: $color1, $amount: 10);
- border-radius: 16px;
- margin: 4px 0;
-
- & > .top {
- border-top-left-radius: inherit;
- border-top-right-radius: inherit;
- background: darken($color: $color1, $amount: 7);
- border-bottom: .5px solid rgba(darken($color: $foreground, $amount: 15), .3);
- padding: 5px 6px;
-
- & > .app-info {
- & .app-icon {
- margin-right: 4px;
- }
- font-weight: 600;
- }
-
- .close {
- padding: 4px 8px;
- border-radius: 9px;
- }
- }
-
- & .content {
- padding: 8px;
- padding-top: 0px;
-
- & > .image {
- border-radius: 16px;
- margin-right: 6px;
- margin-top: 6px;
- background-size: cover;
- background-repeat: no-repeat;
- background-position: center 0;
- }
-
- & .text {
- & label {
- font-family: "Cantarell", "Noto Sans", "Noto Sans CJK JP", "Noto Sans CJK KR";
- }
-
- & label.summary {
- font-weight: 600;
- font-size: 18px;
- margin-top: 6px;
- }
-
- & label.body {
- font-size: 13.1px;
- margin-bottom: 2px;
- }
- }
- }
- }
- }
- }
-
- & .bottom {
- margin-top: 4px;
-
- &.button-row {
- & button.do-not-disturb {
- padding-right: 12px;
- }
- }
- }
-}
-
-.tiles-grid {
- margin-bottom: 10px;
-}
-
-.tiles {
- margin-bottom: 2px;
-
- & > .tile-checkbox:first-child {
- margin-left: 0;
- }
-
- & > .tile-checkbox:last-child {
- margin-right: 0;
- }
-
- & .tile-checkbox {
- margin: 2px;
-
- &:hover {
- & > box {
- background: $color3;
- }
- &:checked > box {
- background: $color2;
- }
- }
-
- &:checked {
- & > box {
- background: $color2;
- }
- }
-
- & > *:not(box) {
- color: transparent;
- }
-
- & > .tile {
- background: darken($color: $foreground, $amount: 65);
- border-radius: 16px;
- padding: 16px;
- margin-left: -16px; // This covers the checkbox space, hiding the check thing
-
- .icon {
- font-size: 15px;
- padding-right: 5px;
- }
-
- .label {
- font-size: 12.6px;
- font-weight: 600;
- }
- }
- }
-
- & .network {
- .icon {
- margin-right: 5px;
- }
- }
-
- & .dnd {
- .icon {
- margin-right: 4px;
- }
- }
-
- & .screen-rec {
- .icon {
- margin-right: 4px;
- }
- }
-
- & .night-light {
- .icon {
- margin-right: 4px;
- }
- }
-}
diff --git a/eww/styles/floating-notifications.scss b/eww/styles/floating-notifications.scss
deleted file mode 100644
index fd60d7e..0000000
--- a/eww/styles/floating-notifications.scss
+++ /dev/null
@@ -1,76 +0,0 @@
-.floating-notifications {
- & > .notifications .floating-notification {
- $background-color: darken($color: $color1, $amount: 40);
- background: $background-color;
- border-radius: 16px;
- margin: 14px;
- box-shadow: 0 0 8px 2px rgba($background, .9);
-
- & > .top {
- border-top-left-radius: 15.4px;
- border-top-right-radius: 15.4px;
- padding: 6px 12px;
- background: lighten($color: $background-color, $amount: 5);
- border-bottom: .5px solid rgba($foreground, .2);
-
- label {
- font-family: "Noto Sans Mono", monospace;
- font-size: 11px;
- }
- }
-
- .content {
- padding: 10px;
-
- .image {
- background-position: center;
- background-size: cover;
- margin-right: 6px;
- border-radius: 12px;
- }
-
- .text-content {
-
- label.summary {
- font-size: 16px;
- font-weight: 700;
- }
-
- label.body {
- font-size: 13.3px;
- }
-
- padding-bottom: 2px;
- }
- }
-
- }
-
- & > .bottom {
- padding: 8px;
- margin: 0 8px;
-
- & .tip {
- background: darken($color: $color1, $amount: 40);
- border-radius: 12px;
- padding: 8px 12px;
- box-shadow: 0 0 0px 1px $background;
-
- & > .icon {
- margin-right: 4px;
- font-size: 16px;
- }
- }
-
- & > .right {
- background: darken($color: $color1, $amount: 40);
- border-radius: 12px;
- box-shadow: 0 0 0px 1px $background;
-
- & .icon {
- margin-right: 4px;
- font-size: 16px;
- }
- }
- }
-}
diff --git a/eww/styles/general.scss b/eww/styles/general.scss
deleted file mode 100644
index 11fbfae..0000000
--- a/eww/styles/general.scss
+++ /dev/null
@@ -1,230 +0,0 @@
-
-$foreground: lighten($color: $foreground, $amount: 5);
-
-* {
- all: unset;
- transition: 120ms linear;
- font-size: 12px;
-}
-
-label {
- color: lighten($foreground, 15)
-}
-
-box.button-row {
- $bg-color: darken($color: $foreground, $amount: 25);
-
- & > button {
- background: rgba($bg-color, .8);
- border-radius: 1px;
- margin: 0 1px;
-
- &:first-child {
- border-top-left-radius: 8px;
- border-bottom-left-radius: 8px;
- }
-
- &:last-child {
- border-top-right-radius: 8px;
- border-bottom-right-radius: 8px;
- }
-
- &:hover {
- background: $bg-color;
- }
- }
-}
-
-box.vertical.button-row {
- padding: 2px;
- $bg-color: darken($color: $foreground, $amount: 25);
-
- & > button {
- background: rgba($bg-color, .8);
- border-radius: 2px;
- margin: 1px 0;
-
- &:first-child {
- border-top-left-radius: 8px;
- border-top-right-radius: 8px;
- }
-
- &:last-child {
- border-bottom-left-radius: 8px;
- border-bottom-right-radius: 8px;
- }
-
- &:hover {
- background: $bg-color;
- }
- }
-}
-
-button,
-.button > box {
- padding: 6px 10px;
- border-radius: 12px;
- background: none;
-}
-
-button:hover,
-.button:hover > box {
- background: darken($color: $color2, $amount: 5);
-}
-
-button:active,
-.button:active > box {
- background: darken($color: $color3, $amount: 10);
-}
-
-button label {
- color: $foreground;
-}
-
-menu {
- background: $background;
- border-radius: 14px;
- padding: 2px;
-
- & > menuitem {
- padding: 8px 24px;
- border-radius: 4px;
-
- &:hover {
- background: $color1;
- }
-
- &:first-child {
- border-top-left-radius: 12px;
- border-top-right-radius: 12px;
- }
-
- &:last-child {
- border-bottom-left-radius: 12px;
- border-bottom-right-radius: 12px;
- }
-
- label {
- font-weight: 600;
- color: $foreground;
- }
- }
-
- & > separator {
- background: lighten($color: $background, $amount: 5);
- margin: .5px 10px;
- padding: 1px 0;
- border-radius: 1px;
- }
-}
-
-trough {
- background: darken($color: $foreground, $amount: 25);
- border-radius: 4px;
-}
-
-trough highlight {
- background: $foreground;
- padding: 10px;
- border-radius: inherit;
-}
-
-scale {
- padding: 10px;
-}
-
-scrollbar trough {
- background: rgba(darken($color: $foreground, $amount: 50), .7);
- margin: 5px 0;
- padding: 2px;
-
- & slider {
- background: lighten($color: $color1, $amount: 15);
- padding: 3px;
- border-radius: inherit;
- }
-}
-
-tooltip {
- & box {
- margin: 16px;
- margin-top: 0;
- border-radius: 12px;
- border: 1px solid darken($color: $color1, $amount: 1);
- background: $background;
- padding: 6px 8px;
- box-shadow: 0 3px 5px 1px rgba($color: #000000, $alpha: .8);
- }
-}
-
-
-.big-media {
- padding: 16px;
- margin: 6px 0;
- border-radius: 18px;
-
- & > box > .album-image {
- background-size: 100%;
- background-repeat: no-repeat;
- background-position: center 0;
- margin-right: 12px;
- border-radius: 12px;
- }
-
- & > box > .right {
-
- & > .media-info {
- label {
- font-family: "Cantarell", "Noto Sans CJK JP";
- }
-
- & label.title {
- font-weight: 700;
- font-size: 16px;
- margin-bottom: 6px;
- }
-
- & label.artist {
- font-weight: 600;
- font-size: 12px;
- margin-bottom: 12px;
- }
- }
-
- & > .controls {
- padding: 0px;
-
- & > button {
- padding: 4px 9px;
-
- & > label {
- font-size: 13.3px;
- }
- }
-
- & > button.repeat {
- padding-right: 11px;
- }
- }
- }
-
- &.album-bg {
- box-shadow: inset 0 0 0 100px rgba(0, 0, 0, .5);
- background-size: cover;
- }
-
-}
-
-.separator {
- background: darken($color: $foreground, $amount: 20);
-
- &.horizontal {
- margin: 8px 4px;
- padding: 0 1px;
- }
-
- &.vertical {
- margin: 4px 10px;
- padding: 1px 0;
- }
-}
diff --git a/eww/styles/powermenu.scss b/eww/styles/powermenu.scss
deleted file mode 100644
index b209409..0000000
--- a/eww/styles/powermenu.scss
+++ /dev/null
@@ -1,32 +0,0 @@
-
-.powermenu-container {
- margin: 400px 100px;
-
- & * {
- outline: initial;
- }
- & > button {
- padding: 96px;
- margin: 0 6px;
- border-radius: 6px;
- background: darken($color: $foreground, $amount: 35);
-
- &:first-child {
- border-top-left-radius: 24px;
- border-bottom-left-radius: 24px;
- }
-
- &:last-child {
- border-top-right-radius: 24px;
- border-bottom-right-radius: 24px;
- }
-
- & label {
- font-size: 98px;
- }
- }
-
- & button:hover {
- background: $color1;
- }
-}
diff --git a/eww/styles/volume-control.scss b/eww/styles/volume-control.scss
deleted file mode 100644
index b5e4b5c..0000000
--- a/eww/styles/volume-control.scss
+++ /dev/null
@@ -1,36 +0,0 @@
-
-.volume-control {
- background: rgba($background, .6);
- padding: 6px;
- border-radius: 16px;
-
- trough {
- background: rgba(lighten($color: $background, $amount: 25), .5);
- border-radius: 6px;
- }
-
- trough highlight {
- background: lighten($color: $color2, $amount: 40);
- padding: 10px;
- border-radius: inherit;
- }
-
- scale {
- padding: 10px;
- }
-}
-
-.volume-control .separator {
- border-top: .5px solid rgba(darken($color: $foreground, $amount: 25), .7);
- margin-bottom: 8px;
- margin-left: 6px;
- margin-right: 6px;
- border-radius: 1px;
-}
-
-.volume-control .slider {
- label {
- margin-left: 18px;
- color: $background;
- }
-}
diff --git a/eww/variables.yuck b/eww/variables.yuck
deleted file mode 100644
index 6b4893b..0000000
--- a/eww/variables.yuck
+++ /dev/null
@@ -1,59 +0,0 @@
-; All globally used variables, polls and listeners should be stored here
-
-; Variables
-; State
-(defvar window_state_powermenu "closed")
-(defvar window_state_control-center "closed")
-(defvar window_state_floating-notifications "closed")
-(defvar window_state_bar "closed")
-(defvar window_state_volume-control "closed")
-(defvar window_state_calendar-window "closed")
-(defvar window_state_volume-popup "closed")
-(defvar window_state_floating-media "closed")
-
-(defvar json_popup_notifications "{ \"notifications\": [] }")
-
-
-; Listeners
-(deflisten json_notification_history :initial "{\"history\": []}"
-`sh scripts/notification-watch.sh`)
-
-(deflisten json_volume :initial `{ "output": 60, "source": 80 }`
-`sh scripts/get-volume-watch.sh`)
-
-(deflisten literal_workspaces :initial ""
-`sh scripts/workspaces.sh`)
-
-(deflisten json_media :initial "{}"
-`python3 scripts/mediaplayer.py`)
-
-(deflisten json_active_window :initial "{ \"title\": \"null\", \"class\": \"null\" }"
-`sh scripts/active-window.sh`)
-
-
-; Polls
-(defpoll day_name :interval "2s"
-`date +"%A"`)
-(defpoll month_name :interval "2s"
-`date +"%B"`)
-(defpoll hostname :initial "GNU/Linux"
- :interval "24h"
-`cat /etc/hostname`)
-
-(defpoll uptime_info :interval "50s"
-`uptime -p | sed -e 's/^up //'`)
-
-(defpoll network_status :interval "2s"
-`nmcli n c`)
-
-(defpoll bluetooth_powered :interval "2s"
-`bluetoothctl show | grep Powered | awk '{ print $2 }'`)
-
-(defpoll notification_modes :interval "1s"
-`makoctl mode | xargs`)
-
-(defpoll is_recording :interval "1s"
-`sh -c "[[ -f $HOME/.cache/recording.lock ]] && echo true || echo false"`)
-
-(defpoll night_light :interval "1s"
-`sh -c "[[ -f $HOME/.cache/night-light.pid ]] && echo true || echo false"`)
diff --git a/eww/widgets/bar/audio.yuck b/eww/widgets/bar/audio.yuck
deleted file mode 100644
index a13d8b0..0000000
--- a/eww/widgets/bar/audio.yuck
+++ /dev/null
@@ -1,13 +0,0 @@
-
-(defwidget audio []
- (eventbox :onclick "sh ${EWW_CONFIG_DIR}/scripts/eww-window.sh toggle volume-control"
- :class "audio-eventbox"
- :cursor "pointer"
- (box :class "audio ${window_state_volume-control}"
- (eventbox :onscroll `[ {} == "up" ] && wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ || wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-`
- (label :text "${ json_volume.output != 0 ? '' : '' } ${json_volume.output}%"))
- (eventbox :onscroll `[ {} == "up" ] && wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%+ || wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%-`
- (label :text "${ json_volume.source != 0 ? '' : '' } ${json_volume.source}%"))
- )
- )
-)
diff --git a/eww/widgets/bar/battery.yuck b/eww/widgets/bar/battery.yuck
deleted file mode 100644
index 442e23c..0000000
--- a/eww/widgets/bar/battery.yuck
+++ /dev/null
@@ -1,6 +0,0 @@
-(defwidget battery [ ?device ]
- (box :class "battery"
- :visible { EWW_BATTERY != "" ? true : false }
- (label :text " ${ EWW_BATTERY != '' ? EWW_BATTERY?.status : '' }%")
- )
-)
diff --git a/eww/widgets/bar/cc-toggle.yuck b/eww/widgets/bar/cc-toggle.yuck
deleted file mode 100644
index facd6d1..0000000
--- a/eww/widgets/bar/cc-toggle.yuck
+++ /dev/null
@@ -1,10 +0,0 @@
-
-(defwidget cc-toggle []
- (eventbox :onclick "sh scripts/eww-window.sh toggle control-center"
- :onrightclick "makoctl mode -t dnd"
- :class "control-center-toggle ${ window_state_control-center == "open" ? "open" : "closed" }"
- (box :class "button"
- { notification_modes =~ "dnd" ? "" : ""}
- )
- )
-)
diff --git a/eww/widgets/bar/clock.yuck b/eww/widgets/bar/clock.yuck
deleted file mode 100644
index 3790f9a..0000000
--- a/eww/widgets/bar/clock.yuck
+++ /dev/null
@@ -1,26 +0,0 @@
-(defwidget clock []
- (box :class "clock"
- :tooltip { day_name + ", " + month_name + formattime(EWW_TIME, " %d") }
-
- (eventbox :onclick "sh scripts/eww-window.sh toggle calendar-window"
- :class '${ window_state_calendar-window == "open" ? "cal-open" : "" } button'
- (box :space-evenly false
- (box :space-evenly false
- :class "time"
- (label :text ""
- :class "icon")
-
- (label :text "${day_name}")
-
- (revealer :reveal { window_state_calendar-window == "closed" }
- :transition "slideright"
- :duration "240ms"
- :class "unrevealer"
-
- (label :text { formattime(EWW_TIME, "%d, %H:%M") } )
- )
- )
- )
- )
- )
-)
diff --git a/eww/widgets/bar/hardware.yuck b/eww/widgets/bar/hardware.yuck
deleted file mode 100644
index 5b5a923..0000000
--- a/eww/widgets/bar/hardware.yuck
+++ /dev/null
@@ -1,19 +0,0 @@
-(defwidget hardware [ ?cpu ?memory ?visible ]
- (eventbox :class "hardware-eventbox button"
- :onclick "sh ${EWW_CONFIG_DIR}/scripts/eww-window.sh toggle hardware-monitor"
- :visible { visible == "" || visible ? true : false }
- (box :class "hardware"
- :space-evenly false
- (box :class "cpu"
- :visible { cpu == "" || cpu ? true : false }
- :tooltip { "CPU: " + arraylength(EWW_CPU?.cores) + " Threads" }
- (label :text " ${ round(EWW_CPU?.avg, 0) }%")
- )
- (box :class "memory"
- :visible { memory == "" || memory ? true : false }
- :tooltip { "Total Memory: " + round(EWW_RAM?.total_mem / 1000000000, 1) + " GiB(s)" }
- (label :text " ${ round(EWW_RAM?.used_mem_perc, 0) }%")
- )
- )
- )
-)
diff --git a/eww/widgets/bar/logo.yuck b/eww/widgets/bar/logo.yuck
deleted file mode 100644
index e8b98a6..0000000
--- a/eww/widgets/bar/logo.yuck
+++ /dev/null
@@ -1,5 +0,0 @@
-(defwidget logo []
- (button :class "distro-logo"
- :onclick "hyprctl dispatch exec anyrun"
- " ")
-)
diff --git a/eww/widgets/bar/media.yuck b/eww/widgets/bar/media.yuck
deleted file mode 100644
index f21cc24..0000000
--- a/eww/widgets/bar/media.yuck
+++ /dev/null
@@ -1,65 +0,0 @@
-
-(defvar media_reveal_controls false)
-
-(defwidget media []
- (eventbox :onhover "${EWW_CMD} update media_reveal_controls=true"
- :onhoverlost "${EWW_CMD} update media_reveal_controls=false"
- :visible { json_media == "" || (json_media.title == "null" &&
- json_media.artist == "null") ||
- (json_active_window.class =~ json_media.player ||
- json_active_window.title =~ json_media.title) ?
- false : true
- }
- :onclick "sh scripts/eww-window.sh toggle floating-media"
- :class "mediaplayer-eventbox"
-
- (box :class "mediaplayer ${ media_reveal_controls && window_state_floating-media == "closed" ? 'revealed' : '' }"
- :space-evenly false
-
- (eventbox :class "media"
- :tooltip "${json_media.title} - ${json_media.artist}"
-
- (box :space-evenly false
- (label :class "player"
- :text { json_media.player == "spotify" ? " " : " " })
-
- (label :class "media-title"
- :text "${json_media.title}"
- :limit-width 40)
-
- (separator :orientation "horizontal"
- :alpha 0.8
- :style "border-radius: 2x;")
-
- (label :class "media-artist"
- :text "${json_media.artist}"
- :limit-width 25)
- )
- )
- (revealer :class "media-controls-revealer"
- :reveal { media_reveal_controls ? "${ window_state_floating-media == 'closed' ? true : false }" : false }
- :transition "slideright"
- :duration "220ms"
-
- (box :class "media-controls"
- (button :class "url"
- :onclick "wl-copy '${json_media.url}'"
- :tooltip "Copy link to Clipboard"
- :visible { json_media.url != "" && json_media.url != "null" }
- "")
- (button :class "previous"
- :onclick "playerctl previous --player=${json_media.player}"
- "")
-
- (button :class "toggle play-pause"
- :onclick "playerctl play-pause --player=${json_media.player}"
- { json_media.status == "playing" ? "" : "" })
-
- (button :class "next"
- :onclick "playerctl next --player=${json_media.player}"
- "")
- )
- )
- )
- )
-)
diff --git a/eww/widgets/bar/network.yuck b/eww/widgets/bar/network.yuck
deleted file mode 100644
index 0298d4f..0000000
--- a/eww/widgets/bar/network.yuck
+++ /dev/null
@@ -1,8 +0,0 @@
-(defwidget network []
- (eventbox :class "button network-eventbox"
- :onclick "hyprctl dispatch exec 'nm-connection-editor'"
- (box :class "network"
- (label :text "${ network_status == 'full' ? ' ' : ' ' }")
- )
- )
-)
diff --git a/eww/widgets/bar/window.yuck b/eww/widgets/bar/window.yuck
deleted file mode 100644
index f318a56..0000000
--- a/eww/widgets/bar/window.yuck
+++ /dev/null
@@ -1,29 +0,0 @@
-
-(defwidget window []
- (box :class "window"
- :visible { json_active_window.class == "" || json_active_window.class == "null" ? false : true }
- :space-evenly false
- :valign "center"
- :orientation "horizontal"
-
- (image :class "icon"
- :icon "${ json_active_window.initialClass =~ 'zen' ? 'zen-browser' : json_active_window.initialClass }"
- :icon-size "toolbar")
-
- (box :class "info"
- :orientation { json_active_window.title == "" ? "horizontal" : "vertical" }
- :space-evenly false
- (label :class "window-class"
- :text "${json_active_window.class}"
- :xalign 0
- :yalign 0)
- (label :class "window-title"
- :text "${json_active_window.title}"
- :visible { json_active_window.title != "" ? true : false }
- :limit-width 45
- :tooltip "${json_active_window.title}"
- :xalign 0
- :yalign 0)
- )
- )
-)
diff --git a/eww/widgets/bar/workspaces.yuck b/eww/widgets/bar/workspaces.yuck
deleted file mode 100644
index e92e188..0000000
--- a/eww/widgets/bar/workspaces.yuck
+++ /dev/null
@@ -1,13 +0,0 @@
-(defvar hover_workspaces false)
-
-(defwidget workspaces []
- (eventbox :onscroll "[[ {} == up ]] && hyprctl dispatch workspace e+1 >> /dev/null || hyprctl dispatch workspace e-1 >> /dev/null"
- :class "workspaces-eventbox"
- :onhover "${EWW_CMD} update hover_workspaces=true"
- :onhoverlost "${EWW_CMD} update hover_workspaces=false"
- (box :class "workspaces"
- :valign "center"
- (literal :content literal_workspaces)
- )
- )
-)
diff --git a/eww/widgets/big-media.yuck b/eww/widgets/big-media.yuck
deleted file mode 100644
index 0fc4abf..0000000
--- a/eww/widgets/big-media.yuck
+++ /dev/null
@@ -1,84 +0,0 @@
-(defwidget big-media [ show-album-bg show-album-image ?album-image-size ?style ?visible ]
- (box :class "big-media ${ show-album-bg ? 'album-bg' : '' } ${ show-album-image ? 'album-image' : '' }"
- :style "${ show-album-bg ? "background-image: url(\"${ json_media.artUrl != "null" ? json_media.artUrl : '' }\")" : "" }; ${style}"
- :visible { visible == false ? false : true }
- :space-evenly false
- :orientation "vertical"
-
- (box :orientation "horizontal"
- :space-evenly false
- :class "media"
-
- (box :class "album-image"
- :width { album-image-size != "" ? album-image-size : 98 }
- :height { album-image-size != "" ? "${album-image-size - 11}" : 87 }
- :style "background-image: url(\"${ json_media.artUrl != "null" ? json_media.artUrl : "" }\");"
- :valign "center"
- :visible { json_media.artUrl == "null" || !show-album-image ? false : true })
-
- (box :orientation "vertical"
- :space-evenly false
- :class "right"
- :valign "center"
-
- (box :class "media-info"
- :space-evenly false
- :orientation "vertical"
-
- (label :class "title"
- :text "${json_media.title}"
- :xalign 0
- :limit-width 40
- :show-truncated true)
- (label :class "artist"
- :text "${json_media.artist}"
- :xalign 0
- :limit-width 40
- :show-truncated true)
- )
-
- (box :class "controls"
- :orientation "horizontal"
- :space-evenly false
- :halign "start"
-
- (box :class "button-row"
- :orientation "horizontal"
- :space-evenly false
- :halign "start"
- :visible { json_media.url != "null" ? true : false }
-
- (button :class "url"
- :onclick "wl-copy '${json_media.url}'"
- :style "padding-right: 13px;"
- :tooltip "Copy link to Clipboard"
- "")
- )
-
- (box :class "button-row"
- :orientation "horizontal"
- :space-evenly false
- :halign "start"
-
- (button :class "shuffle"
- :onclick "playerctl --player=${json_media.player} shuffle Toggle"
- :tooltip "Toggle shuffle"
- "")
- (button :class "previous"
- :onclick "playerctl --player=${json_media.player} previous"
- :tooltip "Previous"
- "")
- (button :class "play-pause"
- :onclick "playerctl --player=${json_media.player} play-pause"
- :tooltip { json_media.status == "playing" ? "Pause" : "Play" }
- { json_media.status == "playing" ? "" : "" })
- (button :class "next"
- :onclick "playerctl --player=${json_media.player} next"
- :tooltip "Next"
- "")
- )
- )
- )
- )
- )
-)
diff --git a/eww/widgets/control-center/notification.yuck b/eww/widgets/control-center/notification.yuck
deleted file mode 100644
index 7a79576..0000000
--- a/eww/widgets/control-center/notification.yuck
+++ /dev/null
@@ -1,59 +0,0 @@
-(defwidget notification [ ?application_name ?icon summary body ?image ?onclickclose ?onclick ]
- (eventbox :onclick "${onclick}"
- (box :class "notification"
- :orientation "vertical"
- :height 96
- :space-evenly false
-
- (box :class "top"
- :orientation "horizontal"
- :space-evenly false
-
- (box :class "app-info"
- :space-evenly false
- :halign "start"
- :hexpand true
- :vexpand false
-
- (image :class "app-icon"
- :visible { icon != "" ? true : false }
- :icon "${icon}"
- :icon-size "menu")
- (label :class "app-name"
- :text "${application_name}")
- )
- (button :class "close"
- :onclick "${onclickclose}"
- :visible true
- "")
- )
-
- (box :class "content"
- :space-evenly false
- (box :class "image"
- :width 96
- :height 96
- :visible { image != "" && image != "\{\}" ? true : false }
- :style { image != "" ? "background-image: url('${ image =~ "^file://(.*)$" || image =~ "^http(.*)://(.*)$" ? image : "${ "file://" + image }" }');" : "" }
- )
-
- (box :class "text"
- :orientation "vertical"
- :space-evenly false
-
- (label :class "summary"
- :markup "${summary}"
- :xalign 0
- :halign "start"
- :show-truncated true)
-
- (label :class "body"
- :markup "${body}"
- :xalign 0
- :show-truncated false
- :wrap true)
- )
- )
- )
- )
-)
diff --git a/eww/widgets/control-center/notifications.yuck b/eww/widgets/control-center/notifications.yuck
deleted file mode 100644
index 74c07cf..0000000
--- a/eww/widgets/control-center/notifications.yuck
+++ /dev/null
@@ -1,38 +0,0 @@
-(defwidget notifications []
- (scroll :class "cc-notifications scroll"
- :hscroll false
- :vscroll true
- :vexpand true
- :style "border-radius: 16px;"
-
- (box :class "notifications"
- :orientation "vertical"
- :space-evenly false
-
- (for notification in { json_notification_history["history"] }
- (notification :application_name "${notification.app-name.data}"
- :image "${notification.app-icon.data}"
- :summary "${notification.summary.data}"
- :body "${notification.body.data}"
- :onclickclose "sh scripts/notification-remove.sh ${notification.id.data}"
- :icon "${notification.app-name.data}")
- )
-
- (box :class "empty-notifications"
- :visible { arraylength(json_notification_history["history"]) == 0 }
- :style "margin-top: 50px;"
- :space-evenly false
- :orientation "vertical"
- :halign "center"
- :valign "center"
-
- (label :class "bell-icon"
- :text ""
- :style "font-size: 96px")
-
- (label :text "You're done!"
- :style "margin-left: 12px;")
- )
- )
- )
-)
diff --git a/eww/widgets/control-center/tiles.yuck b/eww/widgets/control-center/tiles.yuck
deleted file mode 100644
index 72e495e..0000000
--- a/eww/widgets/control-center/tiles.yuck
+++ /dev/null
@@ -1,75 +0,0 @@
-(defwidget tiles []
- (box :class "tiles-grid"
- :orientation "vertical"
- (box :class "tiles tiles1"
- (tile :icon ''
- :label "Network"
- :enabled { network_status == "full" ? true : false }
- :onenable "nmcli n on > /dev/null"
- :ondisable "nmcli n off > /dev/null"
- :visible true
- :class "network")
-
- (tile :icon ''
- :label "Bluetooth"
- :enabled { bluetooth_powered == "yes" ? true : false }
- :onenable "bluetoothctl power on > /dev/null"
- :ondisable "bluetoothctl power off > /dev/null"
- :visible { bluetooth_powered == "" ? false : true })
-
- (tile :icon ''
- :label "Do Not Disturb"
- :enabled { notification_modes =~ "dnd" ? true : false }
- :onenable "makoctl mode -a dnd"
- :ondisable "makoctl mode -r dnd"
- :visible true
- :class "dnd")
- )
- (box :class "tiles tiles2"
- :visible true
- (tile :icon ''
- :label "Airplane Mode"
- :enabled { (network_status != "full" && network_status != "partial") && bluetooth_powered != "yes" ? true : false }
- :onenable "bluetoothctl power off; nmcli n off"
- :ondisable "bluetoothctl power on; nmcli n on")
- (tile :icon ''
- :label "Screen Record"
- :enabled "${is_recording}"
- :onenable "hyprctl dispatch exec \"sh $HOME/.config/eww/scripts/screen-recording.sh\" >> /dev/null"
- :ondisable "kill $(cat $HOME/.cache/recording.pid)"
- :class "screen-rec")
- (tile :icon ''
- :label "Night Light"
- :enabled "${night_light}"
- :onenable "hyprctl dispatch exec \"sh $HOME/.config/eww/scripts/night-light.sh\""
- :ondisable "kill $(cat $HOME/.cache/night-light.pid)"
- :class "night-light")
- )
- )
-)
-
-(defwidget tile [ ?class icon label ?onclickarrow ?enabled onenable ondisable ?visible ?min-width ]
- (checkbox :onchecked "${onenable}"
- :onunchecked "${ondisable}"
- :visible { visible == "" || visible ? true : false }
- :checked { enabled == "" || !enabled ? false : true }
- :timeout "2s"
- :class "tile-checkbox ${class}"
-
- (box :class "tile"
- :space-evenly false
- :valign "center"
-
- (label :text "${icon}"
- :class "icon"
- :unindent true
- :limit-width 1
- :show-truncated false
- :xalign 0)
-
- (label :text "${label}"
- :class "label"
- :xalign 0)
- )
- )
-)
diff --git a/eww/widgets/control-center/top-bar.yuck b/eww/widgets/control-center/top-bar.yuck
deleted file mode 100644
index 302a08d..0000000
--- a/eww/widgets/control-center/top-bar.yuck
+++ /dev/null
@@ -1,46 +0,0 @@
-(defwidget top-bar []
- (box :class "top-bar"
- :orientation "horizontal"
-
- (box :class "left"
- :orientation "vertical"
- :halign "start"
- :space-evenly false
-
- (label :xalign 0
- :text " ${hostname}"
- :class "hostname")
-
- (label :xalign 0
- :text " ${uptime_info}"
- :class "uptime")
- )
-
- (box :orientation "horizontal"
- :class "button-row"
- :space-evenly false
- :halign "end"
-
- (button :class "lock"
- :onclick "hyprctl dispatch exec hyprlock"
- :tooltip "Lock"
- '')
- (button :class "color-picker"
- :onclick "hyprctl dispatch exec 'sh $HOME/.config/eww/scripts/color-picker.sh'"
- :tooltip "Pick a Color"
- '')
- (button :class "screenshot"
- :onclick "hyprctl dispatch exec 'hyprshot -m region -o $HOME/Screenshots'"
- :tooltip "Select to screenshot"
- '')
- (button :class "wallpaper"
- :onclick "hyprctl dispatch exec 'sh $HOME/.config/hypr/scripts/change-wallpaper.sh'"
- :tooltip "Select a wallpaper"
- '')
- (button :class "powermenu"
- :onclick "sh scripts/eww-window.sh close bar && sh scripts/eww-window.sh open powermenu"
- :tooltip "Choose power options"
- '')
- )
- )
-)
diff --git a/eww/widgets/separator.yuck b/eww/widgets/separator.yuck
deleted file mode 100644
index e21587d..0000000
--- a/eww/widgets/separator.yuck
+++ /dev/null
@@ -1,4 +0,0 @@
-(defwidget separator [ ?orientation ?alpha ?style ]
- (box :class "separator ${ orientation == '' || orientation == 'horizontal' || orientation == "h" ? 'horizontal' : 'vertical' }"
- :style "opacity: ${ alpha == '' ? 1 : alpha }; ${style}")
-)
diff --git a/eww/widgets/volume-control/output-slider.yuck b/eww/widgets/volume-control/output-slider.yuck
deleted file mode 100644
index b02c627..0000000
--- a/eww/widgets/volume-control/output-slider.yuck
+++ /dev/null
@@ -1,19 +0,0 @@
-(defwidget output-slider []
- (box :class "slider output-slider"
- :space-evenly true
-
- (overlay
- (scale :min 0
- :max 101 ; dirty fix max 99% volume
- :value "${json_volume.output}"
- :orientation "horizontal"
- :draw-value false
- :flipped false
- :onchange "wpctl set-volume @DEFAULT_AUDIO_SINK@ $(awk -v n={} 'BEGIN { print (n / 100) }')"
- :tooltip "${json_volume.output}")
-
- (label :text ""
- :xalign 0)
- )
- )
-)
diff --git a/eww/widgets/volume-control/source-slider.yuck b/eww/widgets/volume-control/source-slider.yuck
deleted file mode 100644
index 1e9e01d..0000000
--- a/eww/widgets/volume-control/source-slider.yuck
+++ /dev/null
@@ -1,20 +0,0 @@
-(defwidget source-slider []
- (box :class "slider source-slider"
- :space-evenly true
-
- (overlay
- (scale :min 0
- :max 101 ; dirty fix 99% max volume
- :value "${json_volume.source}"
- :orientation "horizontal"
- :draw-value false
- :flipped false
- :onchange "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ $(awk -v n={} 'BEGIN { print (n / 100) }')"
- :class "output-volume-slider"
- :tooltip "${json_volume.source}")
-
- (label :text ""
- :xalign 0)
- )
- )
-)
diff --git a/eww/windows/bar.yuck b/eww/windows/bar.yuck
deleted file mode 100644
index d789230..0000000
--- a/eww/windows/bar.yuck
+++ /dev/null
@@ -1,60 +0,0 @@
-(include "widgets/bar/workspaces.yuck")
-(include "widgets/bar/clock.yuck")
-(include "widgets/bar/cc-toggle.yuck")
-(include "widgets/bar/audio.yuck")
-(include "widgets/bar/media.yuck")
-(include "widgets/bar/logo.yuck")
-(include "widgets/bar/window.yuck")
-(include "widgets/bar/network.yuck")
-(include "widgets/bar/battery.yuck")
-(include "widgets/bar/hardware.yuck")
-
-(defwindow bar
- :monitor 0
- :geometry (geometry :width "100%"
- :height "46px"
- :anchor "top center")
- :stacking "fg"
- :exclusive true
- :namespace "eww-bar"
- (box :class "bar"
- :vexpand true
- :hexpand false
- (centerbox :orientation "horizontal"
- (box :class "widgets-left"
- :halign "start"
- :space-evenly false
- :vexpand true
-
- (logo)
- (workspaces)
- (window)
- )
- (box :class "widgets-center"
- :halign "center"
- :space-evenly false
- :vexpand true
-
- (clock)
- (media)
- )
- (box :class "widgets-right"
- :halign "end"
- :space-evenly false
- :vexpand true
-
- (systray :spacing 0
- :orientation "horizontal"
- :space-evenly false
- :icon-size 14
- :prepend-new false
- :class "systray"
- )
- (audio)
- (battery)
- (network)
- (cc-toggle)
- )
- )
- )
-)
diff --git a/eww/windows/calendar-window.yuck b/eww/windows/calendar-window.yuck
deleted file mode 100644
index 45a8f15..0000000
--- a/eww/windows/calendar-window.yuck
+++ /dev/null
@@ -1,24 +0,0 @@
-(defwindow calendar-window
- :monitor 0
- :geometry (geometry :anchor "top center"
- :y "5px")
- :stacking "fg"
- :exclusive false
- :namespace "eww-calendar"
-
- (box :class "calendar-box"
- :space-evenly false
- :orientation "vertical"
-
- (label :class "time"
- :text { formattime(EWW_TIME, "%H:%M") })
-
- (label :class "date"
- :text { month_name + formattime(EWW_TIME, " %d, %Y") })
- (calendar :class "month-calendar"
- :show-details true
- :show-heading true
- :show-day-names true
- :show-week-numbers false)
- )
-)
diff --git a/eww/windows/control-center.yuck b/eww/windows/control-center.yuck
deleted file mode 100644
index edc031e..0000000
--- a/eww/windows/control-center.yuck
+++ /dev/null
@@ -1,47 +0,0 @@
-(include "widgets/control-center/top-bar.yuck")
-(include "widgets/control-center/notifications.yuck")
-(include "widgets/control-center/notification.yuck")
-(include "widgets/control-center/tiles.yuck")
-
-(defwindow control-center []
- :monitor 0
- :geometry (geometry :width "500px"
- :height "90%"
- :anchor "top right")
- :stacking "overlay"
- :exclusive false
- :namespace "eww-cc"
-
- (box :orientation "horizontal"
- (eventbox
- (box :class "cc"
- :orientation "vertical"
- :space-evenly false
-
- (top-bar)
- (tiles)
- (revealer :reveal { window_state_floating-media != "open" }
- :transition "slideup"
- :duration "380ms"
-
- (big-media :show-album-bg true
- :show-album-image true
- :visible { json_media == "" || (json_media.title == "null"
- && json_media.artist == "null") ? false : true })
- )
- (separator :orientation "vertical"
- :alpha ".08")
- (notifications)
- (box :class "bottom button-row"
- :halign "end"
- :space-evenly false
-
- (button :class "clear-all"
- :onclick "sh scripts/notification-clear.sh"
- :visible { arraylength(json_notification_history["history"]) > 0 }
- " Clear")
- )
- )
- )
- )
-)
diff --git a/eww/windows/floating-media.yuck b/eww/windows/floating-media.yuck
deleted file mode 100644
index c25ed6a..0000000
--- a/eww/windows/floating-media.yuck
+++ /dev/null
@@ -1,24 +0,0 @@
-(defwindow floating-media []
- :monitor 0
- :geometry (geometry :anchor "top center"
- :width "460px"
- :y "5px")
- :exclusive false
- :stacking "fg"
- :focusable false
- :namespace "eww-media"
- (box :class "floating-media"
- :orientation "vertical"
- :space-evenly false
- :visible { json_media == "" || (json_media.title == "null"
- && json_media.artist == "null") ? false : true }
-
- (big-media :show-album-bg true
- :album-image-size 128
- :show-album-image true
- :style "margin: 16px; margin-top: 0; box-shadow:
- 0 5px 6px 1px rgba(0, 0, 0, .6),
- inset 0 0 0 200px rgba(0, 0, 0, .52);"
- :visible true)
- )
-)
diff --git a/eww/windows/floating-notifications.yuck b/eww/windows/floating-notifications.yuck
deleted file mode 100644
index 094028e..0000000
--- a/eww/windows/floating-notifications.yuck
+++ /dev/null
@@ -1,115 +0,0 @@
-(defwindow floating-notifications []
- :monitor 0
- :exclusive false
- :focusable false
- :namespace "eww-notification-popup"
- :geometry (geometry :anchor "top right"
- :width "512px"
- :height "1px"
- :x "5px"
- :y "6px")
- :stacking "overlay"
-
- (box :class "floating-notifications"
- :orientation "vertical"
- :space-evenly false
- :hexpand true
- :vexpand false
-
- (box :class "notifications"
- :space-evenly false
- :orientation "vertical"
-
- (for item in { json_popup_notifications["notifications"] }
- (floating-notification :summary "${item.summary.data}"
- :body "${item.body.data}"
- :image "${item.app-icon.data}"
- :app-name "${item.app-name.data}"
- :onhoverlost "sh scripts/notification-popup-remove.sh ${item.id.data}")
- )
- )
-
- (box :visible { arraylength(json_popup_notifications?.["notifications"]) > 0 }
- :orientation "horizontal"
- :valign "end"
- :class "bottom"
- :space-evenly true
- :vexpand false
-
- (box :class "left"
- :space-evenly false
- (box :space-evenly false
- :class "tip"
- :valign "center"
- (label :text ""
- :class "icon")
- (label :halign "start"
- :text "Hover to dismiss"
- :yalign 0.5)
- )
- )
-
- (box :class "right"
- :space-evenly false
- :halign "end"
- (eventbox :class "button"
- :onclick "sh ${EWW_CONFIG_DIR}/scripts/eww-window.sh close floating-notifications; ${EWW_CMD} update 'json_popup_notifications={\"notifications\": []}'"
- (box :class "clear-all"
- :space-evenly false
-
- (label :text ""
- :class "icon")
- (label :text "Clear all")
- )
- )
- )
- )
- )
-)
-
-(defwidget floating-notification [ summary body image app-name ?onhoverlost ]
- (eventbox :onhoverlost "${onhoverlost}"
- :class "floating-notification-eventbox"
- (box :class "floating-notification"
- :space-evenly false
- :orientation "vertical"
-
- (box :orientation "horizontal"
- :class "top"
- :space-evenly false
-
- (image :class "app-icon"
- :icon "${ app-name =~ 'zen-alpha' ? 'zen-browser' : app-name }"
- :icon-size "menu")
-
- (label :text "${app-name}"
- :xalign 0)
- )
-
- (box :orientation "horizontal"
- :space-evenly false
- :class "content"
- (box :class "image"
- :style "background-image: image(url('${image}'));"
- :width 86
- :height 85
- :visible { image != "" ? true : false })
-
- (box :class "text-content"
- :orientation "vertical"
- :space-evenly false
-
- (label :class "summary"
- :markup "${summary}"
- :xalign 0)
-
- (label :class "body"
- :markup "${body}"
- :xalign 0
- :wrap true
- :show-truncated false)
- )
- )
- )
- )
-)
diff --git a/eww/windows/hardware-monitor.yuck b/eww/windows/hardware-monitor.yuck
deleted file mode 100644
index 5a143e4..0000000
--- a/eww/windows/hardware-monitor.yuck
+++ /dev/null
@@ -1,15 +0,0 @@
-(defwindow hardware-monitor []
- :monitor 0
- :geometry (geometry :width "320"
- :anchor "top right"
- :y "5px")
-
- :exclusive 0
- :namespace "eww-hardware"
- :focusable false
- :stacking "fg"
-
- (box :class "hardware-monitor"
- ; TODO
- )
-)
diff --git a/eww/windows/powermenu.yuck b/eww/windows/powermenu.yuck
deleted file mode 100644
index 0adfab0..0000000
--- a/eww/windows/powermenu.yuck
+++ /dev/null
@@ -1,33 +0,0 @@
-(defwindow powermenu []
- :monitor 0
- :geometry (geometry :width "100%"
- :height "100%")
-
- :stacking "overlay"
- :namespace "eww-powermenu"
- :focusable true
- :exclusive true
-
- (eventbox :class "outside"
- :onclick "sh scripts/eww-window.sh close powermenu; sh scripts/eww-window.sh open bar"
- (box :space-evenly true
- :halign "center"
- :class "powermenu-container"
- (button :class "poweroff"
- :onclick "systemctl poweroff"
- "")
- (button :class "reboot"
- :onclick "systemctl reboot"
- "")
- (button :class "suspend"
- :onclick "systemctl suspend"
- "")
- (button :class "logout"
- :onclick "loginctl kill-user $(sh -c 'echo $USER')"
- "")
- ;(button :class "close"
- ; :onclick "sh scripts/eww-window.sh close powermenu; sh scripts/eww-window.sh open bar"
- ;"")
- )
- )
-)
diff --git a/eww/windows/volume-control.yuck b/eww/windows/volume-control.yuck
deleted file mode 100644
index c7ec1da..0000000
--- a/eww/windows/volume-control.yuck
+++ /dev/null
@@ -1,39 +0,0 @@
-(include "./widgets/volume-control/output-slider.yuck")
-(include "./widgets/volume-control/source-slider.yuck")
-
-(defwindow volume-control []
- :monitor 0
- :namespace "eww-volume"
- :geometry (geometry :anchor "top right"
- :width "280px"
- :x "6px"
- :y "5px")
- :exclusive false
- :stacking "overlay"
- :focusable false
-
- (box :class "volume-control"
- :space-evenly false
- :orientation "vertical"
-
- (output-slider)
- (source-slider)
-
- (separator :orientation "vertical"
- :alpha 0.5)
-
- (box :class "vertical button-row"
- :orientation "vertical"
-
- (button :class "bluetooth-devices"
- :onclick "sh scripts/eww-window.sh close volume-control; hyprctl dispatch exec overskride"
- (label :text "Bluetooth devices"
- :xalign 0))
-
- (button :class "more-devices"
- :onclick "sh scripts/eww-window.sh close volume-control; hyprctl dispatch exec pavucontrol"
- (label :text "More settings"
- :xalign 0))
- )
- )
-)
diff --git a/eww/windows/volume-popup.yuck b/eww/windows/volume-popup.yuck
deleted file mode 100644
index d386a5f..0000000
--- a/eww/windows/volume-popup.yuck
+++ /dev/null
@@ -1,16 +0,0 @@
-(defwindow volume-popup []
- :monitor 0
- :stacking "overlay"
- :namespace "volume-popup"
- :focusable false
- :exclusive false
- :geometry (geometry :width 180
- :anchor "top center"
- :y "10px")
-
- (box :class "volume-popup"
- (output-slider)
- (source-slider)
- ; TODO
- )
-)
diff --git a/hypr/bindings.conf b/hypr/bindings.conf
index 55bedc6..5c0f523 100644
--- a/hypr/bindings.conf
+++ b/hypr/bindings.conf
@@ -24,7 +24,7 @@ bind = $mainMod, F, togglefloating
bind = $mainMod, SPACE, exec, $menu
bind = $mainMod, P, pseudo,
bind = $mainMod, J, togglesplit
-bind = $mainMod, N, exec, sh $HOME/.config/eww/scripts/eww-window.sh toggle control-center
+bind = $mainMod, N, exec, sh $XDG_CONFIG_HOME/eww/scripts/eww-window.sh toggle control-center
bind = $mainMod, L, exec, $lockscreen
bind = $mainMod, F11, fullscreen
@@ -46,10 +46,10 @@ bind = , Print, exec, $screenshotSelect
bind = $mainMod, Print, exec, $screenshotFull
# Open clipboard
-bind = $mainMod, V, exec, cliphist list | $dmenu | cliphist decode | xargs -r wl-copy
+bind = $mainMod, V, exec, cliphist list | anyrun --plugins libstdin.so | read pipe | [[ $pipe == "" ]] || echo $pipe | cliphist decode | wl-copy
# Open wallpaper menu
-bind = $mainMod, W, exec, env bash $HOME/.config/hypr/scripts/change-wallpaper.sh
+bind = $mainMod, W, exec, sh $XDG_CONFIG_HOME/hypr/scripts/change-wallpaper.sh
# Reload binds
# Eww
diff --git a/hypr/rules.conf b/hypr/rules.conf
index 0357e34..b88d404 100644
--- a/hypr/rules.conf
+++ b/hypr/rules.conf
@@ -68,10 +68,12 @@ layerrule = blur, eww-calendar
layerrule = blur, eww-cc
layerrule = blur, eww-volume
layerrule = blur, eww-powermenu
+layerrule = blur, top-bar
layerrule = ignorealpha .6, eww-volume
layerrule = ignorealpha .55, eww-bar
layerrule = ignorealpha .5, eww-calendar
layerrule = ignorealpha .7, eww-cc
+layerrule = ignorealpha .55, top-bar
# Workspace Rules
#workspace = 1, persistent:true
diff --git a/mako/config b/mako/config
deleted file mode 100644
index 6c18e0d..0000000
--- a/mako/config
+++ /dev/null
@@ -1,46 +0,0 @@
-# Lightweight Wayland Notification Daemon (mako) Configuration File
-# the man page of mako config file is a mess :skull:
-
-# general
-max-history=20
-sort=-time
-actions=1
-history=1
-icons=1
-default-timeout=1
-ignore-timeout=1
-
-# display
-layer=overlay
-anchor=top-right
-
-# binding
-on-touch=invoke-default-action
-
-# style
-font=Cantarell 12
-background-color=#1b2024
-padding=12
-width=420
-border-size=1
-border-color=#7e7e7ef0
-border-radius=14
-text-alignment=left
-margin=16
-max-icon-size=72
-
-# [urgency="low"]
-# default-timeout=1
-
-# [urgency="normal"]
-# default-timeout=1
-
-# [urgency="critical"]
-# default-timeout=1
-
-# modes
-[mode="dnd"]
-invisible=1
-
-# vim: ft=cfg
-# nvim: ft=cfg
diff --git a/update-repo.sh b/update-repo.sh
index 1e92ece..2bc58eb 100644
--- a/update-repo.sh
+++ b/update-repo.sh
@@ -1,6 +1,6 @@
#!/usr/bin/bash
-HYPRLAND_DOTS_DIRS=("hypr" "eww" "anyrun" "kitty" "wal" "fastfetch" "mako")
+HYPRLAND_DOTS_DIRS=("hypr" "ags" "anyrun" "kitty" "wal" "fastfetch")
WALLPAPERS_DIR="$HOME/wallpapers"
printf "\n"
diff --git a/wallpapers/Balcony Girl.png b/wallpapers/Balcony Girl.png
new file mode 100644
index 0000000..c5e3578
Binary files /dev/null and b/wallpapers/Balcony Girl.png differ
diff --git a/wallpapers/Chinatown.png b/wallpapers/Chinatown.png
new file mode 100644
index 0000000..20ce431
Binary files /dev/null and b/wallpapers/Chinatown.png differ
diff --git a/wallpapers/Garden Kita.png b/wallpapers/Garden Kita.png
new file mode 100644
index 0000000..b09392d
Binary files /dev/null and b/wallpapers/Garden Kita.png differ
diff --git a/wallpapers/Gruvbox Girl.png b/wallpapers/Gruvbox Girl.png
new file mode 100644
index 0000000..e96d790
Binary files /dev/null and b/wallpapers/Gruvbox Girl.png differ
diff --git a/wallpapers/Hitori Gotou College Corridor.png b/wallpapers/Hitori Gotoh College Corridor.png
similarity index 100%
rename from wallpapers/Hitori Gotou College Corridor.png
rename to wallpapers/Hitori Gotoh College Corridor.png
diff --git a/wallpapers/Pixel Girl Reading Book.png b/wallpapers/Pixel Girl Reading Book.png
new file mode 100644
index 0000000..f67c92a
Binary files /dev/null and b/wallpapers/Pixel Girl Reading Book.png differ