Pikabar v1
Some checks failed
PikaOS Package Build & Release (amd64-v3) / build (push) Failing after 33s

This commit is contained in:
ferreo 2024-11-17 14:55:38 +00:00
parent b544cbd928
commit 94139db6d5
398 changed files with 1777 additions and 4224 deletions

View File

@ -1 +1 @@
2 1

View File

@ -2,20 +2,20 @@
set -e set -e
VERSION="2.0.19" VERSION="1.0.0"
source ./pika-build-config.sh source ./pika-build-config.sh
echo "$PIKA_BUILD_ARCH" > pika-build-arch echo "$PIKA_BUILD_ARCH" > pika-build-arch
# Clone Upstream # Clone Upstream
cd ./pika-hyprland-settings cd ./pikabar
# Get build deps # Get build deps
apt-get build-dep ./ -y apt-get build-dep ./ -y
# Build package # Build package
LOGNAME=root dh_make --createorig -y -l -p pika-hyprland-settings_"$VERSION" || echo "dh-make: Ignoring Last Error" LOGNAME=root dh_make --createorig -y -l -p pikabar_"$VERSION" || echo "dh-make: Ignoring Last Error"
dpkg-buildpackage --no-sign dpkg-buildpackage --no-sign
# Move the debs to output # Move the debs to output

View File

@ -1,354 +0,0 @@
pika-hyprland-settings (2.0.19-101pika6) pika; urgency=medium
* Pika 4 Hyprland - fix config
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.18-101pika1) pika; urgency=medium
* Pika 4 Hyprland - fix cursor sizes
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.17-101pika1) pika; urgency=medium
* Pika 4 Hyprland - laptop battery life fixes
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.16-101pika1) pika; urgency=medium
* Pika 4 Hyprland - udev fixes
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.15-101pika1) pika; urgency=medium
* Pika 4 Hyprland - udev fixes
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.14-101pika1) pika; urgency=medium
* Pika 4 Hyprland - Autostart fixes
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.13-101pika1) pika; urgency=medium
* Pika 4 Hyprland - Autostart fixes
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.12-101pika1) pika; urgency=medium
* Pika 4 Hyprland - Autostart fixes
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.11-101pika1) pika; urgency=medium
* Pika 4 Hyprland - Autostart fixes
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.10-101pika1) pika; urgency=medium
* Pika 4 Hyprland - Autostart fixes
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.9-101pika1) pika; urgency=medium
* Pika 4 Hyprland - Nvidia
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.8-101pika1) pika; urgency=medium
* Pika 4 Hyprland - Nvidia
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.7-101pika1) pika; urgency=medium
* Pika 4 Hyprland - Nvidia
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.6-101pika1) pika; urgency=medium
* Pika 4 Hyprland - Nvidia
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.5-101pika1) pika; urgency=medium
* Pika 4 Hyprland
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.4-101pika1) pika; urgency=medium
* Pika 4 Hyprland
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.3-101pika1) pika; urgency=medium
* Pika 4 Hyprland
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.2-101pika1) pika; urgency=medium
* Pika 4 Hyprland
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.1-101pika1) pika; urgency=medium
* Pike 43 Hyprland
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (2.0.0-101pika1) pika; urgency=medium
* port to pika os 4
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.1.8-100pika1) pikauwu; urgency=medium
* Upstream fix
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.1.7-100pika1) pikauwu; urgency=medium
* Upstream fix
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.1.5-99pika2) lunar; urgency=medium
* Upstream fix
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.1.5-99pika1) lunar; urgency=medium
* Fix overwrite
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.1.4-99pika1) lunar; urgency=medium
* Fix mouse
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.1.3-99pika1) lunar; urgency=medium
* Add systray
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.1.2-99pika1) lunar; urgency=medium
* Fix weather
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.1.1-99pika1) lunar; urgency=medium
* Add missing fonts
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.1.0-99pika1) lunar; urgency=medium
* Add ags
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.9-99pika1) lunar; urgency=medium
* Fix for hyprland update
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.8-99pika1) lunar; urgency=medium
* Fix for hyprland update
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.7-99pika1) lunar; urgency=medium
* Fix for hyprland update
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.6-99pika1) lunar; urgency=medium
* Fix up ironbar
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.5-99pika1) lunar; urgency=medium
* Fix brightness and greetd on iso
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.4-99pika1) lunar; urgency=medium
* Fix brightness and greetd on iso
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.3-99pika1) lunar; urgency=medium
* Fix brightness and grettd on iso
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.2-99pika1) lunar; urgency=medium
* Autolaunch installer if present
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.1-99pika1) lunar; urgency=medium
* Switch to greetd
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika21) lunar; urgency=medium
* Fix brightnessctl
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika20) lunar; urgency=medium
* Make calamares float
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika19) lunar; urgency=medium
* Fix env vars 2
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika18) lunar; urgency=medium
* Fix env vars
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika17) lunar; urgency=medium
* Delay bar after everything
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika16) lunar; urgency=medium
* Env vars
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika15) lunar; urgency=medium
* Keyboard
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika14) lunar; urgency=medium
* Keyboard
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika13) lunar; urgency=medium
* Logout menu configs
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika12) lunar; urgency=medium
* Network manager applet
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika11) lunar; urgency=medium
* QT Wayland fix
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika10) lunar; urgency=medium
* Rofi fix + wallpaper
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika9) lunar; urgency=medium
* Lightdm settings
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika8) lunar; urgency=medium
* Add missing env vars
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika7) lunar; urgency=medium
* Birb birb noise faster
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika6) lunar; urgency=medium
* Fix wallpaper
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika5) lunar; urgency=medium
* Copy files for real this time
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika4) lunar; urgency=medium
* Copy files for real this time
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika3) lunar; urgency=medium
* Copy files for real this time
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika2) lunar; urgency=medium
* First
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300
pika-hyprland-settings (1.0.0-99pika1) lunar; urgency=medium
* First
-- ferrreo <harderthanfire@gmail.com> Sat, 01 Oct 2022 14:50:00 +0300

View File

@ -1,99 +0,0 @@
Source: pika-hyprland-settings
Section: metapackages
Priority: optional
Maintainer: ferrreo <harderthanfire@gmail.com>
Standards-Version: 4.6.1
Build-Depends: debhelper-compat (= 13)
Rules-Requires-Root: no
Package: pika-hyprland-settings
Architecture: linux-any
Depends:
libglib2.0-bin,
ags,
nautilus,
gdm3,
hypridle,
hyprpaper,
wl-clipboard,
hyprlock,
sway-notification-center,
network-manager-gnome,
swayosd,
playerctl,
brightnessctl,
brightness-udev,
pavucontrol,
wlogout,
wayfreeze,
kitty,
grim,
slurp,
rofi-wayland,
grimshot,
cava,
mate-polkit,
fastfetch,
pika-wallpapers,
adw-gtk3-theme,
papirus-icon-theme,
mate-polkit-bin,
Conflicts:
pika-gnome-settings,
pika-kde-settings,
pika-hyprland-settings-nvidia,
Provides:
pika-settings
Replaces:
pika-hyprland-settings-nvidia
Recommends:
chromium,
Section: metapackages
Priority: optional
Description: PikaOS Hyprland Default Config
Package: pika-hyprland-settings-nvidia
Architecture: linux-any
Depends:
libglib2.0-bin,
ags,
nautilus,
gdm3,
hypridle,
hyprpaper,
hyprlock,
sway-notification-center,
network-manager-gnome,
swayosd,
playerctl,
brightnessctl,
brightness-udev,
pavucontrol,
wlogout,
wayfreeze,
kitty,
grim,
slurp,
rofi-wayland,
grimshot,
cava,
mate-polkit,
fastfetch,
pika-wallpapers,
adw-gtk3-theme,
papirus-icon-theme,
mate-polkit-bin,
Conflicts:
pika-gnome-settings,
pika-kde-settings,
pika-hyprland-settings,
Provides:
pika-settings,
pika-hyprland-settings,
Replaces:
pika-hyprland-settings,
Recommends:
chromium,
Section: metapackages
Priority: optional
Description: PikaOS Hyprland Default Config (Nvidia)

View File

@ -1,9 +0,0 @@
[org.gnome.desktop.interface]
accent-color = 'yellow'
icon-theme = 'Papirus-Dark'
gtk-theme = 'adw-gtk3-dark'
show-battery-percentage = true
enable-animations = true
font-antialiasing = 'rgba'
font-hinting = 'full'
color-scheme = 'prefer-dark'

View File

@ -1,23 +0,0 @@
#!/bin/sh
set -e
# Check if /home has any subdirectories
if [ "$(ls -A /home)" ]; then
for u in /home/*; do
# Check if the current item is a directory
if [ -d "$u" ]; then
if [ ! -f "${u}/.config/hypr/hypridle.conf" ]; then
cp -a /etc/skel/. "${u}/"
chown -R "$(basename "$u"):$(basename "$u")" "${u}/"
fi
if [ ! -f "${u}/.config/ags/widgets/systray.js" ]; then
mkdir -p "${u}/.config/ags/"
cp -af /etc/skel/.config/ags/. "${u}/.config/ags/"
fi
fi
done
else
echo "/home is empty. No user directories to process."
fi

View File

@ -1,9 +0,0 @@
[org.gnome.desktop.interface]
accent-color = 'yellow'
icon-theme = 'Papirus-Dark'
gtk-theme = 'adw-gtk3-dark'
show-battery-percentage = true
enable-animations = true
font-antialiasing = 'rgba'
font-hinting = 'full'
color-scheme = 'prefer-dark'

View File

@ -1,23 +0,0 @@
#!/bin/sh
set -e
# Check if /home has any subdirectories
if [ "$(ls -A /home)" ]; then
for u in /home/*; do
# Check if the current item is a directory
if [ -d "$u" ]; then
if [ ! -f "${u}/.config/hypr/hypridle.conf" ]; then
cp -a /etc/skel/. "${u}/"
chown -R "$(basename "$u"):$(basename "$u")" "${u}/"
fi
if [ ! -f "${u}/.config/ags/widgets/systray.js" ]; then
mkdir -p "${u}/.config/ags/"
cp -af /etc/skel/.config/ags/. "${u}/.config/ags/"
fi
fi
done
else
echo "/home is empty. No user directories to process."
fi

View File

@ -1,17 +0,0 @@
#! /usr/bin/make -f
override_dh_strip:
echo "Skipping strip"
override_dh_installgsettings:
dh_installgsettings --priority=50
override_dh_install:
mkdir -pv debian/pika-hyprland-settings
cp -rvf usr debian/pika-hyprland-settings/
cp -rvf etc debian/pika-hyprland-settings/
cp -rvf debian/pika-hyprland-settings debian/pika-hyprland-settings-nvidia
sed -i 's/^#env=/env=/' debian/pika-hyprland-settings-nvidia/etc/skel/.config/hypr/env.conf
%:
dh $@

View File

@ -1,7 +0,0 @@
export default {
numberOfWorkspaces: 10,
city: "London",
weatherUpdateInterval: 900,
isAmerican: false,
sysinfoUpdateInterval: "2s",
}

View File

@ -1,17 +0,0 @@
const { App } = ags;
const { exec } = ags.Utils;
import { bar } from './windows/bar.js';
import { calendar } from './windows/calendar.js';
exec('sassc ' + App.configDir + '/scss/main.scss ' + App.configDir + '/style.css');
App.resetCss();
App.applyCss(`${App.configDir}/style.css`);
export default {
style: App.configDir + '/style.css',
stackTraceOnError: true,
windows: [
bar,
calendar,
],
};

View File

@ -1,178 +0,0 @@
import barConfig from './barConfig.js';
export const getTemp = (temp) => {
if (barConfig?.isAmerican) {
return Math.round((temp * 9 / 5) + 32) + "°F";
}
return temp + "°C";
};
export const getWeatherSymbol = (weatherCode) => {
const dt = new Date();
const hour = dt.getHours();
if (hour <= 7 || hour >= 20) {
return NIGHT_WEATHER_SYMBOL[OMAPI_CODE[weatherCode]];
}
return WEATHER_SYMBOL[OMAPI_CODE[weatherCode]];
};
export const getWeatherDesc = (weatherCode) => {
return OMAPI_CODE_DESC[weatherCode];
};
export const getFormattedTime = () => {
const date = new Date();
let hours = date.getHours();
let minutes = date.getMinutes();
if (hours < 10) hours = "0" + hours;
if (minutes < 10) minutes = "0" + minutes;
return `${hours}:${minutes}`
}
export const getFormattedDate = () => {
const date = new Date();
const day = date.getDay();
const month = date.getMonth();
let dayOfMonth = date.getDate();
switch (dayOfMonth) {
case 1:
case 21:
case 31:
dayOfMonth += "st";
break;
case 2:
case 22:
dayOfMonth += "nd";
break;
case 3:
case 23:
dayOfMonth += "rd";
break;
default:
dayOfMonth += "th";
}
return `${days[day]}, ${dayOfMonth} ${months[month]}`;
}
export const getBattery = (batt) => {
if (batt?.charging) {
return "battery_charging_full";
}
if (batt?.charged) {
return "battery_full";
}
return battIcons[Math.floor(battIcons.length * (batt?.percent / 100))];
}
const battIcons = ["battery_0_bar","battery_1_bar","battery_2_bar","battery_3_bar","battery_4_bar","battery_5_bar", "battery_6_bar"];
const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
const OMAPI_CODE_DESC = {
"0": "Clear",
"1": "Mostly Clear",
"2": "Partly Cloudy",
"3": "Cloudy",
"45": "Fog",
"48": "Freezing Fog",
"51": "Light Drizzle",
"53": "Drizzle",
"55": "Heavy Drizzle",
"56": "Light Freezing Drizzle",
"57": "Freezing Drizzle",
"61": "Light Rain",
"63": "Rain",
"65": "Heavy Rain",
"66": "Light Freezing Rain",
"67": "Freezing Rain",
"71": "Light Snow",
"73": "Snow",
"75": "Heavy Snow",
"77": "Light Snow Shower",
"80": "Light Rain Shower",
"81": "Rain Shower",
"82": "Heavy Rain Shower",
"85": "Snow Shower",
"86": "Heavy Snow Shower",
"95": "Thunderstorm",
"96": "Heavy Thunderstorm",
"99": "THunderstorm with Hail"
}
const OMAPI_CODE = {
"0": "Sunny",
"1": "PartlyCloudy",
"2": "Cloudy",
"3": "VeryCloudy",
"45": "Fog",
"48": "Fog",
"51": "LightShowers",
"53": "LightRain",
"55": "HeavyShowers",
"56": "LightSleetShowers",
"57": "LightSleet",
"61": "LightRain",
"63": "LightRain",
"65": "HeavyRain",
"66": "LightSleet",
"67": "LightSleet",
"71": "LightSnow",
"73": "HeavySnow",
"75": "HeavySnow",
"77": "LightSnowShowers",
"80": "LightShowers",
"81": "HeavyShowers",
"82": "HeavyShowers",
"85": "LightSnowShowers",
"86": "HeavySnowShowers",
"95": "ThunderyShowers",
"96": "ThunderyHeavyRain",
"99": "ThunderySnowShowers"
}
const WEATHER_SYMBOL = {
"Unknown": "air",
"Cloudy": "cloud",
"Fog": "foggy",
"HeavyRain": "rainy",
"HeavyShowers": "rainy",
"HeavySnow": "snowing",
"HeavySnowShowers": "snowing",
"LightRain": "rainy",
"LightShowers": "rainy",
"LightSleet": "rainy",
"LightSleetShowers": "rainy",
"LightSnow": "cloudy_snowing",
"LightSnowShowers": "cloudy_snowing",
"PartlyCloudy": "partly_cloudy_day",
"Sunny": "clear_day",
"ThunderyHeavyRain": "thunderstorm",
"ThunderyShowers": "thunderstorm",
"ThunderySnowShowers": "thunderstorm",
"VeryCloudy": "cloud",
}
const NIGHT_WEATHER_SYMBOL = {
"Unknown": "air",
"Cloudy": "cloud",
"Fog": "foggy",
"HeavyRain": "rainy",
"HeavyShowers": "rainy",
"HeavySnow": "snowing",
"HeavySnowShowers": "snowing",
"LightRain": "rainy",
"LightShowers": "rainy",
"LightSleet": "rainy",
"LightSleetShowers": "rainy",
"LightSnow": "cloudy_snowing",
"LightSnowShowers": "cloudy_snowing",
"PartlyCloudy": "partly_cloudy_night",
"Sunny": "clear_night",
"ThunderyHeavyRain": "thunderstorm",
"ThunderyShowers": "thunderstorm",
"ThunderySnowShowers": "thunderstorm",
"VeryCloudy": "cloud",
}

View File

@ -1,56 +0,0 @@
const { Widget } = ags;
const { lookUpIcon } = ags.Utils;
import { gohypr } from '../services/gohypr.js';
const substitutes = [
{ from: 'code-url-handler', to: 'code' },
];
export const ActiveWindow = () => Widget.Box({
valign: 'center',
halign: 'fill',
className: 'active-window',
children: [
Widget.Icon({
className: 'progicon progiconicon',
connections: [[gohypr, icon => {
if (!gohypr.state) {
return;
}
let classIcon = gohypr.state.activewindow.class;
let titleIcon = gohypr.state.activewindow.title;
substitutes.forEach(({ from, to }) => {
if (classIcon === from)
classIcon = to;
if (titleIcon === from)
titleIcon = to;
});
const hasTitleIcon = lookUpIcon(titleIcon, 128);
const hasClassIcon = lookUpIcon(classIcon, 128);
if (hasClassIcon)
icon.icon_name = classIcon;
if (hasTitleIcon)
icon.icon_name = titleIcon;
icon.visible = hasTitleIcon || hasClassIcon;
}]],
}),
Widget.Label({
className: 'txt txt-norm progicon',
justify: 'left',
halign: 'start',
maxWidthChars: 40,
ellipsize: 3,
connections: [[gohypr, label => {
if (!gohypr.state) {
return;
}
label.label = gohypr.state.activewindow.title || '';
}]]
})
],
});

View File

@ -1,14 +0,0 @@
const { Widget } = ags;
import { Visualiser } from "../widgets/visualiser.js";
import { MediaInfo } from "../widgets/mediainfo.js";
export const Music = () => Widget.Box({
className: 'bar-music',
children: [Widget.Box({
className: 'bar-group-margin bar-sides',
children: [
Visualiser(),
MediaInfo()
]
})]
});

View File

@ -1,34 +0,0 @@
const { Widget, App } = ags;
import { Cpu } from "../widgets/cpu.js";
import { CpuTemp } from "../widgets/cputemp.js";
import { Mem } from "../widgets/mem.js";
import { Clock } from "../widgets/clock.js";
import { Weather } from '../widgets/weather.js';
import { Batt } from '../widgets/batt.js';
import { Systray } from "../widgets/systray.js";
export const System = () => Widget.EventBox({
onPrimaryClick: () => App.toggleWindow('calendar'),
onHover: (eventbox) => eventbox.toggleClassName('hovered', true),
onHoverLost: (eventbox) => eventbox.toggleClassName('hovered', false),
className: 'bar-system',
child: Widget.Box({
className: 'bar-group-margin bar-sides',
halign: 'end',
children: [
Widget.Box({
className: 'bar-group-pad-system spacing-h-15',
halign: 'end',
children: [
Cpu(),
CpuTemp(),
Mem(),
Batt(),
Weather(),
Systray(),
Clock()
],
}),
]
})
});

View File

@ -1,48 +0,0 @@
const { Widget } = ags;
const { execAsync } = ags.Utils;
import { gohypr } from '../services/gohypr.js';
import barConfig from '../barConfig.js';
export const Workspaces = () => Widget.EventBox({
onScrollUp: () => execAsync('hyprctl dispatch workspace -1'),
onScrollDown: () => execAsync('hyprctl dispatch workspace +1'),
child: Widget.Box({
children: [
Widget.Box({
halign: 'center',
children: [Widget.Box({
children: Array.from({ length: barConfig?.numberOfWorkspaces }, (_, i) => i + 1).map(i => (Widget.Button({
className: 'bar-ws-button',
onClicked: () => execAsync(`hyprctl dispatch workspace ${i}`).catch(print),
child: Widget.Label({
valign: 'center',
label: `${i}`,
className: 'bar-ws',
connections: [
[gohypr, label => {
if (!gohypr.state) {
return;
}
const { workspaces, activeworkspace } = gohypr.state;
let thisSpace;
for (const wk of workspaces) {
if (wk.id == i) {
thisSpace = wk;
break;
}
}
label.toggleClassName('bar-ws-active', i == activeworkspace);
label.toggleClassName('bar-ws-occupied', thisSpace?.populated || i == activeworkspace);
label.toggleClassName('bar-ws-empty', !thisSpace?.populated);
label.toggleClassName('bar-ws-left', !thisSpace?.leftPopulated && activeworkspace != i - 1);
label.toggleClassName('bar-ws-right', !thisSpace?.rightPopulated && activeworkspace != i + 1);
}],
],
}),
}))),
})]
}),
]
})
});

View File

@ -1,504 +0,0 @@
// Made to be pixel-perfect with 11pt font size
// 1rem = 11pt = 14.6666666667px
.bar-bg {
min-height: 3.81818181817rem;
margin: 0.27272727272rem 0.546rem;
border-radius: 26px;
background-color: mix(shade($colorbarbg, 45%), $primary, 97%);
background-image: linear-gradient(135deg, shade($onSecondary, 47%) 18%, rgba(0, 0, 0, 0) 18%, rgba(0, 0, 0, 0) 37%, shade($onSecondary, 47%) 37%, shade($onSecondary, 47%) 63%, rgba(0, 0, 0, 0) 63%, rgba(0, 0, 0, 0) 85%, shade($onSecondary, 47%) 85%);
box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.5);
animation-name: flyin-top;
animation-duration: 250ms;
animation-timing-function: cubic-bezier(0.05, 0.7, 0.1, 1);
animation-iteration-count: 1;
}
.bar-sidespace {
min-width: 1.5rem;
}
.bar-group-margin {
padding: 0.2rem;
}
.bar-group {
background-color: mix($t_surface, $t_onSurface, 90%);
border-top: 1px solid mix($t_surface, $t_onSurface, 80%);
border-left: 1px solid mix($t_surface, $t_onSurface, 80%);
border-right: 1px solid mix($t_surface, $t_onSurface, 85%);
border-bottom: 1px solid mix($t_surface, $t_onSurface, 85%);
}
.bar-group-pad {
padding: 0rem 1.023rem;
}
.bar-group-pad-less {
padding: 0rem 0.681rem;
}
.bar-group-pad-system {
padding-left: 1.023rem;
padding-right: 0.547rem;
}
.bar-group-pad-music {
padding-right: 1.023rem;
padding-left: 0.273rem;
margin-left: 1.023rem;
}
.bar-group-pad-left {
padding-left: 1.364rem;
padding-right: 0.681rem;
}
.bar-group-pad-right {
padding-left: 0.681rem;
padding-right: 1.364rem;
}
.bar-group-pad-leftonly {
padding-left: 0.681rem;
}
.bar-group-pad-rightonly {
padding-right: 0.681rem;
}
.bar-group-standalone {
border-radius: 1.364rem;
}
.bar-group-round {
border-radius: 10rem;
}
.bar-group-middle {
border-radius: 0.477rem;
}
.bar-group-left {
border-radius: 0.477rem;
border-top-left-radius: 1.364rem;
border-bottom-left-radius: 1.364rem;
margin-left: 1.092rem;
}
.bar-group-right {
border-radius: 0.477rem;
border-top-right-radius: 1.364rem;
border-bottom-right-radius: 1.364rem;
margin-right: 1.092rem;
}
.bar-ws-width {
min-width: 18.382rem;
}
.bar-separator {
min-width: 0.341rem;
min-height: 0.341rem;
background-color: mix($t_surface, $t_onSurface, 90%);
border-radius: 999px;
margin: 0rem 0.341rem;
}
.bar-ws {
min-height: 1.770rem;
min-width: 1.770rem;
font-size: 1.091rem;
}
.bar-ws-button:hover {
.bar-ws-empty {
color: $primary;
}
.bar-ws-occupied {
background-color: $primaryContainer;
color: $onPrimaryContainer;
}
.bar-ws-active {
background-color: $primary;
color: $onPrimary;
}
}
.bar-ws-empty {
color: $onBackground;
}
.bar-ws-occupied {
background-color: $secondaryContainer;
color: $onSecondaryContainer;
}
.bar-ws-active {
background-color: $primary;
color: $onPrimary;
border-radius: 999px;
transition: 100ms cubic-bezier(0, 1, 0, 1);
}
.bar-ws-left {
border-top-left-radius: 999px;
border-bottom-left-radius: 999px;
}
.bar-ws-right {
border-top-right-radius: 999px;
border-bottom-right-radius: 999px;
}
.bar-batt {
border-radius: 999px;
padding: 0rem 0.341rem;
background-color: $onPrimaryContainer;
color: $primaryContainer;
}
.bar-sidemodule {
min-width: 25.227rem;
}
.bar-batt-low {
background-color: $error;
color: $onError;
}
.bar-batt-prog-low {
background-color: $error;
color: $onError;
}
.bar-music-playstate {
min-height: 1.5rem;
min-width: 1.5rem;
border-radius: 10rem;
background-color: $t_surface;
color: $onSurface;
margin-left: 2rem;
}
.bar-music {
margin-left: 2rem;
}
.bar-music-label-container {
min-width: 18.770rem;
}
.bar-music-playstate-playing {
min-height: 1.5rem;
min-width: 1.5rem;
border-radius: 10rem;
background-color: $t_surface;
color: $onSurface;
margin-left: 2rem;
}
.bar-music-playstate-txt {
@include icon-material;
font-size: 1.4545rem;
margin: -0.1rem 0rem;
}
.bar-music-coverbox {
box-shadow: $onPrimary 0px 0px 2rem -0.3rem;
border: $onPrimaryDark 2px solid;
background-position: center;
background-repeat: no-repeat;
background-size: 125%;
min-height: 3rem;
min-width: 3rem;
border-radius: 0.75rem;
}
.bar-music-extended-bg {
border-radius: 1.364rem;
min-width: 34.091rem;
}
.bar-music-extended-ctl-bg {
border-radius: 1.364rem;
background-color: rgba(30, 30, 30, 0.6);
}
.bar-music-bottom-bg {
border-radius: 1.364rem;
min-width: 34.091rem;
}
.bar-music-bottom-ctl-bg {
border-radius: 1.364rem;
background-color: rgba(30, 30, 30, 0.6);
}
.bar-music-extended-textbox {
margin: 1.023rem;
}
.bar-music-bottom-cover {
border-radius: 10rem;
}
.bar-music-hide-false {
@include md3_decel;
transition-duration: 100ms;
opacity: 1;
}
.bar-music-hide-true {
@include md3_accel;
transition-duration: 100ms;
opacity: 0;
}
.bar-music-btn {
font-size: 1.364rem;
border-radius: 10rem;
min-height: 2.591rem;
min-width: 2.591rem;
}
.bar-music-btn:hover {
background-color: $hovercolor;
}
.bar-prog-batt {
min-height: 0.955rem;
min-width: 0.068rem;
padding: 0rem;
border-radius: 10rem;
trough {
min-height: 0.954rem;
min-width: 0.068rem;
border-radius: 10rem;
background-color: $onPrimaryContainer;
}
progress {
min-height: 0.680rem;
min-width: 0.680rem;
margin: 0rem 0.137rem;
border-radius: 10rem;
background-color: $primaryContainer;
}
}
.bar-prog-batt-low {
min-height: 0.954rem;
min-width: 0.068rem;
padding: 0rem;
border-radius: 10rem;
trough {
min-height: 0.954rem;
min-width: 0.068rem;
border-radius: 10rem;
background-color: $onErrorContainer;
}
progress {
min-height: 0.680rem;
min-width: 0.680rem;
margin: 0rem 0.137rem;
border-radius: 10rem;
background-color: $errorContainer;
}
}
.bar-batt-chargestate {
border-radius: 10rem;
background-color: transparent;
background-color: $primaryContainer;
}
.bar-batt-chargestate-charging {
border-radius: 10rem;
min-width: 0.681rem;
min-height: 0.681rem;
}
.bar-batt-chargestate-low {
background-color: $errorContainer;
}
.bar-batt-percentage {
font-size: 1rem;
margin-top: -0.068rem;
font-weight: 500;
}
.corner {
background-color: $t_background;
border-radius: 1.5rem;
}
.bar-space-button {
padding: 0.341rem;
box {
border-radius: 999px;
padding: 0rem 0.682rem;
}
}
.bar-space-button:hover {
box {
background-color: $hovercolor;
}
}
.bar-space-button:active {
box {
background-color: $activecolor;
}
}
.bar-space-button-leftmost {
box {
margin: 0rem 1.5rem;
}
}
.bar-space-area-rightmost>box {
padding-right: 2.386rem;
}
.progicon {
margin-right: 0.75rem;
}
.progiconicon {
font-size: 32px;
}
.calendar {
background-color: $colorbarbg;
border: 0.2rem solid $t_secondaryContainer;
border-radius: 1rem;
color: $onBackground;
padding: .2em;
font-family: 'Torus';
margin: 1rem;
}
calendar {
padding: 0.5rem;
* {
padding: 0.1rem;
color: $primary;
}
:selected {
color: $onPrimary;
font-weight: bolder;
background-color: $primary;
border-radius: 0.5rem;
}
.header {
color: $onBackground;
}
.button {
color: $onBackground;
}
:indeterminate {
color: $onBackground;
}
}
.bar-system .bar-sides {
transition: 500ms cubic-bezier(0.05, 0.7, 0.1, 1);
margin: 0.25rem;
border-radius: 1.5rem;
padding: 0 1rem;
}
.hovered.bar-system .bar-sides {
background-image: linear-gradient(45deg, rgba(0, 0, 0, 0) 60%, tint($surfaceVariant, 10%) 60%);
background-size: 400% auto;
background-color: $surfaceVariant;
background-position: 60% 50%;
}
tooltip {
background-color: transparent;
border: none;
> * > *{
background-color: $background;
border-radius: 1.5rem;
color: $onBackground;
padding: 1rem;
margin: 0.5rem;
box-shadow: 0.25rem 0 0.25rem 0 $background;
}
}
.musicbox {
margin-top: -5rem;
margin-bottom: 0.01rem;
margin-left: 1rem;
}
.musicbox-bar {
min-height: 0.155rem;
min-width: 1rem;
padding: 0rem;
border-radius: 10rem;
trough {
background-color: transparent;
}
progress {
min-height: 0.155rem;
min-width: 2rem;
margin: 0rem 0.137rem;
border-top-left-radius: 10rem;
border-top-right-radius: 10rem;
background-color: $secondaryContainer;
}
}
.systray-icon {
margin-right: 0.5rem;
margin-left: 0.25rem;
}
menu {
background: shade($background, 70%);
border-radius: 12px;
border: 2px solid shade($secondaryContainer, 40%);
margin-top: 2rem;
padding: 1rem 0;
color: $onBackground;
}
menu > menuitem {
padding: 0.4em 1.5rem;
background: transparent;
transition: 0.2s ease background;
}
menu > menuitem:hover {
background: rgba(255, 255, 255, 0.4);
}
menu > menuitem check:checked ~ label {
color: $onBackground;
font-weight: 600;
}
menubar > menuitem {
margin-left: 0.6rem;
}

View File

@ -1,34 +0,0 @@
$transparentize_amount: 0.1;
$transparentize_surface_amount: 0.41;
$t_primary: transparentize($primary, $transparentize_amount);
$t_onPrimary: transparentize($onPrimary, $transparentize_amount);
$t_primaryContainer: transparentize($primaryContainer, $transparentize_amount);
$t_onPrimaryContainer: transparentize($onPrimaryContainer, $transparentize_amount);
$t_secondary: transparentize($secondary, $transparentize_amount);
$t_onSecondary: transparentize($onSecondary, $transparentize_amount);
$t_secondaryContainer: transparentize($secondaryContainer, $transparentize_amount);
$t_onSecondaryContainer: transparentize($onSecondaryContainer, $transparentize_amount);
$t_tertiary: transparentize($tertiary, $transparentize_amount);
$t_onTertiary: transparentize($onTertiary, $transparentize_amount);
$t_tertiaryContainer: transparentize($tertiaryContainer, $transparentize_amount);
$t_onTertiaryContainer: transparentize($onTertiaryContainer, $transparentize_amount);
$t_error: transparentize($error, $transparentize_amount);
$t_onError: transparentize($onError, $transparentize_amount);
$t_errorContainer: transparentize($errorContainer, $transparentize_amount);
$t_onErrorContainer: transparentize($onErrorContainer, $transparentize_amount);
$t_colorbarbg: transparentize($colorbarbg, $transparentize_amount);
$t_background: transparentize($background, $transparentize_amount);
$t_onBackground: transparentize($onBackground, $transparentize_amount);
$t_surface: transparentize($surface, $transparentize_surface_amount);
$t_onSurface: transparentize($onSurface, $transparentize_surface_amount);
$t_surfaceVariant: transparentize($surfaceVariant, $transparentize_surface_amount);
$t_onSurfaceVariant: transparentize($onSurfaceVariant, $transparentize_surface_amount);
$t_outline: transparentize($outline, $transparentize_amount);
$t_shadow: transparentize($shadow, $transparentize_amount);
$t_inverseSurface: transparentize($inverseSurface, $transparentize_amount);
$t_inverseOnSurface: transparentize($inverseOnSurface, $transparentize_amount);
$t_inversePrimary: transparentize($inversePrimary, $transparentize_amount);
$hovercolor: mix($t_surface, $t_onSurface, 0.5);
$activecolor: mix($t_surface, $t_onSurface, 0.3);

View File

@ -1,357 +0,0 @@
// Common colors
$hovercolor: rgba(128, 128, 128, 0.4);
$activecolor: rgba(128, 128, 128, 0.7);
// Common rules
@mixin mainfont {
font-family: 'Torus', 'Product Sans', 'Bahnschrift', 'Inter';
// font-weight: 500;
}
@mixin icon-material {
font-family: 'Material Symbols Rounded';
}
@mixin icon-nerd {
font-family: 'JetBrainsMono Nerd Font';
}
@mixin techfont {
font-family: 'JetBrains Mono Nerd Font';
}
@mixin subtext {
color: rgb(160, 160, 160);
}
@mixin elevation-safe {
background: $surface;
color: $onSurface;
box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.69);
margin: 7px;
}
@mixin elevation2 {
background: $surface;
color: $onSurface;
box-shadow: 0px 2px 3px $shadow;
margin: 7px;
}
@mixin elevation3 {
background: $surfaceVariant;
color: $onSurfaceVariant;
// box-shadow: 0px 2px 5px mix($shadow, rgba(0,0,0,0), 40%);
box-shadow: 0px 2px 5px $shadow;
margin: 7px;
}
@mixin md3_decel {
transition: 250ms cubic-bezier(0.05, 0.7, 0.1, 1);
}
@mixin md3_accel {
transition: 180ms cubic-bezier(0.3, 0, 0.8, 0.15);
}
@mixin noanim {
transition: 0ms;
}
@mixin anim-enter {
transition: 200ms cubic-bezier(0.05, 0.7, 0.1, 1);
}
@mixin anim-exit {
transition: 150ms cubic-bezier(0.3, 0, 0.8, 0.15);
}
@mixin m3-button {
border-radius: 50rem;
}
@keyframes flyin-top {
from {
margin-top: -2.795rem;
}
to {
margin-top: 0rem;
}
}
@keyframes flyin-bottom {
from {
margin-top: 4.841rem;
margin-bottom: -4.841rem;
}
to {
margin-bottom: 0rem;
margin-top: 0rem;
}
}
@function tint($color, $percentage) {
@return mix(rgb(245, 250, 255), $color, $percentage);
}
@function shade($color, $percentage) {
@return mix(rgb(0, 0, 0), $color, $percentage);
}
.no-anim {
@include noanim;
}
.txt {
color: $onBackground;
}
.txt-shadow {
text-shadow: 1px 2px 8px rgba(0, 0, 0, 0.69);
margin: 10px;
}
.txt-badonkers {
@include mainfont;
font-size: 3rem;
}
.txt-tiddies {
@include mainfont;
font-size: 2.7273rem;
}
.txt-hugeass {
@include mainfont;
font-size: 1.8182rem;
}
.txt-larger {
@include mainfont;
font-size: 1.6363rem;
}
.txt-large {
//16pt
@include mainfont;
font-size: 1.4545rem;
}
.txt-norm {
//14pt
@include mainfont;
font-size: 1.2727rem;
}
.txt-small {
//12pt
@include mainfont;
font-size: 1.0909rem;
}
.txt-smallie {
//11pt
@include mainfont;
font-size: 1rem;
}
.txt-smaller {
//10pt
@include mainfont;
font-size: 0.9091rem;
}
.txt-smaller-offset {
margin-top: -0.136rem;
}
.txt-tiny {
@include mainfont;
font-size: 0.7273rem;
}
.txt-subtxt {
color: mix($onBackground, $background, 80%);
}
.txt-bold {
font-weight: 500;
}
.icon-material {
@include icon-material;
}
.separator {
border-radius: 50rem;
background-color: $onSurface;
margin: 0rem 0.682rem;
min-width: 0.545rem;
min-height: 0.545rem;
}
tooltip {
background-color: $surfaceVariant;
color: $onSurfaceVariant;
border-radius: 50rem;
border: 1px solid $onSurfaceVariant;
}
$overlay1: mix($onSurface, rgba(0, 0, 0, 0), 25%);
$overlay2: mix($onSurface, rgba(0, 0, 0, 0), 40%);
.spacing-v-15>box {
margin-bottom: 1.023rem;
}
.spacing-v-15>box:last-child {
margin-bottom: 0rem;
}
.spacing-v-15>scrolledwindow {
margin-bottom: 1.023rem;
}
.spacing-v-15>scrolledwindow:last-child {
margin-bottom: 0rem;
}
.spacing-v-15>revealer {
margin-bottom: 1.023rem;
}
.spacing-v-15>revealer:last-child {
margin-bottom: 0rem;
}
.spacing-v-15>label {
margin-bottom: 1.023rem;
}
.spacing-v-15>label:last-child {
margin-bottom: 0rem;
}
.spacing-h-15>box {
margin-right: 1.023rem;
}
.spacing-h-15>box:last-child {
margin-right: 0rem;
}
.spacing-h-15>label {
margin-right: 1.023rem;
}
.spacing-h-15>label:last-child {
margin-right: 0rem;
}
.spacing-h-15>button {
margin-right: 1.023rem;
}
.spacing-h-15>button:last-child {
margin-right: 0rem;
}
.spacing-v-5>box {
margin-bottom: 0.341rem;
}
.spacing-v-5>box:last-child {
margin-bottom: 0rem;
}
.spacing-v-5>label {
margin-bottom: 0.341rem;
}
.spacing-v-5>label:last-child {
margin-bottom: 0rem;
}
.spacing-v-5>button {
margin-bottom: 0.341rem;
}
.spacing-v-5>button:last-child {
margin-bottom: 0rem;
}
.spacing-h-5>box {
margin-right: 0.341rem;
}
.spacing-h-5>box:last-child {
margin-right: 0rem;
}
.spacing-h-5>label {
margin-right: 0.341rem;
}
.spacing-h-5>label:last-child {
margin-right: 0rem;
}
.spacing-h-5>widget>box {
margin-right: 0.341rem;
}
.spacing-h-5>widget:last-child>box {
margin-right: 0rem;
}
.spacing-v-minus5>box {
margin-bottom: -0.341rem;
}
.spacing-v-minus5>box:last-child {
margin-bottom: 0rem;
}
.spacing-v-minus5>label {
margin-bottom: -0.341rem;
}
.spacing-v-minus5>label:last-child {
margin-bottom: 0rem;
}
.spacing-h-10>box {
margin-right: 0.682rem;
}
.spacing-h-10>box:last-child {
margin-right: 0rem;
}
.spacing-h-10>label {
margin-right: 0.682rem;
}
.spacing-h-10>label:last-child {
margin-right: 0rem;
}
.spacing-h-10>widget {
margin-right: 0.682rem;
}
.spacing-h-10>widget:last-child {
margin-right: 0rem;
}
.anim-enter {
@include anim-enter;
}
.anim-exit {
@include anim-exit;
}

View File

@ -1,29 +0,0 @@
$primary: #c6c0ff;
$onPrimary: #260f98;
$onPrimaryDark: #190b5f;
$primaryContainer: #3e31ad;
$onPrimaryContainer: #e5dfff;
$secondary: #c7c3dc;
$onSecondary: #302e42;
$secondaryContainer: #464459;
$onSecondaryContainer: #e3dff8;
$tertiary: #ebb8d0;
$onTertiary: #472638;
$tertiaryContainer: #613b4f;
$onTertiaryContainer: #ffd8ea;
$error: #ffb4a9;
$onError: #680003;
$errorContainer: #930006;
$onErrorContainer: #ffb4a9;
$colorbarbg: #1c1b1f;
$background: #1c1b1f;
$onBackground: #e5e1e6;
$surface: #1c1b1f;
$onSurface: #e5e1e6;
$surfaceVariant: #47464e;
$onSurfaceVariant: #c9c5d0;
$outline: #928f9a;
$shadow: #000000;
$inverseSurface: #e5e1e6;
$inverseOnSurface: #313033;
$inversePrimary: #564cc5;

View File

@ -1,12 +0,0 @@
// Reset
* {
all: unset;
}
// Colors
@import './material'; // Material colors
@import './colors'; // Global color definitions. Uses material colors as base.
@import './lib'; // Global mixins and functions
// Components
@import './bar';

View File

@ -1,30 +0,0 @@
const { App, Service } = ags;
const { execAsync } = ags.Utils;
async function setupScss() {
try {
await execAsync(['sassc', `${App.configDir}/scss/main.scss`, `${App.configDir}/style.css`]);
ags.App.resetCss();
ags.App.applyCss(`${App.configDir}/style.css`);
} catch (error) {
print(error);
}
}
class ThemeService extends Service {
static { Service.register(this); }
constructor() {
super();
this.setup();
}
setup() {
setupScss();
}
}
var Theme = class Theme {
static { Service.export(this, 'Theme'); }
static instance = new ThemeService();
};

View File

@ -1,26 +0,0 @@
const { App } = ags;
import { deflisten } from './deflisten.js';
function start() {
cvjson.started = true;
cvjson.service.start();
}
function stop() {
cvjson.started = false;
cvjson.service.stop();
}
export const cvjson = {
start: start,
stop: stop,
started: true,
service: deflisten('cvjson', `${App.configDir}/programs/cvjson ${App.configDir}/programs/cava`, (line) => {
try {
return JSON.parse(line);
} catch {
return [];
}
}),
};

View File

@ -1,83 +0,0 @@
export const deflisten = function (name, command, transformer = (a) => a) {
const { Service } = ags;
const GObject = imports.gi.GObject;
const v = GObject.registerClass(
{
GTypeName: name,
Properties: {
state: GObject.ParamSpec.string(
"state",
"State",
"Read-Write string state.",
GObject.ParamFlags.READWRITE,
""
),
},
Signals: {
[`${name}-changed`]: {},
},
},
class Subclass extends Service {
get state() {
return this._state || "";
}
set state(value) {
this._state = value;
this.emit("changed");
}
get proc() {
return this._proc || null;
}
set proc(value) {
this._proc = value;
}
start = () => {
this.proc = ags.Utils.subprocess(command, (line) => {
this.state = transformer(line);
});
}
stop = () => {
this.proc.force_exit();
this.proc = null;
}
constructor() {
super();
this.proc = ags.Utils.subprocess(command, (line) => {
this.state = transformer(line);
});
}
}
);
class State {
static {
Service.export(this, name);
}
static instance = new v();
static get state() {
return State.instance.state;
}
static set state(value) {
State.instance.state = value;
}
static start() {
State.instance.start();
}
static stop () {
State.instance.stop();
}
}
return State;
}

View File

@ -1,6 +0,0 @@
const { App } = ags;
import { deflisten } from './deflisten.js';
export const gohypr = deflisten('gohypr', `${App.configDir}/programs/gohypr`, (line) => {
return JSON.parse(line);
});

View File

@ -1,7 +0,0 @@
const { App } = ags;
import { deflisten } from './deflisten.js';
import barConfig from '../barConfig.js';
export const gostat = deflisten('gostat', `${App.configDir}/programs/gostat ${barConfig.sysinfoUpdateInterval}`, (line) => {
return JSON.parse(line);
});

View File

@ -1,598 +0,0 @@
* {
all: unset; }
@keyframes flyin-top {
from {
margin-top: -2.795rem; }
to {
margin-top: 0rem; } }
@keyframes flyin-bottom {
from {
margin-top: 4.841rem;
margin-bottom: -4.841rem; }
to {
margin-bottom: 0rem;
margin-top: 0rem; } }
.no-anim {
transition: 0ms; }
.txt {
color: #e5e1e6; }
.txt-shadow {
text-shadow: 1px 2px 8px rgba(0, 0, 0, 0.69);
margin: 10px; }
.txt-badonkers {
font-family: 'Torus', 'Product Sans', 'Bahnschrift', 'Inter';
font-size: 3rem; }
.txt-tiddies {
font-family: 'Torus', 'Product Sans', 'Bahnschrift', 'Inter';
font-size: 2.7273rem; }
.txt-hugeass {
font-family: 'Torus', 'Product Sans', 'Bahnschrift', 'Inter';
font-size: 1.8182rem; }
.txt-larger {
font-family: 'Torus', 'Product Sans', 'Bahnschrift', 'Inter';
font-size: 1.6363rem; }
.txt-large {
font-family: 'Torus', 'Product Sans', 'Bahnschrift', 'Inter';
font-size: 1.4545rem; }
.txt-norm {
font-family: 'Torus', 'Product Sans', 'Bahnschrift', 'Inter';
font-size: 1.2727rem; }
.txt-small {
font-family: 'Torus', 'Product Sans', 'Bahnschrift', 'Inter';
font-size: 1.0909rem; }
.txt-smallie {
font-family: 'Torus', 'Product Sans', 'Bahnschrift', 'Inter';
font-size: 1rem; }
.txt-smaller {
font-family: 'Torus', 'Product Sans', 'Bahnschrift', 'Inter';
font-size: 0.9091rem; }
.txt-smaller-offset {
margin-top: -0.136rem; }
.txt-tiny {
font-family: 'Torus', 'Product Sans', 'Bahnschrift', 'Inter';
font-size: 0.7273rem; }
.txt-subtxt {
color: #bdb9be; }
.txt-bold {
font-weight: 500; }
.icon-material {
font-family: 'Material Symbols Rounded'; }
.separator {
border-radius: 50rem;
background-color: #e5e1e6;
margin: 0rem 0.682rem;
min-width: 0.545rem;
min-height: 0.545rem; }
tooltip {
background-color: #47464e;
color: #c9c5d0;
border-radius: 50rem;
border: 1px solid #c9c5d0; }
.spacing-v-15 > box {
margin-bottom: 1.023rem; }
.spacing-v-15 > box:last-child {
margin-bottom: 0rem; }
.spacing-v-15 > scrolledwindow {
margin-bottom: 1.023rem; }
.spacing-v-15 > scrolledwindow:last-child {
margin-bottom: 0rem; }
.spacing-v-15 > revealer {
margin-bottom: 1.023rem; }
.spacing-v-15 > revealer:last-child {
margin-bottom: 0rem; }
.spacing-v-15 > label {
margin-bottom: 1.023rem; }
.spacing-v-15 > label:last-child {
margin-bottom: 0rem; }
.spacing-h-15 > box {
margin-right: 1.023rem; }
.spacing-h-15 > box:last-child {
margin-right: 0rem; }
.spacing-h-15 > label {
margin-right: 1.023rem; }
.spacing-h-15 > label:last-child {
margin-right: 0rem; }
.spacing-h-15 > button {
margin-right: 1.023rem; }
.spacing-h-15 > button:last-child {
margin-right: 0rem; }
.spacing-v-5 > box {
margin-bottom: 0.341rem; }
.spacing-v-5 > box:last-child {
margin-bottom: 0rem; }
.spacing-v-5 > label {
margin-bottom: 0.341rem; }
.spacing-v-5 > label:last-child {
margin-bottom: 0rem; }
.spacing-v-5 > button {
margin-bottom: 0.341rem; }
.spacing-v-5 > button:last-child {
margin-bottom: 0rem; }
.spacing-h-5 > box {
margin-right: 0.341rem; }
.spacing-h-5 > box:last-child {
margin-right: 0rem; }
.spacing-h-5 > label {
margin-right: 0.341rem; }
.spacing-h-5 > label:last-child {
margin-right: 0rem; }
.spacing-h-5 > widget > box {
margin-right: 0.341rem; }
.spacing-h-5 > widget:last-child > box {
margin-right: 0rem; }
.spacing-v-minus5 > box {
margin-bottom: -0.341rem; }
.spacing-v-minus5 > box:last-child {
margin-bottom: 0rem; }
.spacing-v-minus5 > label {
margin-bottom: -0.341rem; }
.spacing-v-minus5 > label:last-child {
margin-bottom: 0rem; }
.spacing-h-10 > box {
margin-right: 0.682rem; }
.spacing-h-10 > box:last-child {
margin-right: 0rem; }
.spacing-h-10 > label {
margin-right: 0.682rem; }
.spacing-h-10 > label:last-child {
margin-right: 0rem; }
.spacing-h-10 > widget {
margin-right: 0.682rem; }
.spacing-h-10 > widget:last-child {
margin-right: 0rem; }
.anim-enter {
transition: 200ms cubic-bezier(0.05, 0.7, 0.1, 1); }
.anim-exit {
transition: 150ms cubic-bezier(0.3, 0, 0.8, 0.15); }
.bar-bg {
min-height: 3.81818181817rem;
margin: 0.27272727272rem 0.546rem;
border-radius: 26px;
background-color: #141418;
background-image: linear-gradient(135deg, #191823 18%, rgba(0, 0, 0, 0) 18%, rgba(0, 0, 0, 0) 37%, #191823 37%, #191823 63%, rgba(0, 0, 0, 0) 63%, rgba(0, 0, 0, 0) 85%, #191823 85%);
box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.5);
animation-name: flyin-top;
animation-duration: 250ms;
animation-timing-function: cubic-bezier(0.05, 0.7, 0.1, 1);
animation-iteration-count: 1; }
.bar-sidespace {
min-width: 1.5rem; }
.bar-group-margin {
padding: 0.2rem; }
.bar-group {
background-color: rgba(48, 47, 51, 0.59);
border-top: 1px solid rgba(68, 67, 71, 0.59);
border-left: 1px solid rgba(68, 67, 71, 0.59);
border-right: 1px solid rgba(58, 57, 61, 0.59);
border-bottom: 1px solid rgba(58, 57, 61, 0.59); }
.bar-group-pad {
padding: 0rem 1.023rem; }
.bar-group-pad-less {
padding: 0rem 0.681rem; }
.bar-group-pad-system {
padding-left: 1.023rem;
padding-right: 0.547rem; }
.bar-group-pad-music {
padding-right: 1.023rem;
padding-left: 0.273rem;
margin-left: 1.023rem; }
.bar-group-pad-left {
padding-left: 1.364rem;
padding-right: 0.681rem; }
.bar-group-pad-right {
padding-left: 0.681rem;
padding-right: 1.364rem; }
.bar-group-pad-leftonly {
padding-left: 0.681rem; }
.bar-group-pad-rightonly {
padding-right: 0.681rem; }
.bar-group-standalone {
border-radius: 1.364rem; }
.bar-group-round {
border-radius: 10rem; }
.bar-group-middle {
border-radius: 0.477rem; }
.bar-group-left {
border-radius: 0.477rem;
border-top-left-radius: 1.364rem;
border-bottom-left-radius: 1.364rem;
margin-left: 1.092rem; }
.bar-group-right {
border-radius: 0.477rem;
border-top-right-radius: 1.364rem;
border-bottom-right-radius: 1.364rem;
margin-right: 1.092rem; }
.bar-ws-width {
min-width: 18.382rem; }
.bar-separator {
min-width: 0.341rem;
min-height: 0.341rem;
background-color: rgba(48, 47, 51, 0.59);
border-radius: 999px;
margin: 0rem 0.341rem; }
.bar-ws {
min-height: 1.770rem;
min-width: 1.770rem;
font-size: 1.091rem; }
.bar-ws-button:hover .bar-ws-empty {
color: #c6c0ff; }
.bar-ws-button:hover .bar-ws-occupied {
background-color: #3e31ad;
color: #e5dfff; }
.bar-ws-button:hover .bar-ws-active {
background-color: #c6c0ff;
color: #260f98; }
.bar-ws-empty {
color: #e5e1e6; }
.bar-ws-occupied {
background-color: #464459;
color: #e3dff8; }
.bar-ws-active {
background-color: #c6c0ff;
color: #260f98;
border-radius: 999px;
transition: 100ms cubic-bezier(0, 1, 0, 1); }
.bar-ws-left {
border-top-left-radius: 999px;
border-bottom-left-radius: 999px; }
.bar-ws-right {
border-top-right-radius: 999px;
border-bottom-right-radius: 999px; }
.bar-batt {
border-radius: 999px;
padding: 0rem 0.341rem;
background-color: #e5dfff;
color: #3e31ad; }
.bar-sidemodule {
min-width: 25.227rem; }
.bar-batt-low {
background-color: #ffb4a9;
color: #680003; }
.bar-batt-prog-low {
background-color: #ffb4a9;
color: #680003; }
.bar-music-playstate {
min-height: 1.5rem;
min-width: 1.5rem;
border-radius: 10rem;
background-color: rgba(28, 27, 31, 0.59);
color: #e5e1e6;
margin-left: 2rem; }
.bar-music {
margin-left: 2rem; }
.bar-music-label-container {
min-width: 18.770rem; }
.bar-music-playstate-playing {
min-height: 1.5rem;
min-width: 1.5rem;
border-radius: 10rem;
background-color: rgba(28, 27, 31, 0.59);
color: #e5e1e6;
margin-left: 2rem; }
.bar-music-playstate-txt {
font-family: 'Material Symbols Rounded';
font-size: 1.4545rem;
margin: -0.1rem 0rem; }
.bar-music-coverbox {
box-shadow: #260f98 0px 0px 2rem -0.3rem;
border: #190b5f 2px solid;
background-position: center;
background-repeat: no-repeat;
background-size: 125%;
min-height: 3rem;
min-width: 3rem;
border-radius: 0.75rem; }
.bar-music-extended-bg {
border-radius: 1.364rem;
min-width: 34.091rem; }
.bar-music-extended-ctl-bg {
border-radius: 1.364rem;
background-color: rgba(30, 30, 30, 0.6); }
.bar-music-bottom-bg {
border-radius: 1.364rem;
min-width: 34.091rem; }
.bar-music-bottom-ctl-bg {
border-radius: 1.364rem;
background-color: rgba(30, 30, 30, 0.6); }
.bar-music-extended-textbox {
margin: 1.023rem; }
.bar-music-bottom-cover {
border-radius: 10rem; }
.bar-music-hide-false {
transition: 250ms cubic-bezier(0.05, 0.7, 0.1, 1);
transition-duration: 100ms;
opacity: 1; }
.bar-music-hide-true {
transition: 180ms cubic-bezier(0.3, 0, 0.8, 0.15);
transition-duration: 100ms;
opacity: 0; }
.bar-music-btn {
font-size: 1.364rem;
border-radius: 10rem;
min-height: 2.591rem;
min-width: 2.591rem; }
.bar-music-btn:hover {
background-color: rgba(128, 128, 128, 0.4); }
.bar-prog-batt {
min-height: 0.955rem;
min-width: 0.068rem;
padding: 0rem;
border-radius: 10rem; }
.bar-prog-batt trough {
min-height: 0.954rem;
min-width: 0.068rem;
border-radius: 10rem;
background-color: #e5dfff; }
.bar-prog-batt progress {
min-height: 0.680rem;
min-width: 0.680rem;
margin: 0rem 0.137rem;
border-radius: 10rem;
background-color: #3e31ad; }
.bar-prog-batt-low {
min-height: 0.954rem;
min-width: 0.068rem;
padding: 0rem;
border-radius: 10rem; }
.bar-prog-batt-low trough {
min-height: 0.954rem;
min-width: 0.068rem;
border-radius: 10rem;
background-color: #ffb4a9; }
.bar-prog-batt-low progress {
min-height: 0.680rem;
min-width: 0.680rem;
margin: 0rem 0.137rem;
border-radius: 10rem;
background-color: #930006; }
.bar-batt-chargestate {
border-radius: 10rem;
background-color: transparent;
background-color: #3e31ad; }
.bar-batt-chargestate-charging {
border-radius: 10rem;
min-width: 0.681rem;
min-height: 0.681rem; }
.bar-batt-chargestate-low {
background-color: #930006; }
.bar-batt-percentage {
font-size: 1rem;
margin-top: -0.068rem;
font-weight: 500; }
.corner {
background-color: rgba(28, 27, 31, 0.9);
border-radius: 1.5rem; }
.bar-space-button {
padding: 0.341rem; }
.bar-space-button box {
border-radius: 999px;
padding: 0rem 0.682rem; }
.bar-space-button:hover box {
background-color: rgba(128, 128, 128, 0.4); }
.bar-space-button:active box {
background-color: rgba(128, 128, 128, 0.7); }
.bar-space-button-leftmost box {
margin: 0rem 1.5rem; }
.bar-space-area-rightmost > box {
padding-right: 2.386rem; }
.progicon {
margin-right: 0.75rem; }
.progiconicon {
font-size: 32px; }
.calendar {
background-color: #1c1b1f;
border: 0.2rem solid rgba(70, 68, 89, 0.9);
border-radius: 1rem;
color: #e5e1e6;
padding: .2em;
font-family: 'Torus';
margin: 1rem; }
calendar {
padding: 0.5rem; }
calendar * {
padding: 0.1rem;
color: #c6c0ff; }
calendar :selected {
color: #260f98;
font-weight: bolder;
background-color: #c6c0ff;
border-radius: 0.5rem; }
calendar .header {
color: #e5e1e6; }
calendar .button {
color: #e5e1e6; }
calendar :indeterminate {
color: #e5e1e6; }
.bar-system .bar-sides {
transition: 500ms cubic-bezier(0.05, 0.7, 0.1, 1);
margin: 0.25rem;
border-radius: 1.5rem;
padding: 0 1rem; }
.hovered.bar-system .bar-sides {
background-image: linear-gradient(45deg, rgba(0, 0, 0, 0) 60%, #585860 60%);
background-size: 400% auto;
background-color: #47464e;
background-position: 60% 50%; }
tooltip {
background-color: transparent;
border: none; }
tooltip > * > * {
background-color: #1c1b1f;
border-radius: 1.5rem;
color: #e5e1e6;
padding: 1rem;
margin: 0.5rem;
box-shadow: 0.25rem 0 0.25rem 0 #1c1b1f; }
.musicbox {
margin-top: -5rem;
margin-bottom: 0.01rem;
margin-left: 1rem; }
.musicbox-bar {
min-height: 0.155rem;
min-width: 1rem;
padding: 0rem;
border-radius: 10rem; }
.musicbox-bar trough {
background-color: transparent; }
.musicbox-bar progress {
min-height: 0.155rem;
min-width: 2rem;
margin: 0rem 0.137rem;
border-top-left-radius: 10rem;
border-top-right-radius: 10rem;
background-color: #464459; }
.systray-icon {
margin-right: 0.5rem;
margin-left: 0.25rem; }
menu {
background: #080809;
border-radius: 12px;
border: 2px solid #2a2935;
margin-top: 2rem;
padding: 1rem 0;
color: #e5e1e6; }
menu > menuitem {
padding: 0.4em 1.5rem;
background: transparent;
transition: 0.2s ease background; }
menu > menuitem:hover {
background: rgba(255, 255, 255, 0.4); }
menu > menuitem check:checked ~ label {
color: #e5e1e6;
font-weight: 600; }
menubar > menuitem {
margin-left: 0.6rem; }

View File

@ -1,37 +0,0 @@
const { Widget } = ags;
const { Battery } = ags.Service;
import { getBattery } from '../lib.js';
export const Batt = () => Widget.Box({
halign: 'end',
tooltipText: 'Battery Remaining',
valign: 'center',
className: '',
connections: [[Battery, box => {
box.visible = Battery?.available;
}]],
children: [
Widget.Label({
halign: 'end',
valign: 'center',
className: 'txt-larger txt icon-material',
style: 'margin-right: 0.5rem; margin-top: 1px;',
label: 'battery_5_bar',
connections: [[Battery, label => {
if (Battery?.available) {
label.label = getBattery(Battery);
}
}]],
}),
Widget.Label({
halign: 'end',
valign: 'center',
className: 'txt-norm txt',
connections: [[Battery, label => {
if (Battery?.available) {
label.label = Battery?.percent + "%";
}
}]],
}),
],
});

View File

@ -1,25 +0,0 @@
const { Widget } = ags;
import { getFormattedTime, getFormattedDate } from '../lib.js';
export const Clock = () => Widget.Box({
vertical: true,
halign: 'end',
valign: 'center',
sensitive: true,
className: 'clock',
children: [
Widget.Label({
halign: 'end',
valign: 'center',
className: 'txt-norm txt',
connections: [[5000, label => label.label = getFormattedTime()]],
}),
Widget.Label({
halign: 'end',
valign: 'center',
className: 'txt-smallie txt',
connections: [[60000, label => label.label = getFormattedDate()]],
}),
],
});

View File

@ -1,28 +0,0 @@
const { Widget } = ags;
import { gostat } from '../services/gostat.js';
export const Cpu = () => Widget.Box({
halign: 'end',
tooltipText: 'CPU Usage',
valign: 'center',
className: '',
children: [
Widget.Label({
halign: 'end',
valign: 'center',
className: 'txt-larger txt icon-material',
style: 'margin-right: 0.5rem; margin-top: 1px;',
label: 'developer_board',
}),
Widget.Label({
halign: 'end',
valign: 'center',
className: 'txt-norm txt',
connections: [[gostat, label => {
if (gostat?.state?.cpu) {
label.label = gostat?.state?.cpu + "%";
}
}]],
}),
],
});

View File

@ -1,29 +0,0 @@
const { Widget } = ags;
import { gostat } from '../services/gostat.js';
import { getTemp } from '../lib.js';
export const CpuTemp = () => Widget.Box({
halign: 'end',
tooltipText: 'CPU Temperature',
valign: 'center',
className: '',
children: [
Widget.Label({
halign: 'end',
valign: 'center',
className: 'txt-larger txt icon-material',
style: 'margin-right: 0.25rem; margin-top: 1px;',
label: 'thermometer',
}),
Widget.Label({
halign: 'end',
valign: 'center',
className: 'txt-norm txt',
connections: [[gostat, label => {
if (gostat?.state?.cputemp) {
label.label = getTemp(gostat?.state?.cputemp);
}
}]],
}),
],
});

View File

@ -1,76 +0,0 @@
const { Widget } = ags;
const { Mpris } = ags.Service;
export const MediaInfo = () => Widget.Box({
className: 'bar-group-pad-music spacing-h-10',
style: "margin-left: -16rem;",
children: [
Widget.Box({
halign: 'center',
className: 'bar-music-coverbox',
connections: [[Mpris, box => {
const mpris = Mpris.getPlayer('');
if (mpris?.coverPath) {
box.visible = true;
box.setStyle(`background-image: url('${mpris.coverPath}');`);
} else {
box.visible = false;
}
}]],
children: [
Widget.Box({
valign: 'center',
style: 'margin-left: 0.75rem;',
children: [Widget.Label({
valign: 'center',
className: 'bar-music-playstate-txt',
connections: [[Mpris, label => {
const mpris = Mpris.getPlayer('');
label.label = `${mpris?.playBackStatus == 'Playing' ? '' : ''}`;
}]],
})],
connections: [[Mpris, label => {
const mpris = Mpris.getPlayer('');
label.toggleClassName('bar-music-playstate-playing', mpris?.playBackStatus == 'Playing');
label.toggleClassName('bar-music-playstate', mpris?.playBackStatus == 'Paused');
}]],
}),
]
}),
Widget.Box({
className: 'bar-music-label-container',
vertical: true,
halign: 'start',
valign: 'center',
children: [Widget.Label({
halign: 'start',
valign: 'center',
maxWidthChars: 40,
ellipsize: 3,
className: 'bar-music-label txt txt-norm',
connections: [[Mpris, label => {
const mpris = Mpris.getPlayer('');
if (mpris)
label.label = `${mpris.trackTitle}`;
else
label.label = 'Nothing';
}]],
}),
Widget.Label({
halign: 'start',
maxWidthChars: 40,
ellipsize: 3,
valign: 'center',
className: 'bar-music-label txt txt-smallie',
connections: [[Mpris, label => {
const mpris = Mpris.getPlayer('');
if (mpris)
label.label = `${mpris.trackArtists}`;
else
label.label = 'Playing';
}]],
}),
],
})
]
});

View File

@ -1,27 +0,0 @@
const { Widget } = ags;
import { gostat } from '../services/gostat.js';
export const Mem = () => Widget.Box({
halign: 'end',
tooltipText: 'Memory Usage',
valign: 'center',
children: [
Widget.Label({
halign: 'end',
valign: 'center',
className: 'txt-larger txt icon-material',
style: 'margin-right: 0.5rem; margin-top: 1px;',
label: 'memory',
}),
Widget.Label({
halign: 'end',
valign: 'center',
className: 'txt-norm txt',
connections: [[gostat, label => {
if (gostat?.state?.mem) {
label.label = gostat?.state?.mem + "G";
}
}]],
}),
],
});

View File

@ -1,26 +0,0 @@
const { SystemTray } = ags.Service;
const { Widget } = ags;
export const Systray = () => Widget.Box({
className: 'systray',
connections: [[SystemTray, box => {
box.children = SystemTray.items.map(item =>{
const iconW = Widget.Icon({
size: 24
});
iconW.set_margin_left(6);
iconW.icon = item.icon;
const btn = Widget.Button({
onPrimaryClick: (_, event) => item.activate(event),
onSecondaryClick: (_, event) => item.openMenu(event),
child: iconW,
className: 'systray-icon',
connections: [[item, button => {
button.child.icon = item.icon;
button.tooltipMarkup = item.tooltipMarkup;
}]],
});
return btn;
});
}]],
});

View File

@ -1,41 +0,0 @@
const { Widget } = ags;
const { Mpris } = ags.Service;
import { cvjson } from '../services/cvjson.js';
const numBars = 15;
export const Visualiser = () => Widget.Box({
className: 'musicbox',
halign: 'center',
valign: 'end',
vexpand: false,
connections: [
[Mpris, box => {
const mpris = Mpris.getPlayer('');
if (mpris?.playBackStatus == 'Playing' && !cvjson?.started) {
cvjson.start();
} else if ((!mpris?.playBackStatus || mpris?.playBackStatus != 'Playing') && cvjson?.started) {
cvjson.stop();
for (const child of box.get_children()) {
child.fraction = 0;
}
}
}],
[cvjson.service, box => {
if (!cvjson.started || !cvjson?.service?.state || cvjson?.service?.state.length < numBars) {
return;
}
let count = 0;
for (const child of box.get_children()) {
child.fraction = cvjson?.service.state[count] / 1500;
count++;
}
}],
],
children: Array.from({ length: numBars }, (_, i) => i).map(i => (Widget.ProgressBar({
vertical: true,
className: 'musicbox-bar',
value: 0,
inverted: true,
}))),
});

View File

@ -1,48 +0,0 @@
const { Widget } = ags;
const { execAsync } = ags.Utils;
import barConfig from '../barConfig.js';
import { getWeatherSymbol, getTemp, getWeatherDesc } from '../lib.js';
export const Weather = () => Widget.Box({
halign: 'end',
tooltipText: 'Weather',
valign: 'center',
style: 'margin-right: 2.5rem;',
children: [
Widget.Label({
halign: 'end',
valign: 'center',
className: 'txt-larger txt icon-material',
style: 'margin-right: 0.5rem; margin-top: 1px;',
label: 'rainy',
}),
Widget.Label({
halign: 'end',
valign: 'center',
className: 'txt-norm txt',
}),
],
connections: [[barConfig?.weatherUpdateInterval * 1000, async box => {
setTimeout(() => getWeather(box), 10000);
}]],
});
async function getWeather(box) {
let latLng = [0, 0];
execAsync(`curl https://geocoding-api.open-meteo.com/v1/search?name=${barConfig?.city}&count=1&language=en&format=json`)
.then(output => {
const geocoding = JSON.parse(output);
if (geocoding.results.length === 0) {
return;
}
latLng = [geocoding.results[0].latitude, geocoding.results[0].longitude];
execAsync(`curl https://api.open-meteo.com/v1/forecast?latitude=${latLng[0]}&longitude=${latLng[1]}&current=temperature_2m,is_day,weather_code`)
.then(output => {
const weather = JSON.parse(output);
const weatherCode = weather.current.weather_code;
box.tooltipText = getWeatherDesc(weatherCode);
box.children[0].label = getWeatherSymbol(weatherCode);
box.children[1].label = getTemp(Math.round(weather.current.temperature_2m) + "");
}).catch(console.error)
}).catch(console.error)
}

View File

@ -1,40 +0,0 @@
const { Widget } = ags;
import { Workspaces } from "../modules/workspaces.js";
import { Music } from "../modules/music.js";
import { ActiveWindow } from "../modules/activewindow.js";
import { System } from "../modules/system.js";
const left = Widget.Box({
hexpand: false,
halign: 'start',
className: 'bar-group-left',
children: [Workspaces(), Music()],
});
const center = Widget.Box({
hexpand: true,
halign: 'center',
className: 'bar-group-center',
children: [ActiveWindow()],
});
const right = Widget.Box({
className: 'bar-group-right',
hexpand: false,
halign: 'end',
children: [System()],
});
export const bar = Widget.Window({
name: 'bar',
anchor: ['top', 'left', 'right'],
exclusive: true,
child: Widget.CenterBox({
className: 'bar-bg',
children: [
left,
center,
right
],
}),
});

View File

@ -1,23 +0,0 @@
const { Widget } = ags;
export const calendar = Widget.Window({
name: 'calendar',
anchor: ['top', 'right'],
visible: false,
exclusive: true,
child: Widget.Box({
className: 'cal',
children: [
Widget.Box({
className: 'calendar',
children: [
Widget.Box({
halign: 3,
hexpand: true,
children: [imports.gi.Gtk.Calendar.new()],
}),
],
}),
],
}),
});

View File

@ -1,29 +0,0 @@
# General
env=MOZ_ENABLE_WAYLAND,1
env=XDG_SESSION_TYPE,wayland
env=XDG_CURRENT_DESKTOP,Hyprland
env=XDG_SESSION_DESKTOP,Hyprland
env=MOZ_DBUS_REMOTE,1
env=GDK_BACKEND,wayland
env=QT_AUTO_SCREEN_SCALE_FACTOR,1
env=QT_QPA_PLATFORM,wayland;xcb
env=QT_WAYLAND_FORCE_DPI,physical
env=SDL_VIDEODRIVER,wayland
env=CLUTTER_BACKEND,wayland
env=TERM,kitty
env=TERMINAL,kitty
env=ELECTRON_OZONE_PLATFORM_HINT,auto
env=HYPRCURSOR_THEME,McMojave
env=HYPRCURSOR_SIZE,24
env=XCURSOR_THEME,McMojaveOrig
env=XCURSOR_SIZE,24
env=QT_QPA_PLATFORMTHEME,gnome
env=STEAM_FORCE_DESKTOPUI_SCALING,1
# Nvidia
#env=GSK_RENDERER,ngl
#env=NVD_BACKEND,direct
#env=LIBVA_DRIVER_NAME,nvidia
#env=GBM_BACKEND,nvidia-drm
#env=__GLX_VENDOR_LIBRARY_NAME,nvidia
#env=__GL_VRR_ALLOWED,1
#env=__GL_GSYNC_ALLOWED,1

View File

@ -1,16 +0,0 @@
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once=dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY
exec-once=systemctl --user import-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once=hyprpaper
exec-once=swayosd-server
exec-once=systemctl --user enable --now hypridle
exec-once=sleep 5 && nm-applet
exec-once=/usr/bin/mate-polkit
exec-once=xdg-user-dirs-update
exec-once=pikman-update-manager-autostart
exec-once=dconf write /org/gnome/desktop/interface/cursor-size 24
exec-once=hyprctl setcursor size 24
exec-once=ags
exec-once=test -e /run/live/medium/live/filesystem.squashfs && pika-installer
exec-once=! test -e /run/live/medium/live/filesystem.squashfs && test -e /home/pikaos && pika-first-setup-gtk4
exec-once=! test -e /home/pikaos && pika-welcome

View File

@ -1,18 +0,0 @@
general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
ignore_dbus_inhibit = false
ignore_systemd_inhibit = false
}
listener {
timeout = 300 # 5min
on-timeout = loginctl lock-session # lock screen when timeout has passed
}
listener {
timeout = 360 # 6min
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
}

View File

@ -1,119 +0,0 @@
general {
layout=dwindle
allow_tearing = 1
gaps_in = 3
gaps_out = 6
border_size = 2
col.active_border = rgba(0DB7D4FF) rgba(7AA2F7FF) rgba(9778D0FF) 45deg
col.inactive_border = rgba(04404aaa)
}
xwayland {
use_nearest_neighbor = 0
force_zero_scaling = 1
}
input {
#kb_layout=gb
repeat_rate=50
repeat_delay=300
numlock_by_default=1
left_handed=0
follow_mouse=2
accel_profile=flat
}
gestures {
workspace_swipe=1
}
animations {
enabled = yes
bezier = windowIn, 0.06, 0.71, 0.25, 1
bezier = windowResize, 0.04, 0.67, 0.38, 1
animation = windowsIn, 1, 2, windowIn, slide #popin 20%
animation = windowsOut, 1, 2, windowIn, slide #popin 70%
animation = windowsMove, 1, 1.5, windowResize
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 3, default
animation = workspaces, 1, 3, default
animation = layers, 1, 3, windowIn, slide
}
dwindle {
pseudotile = 1
preserve_split = 1
}
render {
explicit_sync = 2
explicit_sync_kms = 2
direct_scanout = 0
}
opengl {
nvidia_anti_flicker = 0
force_introspection = 2
}
cursor {
no_hardware_cursors = 0
enable_hyprcursor = 1
use_cpu_buffer = 0
sync_gsettings_theme = 1
}
decoration {
rounding=15
blur {
enabled = true
xray = false
size = 2
passes = 3
new_optimizations = on
noise = 0.01
contrast = 1.6
brightness = 1.1
}
shadow {
enabled=0
range=6
render_power=2
ignore_window=1
offset= 0 0
color=rgba(1A1A1AEE)
color_inactive=rgba(1A1A1AEE)
}
}
misc {
vrr = 2
vfr = 1
enable_swallow = false
swallow_regex = ^(kitty)$
disable_hyprland_logo = true
disable_splash_rendering = true
focus_on_activate = true
animate_manual_resizes = true
animate_mouse_windowdragging = true
mouse_move_enables_dpms = true
key_press_enables_dpms = true
middle_click_paste = false
}
debug {
overlay = 0
damage_blink = 0
damage_tracking = 2
}
source=~/.config/hypr/env.conf
source=~/.config/hypr/exec.conf
source=~/.config/hypr/keybinds.conf
source=~/.config/hypr/monitors.conf
source=~/.config/hypr/windows.conf

View File

@ -1,92 +0,0 @@
# sample hyprlock.conf
# for more configuration options, refer https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock
source = $HOME/.config/hypr/mocha.conf
$accent = $mauve
$accentAlpha = $mauveAlpha
$font = JetBrainsMono Nerd Font
# GENERAL
general {
disable_loading_bar = true
hide_cursor = true
}
# BACKGROUND
background {
monitor =
path = /usr/share/wallpapers/pika/adventurer_s_guild_by_neytirix_ddm554q.jpg
blur_passes = 1
color = $base
}
# LAYOUT
label {
monitor =
text = Layout: $LAYOUT
color = $text
font_size = 25
font_family = $font
position = 30, -30
halign = left
valign = top
}
# TIME
label {
monitor =
text = $TIME
color = $text
font_size = 90
font_family = $font
position = -30, 0
halign = right
valign = top
}
# DATE
label {
monitor =
text = cmd[update:43200000] date +"%A, %d %B %Y"
color = $text
font_size = 25
font_family = $font
position = -30, -150
halign = right
valign = top
}
# USER AVATAR
image {
monitor =
path = $HOME/.face
size = 100
border_color = $accent
position = 0, 75
halign = center
valign = center
}
# INPUT FIELD
input-field {
monitor =
size = 300, 60
outline_thickness = 4
dots_size = 0.2
dots_spacing = 0.2
dots_center = true
outer_color = $accent
inner_color = $surface0
font_color = $text
fade_on_empty = false
placeholder_text = <span foreground="##$textAlpha"><i>󰌾 Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
hide_input = false
check_color = $accent
fail_color = $red
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
capslock_color = $yellow
position = 0, -47
halign = center
valign = center
}

View File

@ -1,2 +0,0 @@
preload = /usr/share/wallpapers/pika/adventurer_s_guild_by_neytirix_ddm554q.jpg
wallpaper = ,/usr/share/wallpapers/pika/adventurer_s_guild_by_neytirix_ddm554q.jpg

View File

@ -1,70 +0,0 @@
$mainMod = SUPER
#Mouse Binds
bindm=$mainMod,mouse:272,movewindow
bindm=$mainMod,mouse:273,resizewindow
bind=SUPERSHIFT,B,exec,chromium
bind=$mainMod,Return,exec,kitty
bind=$mainMod,N,exec,swaync-client -t -sw
bind=SUPERSHIFT,V,exec,pavucontrol
bind=SUPERSHIFT,Q,exec,wlogout -p layer-shell
bind=SUPERSHIFT,F,exec,nautilus
bind=$mainMod,Escape,exec,hyprctl reload
bind=$mainMod,Escape,exec,notify-send "Config Reloaded"
bind=$mainMod,S,togglefloating,
bind=$mainMod,A,pin
bind=$mainMod,Q,killactive,
bind=SUPERCONTROL,Q,exec,hyprctl kill
bind=$mainMod,F,fullscreen,
bindle=,XF86AudioRaiseVolume,exec,swayosd-client --output-volume raise
bindle=,XF86AudioLowerVolume,exec,swayosd-client --output-volume lower
bindl=,XF86AudioMute,exec,swayosd-client --output-volume mute-toggle
bindl=,XF86AudioMicMute,exec,swayosd-client --input-volume mute-toggle
bindle=,XF86MonBrightnessUp,exec,swayosd-client --brightness raise
bindle=,XF86MonBrightnessDown,exec,swayosd-client --brightness lower
bindl=,Caps_Lock,exec,sleep 0.2 && swayosd-client --caps-lock
bind=,XF86Calculator,exec,kcalc
bindl=,XF86AudioPlay,exec,playerctl play-pause
bindl=,XF86AudioStop,exec,playerctl stop
bindl=,XF86AudioPrev,exec,playerctl previous
bindl=,XF86AudioNext,exec,playerctl next
bind=$mainMod,d,exec,rofi -modi drun -show drun
bind=$mainMod,left,movefocus,l
bind=$mainMod,right,movefocus,r
bind=$mainMod,up,movefocus,u
bind=$mainMod,down,movefocus,d
bind=SUPERSHIFT,left,movetoworkspace,-1
bind=SUPERSHIFT,right,movetoworkspace,+1
bind=SUPERSHIFT,up,movewindow,u
bind=SUPERSHIFT,down,movewindow,d
bind=SUPERCONTROL,left,workspace,-1
bind=SUPERCONTROL,right,workspace,+1
bind = SUPER SHIFT, 1, movetoworkspace, 1
bind = SUPER SHIFT, 2, movetoworkspace, 2
bind = SUPER SHIFT, 3, movetoworkspace, 3
bind = SUPER SHIFT, 4, movetoworkspace, 4
bind = SUPER SHIFT, 5, movetoworkspace, 5
bind = SUPER SHIFT, 6, movetoworkspace, 6
bind = SUPER SHIFT, 7, movetoworkspace, 7
bind = SUPER SHIFT, 8, movetoworkspace, 8
bind = SUPER SHIFT, 9, movetoworkspace, 9
bind = SUPER SHIFT, 0, movetoworkspace, 10
bind=SUPERCONTROL,up,focusmonitor,l
bind=SUPERCONTROL,down,focusmonitor,r
bind=$mainMod,tab,workspace,previous
bind=SUPERALT,left,resizeactive,-20 0
bind=SUPERALT,right,resizeactive,20 0
bind=SUPERALT,up,resizeactive,0 -20
bind=SUPERALT,down,resizeactive,0 20
bind=$mainMod,F12,exec,hyprctl keyword misc:no_vfr 0
bind=SUPERALT,F12,exec,hyprctl keyword misc:no_vfr 1
bind=,Print,exec,wayfreeze & PID=$!; sleep .1; grim -g "$(slurp)" - | wl-copy; kill $PID
bind=CTRL,Print,exec,/usr/bin/grimshot --notify save screen
bind=SHIFT,Print,exec,/usr/bin/grimshot --notify copy screen
bind=CTRLSHIFT,Print,exec,/usr/bin/grimshot --notify save area

View File

@ -1,78 +0,0 @@
$rosewater = rgb(f5e0dc)
$rosewaterAlpha = f5e0dc
$flamingo = rgb(f2cdcd)
$flamingoAlpha = f2cdcd
$pink = rgb(f5c2e7)
$pinkAlpha = f5c2e7
$mauve = rgb(cba6f7)
$mauveAlpha = cba6f7
$red = rgb(f38ba8)
$redAlpha = f38ba8
$maroon = rgb(eba0ac)
$maroonAlpha = eba0ac
$peach = rgb(fab387)
$peachAlpha = fab387
$yellow = rgb(f9e2af)
$yellowAlpha = f9e2af
$green = rgb(a6e3a1)
$greenAlpha = a6e3a1
$teal = rgb(94e2d5)
$tealAlpha = 94e2d5
$sky = rgb(89dceb)
$skyAlpha = 89dceb
$sapphire = rgb(74c7ec)
$sapphireAlpha = 74c7ec
$blue = rgb(89b4fa)
$blueAlpha = 89b4fa
$lavender = rgb(b4befe)
$lavenderAlpha = b4befe
$text = rgb(cdd6f4)
$textAlpha = cdd6f4
$subtext1 = rgb(bac2de)
$subtext1Alpha = bac2de
$subtext0 = rgb(a6adc8)
$subtext0Alpha = a6adc8
$overlay2 = rgb(9399b2)
$overlay2Alpha = 9399b2
$overlay1 = rgb(7f849c)
$overlay1Alpha = 7f849c
$overlay0 = rgb(6c7086)
$overlay0Alpha = 6c7086
$surface2 = rgb(585b70)
$surface2Alpha = 585b70
$surface1 = rgb(45475a)
$surface1Alpha = 45475a
$surface0 = rgb(313244)
$surface0Alpha = 313244
$base = rgb(1e1e2e)
$baseAlpha = 1e1e2e
$mantle = rgb(181825)
$mantleAlpha = 181825
$crust = rgb(11111b)
$crustAlpha = 11111b

View File

@ -1 +0,0 @@
monitor=,highrr,auto,1

View File

@ -1,26 +0,0 @@
windowrulev2 = float,class:^(launcher)$
windowrulev2 = noanim,class:^(launcher)$
windowrulev2 = size 1000 750,class:^(launcher)$
windowrulev2 = center,class:^(launcher)$
windowrulev2 = float,title:^(Sharing)$
windowrulev2 = float,class:^(Steam)$
windowrulev2 = noborder,class:^(Steam)$
windowrulev2 = noshadow,class:^(Steam)$
windowrulev2 = noblur,class:^(Steam)$
windowrulev2 = float,class:^(steam)$
windowrulev2 = noborder,class:^(steam)$
windowrulev2 = noshadow,class:^(steam)$
windowrulev2 = noblur,class:^(steam)$
windowrulev2 = float,class:^(steamwebhelper)$
windowrulev2 = noborder,class:^(steamwebhelper)$
windowrulev2 = noshadow,class:^(steamwebhelper)$
windowrulev2 = noblur,class:^(steamwebhelper)$
windowrulev2 = idleinhibit always,class:^(gamescope)$
windowrulev2 = fullscreen, class:^(steam_app_.*)$
windowrulev2 = immediate, fullscreen:1
windowrulev2 = idleinhibit always, fullscreen:1
windowrulev2 = immediate, class:^(steam_app_.*)$
windowrulev2 = stayfocused, class:^(steam_app_.*)$
windowrulev2 = idleinhibit always, class:^(steam_app_.*)$
windowrulev2 = allowsinput, class:^(steam_app_.*)$
windowrulev2 = renderunfocused, class:^(steam_app_.*)$

View File

@ -1,83 +0,0 @@
linux_display_server wayland
font_family Lilex
bold_font auto
italic_font auto
bold_italic_font auto
font_size 15.0
disable_ligatures never
cursor_shape beam
scrollback_lines 10000
repaint_delay 6
sync_to_monitor yes
confirm_os_window_close 0
#window
window_padding_width 6
selection_foreground #d8caac
selection_background #505a60
background_opacity 0.90
foreground #a9b1d6
background #1a1b26
# Black
color0 #414868
color8 #414868
# Red
color1 #f7768e
color9 #f7768e
# Green
color2 #73daca
color10 #73daca
# Yellow
color3 #e0af68
color11 #e0af68
# Blue
color4 #7aa2f7
color12 #7aa2f7
# Magenta
color5 #bb9af7
color13 #bb9af7
# Cyan
color6 #7dcfff
color14 #7dcfff
# White
color7 #c0caf5
color15 #c0caf5
# Cursor
cursor #c0caf5
cursor_text_color #1a1b26
# Selection highlight
selection_foreground none
selection_background #28344a
# The color for highlighting URLs on mouse-over
url_color #9ece6a
# Window borders
active_border_color #3d59a1
inactive_border_color #101014
bell_border_color #e0af68
# Tab bar
tab_bar_style fade
tab_fade 1
active_tab_foreground #3d59a1
active_tab_background #16161e
active_tab_font_style bold
inactive_tab_foreground #787c99
inactive_tab_background #16161e
inactive_tab_font_style bold
tab_bar_background #101014
# Title bar
macos_titlebar_color #16161e

View File

@ -1,17 +0,0 @@
configuration{
modi: "run,drun";
icon-theme: "Oranchelo";
show-icons: true;
terminal: "kitty";
drun-display-format: "{icon} {name}";
location: 0;
disable-history: false;
hide-scrollbar: true;
display-drun: "  Apps ";
display-run: "  Run ";
display-Network: " 󰤨 Network";
sidebar-mode: true;
}
@theme "catppuccin-mocha"

View File

@ -1,36 +0,0 @@
{
"label" : "lock",
"action" : "loginctl lock-session",
"text" : "Lock",
"keybind" : "l"
}
{
"label" : "hibernate",
"action" : "systemctl hibernate",
"text" : "Hibernate",
"keybind" : "h"
}
{
"label" : "logout",
"action" : "loginctl terminate-user $USER",
"text" : "Logout",
"keybind" : "e"
}
{
"label" : "shutdown",
"action" : "systemctl poweroff",
"text" : "Shutdown",
"keybind" : "s"
}
{
"label" : "suspend",
"action" : "systemctl suspend",
"text" : "Suspend",
"keybind" : "u"
}
{
"label" : "reboot",
"action" : "systemctl reboot",
"text" : "Reboot",
"keybind" : "r"
}

View File

@ -1,55 +0,0 @@
* {
background-image: none;
background-color: transparent;
}
window {
background-color: rgba(49, 50, 68, 0.85);
}
grid {
margin: 100px 250px;
}
button {
padding: 0;
margin: 25px;
color: rgb(205, 214, 244);
background-color: rgba(49, 50, 68, 0.95);
border-style: solid;
border-width: 1px;
border-color: rgba(49, 50, 68, 0.95);
border-radius: 0;
background-repeat: no-repeat;
background-position: center;
background-size: 50px 50px;
}
button:hover {
background-color: rgba(30, 30, 46, 0.95);
outline-style: none;
border: 1px solid rgba(137, 180, 250, 0.95);
}
#lock {
background-image: image(url("/usr/share/wlogout/icons/lock.png"), url("/usr/local/share/wlogout/icons/lock.png"));
}
#logout {
background-image: image(url("/usr/share/wlogout/icons/logout.png"), url("/usr/local/share/wlogout/icons/logout.png"));
}
#suspend {
background-image: image(url("/usr/share/wlogout/icons/suspend.png"), url("/usr/local/share/wlogout/icons/suspend.png"));
}
#hibernate {
background-image: image(url("/usr/share/wlogout/icons/hibernate.png"), url("/usr/local/share/wlogout/icons/hibernate.png"));
}
#shutdown {
background-image: image(url("/usr/share/wlogout/icons/shutdown.png"), url("/usr/local/share/wlogout/icons/shutdown.png"));
}
#reboot {
background-image: image(url("/usr/share/wlogout/icons/reboot.png"), url("/usr/local/share/wlogout/icons/reboot.png"));
}

View File

@ -1,4 +0,0 @@
<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<dir>~/.fonts</dir>
</fontconfig>

Some files were not shown because too many files have changed in this diff Show More