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