aboutsummaryrefslogtreecommitdiff
path: root/.config/ags/service/wallpaper.ts
diff options
context:
space:
mode:
Diffstat (limited to '.config/ags/service/wallpaper.ts')
-rw-r--r--.config/ags/service/wallpaper.ts127
1 files changed, 0 insertions, 127 deletions
diff --git a/.config/ags/service/wallpaper.ts b/.config/ags/service/wallpaper.ts
deleted file mode 100644
index 865c6d9..0000000
--- a/.config/ags/service/wallpaper.ts
+++ /dev/null
@@ -1,127 +0,0 @@
-import options from 'options';
-import { dependencies, sh } from 'lib/utils';
-
-export type Resolution = 1920 | 1366 | 3840;
-export type Market = 'random' | 'en-US' | 'ja-JP' | 'en-AU' | 'en-GB' | 'de-DE' | 'en-NZ' | 'en-CA';
-
-const WP = `${Utils.HOME}/pictures/wallpapers`;
-const Cache = `${Utils.HOME}/Pictures/Wallpapers/Bing`;
-
-class Wallpaper extends Service {
- static {
- Service.register(
- this,
- {},
- {
- wallpaper: ['string'],
- },
- );
- }
-
- #blockMonitor = false;
-
- #wallpaper() {
- if (!dependencies('swww')) return;
-
- sh('hyprctl cursorpos').then(pos => {
- sh(['swww', 'img', '--transition-type', 'grow', '--transition-pos', pos.replace(' ', ''), WP]).then(() => {
- this.changed('wallpaper');
- });
- });
- }
-
- async #setWallpaper(path: string) {
- this.#blockMonitor = true;
-
- await sh(`cp "${path}" "${WP}"`);
- this.#wallpaper();
-
- this.#blockMonitor = false;
- }
-
- async #fetchBing() {
- // Check if wallpaper functionality is enabled
- if (!options.wallpaper.enable.value) {
- console.log('Wallpaper functionality is disabled.');
- return;
- }
-
- try {
- const res = await Utils.fetch('https://bing.biturl.top/', {
- params: {
- resolution: options.wallpaper.resolution.value,
- format: 'json',
- image_format: 'jpg',
- index: 'random',
- mkt: options.wallpaper.market.value,
- },
- });
-
- if (!res.ok) {
- console.warn('Failed to fetch from Bing:', res.statusText);
- return;
- }
-
- const data = await res.json();
- const { url } = data;
-
- if (!url) {
- console.warn('No URL found in Bing response:', data);
- return;
- }
-
- const file = `${Cache}/${url.replace('https://www.bing.com/th?id=', '')}`;
-
- Utils.ensureDirectory(Cache);
-
- if (!(await Utils.fileExists(file))) {
- await sh(`curl "${url}" --output "${file}"`);
- await this.#setWallpaper(file);
- } else {
- console.log(`Wallpaper already exists: ${file}`);
- }
- } catch (error) {
- console.error('Error fetching wallpaper:', error);
- }
- }
-
- readonly random = () => {
- // Check if wallpaper functionality is enabled
- if (!options.wallpaper.enable.value) {
- console.log('Wallpaper functionality is disabled.');
- return;
- }
- this.#fetchBing();
- };
-
- readonly set = (path: string) => {
- this.#setWallpaper(path);
- };
-
- get wallpaper() {
- return WP;
- }
- constructor() {
- super();
-
- // Respect wallpaper.enable option
- if (!options.wallpaper.enable.value) {
- console.log('Wallpaper functionality is disabled, not starting swww-daemon.');
- return;
- }
-
- if (!dependencies('swww')) return;
-
- // Monitor and set wallpaper if enabled
- Utils.monitorFile(WP, () => {
- if (!this.#blockMonitor) this.#wallpaper();
- });
-
- // Start swww-daemon only when wallpaper is enabled
- Utils.execAsync('swww-daemon')
- .then(this.#wallpaper)
- .catch(() => null);
- }
-}
-
-export default new Wallpaper();