diff --git a/WALLPAPERS.md b/WALLPAPERS.md
deleted file mode 100644
index d3b4016..0000000
--- a/WALLPAPERS.md
+++ /dev/null
@@ -1,559 +0,0 @@
-# About
-
-None of them are made by me. You can view and find their source
-by expanding them below.
-
-## Bocchi The Rock!
-
-
-
- Kessoku Band Rooftop (cropped borders)
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1319345)
-
-
-
-
-
- Bocchi The Rock! (the wallpaper)
-
-
-
-
-- Source: [Twitter/X (artist only, post was deleted)](https://x.com/mofujiro_mofum2)
-
-
-
-
- Ryo Yamada Maid Dress
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1363565)
-
-
-
-
- Ryo Yamada
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1323120)
-
-
-
-
- Ryo Vending Machine
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1293921)
-
-
-
-
- Nijika Train
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1304192)
-
-
-
-
- Nijika Ijichi
-
-
-
-
-- Source: [Wallpaper Flare](https://www.wallpaperflare.com/blonde-nijika-ijichi-bocchi-the-rock-anime-girls-sunset-glow-wallpaper-yjrwx)
-
-
-
-
- Kita Street
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1304193)
-
-
-
-
- Kita-chan!!
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1296783)
-
-
-
-
- Kikuri Hiroi
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1295717)
-
-
-
-
- Kessoku Band Reunited
-
-
-
-
-- Source: [Wallpaper Cave](https://wallpapercave.com/w/wp11695992)
-
-
-
-
- Kessoku Albums
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1316133)
-
-
-
-
- Hitori Gotoh College Corridor
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1302067)
-
-
-
-
- Garden Kita
-
-
-
-
-- Source: [Gruvbox Wallpapers](https://gruvbox-wallpapers.pages.dev)
-
-
-
-## Vocaloid Wallpapers
-
-
-
- Arch Linux Miku
-
-
-
-
-- Source: [DeviantArt](https://www.deviantart.com/nesyah/art/Arch-linux-feat-Hatsune-Miku-858316759)
-
-
-
-
- Gumi Bridge
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=593482)
-
-
-
-
- Gumi Forest Sunlight
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=930443)
-
-
-
-
- Miku Balloons
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=768576)
-
-
-
-
- Miku Green Hair Glasses
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=858278)
-
-
-
-
- Kagamine Rin Yellow Tapes
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1292852)
-
-
-
-
- Gumi VOCALOID
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=768096)
-
-
-
-
- Miku Stylish with Glasses
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1305668)
-
-
-
-
- Miku Winter
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1305841)
-
-
-
-
- Vocaloid Karaoke
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=770194)
-
-
-
-
- Miku, Rin and Luka Chibi
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=770164)
-
-
-
-
- Miku Guitar
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=867976)
-
-
-
-
- Miku Garden
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1315430)
-
-
-
-
- Miku Setup
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=672757)
-
-
-
-
- Miku Flower Field
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=688123)
-
-
-
-
- Miku Door
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=845583)
-
-
-
-
- Miku Crying with Mask
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=524092)
-
-
-
-
- Miku City Sky
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=698444)
-
-
-
-
- Miku Bush
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=631739)
-
-
-
-
- Hatsune Miku Birthday!
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=731810)
-
-
-
-
- Hatsune Miku and Megurine Luka
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1313438)
-
-
-
-
- Gumi Ocean Sunset
-
-
-
-
-- Source: [WallHaven](https://wallhaven.cc/w/we8pgx)
-
-
-
-
- Gumi Street Bike
-
-
-
-
-- Source: [WallHaven](https://wallhaven.cc/w/4x7e7o)
-
-
-
-
- Inabakumori Kaai Yuki
-
-
-
-
-- Source: [WallHaven](https://wallhaven.cc/w/wed3m7)
-
-
-
-
- Inabakumori Osage
-
-
-
-
-- Source: [WallHaven](https://wallhaven.cc/w/o3r8z9)
-
-
-
-## Frieren: Beyond Journey's End
-
-
- Frieren Underwater
-
-
-
-
-- Source: [Pixiv](https://www.pixiv.net/en/artworks/114234634)
-
-
-
-
- Frieren Rain
-
-
-
-
-- Source: [Pixiv](https://www.pixiv.net/en/artworks/114234634)
-
-
-
-
- Frieren At The Funeral
-
-
-
-
-- Source: [Pixiv](https://www.pixiv.net/en/artworks/114234634)
-
-
-
-
- Frieren Sunset
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1354394)
-
-
-
-
- Frieren Sending Kiss
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1344010)
-
-
-
-
- Frieren Ring
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1351964)
-
-
-
-
- Frieren Night Film
-
-
-
-
-- Source: [Wallpaper Flare](https://www.wallpaperflare.com/anime-anime-girls-sousou-no-frieren-wallpaper-yvcxe)
-
-
-
-
- Frieren Blue
-
-
-
-
-- Source: [Alpha Coders](https://wall.alphacoders.com/big.php?i=1357998)
-
-
-
-## Oshi no Ko
-
-
- Oshi no Ko Kana Arima
-
-
-
-
-- Source: [WallHaven](https://wallhaven.cc/w/x6pp5z)
-
-
-
-## Gruvbox-styled
-
-
- Balcony Girl
-
-
-
-
-- Source: [Gruvbox Wallpapers](https://gruvbox-wallpapers.pages.dev)
-
-
-
-
- Gruvbox Girl
-
-
-
-
-- Source: [Gruvbox Wallpapers](https://gruvbox-wallpapers.pages.dev)
-
-
-- [Gruvbox Wallpapers](https://gruvbox-wallpapers.pages.dev)
-
-
-## Genshin Impact Wallpaper(s)
-Those can be get on web events in Genshin Impact, and also on [HoYoLAB](https://hoyolab.com).
-
-
- Mualani!!
-
-
-
-
-- Source: Genshin Impact Web Event (not available anymore)
-
-
-
-## Others
-
-
- Hypr-chan
-
-
-
-
-- Source: [GitHub (hyprwm/Hyprland)](https://github.com/hyprwm/Hyprland)
-
-
-
-
- Linux Anime Girl
-
-
-
-
-- Source: [WallHere](https://wallhere.com/en/wallpaper/2284648)
-
-
-### More sources
-- [Pinterest](https://pinterest.com)
-- [AlphaCoders](https://alphacoders.com/bocchi-the-rock!-wallpapers)
-- [WallpaperCave](https://wallpapercave.com/bocchi-the-rock-wallpapers)
-- [WallpaperFlare](https://www.wallpaperflare.com/search?wallpaper=BOCCHI+THE+ROCK%21)
diff --git a/ags/app.ts b/ags/app.ts
deleted file mode 100644
index ea1a917..0000000
--- a/ags/app.ts
+++ /dev/null
@@ -1,146 +0,0 @@
-import { Wireplumber } from "./scripts/volume";
-import { handleArguments } from "./scripts/arg-handler";
-import { Time, timeout } from "ags/time";
-import { Runner } from "./runner/Runner";
-import { PluginApps } from "./runner/plugins/apps";
-import { PluginShell } from "./runner/plugins/shell";
-import { PluginWebSearch } from "./runner/plugins/websearch";
-import { PluginMedia } from "./runner/plugins/media";
-import { Windows } from "./windows";
-import { Notifications } from "./scripts/notifications";
-import { PluginWallpapers } from "./runner/plugins/wallpapers";
-import { Wallpaper } from "./scripts/wallpaper";
-import { Stylesheet } from "./scripts/stylesheet";
-import { Clipboard } from "./scripts/clipboard";
-import { PluginClipboard } from "./runner/plugins/clipboard";
-import { Config } from "./scripts/config";
-import { Scope } from "/usr/share/ags/js/gnim/src/jsx/scope";
-
-import App from "ags/gtk4/app"
-import GObject from "ags/gobject";
-import AstalNotifd from "gi://AstalNotifd";
-import GLib from "gi://GLib?version=2.0";
-
-
-const generalConfigDefaults = {
- notifications: {
- timeout_low: 4000,
- timeout_normal: 6000,
- timeout_critical: 0
- },
-
- night_light: {
- /** whether to save night light values to disk */
- save_on_shutdown: true
- },
-
- workspaces: {
- /** breaks `enable_helper`, makes all workspaces show their respective ID
- * by default */
- always_show_id: false,
- /** this is the function that shows the Workspace's IDs
- * around the current workspace if one breaks the crescent order.
- * It basically helps keyboard navigation between workspaces.
- * ---
- * Example: 1(empty, current, shows ID), 2(empty, does not appear(makes
- * the previous not to be in a crescent order)), 3(not empty, shows ID) */
- enable_helper: true
- },
-
- clock: {
- /** use the same format as gnu's `date` command */
- date_format: "%A %d, %H:%M"
- },
-
- misc: {
- play_bell_on_volume_change: true
- }
-};
-
-export const generalConfig = new Config(
- `${GLib.get_user_config_dir()}/colorshell/config.json`, generalConfigDefaults
-);
-
-export const appScope: Scope = new Scope(null);
-
-let osdTimer: (Time|undefined), osdTimeout = 3500;
-let connections = new Map | number)>();
-
-const runnerPlugins: Array = [
- PluginApps,
- PluginShell,
- PluginWebSearch,
- PluginMedia,
- PluginWallpapers,
- PluginClipboard
-];
-
-const defaultWindows: Array = [ "bar" ];
-
-App.start({
- instanceName: "astal",
- icons: "icons/",
- requestHandler: (request: string, response: (result: any) => void): void => {
- response(handleArguments(request));
- },
- main: (..._args: Array) => {
- console.log(`Colorshell: initialized instance as: "${ App.instanceName || "astal" }"`);
- connections.set(App, App.connect("shutdown", () => appScope.dispose()));
-
- Stylesheet.getDefault().compileApply();
-
- // Init clipboard module
- Clipboard.getDefault();
-
- console.log("Initializing wallpaper handler");
- Wallpaper.getDefault();
-
- console.log("Adding runner plugins");
- runnerPlugins.forEach(plugin => Runner.addPlugin(plugin));
-
- connections.set(Wireplumber.getDefault(),
- Wireplumber.getDefault().getDefaultSink().connect("notify::volume", () =>
- triggerOSD())
- );
-
- connections.set(Notifications.getDefault(), [
- Notifications.getDefault().connect("notification-added", (_, _notif: AstalNotifd.Notification) => {
- Windows.getDefault().open("floating-notifications");
- }),
- Notifications.getDefault().connect("notification-removed", (_: Notifications, _id: number) => {
- _.notifications.length === 0 && Windows.getDefault().close("floating-notifications");
- })
- ]);
-
- defaultWindows.forEach(w => Windows.getDefault().open(w));
-
- appScope.onCleanup(() => {
- console.log("Colorshell: disconnecting from GObjects because of ::shutdown");
- connections.forEach((ids, obj) => Array.isArray(ids) ?
- ids.forEach(id => obj.disconnect(id))
- : obj.disconnect(ids));
- });
- }
-});
-
-function triggerOSD() {
- if(Windows.getDefault().isOpen("control-center")) return;
-
- Windows.getDefault().open("osd");
-
- if(!osdTimer) {
- osdTimer = timeout(osdTimeout, () => {
- osdTimer = undefined;
- Windows.getDefault().close("osd");
- });
-
- return;
- }
-
- osdTimer.cancel();
- osdTimer = timeout(osdTimeout, () => {
- Windows.getDefault().close("osd");
- osdTimer = undefined;
- });
-}
diff --git a/ags/style/_wal.scss b/ags/style/_wal.scss
deleted file mode 100644
index 869ba1a..0000000
--- a/ags/style/_wal.scss
+++ /dev/null
@@ -1,26 +0,0 @@
-// SCSS Variables
-// Generated by 'wal'
-$wallpaper: "/home/joaov/wallpapers/Frieren Rain.jpg";
-
-// Special
-$background: #25301c;
-$foreground: #c8cbc6;
-$cursor: #c8cbc6;
-
-// Colors
-$color0: #25301c;
-$color1: #6c8251;
-$color2: #7c9357;
-$color3: #78846e;
-$color4: #948a88;
-$color5: #899869;
-$color6: #98a27b;
-$color7: #9ba197;
-$color8: #707c66;
-$color9: #91AE6D;
-$color10: #A6C574;
-$color11: #A0B093;
-$color12: #C6B9B6;
-$color13: #B7CB8D;
-$color14: #CBD9A4;
-$color15: #c8cbc6;
diff --git a/ags/widget/control-center/tiles/Tile.tsx b/ags/widget/control-center/tiles/Tile.tsx
deleted file mode 100644
index adfb92d..0000000
--- a/ags/widget/control-center/tiles/Tile.tsx
+++ /dev/null
@@ -1,99 +0,0 @@
-import { Gtk } from "ags/gtk4";
-import { tr } from "../../../i18n/intl";
-import { Accessor, createComputed, createState, onCleanup } from "ags";
-import { variableToBoolean } from "../../../scripts/utils";
-
-import Pango from "gi://Pango?version=1.0";
-
-
-export type TileProps = {
- class?: string | Accessor;
- icon?: string | Accessor;
- visible?: boolean | Accessor;
- iconSize?: number | Accessor;
- title: string | Accessor;
- description?: string | Accessor;
- toggleState?: boolean | Accessor;
- enableOnClickMore?: boolean | Accessor;
- onUnmap?: (self: Gtk.Box) => void;
- onToggledOn: () => void;
- onToggledOff: () => void;
- onClickMore?: () => void;
-}
-
-export function Tile(props: TileProps): Gtk.Widget {
- const subs: Array<() => void> = [];
- const [toggled, setToggled] = createState(((props.toggleState instanceof Accessor) ?
- props.toggleState.get()
- : props.toggleState) ?? false);
-
-
- (props.toggleState instanceof Accessor) && subs.push(
- props.toggleState.subscribe(() =>
- setToggled((props.toggleState as Accessor).get() ?? false))
- );
-
- onCleanup(() => subs.forEach(s => s()));
-
- return
- `tile ${clss} ${isToggled ? "toggled" : ""} ${
- props.onClickMore ? "has-more" : ""
- }`
- )
- : toggled.as(isToggled =>
- `tile ${props.class ? props.class : ""} ${isToggled ? "toggled" : ""} ${
- props.onClickMore ? "has-more" : ""
- }`
- )
- }>
- {
- if(toggled.get()) {
- setToggled(false);
- props.onToggledOff?.();
- return;
- }
-
- setToggled(true);
- props.onToggledOn?.();
- }}>
-
-
- {props.icon && `font-size: ${size}px;`)
- : (props.iconSize ?
- `font-size: ${props.iconSize ?? 16}px;`
- : undefined)
- } />}
-
-
-
-
-
- {props.description && str ?? "")
- : (props.description ?? "")
- } halign={Gtk.Align.START}
- />}
-
-
-
-
-
- {
- ((props.enableOnClickMore instanceof Accessor) ?
- props.enableOnClickMore.get()
- : props.enableOnClickMore) && props.onToggledOn?.();
-
- props.onClickMore?.();
- }} tooltipText={tr("control_center.tiles.more")} />
- as Gtk.Widget;
-}
diff --git a/hypr/hypridle.conf b/config/hypr/hypridle.conf/hypridle.conf
similarity index 100%
rename from hypr/hypridle.conf
rename to config/hypr/hypridle.conf/hypridle.conf
diff --git a/hypr/hyprland.conf b/config/hypr/hyprland.conf/hyprland.conf
similarity index 100%
rename from hypr/hyprland.conf
rename to config/hypr/hyprland.conf/hyprland.conf
diff --git a/hypr/hyprlock.conf b/config/hypr/hyprlock.conf/hyprlock.conf
similarity index 100%
rename from hypr/hyprlock.conf
rename to config/hypr/hyprlock.conf/hyprlock.conf
diff --git a/hypr/scripts/change-wallpaper.sh b/config/hypr/scripts/scripts/change-wallpaper.sh
similarity index 100%
rename from hypr/scripts/change-wallpaper.sh
rename to config/hypr/scripts/scripts/change-wallpaper.sh
diff --git a/hypr/scripts/clipboard-menu.sh b/config/hypr/scripts/scripts/clipboard-menu.sh
similarity index 100%
rename from hypr/scripts/clipboard-menu.sh
rename to config/hypr/scripts/scripts/clipboard-menu.sh
diff --git a/hypr/scripts/color-picker.sh b/config/hypr/scripts/scripts/color-picker.sh
similarity index 100%
rename from hypr/scripts/color-picker.sh
rename to config/hypr/scripts/scripts/color-picker.sh
diff --git a/hypr/scripts/exec.sh b/config/hypr/scripts/scripts/exec.sh
similarity index 100%
rename from hypr/scripts/exec.sh
rename to config/hypr/scripts/scripts/exec.sh
diff --git a/hypr/scripts/gen-pywal.sh b/config/hypr/scripts/scripts/gen-pywal.sh
similarity index 100%
rename from hypr/scripts/gen-pywal.sh
rename to config/hypr/scripts/scripts/gen-pywal.sh
diff --git a/hypr/scripts/get-dmenu.sh b/config/hypr/scripts/scripts/get-dmenu.sh
similarity index 100%
rename from hypr/scripts/get-dmenu.sh
rename to config/hypr/scripts/scripts/get-dmenu.sh
diff --git a/hypr/scripts/load-hyprsunset.sh b/config/hypr/scripts/scripts/load-hyprsunset.sh
similarity index 100%
rename from hypr/scripts/load-hyprsunset.sh
rename to config/hypr/scripts/scripts/load-hyprsunset.sh
diff --git a/hypr/scripts/save-hyprsunset.sh b/config/hypr/scripts/scripts/save-hyprsunset.sh
similarity index 100%
rename from hypr/scripts/save-hyprsunset.sh
rename to config/hypr/scripts/scripts/save-hyprsunset.sh
diff --git a/hypr/scripts/screenshot.sh b/config/hypr/scripts/scripts/screenshot.sh
similarity index 100%
rename from hypr/scripts/screenshot.sh
rename to config/hypr/scripts/scripts/screenshot.sh
diff --git a/hypr/shell/autostart.conf b/config/hypr/shell/shell/autostart.conf
similarity index 100%
rename from hypr/shell/autostart.conf
rename to config/hypr/shell/shell/autostart.conf
diff --git a/hypr/shell/bindings.conf b/config/hypr/shell/shell/bindings.conf
similarity index 100%
rename from hypr/shell/bindings.conf
rename to config/hypr/shell/shell/bindings.conf
diff --git a/hypr/shell/decorations.conf b/config/hypr/shell/shell/decorations.conf
similarity index 100%
rename from hypr/shell/decorations.conf
rename to config/hypr/shell/shell/decorations.conf
diff --git a/hypr/shell/environment.conf b/config/hypr/shell/shell/environment.conf
similarity index 100%
rename from hypr/shell/environment.conf
rename to config/hypr/shell/shell/environment.conf
diff --git a/hypr/shell/hyprland.conf b/config/hypr/shell/shell/hyprland.conf
similarity index 100%
rename from hypr/shell/hyprland.conf
rename to config/hypr/shell/shell/hyprland.conf
diff --git a/hypr/shell/layout.conf b/config/hypr/shell/shell/layout.conf
similarity index 100%
rename from hypr/shell/layout.conf
rename to config/hypr/shell/shell/layout.conf
diff --git a/hypr/shell/rules.conf b/config/hypr/shell/shell/rules.conf
similarity index 100%
rename from hypr/shell/rules.conf
rename to config/hypr/shell/shell/rules.conf
diff --git a/hypr/shell/variables.conf b/config/hypr/shell/shell/variables.conf
similarity index 100%
rename from hypr/shell/variables.conf
rename to config/hypr/shell/shell/variables.conf
diff --git a/kitty/kitty.conf b/config/kitty/kitty.conf/kitty.conf
similarity index 100%
rename from kitty/kitty.conf
rename to config/kitty/kitty.conf/kitty.conf
diff --git a/hypr/hyprpaper.conf b/hypr/hyprpaper.conf
deleted file mode 100644
index 985f58a..0000000
--- a/hypr/hyprpaper.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-# Default hyprpaper file
-
-preload = $HOME/wallpapers/Frieren At The Funeral.jpg
-wallpaper = , $HOME/wallpapers/Frieren At The Funeral.jpg
diff --git a/hypr/user/autostart.conf b/hypr/user/autostart.conf
deleted file mode 100644
index c50f3c7..0000000
--- a/hypr/user/autostart.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-
-###############
-## AUTOSTART ##
-###############
-# Wiki: https://wiki.hyprland.org/Configuring/Keywords/#executing
-
diff --git a/hypr/user/bindings.conf b/hypr/user/bindings.conf
deleted file mode 100644
index 61daad4..0000000
--- a/hypr/user/bindings.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-##############
-## BINDINGS ##
-##############
-# Wiki: https://wiki.hyprland.org/Configuring/Binds
-
-
-# Uncomment if you want to press SUPER to launch application search
-# bind = $mainMod, $mainMod_L, exec, astal toggle apps-window
diff --git a/hypr/user/decorations.conf b/hypr/user/decorations.conf
deleted file mode 100644
index 5600fee..0000000
--- a/hypr/user/decorations.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-################
-## DECORATION ##
-################
-# Wiki: https://wiki.hyprland.org/Configuring/Variables
-
-
diff --git a/hypr/user/environment.conf b/hypr/user/environment.conf
deleted file mode 100644
index e7e2aa0..0000000
--- a/hypr/user/environment.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-#################
-## ENVIRONMENT ##
-#################
-# Wiki: https://wiki.hyprland.org/Configuring/Keywords/#setting-the-environment
-
-
diff --git a/hypr/user/hyprland.conf b/hypr/user/hyprland.conf
deleted file mode 100644
index 13dee9d..0000000
--- a/hypr/user/hyprland.conf
+++ /dev/null
@@ -1,15 +0,0 @@
-
-########################
-## USER CONFIGURATION ##
-########################
-
-# This sources all user configuration files
-
-source = ./monitors.conf
-source = ./environment.conf
-source = ./input.conf
-source = ./bindings.conf
-source = ./layout.conf
-source = ./decorations.conf
-source = ./autostart.conf
-source = ./rules.conf
diff --git a/hypr/user/input.conf b/hypr/user/input.conf
deleted file mode 100644
index 9f43fa2..0000000
--- a/hypr/user/input.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-###########
-## INPUT ##
-###########
-
-# Wiki: https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs
-
-
-##############
-## GESTURES ##
-##############
-
-# Wiki: https://wiki.hyprland.org/Configuring/Variables/#gestures
-
diff --git a/hypr/user/layout.conf b/hypr/user/layout.conf
deleted file mode 100644
index 8d1b881..0000000
--- a/hypr/user/layout.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-############
-## LAYOUT ##
-############
-# Wiki: https://wiki.hyprland.org/Configuring/Dwindle-Layout/#config
diff --git a/hypr/user/monitors.conf b/hypr/user/monitors.conf
deleted file mode 100644
index d355322..0000000
--- a/hypr/user/monitors.conf
+++ /dev/null
@@ -1,17 +0,0 @@
-##############
-## MONITORS ##
-##############
-
-# Wiki: https://wiki.hyprland.org/Configuring/Monitors
-
-
-# Monitor
-# arg0 -> monitor name(you can get monitor names with `hyprctl monitors`);
-# arg1 -> resolution@hertz;
-# arg2 -> positioning from the top-left corner;
-# arg3 -> scaling;
-# arg4 -> variable refresh rate(optional);
-# - arg40 -> 1: vrr, 0: no vrr.
-
-# Example configuration:
-# monitor = HDMI-A-1, 1920x1080@60, 0x0, 1, vrr, 0
diff --git a/hypr/user/rules.conf b/hypr/user/rules.conf
deleted file mode 100644
index 2dd99a6..0000000
--- a/hypr/user/rules.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-
-############################
-## WINDOW & LAYER RULES ##
-############################
-
-# See https://wiki.hyprland.org/Configuring/Window-Rules for
-# more information on how to do this
-
diff --git a/kitty/user.conf b/kitty/user.conf
deleted file mode 100644
index 060ca57..0000000
--- a/kitty/user.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-# User configuration
-# Add your settings for kitty here
diff --git a/ags/.gitignore b/src/.gitignore
similarity index 84%
rename from ags/.gitignore
rename to src/.gitignore
index d55dc07..bf5288d 100644
--- a/ags/.gitignore
+++ b/src/.gitignore
@@ -1,4 +1,5 @@
node_modules/
@girs/
+build/
pnpm-lock.yaml
diff --git a/src/app.ts b/src/app.ts
new file mode 100644
index 0000000..bf5fede
--- /dev/null
+++ b/src/app.ts
@@ -0,0 +1,203 @@
+// fix ags needing --gtk 4
+// import app from "ags/gtk4/app";
+
+import {
+ PluginApps,
+ PluginClipboard,
+ PluginMedia,
+ PluginShell,
+ PluginWallpapers,
+ PluginWebSearch
+} from "./runner/plugins";
+
+import { Wireplumber } from "./scripts/volume";
+import { handleArguments } from "./scripts/arg-handler";
+import { Runner } from "./runner/Runner";
+import { Windows } from "./windows";
+import { Notifications } from "./scripts/notifications";
+import { Wallpaper } from "./scripts/wallpaper";
+
+import { Stylesheet } from "./scripts/stylesheet";
+import { Clipboard } from "./scripts/clipboard";
+import { Config } from "./scripts/config";
+import { Gdk, Gtk } from "ags/gtk4";
+import { createRoot, getScope } from "ags";
+import { triggerOSD } from "./window/OSD";
+import { programArgs, programInvocationName } from "system";
+import { encoder, decoder } from "./scripts/utils";
+
+import GObject, { register } from "ags/gobject";
+import AstalNotifd from "gi://AstalNotifd";
+import GLib from "gi://GLib?version=2.0";
+import Gio from "gi://Gio?version=2.0";
+
+
+const runnerPlugins: Array = [
+ PluginApps,
+ PluginShell,
+ PluginWebSearch,
+ PluginMedia,
+ PluginWallpapers,
+ PluginClipboard
+];
+
+const defaultWindows: Array = [];
+
+@register({ GTypeName: "Shell" })
+export class Shell extends Gtk.Application {
+ private static instance: Shell;
+
+ #loop!: GLib.MainLoop;
+ #scope!: ReturnType;
+ #stylesheet: Uint8Array|undefined;
+ #styleProvider: Gtk.CssProvider;
+
+ get scope() { return this.#scope; }
+
+ constructor() {
+ super({
+ applicationId: "io.github.retrozinndev.colorshell",
+ flags: Gio.ApplicationFlags.HANDLES_COMMAND_LINE,
+ version: "1.1.0",
+ });
+
+ this.#styleProvider = Gtk.CssProvider.new();
+ }
+
+ public static getDefault(): Shell {
+ if(!this.instance)
+ this.instance = new Shell();
+
+ return this.instance;
+ }
+
+ public resetStyle(): void {
+ this.#stylesheet = undefined;
+ Gtk.StyleContext.remove_provider_for_display(
+ Gdk.Display.get_default()!,
+ this.#styleProvider
+ );
+ }
+
+ public applyStyle(stylesheet: string): void {
+ const previous = this.#stylesheet ? decoder.decode(this.#stylesheet) : undefined;
+ let final = "";
+
+ if(previous)
+ final = previous + "\n";
+
+ this.#stylesheet = encoder.encode(stylesheet);
+ final = final.concat(stylesheet);
+
+ this.#styleProvider.load_from_string(final);
+
+ Gtk.StyleContext.add_provider_for_display(
+ Gdk.Display.get_default()!,
+ this.#styleProvider,
+ Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
+ );
+ }
+
+ vfunc_command_line(cmd: Gio.ApplicationCommandLine): number {
+ const args = cmd.get_arguments();
+
+ if(cmd.isRemote) {
+ cmd.print_literal(handleArguments(args));
+ cmd.done();
+ return 0;
+ }
+
+ this.main(args);
+ return 0;
+ }
+
+ private main(_args: Array): void {
+ this.#loop = GLib.MainLoop.new(null, false);
+ const connections = new Map | number>();
+
+ connections.set(this, this.connect("shutdown", () => this.#scope.dispose()));
+ createRoot(() => {
+ console.log(`Colorshell: initialized instance as: "colorshell"`);
+ this.#scope = getScope();
+
+ Stylesheet.getDefault().compileApply();
+
+ // Init clipboard module
+ Clipboard.getDefault();
+
+ console.log("Initializing wallpaper handler");
+ Wallpaper.getDefault();
+
+ console.log("Adding runner plugins");
+ runnerPlugins.forEach(plugin => Runner.addPlugin(plugin));
+
+ connections.set(Wireplumber.getDefault(),
+ Wireplumber.getDefault().getDefaultSink().connect("notify::volume", () =>
+ triggerOSD())
+ );
+
+ connections.set(Notifications.getDefault(), [
+ Notifications.getDefault().connect("notification-added", (_, _notif: AstalNotifd.Notification) => {
+ Windows.getDefault().open("floating-notifications");
+ }),
+ Notifications.getDefault().connect("notification-removed", (_: Notifications, _id: number) => {
+ _.notifications.length === 0 && Windows.getDefault().close("floating-notifications");
+ })
+ ]);
+
+ defaultWindows.forEach(w => Windows.getDefault().open(w));
+ });
+
+ this.#scope.onCleanup(() => {
+ console.log("Colorshell: disposing connections and quitting because of ::shutdown");
+ connections.forEach((ids, obj) => Array.isArray(ids) ?
+ ids.forEach(id => obj.disconnect(id))
+ : obj.disconnect(ids));
+ });
+
+ this.#loop.run();
+ }
+}
+
+
+const generalConfigDefaults = {
+ notifications: {
+ timeout_low: 4000,
+ timeout_normal: 6000,
+ timeout_critical: 0
+ },
+
+ night_light: {
+ /** whether to save night light values to disk */
+ save_on_shutdown: true
+ },
+
+ workspaces: {
+ /** breaks `enable_helper`, makes all workspaces show their respective ID
+ * by default */
+ always_show_id: false,
+ /** this is the function that shows the Workspace's IDs
+ * around the current workspace if one breaks the crescent order.
+ * It basically helps keyboard navigation between workspaces.
+ * ---
+ * Example: 1(empty, current, shows ID), 2(empty, does not appear(makes
+ * the previous not to be in a crescent order)), 3(not empty, shows ID) */
+ enable_helper: true
+ },
+
+ clock: {
+ /** use the same format as gnu's `date` command */
+ date_format: "%A %d, %H:%M"
+ },
+
+ misc: {
+ play_bell_on_volume_change: true
+ }
+};
+
+export const generalConfig = new Config(
+ `${GLib.get_user_config_dir()}/colorshell/config.json`, generalConfigDefaults
+);
+
+Shell.getDefault().runAsync([ programInvocationName, ...programArgs ]);
diff --git a/ags/env.d.ts b/src/env.d.ts
similarity index 100%
rename from ags/env.d.ts
rename to src/env.d.ts
diff --git a/ags/i18n/intl.ts b/src/i18n/intl.ts
similarity index 100%
rename from ags/i18n/intl.ts
rename to src/i18n/intl.ts
diff --git a/ags/i18n/lang/en_US.ts b/src/i18n/lang/en_US.ts
similarity index 100%
rename from ags/i18n/lang/en_US.ts
rename to src/i18n/lang/en_US.ts
diff --git a/ags/i18n/lang/pt_BR.ts b/src/i18n/lang/pt_BR.ts
similarity index 100%
rename from ags/i18n/lang/pt_BR.ts
rename to src/i18n/lang/pt_BR.ts
diff --git a/ags/i18n/lang/ru_RU.ts b/src/i18n/lang/ru_RU.ts
similarity index 100%
rename from ags/i18n/lang/ru_RU.ts
rename to src/i18n/lang/ru_RU.ts
diff --git a/ags/i18n/struct.ts b/src/i18n/struct.ts
similarity index 100%
rename from ags/i18n/struct.ts
rename to src/i18n/struct.ts
diff --git a/ags/icons/hicolor/scalable/actions/applications-other-symbolic.svg b/src/icons/hicolor/scalable/actions/applications-other-symbolic.svg
similarity index 100%
rename from ags/icons/hicolor/scalable/actions/applications-other-symbolic.svg
rename to src/icons/hicolor/scalable/actions/applications-other-symbolic.svg
diff --git a/ags/icons/hicolor/scalable/actions/arrow-circular-top-right-symbolic.svg b/src/icons/hicolor/scalable/actions/arrow-circular-top-right-symbolic.svg
similarity index 100%
rename from ags/icons/hicolor/scalable/actions/arrow-circular-top-right-symbolic.svg
rename to src/icons/hicolor/scalable/actions/arrow-circular-top-right-symbolic.svg
diff --git a/ags/icons/hicolor/scalable/actions/circle-filled-symbolic.svg b/src/icons/hicolor/scalable/actions/circle-filled-symbolic.svg
similarity index 100%
rename from ags/icons/hicolor/scalable/actions/circle-filled-symbolic.svg
rename to src/icons/hicolor/scalable/actions/circle-filled-symbolic.svg
diff --git a/ags/icons/hicolor/scalable/actions/hourglass-symbolic.svg b/src/icons/hicolor/scalable/actions/hourglass-symbolic.svg
similarity index 100%
rename from ags/icons/hicolor/scalable/actions/hourglass-symbolic.svg
rename to src/icons/hicolor/scalable/actions/hourglass-symbolic.svg
diff --git a/ags/icons/hicolor/scalable/actions/loop-arrow-symbolic.svg b/src/icons/hicolor/scalable/actions/loop-arrow-symbolic.svg
similarity index 100%
rename from ags/icons/hicolor/scalable/actions/loop-arrow-symbolic.svg
rename to src/icons/hicolor/scalable/actions/loop-arrow-symbolic.svg
diff --git a/ags/icons/hicolor/scalable/actions/minus-circle-filled-symbolic.svg b/src/icons/hicolor/scalable/actions/minus-circle-filled-symbolic.svg
similarity index 100%
rename from ags/icons/hicolor/scalable/actions/minus-circle-filled-symbolic.svg
rename to src/icons/hicolor/scalable/actions/minus-circle-filled-symbolic.svg
diff --git a/ags/icons/hicolor/scalable/actions/shield-danger-symbolic.svg b/src/icons/hicolor/scalable/actions/shield-danger-symbolic.svg
similarity index 100%
rename from ags/icons/hicolor/scalable/actions/shield-danger-symbolic.svg
rename to src/icons/hicolor/scalable/actions/shield-danger-symbolic.svg
diff --git a/ags/icons/hicolor/scalable/actions/shield-safe-symbolic.svg b/src/icons/hicolor/scalable/actions/shield-safe-symbolic.svg
similarity index 100%
rename from ags/icons/hicolor/scalable/actions/shield-safe-symbolic.svg
rename to src/icons/hicolor/scalable/actions/shield-safe-symbolic.svg
diff --git a/ags/icons/hicolor/scalable/actions/user-trash-symbolic.svg b/src/icons/hicolor/scalable/actions/user-trash-symbolic.svg
similarity index 100%
rename from ags/icons/hicolor/scalable/actions/user-trash-symbolic.svg
rename to src/icons/hicolor/scalable/actions/user-trash-symbolic.svg
diff --git a/ags/package.json b/src/package.json
similarity index 100%
rename from ags/package.json
rename to src/package.json
diff --git a/ags/pnpm-workspace.yaml b/src/pnpm-workspace.yaml
similarity index 100%
rename from ags/pnpm-workspace.yaml
rename to src/pnpm-workspace.yaml
diff --git a/ags/runner/Runner.tsx b/src/runner/Runner.tsx
similarity index 91%
rename from ags/runner/Runner.tsx
rename to src/runner/Runner.tsx
index 02dd5a8..3009e90 100644
--- a/ags/runner/Runner.tsx
+++ b/src/runner/Runner.tsx
@@ -204,7 +204,7 @@ function selectPreviousItem(listbox: Gtk.ListBox) {
const selectedRow = listbox.get_selected_row();
const prevRow = selectedRow?.get_prev_sibling();
- if(!prevRow || selectedRow === listbox.get_row_at_index(0))
+ if(!prevRow || selectedRow === listbox.get_first_child())
return;
const viewport = listbox.parent as Gtk.Viewport;
@@ -225,12 +225,13 @@ function selectNextItem(listbox: Gtk.ListBox) {
return;
const viewport = listbox.parent as Gtk.Viewport;
- const vadjustment = (viewport.parent as Gtk.ScrolledWindow).get_vadjustment();
- const nextRowVAllocation = (nextRow.get_allocation().y + nextRow.get_allocation().height);
+ const vadjustment = viewport.vadjustment;
+ const [, , nextRowY] = nextRow.translate_coordinates(viewport,
+ nextRow.get_allocation().x, nextRow.get_allocation().y);
listbox.select_row(nextRow as Gtk.ListBoxRow);
- if(nextRowVAllocation > viewport.get_allocation().height)
- vadjustment.set_value(nextRow.get_allocation().y - viewport.get_allocation().height + nextRow.get_allocation().height);
+ if(vadjustment.value < nextRowY)
+ vadjustment.set_value(nextRowY - vadjustment.value);
}
export function openRunner(props: RunnerProps, placeholders?: Array): Astal.Window {
@@ -263,11 +264,13 @@ export function openRunner(props: RunnerProps, placeholders?: Array): As
case Gdk.KEY_Left:
case Gdk.KEY_Up:
selectPreviousItem(listbox);
+ gtkEntry?.grab_focus();
return;
case Gdk.KEY_Right:
case Gdk.KEY_Down:
selectNextItem(listbox);
+ gtkEntry?.grab_focus();
return;
}
@@ -310,17 +313,18 @@ export function openRunner(props: RunnerProps, placeholders?: Array): As
hscrollbarPolicy={Gtk.PolicyType.NEVER} hexpand vexpand propagateNaturalHeight visible={false}
maxContentHeight={props.height}>
- {
- const child = row.get_child()!;
+ {
+ const child = row.get_child()!;
- if(child instanceof ResultWidget && !clickTimeout) {
- clickTimeout = timeout(250, () => clickTimeout = undefined);
- child.actionClick?.();
- child.closeOnClick &&
- Runner.close();
- }
- }} />
+ if(child instanceof ResultWidget && !clickTimeout) {
+ clickTimeout = timeout(250, () => clickTimeout = undefined);
+ child.actionClick?.();
+ child.closeOnClick &&
+ Runner.close();
+ }
+ }}
+ />
as Astal.Window
diff --git a/ags/runner/plugins/apps.ts b/src/runner/plugins/apps.ts
similarity index 100%
rename from ags/runner/plugins/apps.ts
rename to src/runner/plugins/apps.ts
diff --git a/ags/runner/plugins/clipboard.ts b/src/runner/plugins/clipboard.ts
similarity index 100%
rename from ags/runner/plugins/clipboard.ts
rename to src/runner/plugins/clipboard.ts
diff --git a/src/runner/plugins/index.ts b/src/runner/plugins/index.ts
new file mode 100644
index 0000000..9df1fa6
--- /dev/null
+++ b/src/runner/plugins/index.ts
@@ -0,0 +1,16 @@
+import { PluginApps } from "./apps"
+import { PluginClipboard } from "./clipboard"
+import { PluginMedia } from "./media"
+import { PluginShell } from "./shell"
+import { PluginWallpapers } from "./wallpapers"
+import { PluginWebSearch } from "./websearch"
+
+
+export {
+ PluginApps,
+ PluginWebSearch,
+ PluginClipboard,
+ PluginShell,
+ PluginMedia,
+ PluginWallpapers
+};
diff --git a/ags/runner/plugins/media.ts b/src/runner/plugins/media.ts
similarity index 100%
rename from ags/runner/plugins/media.ts
rename to src/runner/plugins/media.ts
diff --git a/ags/runner/plugins/shell.ts b/src/runner/plugins/shell.ts
similarity index 100%
rename from ags/runner/plugins/shell.ts
rename to src/runner/plugins/shell.ts
diff --git a/ags/runner/plugins/wallpapers.ts b/src/runner/plugins/wallpapers.ts
similarity index 100%
rename from ags/runner/plugins/wallpapers.ts
rename to src/runner/plugins/wallpapers.ts
diff --git a/ags/runner/plugins/websearch.ts b/src/runner/plugins/websearch.ts
similarity index 100%
rename from ags/runner/plugins/websearch.ts
rename to src/runner/plugins/websearch.ts
diff --git a/ags/runner/widgets/ResultWidget.tsx b/src/runner/widgets/ResultWidget.tsx
similarity index 100%
rename from ags/runner/widgets/ResultWidget.tsx
rename to src/runner/widgets/ResultWidget.tsx
diff --git a/ags/scripts/apps.ts b/src/scripts/apps.ts
similarity index 100%
rename from ags/scripts/apps.ts
rename to src/scripts/apps.ts
diff --git a/ags/scripts/arg-handler.ts b/src/scripts/arg-handler.ts
similarity index 97%
rename from ags/scripts/arg-handler.ts
rename to src/scripts/arg-handler.ts
index fc65e40..449467e 100644
--- a/ags/scripts/arg-handler.ts
+++ b/src/scripts/arg-handler.ts
@@ -9,16 +9,12 @@ import { player, setPlayer } from "../widget/bar/Media";
import { generalConfig } from "../app";
import AstalIO from "gi://AstalIO";
-import GLib from "gi://GLib?version=2.0";
-import App from "ags/gtk4/app";
import AstalMpris from "gi://AstalMpris";
let wsTimeout: (AstalIO.Time|undefined);
-export function handleArguments(request: string): any {
- const args: Array = GLib.shell_parse_argv(request)[1]!;
-
+export function handleArguments(args: Array): any {
switch(args[0]) {
case "help":
case "h":
@@ -39,7 +35,7 @@ export function handleArguments(request: string): any {
case "reload":
restartInstance();
- return `Restarting instance with name: ${App.instanceName ?? "astal"}`;
+ return "Restarting instance...";
case "runner":
!Runner.instance ?
diff --git a/ags/scripts/auth.ts b/src/scripts/auth.ts
similarity index 100%
rename from ags/scripts/auth.ts
rename to src/scripts/auth.ts
diff --git a/ags/scripts/brightness.ts b/src/scripts/brightness.ts
similarity index 100%
rename from ags/scripts/brightness.ts
rename to src/scripts/brightness.ts
diff --git a/ags/scripts/clipboard.ts b/src/scripts/clipboard.ts
similarity index 100%
rename from ags/scripts/clipboard.ts
rename to src/scripts/clipboard.ts
diff --git a/ags/scripts/compositor.ts b/src/scripts/compositor.ts
similarity index 100%
rename from ags/scripts/compositor.ts
rename to src/scripts/compositor.ts
diff --git a/ags/scripts/config.ts b/src/scripts/config.ts
similarity index 100%
rename from ags/scripts/config.ts
rename to src/scripts/config.ts
index 4e58440..890cf95 100644
--- a/ags/scripts/config.ts
+++ b/src/scripts/config.ts
@@ -2,13 +2,13 @@ import { timeout } from "ags/time";
import { monitorFile, readFileAsync } from "ags/file";
import { Notifications } from "./notifications";
import { encoder } from "./utils";
+import { Accessor } from "ags";
import GObject, { getter, register } from "ags/gobject";
import GLib from "gi://GLib?version=2.0";
import Gio from "gi://Gio?version=2.0";
import AstalIO from "gi://AstalIO";
import AstalNotifd from "gi://AstalNotifd";
-import { Accessor } from "ags";
export { Config };
diff --git a/ags/scripts/nightlight.ts b/src/scripts/nightlight.ts
similarity index 100%
rename from ags/scripts/nightlight.ts
rename to src/scripts/nightlight.ts
diff --git a/ags/scripts/notifications.ts b/src/scripts/notifications.ts
similarity index 100%
rename from ags/scripts/notifications.ts
rename to src/scripts/notifications.ts
diff --git a/ags/scripts/recording.ts b/src/scripts/recording.ts
similarity index 100%
rename from ags/scripts/recording.ts
rename to src/scripts/recording.ts
diff --git a/ags/scripts/reload-handler.ts b/src/scripts/reload-handler.ts
similarity index 88%
rename from ags/scripts/reload-handler.ts
rename to src/scripts/reload-handler.ts
index 3af6cbb..e5e43fd 100644
--- a/ags/scripts/reload-handler.ts
+++ b/src/scripts/reload-handler.ts
@@ -2,14 +2,13 @@ import { monitorFile } from "ags/file";
import { execAsync } from "ags/process";
import { uwsmIsActive } from "./apps";
-import App from "ags/gtk4/app";
import Gio from "gi://Gio?version=2.0";
const monitoringPaths = [ "./scripts", "./window", "./app.ts", "env.d.ts" ];
export function restartInstance(): void {
- execAsync(`astal -q ${ App.instanceName ?? "astal" }`);
+ execAsync(`astal -q "colorshell"`);
Gio.Subprocess.new(
( uwsmIsActive ?
[ "uwsm", "app", "--", "ags", "run" ]
diff --git a/ags/scripts/stylesheet.ts b/src/scripts/stylesheet.ts
similarity index 95%
rename from ags/scripts/stylesheet.ts
rename to src/scripts/stylesheet.ts
index 6fa452e..d3affd5 100644
--- a/ags/scripts/stylesheet.ts
+++ b/src/scripts/stylesheet.ts
@@ -1,9 +1,9 @@
import { monitorFile, readFile } from "ags/file";
import { timeout } from "ags/time";
import { exec, execAsync } from "ags/process";
+import { Shell } from "../app";
import AstalIO from "gi://AstalIO";
-import App from "ags/gtk4/app";
import Gio from "gi://Gio?version=2.0";
import GLib from "gi://GLib?version=2.0";
@@ -30,8 +30,8 @@ export class Stylesheet {
const content = readFile(cssFilePath);
if(content?.trim()) {
- App.reset_css();
- App.apply_css(content);
+ Shell.getDefault().resetStyle();
+ Shell.getDefault().applyStyle(content);
console.log("Stylesheet: done applying stylesheet to shell");
return;
diff --git a/ags/scripts/utils.ts b/src/scripts/utils.ts
similarity index 100%
rename from ags/scripts/utils.ts
rename to src/scripts/utils.ts
diff --git a/ags/scripts/volume.ts b/src/scripts/volume.ts
similarity index 100%
rename from ags/scripts/volume.ts
rename to src/scripts/volume.ts
diff --git a/ags/scripts/wallpaper.ts b/src/scripts/wallpaper.ts
similarity index 100%
rename from ags/scripts/wallpaper.ts
rename to src/scripts/wallpaper.ts
diff --git a/ags/style.scss b/src/style.scss
similarity index 100%
rename from ags/style.scss
rename to src/style.scss
diff --git a/ags/style/_apps-window.scss b/src/style/_apps-window.scss
similarity index 100%
rename from ags/style/_apps-window.scss
rename to src/style/_apps-window.scss
diff --git a/ags/style/_bar.scss b/src/style/_bar.scss
similarity index 100%
rename from ags/style/_bar.scss
rename to src/style/_bar.scss
diff --git a/ags/style/_center-window.scss b/src/style/_center-window.scss
similarity index 100%
rename from ags/style/_center-window.scss
rename to src/style/_center-window.scss
diff --git a/ags/style/_colors.scss b/src/style/_colors.scss
similarity index 100%
rename from ags/style/_colors.scss
rename to src/style/_colors.scss
diff --git a/ags/style/_control-center.scss b/src/style/_control-center.scss
similarity index 100%
rename from ags/style/_control-center.scss
rename to src/style/_control-center.scss
diff --git a/ags/style/_float-notifications.scss b/src/style/_float-notifications.scss
similarity index 100%
rename from ags/style/_float-notifications.scss
rename to src/style/_float-notifications.scss
diff --git a/ags/style/_functions.scss b/src/style/_functions.scss
similarity index 100%
rename from ags/style/_functions.scss
rename to src/style/_functions.scss
diff --git a/ags/style/_logout-menu.scss b/src/style/_logout-menu.scss
similarity index 100%
rename from ags/style/_logout-menu.scss
rename to src/style/_logout-menu.scss
diff --git a/ags/style/_mixins.scss b/src/style/_mixins.scss
similarity index 100%
rename from ags/style/_mixins.scss
rename to src/style/_mixins.scss
diff --git a/ags/style/_osd.scss b/src/style/_osd.scss
similarity index 100%
rename from ags/style/_osd.scss
rename to src/style/_osd.scss
diff --git a/ags/style/_runner.scss b/src/style/_runner.scss
similarity index 100%
rename from ags/style/_runner.scss
rename to src/style/_runner.scss
diff --git a/src/style/_wal.scss b/src/style/_wal.scss
new file mode 100644
index 0000000..f2259d3
--- /dev/null
+++ b/src/style/_wal.scss
@@ -0,0 +1,26 @@
+// SCSS Variables
+// Generated by 'wal'
+$wallpaper: "/home/joaov/wallpapers/Anime Girl Drawing Sofa.jpg";
+
+// Special
+$background: #0e1721;
+$foreground: #c2c5c7;
+$cursor: #c2c5c7;
+
+// Colors
+$color0: #0e1721;
+$color1: #393f39;
+$color2: #4d4c46;
+$color3: #824f36;
+$color4: #6c574a;
+$color5: #816956;
+$color6: #4e767a;
+$color7: #91959b;
+$color8: #5d6772;
+$color9: #4C544C;
+$color10: #67665E;
+$color11: #AE6A49;
+$color12: #917463;
+$color13: #AC8C73;
+$color14: #689EA3;
+$color15: #c2c5c7;
diff --git a/ags/tsconfig.json b/src/tsconfig.json
similarity index 100%
rename from ags/tsconfig.json
rename to src/tsconfig.json
diff --git a/ags/widget/AskPopup.tsx b/src/widget/AskPopup.tsx
similarity index 100%
rename from ags/widget/AskPopup.tsx
rename to src/widget/AskPopup.tsx
diff --git a/ags/widget/BackgroundWindow.tsx b/src/widget/BackgroundWindow.tsx
similarity index 100%
rename from ags/widget/BackgroundWindow.tsx
rename to src/widget/BackgroundWindow.tsx
diff --git a/ags/widget/CustomDialog.tsx b/src/widget/CustomDialog.tsx
similarity index 100%
rename from ags/widget/CustomDialog.tsx
rename to src/widget/CustomDialog.tsx
diff --git a/ags/widget/EntryPopup.tsx b/src/widget/EntryPopup.tsx
similarity index 100%
rename from ags/widget/EntryPopup.tsx
rename to src/widget/EntryPopup.tsx
diff --git a/ags/widget/Notification.tsx b/src/widget/Notification.tsx
similarity index 100%
rename from ags/widget/Notification.tsx
rename to src/widget/Notification.tsx
diff --git a/ags/widget/PopupWindow.tsx b/src/widget/PopupWindow.tsx
similarity index 90%
rename from ags/widget/PopupWindow.tsx
rename to src/widget/PopupWindow.tsx
index b46c5dc..0ca2df7 100644
--- a/ags/widget/PopupWindow.tsx
+++ b/src/widget/PopupWindow.tsx
@@ -52,26 +52,26 @@ export function PopupWindow(props: PopupWindowProps): GObject.Object {
let clickedInside: boolean = false;
return
diff --git a/ags/widget/Separator.tsx b/src/widget/Separator.tsx
similarity index 100%
rename from ags/widget/Separator.tsx
rename to src/widget/Separator.tsx
diff --git a/ags/widget/bar/Apps.tsx b/src/widget/bar/Apps.tsx
similarity index 100%
rename from ags/widget/bar/Apps.tsx
rename to src/widget/bar/Apps.tsx
diff --git a/ags/widget/bar/Clock.tsx b/src/widget/bar/Clock.tsx
similarity index 100%
rename from ags/widget/bar/Clock.tsx
rename to src/widget/bar/Clock.tsx
diff --git a/ags/widget/bar/FocusedClient.tsx b/src/widget/bar/FocusedClient.tsx
similarity index 100%
rename from ags/widget/bar/FocusedClient.tsx
rename to src/widget/bar/FocusedClient.tsx
diff --git a/ags/widget/bar/Media.tsx b/src/widget/bar/Media.tsx
similarity index 100%
rename from ags/widget/bar/Media.tsx
rename to src/widget/bar/Media.tsx
diff --git a/ags/widget/bar/Status.tsx b/src/widget/bar/Status.tsx
similarity index 100%
rename from ags/widget/bar/Status.tsx
rename to src/widget/bar/Status.tsx
diff --git a/ags/widget/bar/Tray.tsx b/src/widget/bar/Tray.tsx
similarity index 100%
rename from ags/widget/bar/Tray.tsx
rename to src/widget/bar/Tray.tsx
diff --git a/ags/widget/bar/Workspaces.tsx b/src/widget/bar/Workspaces.tsx
similarity index 100%
rename from ags/widget/bar/Workspaces.tsx
rename to src/widget/bar/Workspaces.tsx
diff --git a/ags/widget/center-window/BigMedia.tsx b/src/widget/center-window/BigMedia.tsx
similarity index 100%
rename from ags/widget/center-window/BigMedia.tsx
rename to src/widget/center-window/BigMedia.tsx
diff --git a/ags/widget/control-center/NotifHistory.tsx b/src/widget/control-center/NotifHistory.tsx
similarity index 100%
rename from ags/widget/control-center/NotifHistory.tsx
rename to src/widget/control-center/NotifHistory.tsx
diff --git a/ags/widget/control-center/Pages.tsx b/src/widget/control-center/Pages.tsx
similarity index 100%
rename from ags/widget/control-center/Pages.tsx
rename to src/widget/control-center/Pages.tsx
diff --git a/ags/widget/control-center/QuickActions.tsx b/src/widget/control-center/QuickActions.tsx
similarity index 100%
rename from ags/widget/control-center/QuickActions.tsx
rename to src/widget/control-center/QuickActions.tsx
diff --git a/ags/widget/control-center/Sliders.tsx b/src/widget/control-center/Sliders.tsx
similarity index 100%
rename from ags/widget/control-center/Sliders.tsx
rename to src/widget/control-center/Sliders.tsx
diff --git a/ags/widget/control-center/Tiles.tsx b/src/widget/control-center/Tiles.tsx
similarity index 100%
rename from ags/widget/control-center/Tiles.tsx
rename to src/widget/control-center/Tiles.tsx
diff --git a/ags/widget/control-center/pages/Bluetooth.tsx b/src/widget/control-center/pages/Bluetooth.tsx
similarity index 100%
rename from ags/widget/control-center/pages/Bluetooth.tsx
rename to src/widget/control-center/pages/Bluetooth.tsx
diff --git a/ags/widget/control-center/pages/Microphone.tsx b/src/widget/control-center/pages/Microphone.tsx
similarity index 100%
rename from ags/widget/control-center/pages/Microphone.tsx
rename to src/widget/control-center/pages/Microphone.tsx
diff --git a/ags/widget/control-center/pages/Network.tsx b/src/widget/control-center/pages/Network.tsx
similarity index 100%
rename from ags/widget/control-center/pages/Network.tsx
rename to src/widget/control-center/pages/Network.tsx
diff --git a/ags/widget/control-center/pages/NightLight.tsx b/src/widget/control-center/pages/NightLight.tsx
similarity index 100%
rename from ags/widget/control-center/pages/NightLight.tsx
rename to src/widget/control-center/pages/NightLight.tsx
diff --git a/ags/widget/control-center/pages/Page.tsx b/src/widget/control-center/pages/Page.tsx
similarity index 100%
rename from ags/widget/control-center/pages/Page.tsx
rename to src/widget/control-center/pages/Page.tsx
diff --git a/ags/widget/control-center/pages/Sound.tsx b/src/widget/control-center/pages/Sound.tsx
similarity index 100%
rename from ags/widget/control-center/pages/Sound.tsx
rename to src/widget/control-center/pages/Sound.tsx
diff --git a/ags/widget/control-center/tiles/Bluetooth.tsx b/src/widget/control-center/tiles/Bluetooth.tsx
similarity index 100%
rename from ags/widget/control-center/tiles/Bluetooth.tsx
rename to src/widget/control-center/tiles/Bluetooth.tsx
diff --git a/ags/widget/control-center/tiles/DoNotDisturb.tsx b/src/widget/control-center/tiles/DoNotDisturb.tsx
similarity index 100%
rename from ags/widget/control-center/tiles/DoNotDisturb.tsx
rename to src/widget/control-center/tiles/DoNotDisturb.tsx
diff --git a/ags/widget/control-center/tiles/Network.tsx b/src/widget/control-center/tiles/Network.tsx
similarity index 100%
rename from ags/widget/control-center/tiles/Network.tsx
rename to src/widget/control-center/tiles/Network.tsx
diff --git a/ags/widget/control-center/tiles/NightLight.tsx b/src/widget/control-center/tiles/NightLight.tsx
similarity index 100%
rename from ags/widget/control-center/tiles/NightLight.tsx
rename to src/widget/control-center/tiles/NightLight.tsx
diff --git a/ags/widget/control-center/tiles/Recording.tsx b/src/widget/control-center/tiles/Recording.tsx
similarity index 100%
rename from ags/widget/control-center/tiles/Recording.tsx
rename to src/widget/control-center/tiles/Recording.tsx
diff --git a/src/widget/control-center/tiles/Tile.tsx b/src/widget/control-center/tiles/Tile.tsx
new file mode 100644
index 0000000..2b4a976
--- /dev/null
+++ b/src/widget/control-center/tiles/Tile.tsx
@@ -0,0 +1,198 @@
+import { Gtk } from "ags/gtk4";
+import { tr } from "../../../i18n/intl";
+import { Accessor, createBinding, createComputed, createState, getScope, onCleanup } from "ags";
+import { omitObjectKeys, variableToBoolean } from "../../../scripts/utils";
+import GObject, { property, register, signal } from "ags/gobject";
+
+import Pango from "gi://Pango?version=1.0";
+
+
+export { Tile };
+
+@register({ GTypeName: "Tile" })
+class Tile extends Gtk.Box {
+ @signal(Boolean) toggled(_state: boolean) {}
+ @signal() enabled() {}
+ @signal() disabled() {}
+ @signal() clicked() {}
+
+ @property(String)
+ public icon: string;
+ @property(String)
+ public title: string;
+ @property(String)
+ public description: string = "";
+ @property(Boolean)
+ public enableOnClicked: boolean = true;
+ @property(Boolean)
+ public state: boolean = false;
+
+ declare $signals: Gtk.Box.SignalSignatures & {
+ "toggled": (_state: boolean) => void;
+ "enabled": () => void;
+ "disabled": () => void;
+ "clicked": () => void;
+ };
+
+ public enable(): void {
+ if(this.state) return;
+
+ this.emit("toggled", true);
+ this.emit("enabled");
+ this.state = true;
+ }
+
+ public disable(): void {
+ if(!this.state) return;
+
+ this.emit("toggled", false);
+ this.emit("disabled");
+ this.state = false;
+ }
+
+ constructor(props: Omit & {
+ icon: string;
+ title: string;
+ description?: string;
+ state?: boolean;
+ enableOnClicked?: boolean;
+ }) {
+ super(omitObjectKeys(props, [
+ "icon",
+ "title",
+ "description",
+ "state",
+ "enableOnClicked"
+ ]));
+
+ this.icon = props.icon;
+ this.title = props.title;
+
+ if(props.description != null)
+ this.description = props.description;
+
+ if(props.state != null)
+ this.state = props.state;
+
+ if(props.enableOnClicked != null)
+ this.enableOnClicked = props.enableOnClicked;
+
+ const connections = new Map();
+ const gestureClick = Gtk.GestureClick.new();
+
+ this.add_controller(gestureClick);
+
+ connections.set(gestureClick, gestureClick.connect("released", () => {
+ this.emit("clicked");
+ if(this.enableOnClicked && !this.state)
+ this.enable();
+ return true;
+ }));
+
+ this.prepend(
+
+
+ as Gtk.Box
+ );
+
+ this.append(
+
+
+
+ as Gtk.Box
+ );
+
+ getScope()?.onCleanup(() => connections.forEach((id, obj) => obj.disconnect(id)));
+ }
+
+ emit(
+ signal: Signal,
+ ...args: Parameters<(typeof this.$signals)[Signal]>
+ ): void {
+ super.emit(signal, ...args);
+ }
+
+ connect(
+ signal: Signal,
+ callback: (typeof this.$signals)[Signal]
+ ): number {
+ return super.connect(signal, callback);
+ }
+}
+
+export function TileFun(props: TileProps): Gtk.Widget {
+ const subs: Array<() => void> = [];
+ const [toggled, setToggled] = createState(((props.toggleState instanceof Accessor) ?
+ props.toggleState.get()
+ : props.toggleState) ?? false);
+
+
+ (props.toggleState instanceof Accessor) && subs.push(
+ props.toggleState.subscribe(() =>
+ setToggled((props.toggleState as Accessor).get() ?? false))
+ );
+
+ onCleanup(() => subs.forEach(s => s()));
+
+ return
+ `tile ${clss} ${isToggled ? "toggled" : ""} ${
+ props.onClickMore ? "has-more" : ""
+ }`
+ )
+ : toggled.as(isToggled =>
+ `tile ${props.class ? props.class : ""} ${isToggled ? "toggled" : ""} ${
+ props.onClickMore ? "has-more" : ""
+ }`
+ )
+ }>
+ {
+ if(toggled.get()) {
+ setToggled(false);
+ props.onToggledOff?.();
+ return;
+ }
+
+ setToggled(true);
+ props.onToggledOn?.();
+ }}>
+
+
+ {props.icon && `font-size: ${size}px;`)
+ : (props.iconSize ?
+ `font-size: ${props.iconSize ?? 16}px;`
+ : undefined)
+ } />}
+
+
+
+
+
+ {props.description && str ?? "")
+ : (props.description ?? "")
+ } halign={Gtk.Align.START}
+ />}
+
+
+
+
+
+ {
+ ((props.enableOnClickMore instanceof Accessor) ?
+ props.enableOnClickMore.get()
+ : props.enableOnClickMore) && props.onToggledOn?.();
+
+ props.onClickMore?.();
+ }} tooltipText={tr("control_center.tiles.more")} />
+ as Gtk.Widget;
+}
diff --git a/ags/window/AppsWindow.tsx b/src/window/AppsWindow.tsx
similarity index 100%
rename from ags/window/AppsWindow.tsx
rename to src/window/AppsWindow.tsx
diff --git a/ags/window/Bar.tsx b/src/window/Bar.tsx
similarity index 100%
rename from ags/window/Bar.tsx
rename to src/window/Bar.tsx
diff --git a/ags/window/CenterWindow.tsx b/src/window/CenterWindow.tsx
similarity index 100%
rename from ags/window/CenterWindow.tsx
rename to src/window/CenterWindow.tsx
diff --git a/ags/window/ControlCenter.tsx b/src/window/ControlCenter.tsx
similarity index 100%
rename from ags/window/ControlCenter.tsx
rename to src/window/ControlCenter.tsx
diff --git a/ags/window/FloatingNotifications.tsx b/src/window/FloatingNotifications.tsx
similarity index 100%
rename from ags/window/FloatingNotifications.tsx
rename to src/window/FloatingNotifications.tsx
diff --git a/ags/window/LogoutMenu.tsx b/src/window/LogoutMenu.tsx
similarity index 100%
rename from ags/window/LogoutMenu.tsx
rename to src/window/LogoutMenu.tsx
diff --git a/ags/window/OSD.tsx b/src/window/OSD.tsx
similarity index 73%
rename from ags/window/OSD.tsx
rename to src/window/OSD.tsx
index b0d7954..abe9702 100644
--- a/ags/window/OSD.tsx
+++ b/src/window/OSD.tsx
@@ -1,6 +1,9 @@
import { Astal, Gtk } from "ags/gtk4";
import { createBinding, createState } from "ags";
import { Wireplumber } from "../scripts/volume";
+import { Windows } from "../windows";
+import { Time, timeout } from "ags/time";
+
import Pango from "gi://Pango?version=1.0";
@@ -11,6 +14,7 @@ export enum OSDModes {
}
const [osdMode, setOSDMode] = createState(OSDModes.NONE);
+let osdTimer: (Time|undefined), osdTimeout = 3500;
export const OSD = (mon: number) => {
if(osdMode.get() === OSDModes.NONE)
@@ -37,3 +41,24 @@ export const OSD = (mon: number) => {
}
+
+export function triggerOSD() {
+ if(Windows.getDefault().isOpen("control-center")) return;
+
+ Windows.getDefault().open("osd");
+
+ if(!osdTimer) {
+ osdTimer = timeout(osdTimeout, () => {
+ osdTimer = undefined;
+ Windows.getDefault().close("osd");
+ });
+
+ return;
+ }
+
+ osdTimer.cancel();
+ osdTimer = timeout(osdTimeout, () => {
+ Windows.getDefault().close("osd");
+ osdTimer = undefined;
+ });
+}
diff --git a/ags/windows.ts b/src/windows.ts
similarity index 98%
rename from ags/windows.ts
rename to src/windows.ts
index 735ee3d..20eb185 100644
--- a/ags/windows.ts
+++ b/src/windows.ts
@@ -8,7 +8,7 @@ import { CenterWindow } from "./window/CenterWindow";
import { LogoutMenu } from "./window/LogoutMenu";
import { AppsWindow } from "./window/AppsWindow";
import { Scope } from "/usr/share/ags/js/gnim/src/jsx/scope";
-import { appScope } from "./app";
+import { Shell } from "./app";
import GObject, { getter, register, signal } from "ags/gobject";
import AstalHyprland from "gi://AstalHyprland";
@@ -69,7 +69,7 @@ class Windows extends GObject.Object {
this.reopen())
];
- appScope.run(() => {
+ Shell.getDefault().scope.run(() => {
// open windows with the "open" status on startup
Object.keys(this.#windows).filter((key) =>
this.#windows[key].status === "open"
@@ -79,7 +79,7 @@ class Windows extends GObject.Object {
});
});
- appScope.onCleanup(() => {
+ Shell.getDefault().scope.onCleanup(() => {
hyprConnections.forEach(id =>
GObject.signal_handler_is_connected(AstalHyprland.get_default(), id) &&
AstalHyprland.get_default().disconnect(id)
diff --git a/update-repo.sh b/update-repo.sh
index 8c1c700..9fbb589 100644
--- a/update-repo.sh
+++ b/update-repo.sh
@@ -2,6 +2,8 @@
source ./utils.sh
+outdir="./config"
+
Check_current_dir() {
if ! [[ -f ./utils.sh ]]; then
Send_log warn "Looks like you're not in the repository directory!\nPlease run this script from the repo directory to avoid problems."
@@ -12,49 +14,28 @@ Check_current_dir() {
}
Clean_local() {
- Send_log "info" "Cleaning current repo dotfiles..."
- for dir in ${config_dirs[@]}; do
- if [[ -d "./$dir" ]]; then
- rm -rf ./$dir
- fi
- done
-
- Send_log "info" "Cleaning wallpapers..."
- rm -rf ./wallpapers
-
- echo "Done cleaning."
+ Send_log "info" "Cleaning local config..."
+ rm -rf $outdir
}
Update_local() {
for dir in ${config_dirs[@]}; do
if [[ -d "$XDG_CONFIG_HOME/$dir" ]] || [[ -f "$XDG_CONFIG_HOME/$dir" ]]; then
Send_log "Copying ${dir^}"
- cp -r $XDG_CONFIG_HOME/$dir ./$dir
+ mkdir -p $outdir/$dir
+ cp -r $XDG_CONFIG_HOME/$dir $outdir/$dir
else
Send_log "warn" "Looks like the ${dir^} dir is in fault! Skipping..."
fi
done
-
- walls_dir=$WALLPAPERS
-
- if [[ -z "$walls_dir" ]] || [[ ! -d "$walls_dir" ]]; then
- walls_dir="$HOME/wallpapers"
- fi
-
- if [[ ! -z "$walls_dir" ]] && [[ -d "$walls_dir" ]]; then
- Send_log "Copying wallpapers"
- mkdir -p ./wallpapers
- cp -rf $HOME/wallpapers/* ./wallpapers
-
- return
- fi
-
- Send_log warn "Wallpapers dir could not be found in $HOME, skipping..."
}
Update_remote() {
- echo "Git status:"
- /bin/env git status
+ command -v git && \
+ git status \
+ || (echo "git not found! please install git before doing this" && \
+ exit 1)
+
echo "Please type one of the dotfiles you want to push now(only one dir):"
printf "directory/file: "
read chosen_dir
diff --git a/utils.sh b/utils.sh
index ade010a..488ba29 100644
--- a/utils.sh
+++ b/utils.sh
@@ -20,7 +20,6 @@ config_dirs=(
"hypr/hyprland.conf"
"hypr/hypridle.conf"
"kitty/kitty.conf"
- "ags"
)
# -------------
diff --git a/wallpapers/Arch Linux Miku.jpg b/wallpapers/Arch Linux Miku.jpg
deleted file mode 100644
index 69eda12..0000000
Binary files a/wallpapers/Arch Linux Miku.jpg and /dev/null differ
diff --git a/wallpapers/Balcony Girl.png b/wallpapers/Balcony Girl.png
deleted file mode 100644
index c5e3578..0000000
Binary files a/wallpapers/Balcony Girl.png and /dev/null differ
diff --git a/wallpapers/Big Sur.jpg b/wallpapers/Big Sur.jpg
deleted file mode 100644
index cebebf5..0000000
Binary files a/wallpapers/Big Sur.jpg and /dev/null differ
diff --git a/wallpapers/Bocchi The Rock!.png b/wallpapers/Bocchi The Rock!.png
deleted file mode 100644
index b2860b4..0000000
Binary files a/wallpapers/Bocchi The Rock!.png and /dev/null differ
diff --git a/wallpapers/Chinatown.png b/wallpapers/Chinatown.png
deleted file mode 100644
index 20ce431..0000000
Binary files a/wallpapers/Chinatown.png and /dev/null differ
diff --git a/wallpapers/Frieren At The Funeral.jpg b/wallpapers/Frieren At The Funeral.jpg
deleted file mode 100644
index f63acab..0000000
Binary files a/wallpapers/Frieren At The Funeral.jpg and /dev/null differ
diff --git a/wallpapers/Frieren Blue.jpeg b/wallpapers/Frieren Blue.jpeg
deleted file mode 100644
index 31ede00..0000000
Binary files a/wallpapers/Frieren Blue.jpeg and /dev/null differ
diff --git a/wallpapers/Frieren Night Film.jpeg b/wallpapers/Frieren Night Film.jpeg
deleted file mode 100644
index f7029dc..0000000
Binary files a/wallpapers/Frieren Night Film.jpeg and /dev/null differ
diff --git a/wallpapers/Frieren Rain.jpg b/wallpapers/Frieren Rain.jpg
deleted file mode 100644
index 183e802..0000000
Binary files a/wallpapers/Frieren Rain.jpg and /dev/null differ
diff --git a/wallpapers/Frieren Ring.jpeg b/wallpapers/Frieren Ring.jpeg
deleted file mode 100644
index a23e768..0000000
Binary files a/wallpapers/Frieren Ring.jpeg and /dev/null differ
diff --git a/wallpapers/Frieren Sending Kiss.jpeg b/wallpapers/Frieren Sending Kiss.jpeg
deleted file mode 100644
index 02e7287..0000000
Binary files a/wallpapers/Frieren Sending Kiss.jpeg and /dev/null differ
diff --git a/wallpapers/Frieren Sunset.jpeg b/wallpapers/Frieren Sunset.jpeg
deleted file mode 100644
index 26315f0..0000000
Binary files a/wallpapers/Frieren Sunset.jpeg and /dev/null differ
diff --git a/wallpapers/Frieren Underwater.jpg b/wallpapers/Frieren Underwater.jpg
deleted file mode 100644
index a155827..0000000
Binary files a/wallpapers/Frieren Underwater.jpg and /dev/null differ
diff --git a/wallpapers/Garden Kita.png b/wallpapers/Garden Kita.png
deleted file mode 100644
index b09392d..0000000
Binary files a/wallpapers/Garden Kita.png and /dev/null differ
diff --git a/wallpapers/Gruvbox Girl.png b/wallpapers/Gruvbox Girl.png
deleted file mode 100644
index e96d790..0000000
Binary files a/wallpapers/Gruvbox Girl.png and /dev/null differ
diff --git a/wallpapers/Gumi Bridge.jpg b/wallpapers/Gumi Bridge.jpg
deleted file mode 100644
index 6a2bc2c..0000000
Binary files a/wallpapers/Gumi Bridge.jpg and /dev/null differ
diff --git a/wallpapers/Gumi Forest Sunlight.jpg b/wallpapers/Gumi Forest Sunlight.jpg
deleted file mode 100644
index 874c745..0000000
Binary files a/wallpapers/Gumi Forest Sunlight.jpg and /dev/null differ
diff --git a/wallpapers/Gumi Ocean Sunset.jpg b/wallpapers/Gumi Ocean Sunset.jpg
deleted file mode 100644
index 615ad68..0000000
Binary files a/wallpapers/Gumi Ocean Sunset.jpg and /dev/null differ
diff --git a/wallpapers/Gumi Street Bike.jpg b/wallpapers/Gumi Street Bike.jpg
deleted file mode 100644
index eeb0f76..0000000
Binary files a/wallpapers/Gumi Street Bike.jpg and /dev/null differ
diff --git a/wallpapers/Gumi VOCALOID.png b/wallpapers/Gumi VOCALOID.png
deleted file mode 100644
index 051d9e6..0000000
Binary files a/wallpapers/Gumi VOCALOID.png and /dev/null differ
diff --git a/wallpapers/Hatsune Miku Birthday!.png b/wallpapers/Hatsune Miku Birthday!.png
deleted file mode 100644
index adae960..0000000
Binary files a/wallpapers/Hatsune Miku Birthday!.png and /dev/null differ
diff --git a/wallpapers/Hatsune Miku and Megurine Luka.jpg b/wallpapers/Hatsune Miku and Megurine Luka.jpg
deleted file mode 100644
index 8410181..0000000
Binary files a/wallpapers/Hatsune Miku and Megurine Luka.jpg and /dev/null differ
diff --git a/wallpapers/Hitori Gotoh College Corridor.png b/wallpapers/Hitori Gotoh College Corridor.png
deleted file mode 100644
index 0626a25..0000000
Binary files a/wallpapers/Hitori Gotoh College Corridor.png and /dev/null differ
diff --git a/wallpapers/Hypr-chan.png b/wallpapers/Hypr-chan.png
deleted file mode 100644
index 5a465ef..0000000
Binary files a/wallpapers/Hypr-chan.png and /dev/null differ
diff --git a/wallpapers/Inabakumori Kaai Yuki.png b/wallpapers/Inabakumori Kaai Yuki.png
deleted file mode 100644
index 7232d2d..0000000
Binary files a/wallpapers/Inabakumori Kaai Yuki.png and /dev/null differ
diff --git a/wallpapers/Inabakumori Osage.jpg b/wallpapers/Inabakumori Osage.jpg
deleted file mode 100644
index e2b5258..0000000
Binary files a/wallpapers/Inabakumori Osage.jpg and /dev/null differ
diff --git a/wallpapers/Kagamine Rin Yellow Tapes.png b/wallpapers/Kagamine Rin Yellow Tapes.png
deleted file mode 100644
index b5d8f1c..0000000
Binary files a/wallpapers/Kagamine Rin Yellow Tapes.png and /dev/null differ
diff --git a/wallpapers/Kessoku Albums.jpeg b/wallpapers/Kessoku Albums.jpeg
deleted file mode 100644
index bd7b8ac..0000000
Binary files a/wallpapers/Kessoku Albums.jpeg and /dev/null differ
diff --git a/wallpapers/Kessoku Band Reunited.jpg b/wallpapers/Kessoku Band Reunited.jpg
deleted file mode 100644
index 1738cf0..0000000
Binary files a/wallpapers/Kessoku Band Reunited.jpg and /dev/null differ
diff --git a/wallpapers/Kessoku Band Rooftop.jpeg b/wallpapers/Kessoku Band Rooftop.jpeg
deleted file mode 100644
index cffadb0..0000000
Binary files a/wallpapers/Kessoku Band Rooftop.jpeg and /dev/null differ
diff --git a/wallpapers/Kikuri Hiroi.jpg b/wallpapers/Kikuri Hiroi.jpg
deleted file mode 100644
index 2f87769..0000000
Binary files a/wallpapers/Kikuri Hiroi.jpg and /dev/null differ
diff --git a/wallpapers/Kita Street.jpeg b/wallpapers/Kita Street.jpeg
deleted file mode 100644
index a501021..0000000
Binary files a/wallpapers/Kita Street.jpeg and /dev/null differ
diff --git a/wallpapers/Kita-chan!!.jpg b/wallpapers/Kita-chan!!.jpg
deleted file mode 100644
index 43c0f68..0000000
Binary files a/wallpapers/Kita-chan!!.jpg and /dev/null differ
diff --git a/wallpapers/Linux Anime Girl.png b/wallpapers/Linux Anime Girl.png
deleted file mode 100644
index 5fa7065..0000000
Binary files a/wallpapers/Linux Anime Girl.png and /dev/null differ
diff --git a/wallpapers/Miku Balloons.jpg b/wallpapers/Miku Balloons.jpg
deleted file mode 100644
index 1d85d99..0000000
Binary files a/wallpapers/Miku Balloons.jpg and /dev/null differ
diff --git a/wallpapers/Miku Bush.jpg b/wallpapers/Miku Bush.jpg
deleted file mode 100644
index b7fa7ab..0000000
Binary files a/wallpapers/Miku Bush.jpg and /dev/null differ
diff --git a/wallpapers/Miku City Sky.png b/wallpapers/Miku City Sky.png
deleted file mode 100644
index 77413dc..0000000
Binary files a/wallpapers/Miku City Sky.png and /dev/null differ
diff --git a/wallpapers/Miku Crying with Mask.jpg b/wallpapers/Miku Crying with Mask.jpg
deleted file mode 100644
index 3f02402..0000000
Binary files a/wallpapers/Miku Crying with Mask.jpg and /dev/null differ
diff --git a/wallpapers/Miku Door.png b/wallpapers/Miku Door.png
deleted file mode 100644
index a6d8442..0000000
Binary files a/wallpapers/Miku Door.png and /dev/null differ
diff --git a/wallpapers/Miku Flower Field.jpg b/wallpapers/Miku Flower Field.jpg
deleted file mode 100644
index 11147cb..0000000
Binary files a/wallpapers/Miku Flower Field.jpg and /dev/null differ
diff --git a/wallpapers/Miku Garden.jpg b/wallpapers/Miku Garden.jpg
deleted file mode 100644
index d0b74a8..0000000
Binary files a/wallpapers/Miku Garden.jpg and /dev/null differ
diff --git a/wallpapers/Miku Green Hair Glasses.png b/wallpapers/Miku Green Hair Glasses.png
deleted file mode 100644
index 0cc78c5..0000000
Binary files a/wallpapers/Miku Green Hair Glasses.png and /dev/null differ
diff --git a/wallpapers/Miku Guitar.jpg b/wallpapers/Miku Guitar.jpg
deleted file mode 100644
index cc90872..0000000
Binary files a/wallpapers/Miku Guitar.jpg and /dev/null differ
diff --git a/wallpapers/Miku Setup.png b/wallpapers/Miku Setup.png
deleted file mode 100644
index 30c7a2a..0000000
Binary files a/wallpapers/Miku Setup.png and /dev/null differ
diff --git a/wallpapers/Miku Stylish with Glasses.jpg b/wallpapers/Miku Stylish with Glasses.jpg
deleted file mode 100644
index 9ef7254..0000000
Binary files a/wallpapers/Miku Stylish with Glasses.jpg and /dev/null differ
diff --git a/wallpapers/Miku Winter.jpg b/wallpapers/Miku Winter.jpg
deleted file mode 100644
index dddccf6..0000000
Binary files a/wallpapers/Miku Winter.jpg and /dev/null differ
diff --git a/wallpapers/Miku, Rin and Luka Chibi.jpg b/wallpapers/Miku, Rin and Luka Chibi.jpg
deleted file mode 100644
index aa573d0..0000000
Binary files a/wallpapers/Miku, Rin and Luka Chibi.jpg and /dev/null differ
diff --git a/wallpapers/Mualani!!.jpg b/wallpapers/Mualani!!.jpg
deleted file mode 100755
index c2c2d10..0000000
Binary files a/wallpapers/Mualani!!.jpg and /dev/null differ
diff --git a/wallpapers/Nijika Ijichi.jpg b/wallpapers/Nijika Ijichi.jpg
deleted file mode 100644
index 97f05be..0000000
Binary files a/wallpapers/Nijika Ijichi.jpg and /dev/null differ
diff --git a/wallpapers/Nijika Train.jpeg b/wallpapers/Nijika Train.jpeg
deleted file mode 100644
index 85f5920..0000000
Binary files a/wallpapers/Nijika Train.jpeg and /dev/null differ
diff --git a/wallpapers/Oshi no Ko Kana Arima.png b/wallpapers/Oshi no Ko Kana Arima.png
deleted file mode 100644
index 3ac35a0..0000000
Binary files a/wallpapers/Oshi no Ko Kana Arima.png and /dev/null differ
diff --git a/wallpapers/Pixel Girl Reading Book.png b/wallpapers/Pixel Girl Reading Book.png
deleted file mode 100644
index f67c92a..0000000
Binary files a/wallpapers/Pixel Girl Reading Book.png and /dev/null differ
diff --git a/wallpapers/Ryo Vending Machine.png b/wallpapers/Ryo Vending Machine.png
deleted file mode 100644
index 170791f..0000000
Binary files a/wallpapers/Ryo Vending Machine.png and /dev/null differ
diff --git a/wallpapers/Ryo Yamada Maid Dress.png b/wallpapers/Ryo Yamada Maid Dress.png
deleted file mode 100644
index d75bcf8..0000000
Binary files a/wallpapers/Ryo Yamada Maid Dress.png and /dev/null differ
diff --git a/wallpapers/Ryo Yamada.png b/wallpapers/Ryo Yamada.png
deleted file mode 100644
index 5239681..0000000
Binary files a/wallpapers/Ryo Yamada.png and /dev/null differ
diff --git a/wallpapers/Vocaloid Karaoke.jpg b/wallpapers/Vocaloid Karaoke.jpg
deleted file mode 100644
index 36c6635..0000000
Binary files a/wallpapers/Vocaloid Karaoke.jpg and /dev/null differ