Initial commit

This commit is contained in:
Window Managers Group 2024-11-17 15:45:46 +01:00
commit b544cbd928
382 changed files with 4536 additions and 0 deletions

1
.github/build-canary-v3 vendored Normal file
View File

@ -0,0 +1 @@
1

1
.github/build-nest-v3 vendored Normal file
View File

@ -0,0 +1 @@
1

1
.github/release-canary-v3 vendored Normal file
View File

@ -0,0 +1 @@
1

1
.github/release-nest-v3 vendored Normal file
View File

@ -0,0 +1 @@
2

37
.github/workflows/build-canaryv3.yml vendored Normal file
View File

@ -0,0 +1,37 @@
name: PikaOS Package Build Only (Canary) (amd64-v3)
on:
push:
branches:
- main
paths:
- '.github/build-canary-v3'
jobs:
build:
runs-on: ubuntu-latest
container:
image: ghcr.io/pikaos-linux/pikaos-builder:canaryv3
volumes:
- /proc:/proc
options: --privileged -it
steps:
- uses: actions/checkout@v3
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_KEY }}
name: id_rsa
known_hosts: ${{ secrets.KNOWN_HOSTS }}
if_key_exists: replace
- name: Update APT Cache
run: apt-get update -y
- name: Set Build Config
run: cp -vf ./pika-build-config/amd64-v3.sh ./pika-build-config.sh
- name: Build Package
run: ./main.sh

37
.github/workflows/build-nestv3.yml vendored Normal file
View File

@ -0,0 +1,37 @@
name: PikaOS Package Build Only (amd64-v3)
on:
push:
branches:
- main
paths:
- '.github/build-nest-v3'
jobs:
build:
runs-on: ubuntu-latest
container:
image: ghcr.io/pikaos-linux/pikaos-builder:nestv3
volumes:
- /proc:/proc
options: --privileged -it
steps:
- uses: actions/checkout@v3
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_KEY }}
name: id_rsa
known_hosts: ${{ secrets.KNOWN_HOSTS }}
if_key_exists: replace
- name: Update APT Cache
run: apt-get update -y
- name: Set Build Config
run: cp -vf ./pika-build-config/amd64-v3.sh ./pika-build-config.sh
- name: Build Package
run: ./main.sh

40
.github/workflows/release-canaryv3.yml vendored Normal file
View File

@ -0,0 +1,40 @@
name: PikaOS Package Build & Release (Canary) (amd64-v3)
on:
push:
branches:
- main
paths:
- '.github/release-canary-v3'
jobs:
build:
runs-on: ubuntu-latest
container:
image: ghcr.io/pikaos-linux/pikaos-builder:canaryv3
volumes:
- /proc:/proc
options: --privileged -it
steps:
- uses: actions/checkout@v3
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_KEY }}
name: id_rsa
known_hosts: ${{ secrets.KNOWN_HOSTS }}
if_key_exists: replace
- name: Update APT Cache
run: apt-get update -y
- name: Set Build Config
run: cp -vf ./pika-build-config/amd64-v3.sh ./pika-build-config.sh
- name: Build Package
run: ./main.sh
- name: Release Package
run: ./release.sh

40
.github/workflows/release-nestv3.yml vendored Normal file
View File

@ -0,0 +1,40 @@
name: PikaOS Package Build & Release (amd64-v3)
on:
push:
branches:
- main
paths:
- '.github/release-nest-v3'
jobs:
build:
runs-on: ubuntu-latest
container:
image: ghcr.io/pikaos-linux/pikaos-builder:nestv3
volumes:
- /proc:/proc
options: --privileged -it
steps:
- uses: actions/checkout@v3
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_KEY }}
name: id_rsa
known_hosts: ${{ secrets.KNOWN_HOSTS }}
if_key_exists: replace
- name: Update APT Cache
run: apt-get update -y
- name: Set Build Config
run: cp -vf ./pika-build-config/amd64-v3.sh ./pika-build-config.sh
- name: Build Package
run: ./main.sh
- name: Release Package
run: ./release.sh

46
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,46 @@
name: PikaOS Package Release
on:
workflow_dispatch
jobs:
build:
runs-on: self-hosted
container:
image: ghcr.io/pikaos-linux/pika-package-container:latest
volumes:
- /proc:/proc
options: --privileged -it
steps:
- uses: actions/checkout@v3
- name: Import GPG key
id: import_gpg
uses: crazy-max/ghaction-import-gpg@v5
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_KEY }}
name: id_rsa
known_hosts: ${{ secrets.KNOWN_HOSTS }}
if_key_exists: replace
- name: Build Package
run: ./main.sh
- name: Release Package
run: ./release.sh
- name: Purge cache
uses: strrife/cloudflare-chunked-purge-action@master
env:
# Zone is required by both authentication methods
CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }}
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
PURGE_URLS: ${{ vars.PURGE_URLS }}

24
LICENSE.md Normal file
View File

@ -0,0 +1,24 @@
MIT License (With DPKG packaging compatibility)
Copyright (c) 2024 PikaOS
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Notes:
The files covered by this license are any files and directories in the root of this repository (including but not limited to: `main.sh`, `release.sh`, and `.github`), with the exception of the `debian` directory and its contents if `debian/copyright` exists, and declares any files or directories as a different LICENSE/COPYRIGHT.

24
main.sh Executable file
View File

@ -0,0 +1,24 @@
#! /bin/bash
set -e
VERSION="2.0.19"
source ./pika-build-config.sh
echo "$PIKA_BUILD_ARCH" > pika-build-arch
# Clone Upstream
cd ./pika-hyprland-settings
# Get build deps
apt-get build-dep ./ -y
# Build package
LOGNAME=root dh_make --createorig -y -l -p pika-hyprland-settings_"$VERSION" || echo "dh-make: Ignoring Last Error"
dpkg-buildpackage --no-sign
# Move the debs to output
cd ../
mkdir -p ./output
mv ./*.deb ./output/

1
orig.source.txt Normal file
View File

@ -0,0 +1 @@
Source is this git's root

10
pika-build-config/amd64-v3.sh Executable file
View File

@ -0,0 +1,10 @@
#! /bin/bash
export PIKA_BUILD_ARCH="amd64-v3"
export DEBIAN_FRONTEND="noninteractive"
export DEB_BUILD_MAINT_OPTIONS="optimize=+lto -march=x86-64-v3 -O3 -flto -fuse-linker-plugin -falign-functions=32"
export DEB_CFLAGS_MAINT_APPEND="-march=x86-64-v3 -O3 -flto -fuse-linker-plugin -falign-functions=32"
export DEB_CPPFLAGS_MAINT_APPEND="-march=x86-64-v3 -O3 -flto -fuse-linker-plugin -falign-functions=32"
export DEB_CXXFLAGS_MAINT_APPEND="-march=x86-64-v3 -O3 -flto -fuse-linker-plugin -falign-functions=32"
export DEB_LDFLAGS_MAINT_APPEND="-march=x86-64-v3 -O3 -flto -fuse-linker-plugin -falign-functions=32"
export DEB_BUILD_OPTIONS="nocheck notest terse"
export DPKG_GENSYMBOLS_CHECK_LEVEL=0

5
pika-build-config/i386.sh Executable file
View File

@ -0,0 +1,5 @@
#! /bin/bash
export PIKA_BUILD_ARCH="i386"
export DEBIAN_FRONTEND="noninteractive"
export DEB_BUILD_OPTIONS="nocheck notest terse"
export DPKG_GENSYMBOLS_CHECK_LEVEL=0

View File

@ -0,0 +1,354 @@
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

@ -0,0 +1,99 @@
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

@ -0,0 +1,7 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: pop-desktop
Source: https://github.com/system76/pop-desktop
Files: *
Copyright: Copyright 2016-2017 System76
License: GPL-3+

View File

@ -0,0 +1,9 @@
[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

@ -0,0 +1,23 @@
#!/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

@ -0,0 +1,9 @@
[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

@ -0,0 +1,23 @@
#!/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

@ -0,0 +1,17 @@
#! /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

@ -0,0 +1 @@
3.0 (quilt)

View File

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

View File

@ -0,0 +1,17 @@
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

@ -0,0 +1,178 @@
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

@ -0,0 +1,56 @@
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

@ -0,0 +1,14 @@
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

@ -0,0 +1,34 @@
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

@ -0,0 +1,48 @@
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

@ -0,0 +1,38 @@
[general]
mode = normal
framerate = 30
autosens = 1
;overshoot = 10
;sensitivity = 750
bars = 15
[input]
method = pulse
source = auto
[output]
method = raw
raw_target = /dev/stdout
data_format = ascii
channels = mono
mono_option = average
[color]
gradient = 1
gradient_color_1 = '#99B5DE'
gradient_color_2 = '#92CBF6'
gradient_color_3 = '#ACD7F7'
gradient_color_4 = '#B0E2F7'
gradient_color_5 = '#DFEDF5'
gradient_color_6 = '#FDEBD4'
gradient_color_7 = '#E7D2D7'
gradient_color_8 = '#C1838E'
[smoothing]
monstercat = 1
gravity = 1000000
noise_reduction = 34

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,504 @@
// 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

@ -0,0 +1,34 @@
$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

@ -0,0 +1,357 @@
// 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

@ -0,0 +1,29 @@
$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

@ -0,0 +1,12 @@
// 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

@ -0,0 +1,30 @@
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

@ -0,0 +1,26 @@
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

@ -0,0 +1,83 @@
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

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

View File

@ -0,0 +1,7 @@
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

@ -0,0 +1,598 @@
* {
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

@ -0,0 +1,37 @@
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

@ -0,0 +1,25 @@
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

@ -0,0 +1,28 @@
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

@ -0,0 +1,29 @@
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

@ -0,0 +1,76 @@
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

@ -0,0 +1,27 @@
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

@ -0,0 +1,26 @@
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

@ -0,0 +1,41 @@
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

@ -0,0 +1,48 @@
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

@ -0,0 +1,40 @@
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

@ -0,0 +1,23 @@
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

@ -0,0 +1,29 @@
# 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

@ -0,0 +1,16 @@
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

@ -0,0 +1,18 @@
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

@ -0,0 +1,119 @@
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

@ -0,0 +1,92 @@
# 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

@ -0,0 +1,2 @@
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

@ -0,0 +1,70 @@
$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

@ -0,0 +1,78 @@
$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

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

View File

@ -0,0 +1,26 @@
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

@ -0,0 +1,83 @@
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

@ -0,0 +1,17 @@
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

@ -0,0 +1,36 @@
{
"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

@ -0,0 +1,55 @@
* {
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

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

View File

@ -0,0 +1 @@
default

View File

@ -0,0 +1 @@
not-allowed

View File

@ -0,0 +1 @@
dnd-move

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