update, switched to ags
This commit is contained in:
parent
8350e3fd37
commit
5f81cc5ead
39
flake.lock
39
flake.lock
|
@ -1,5 +1,25 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"ags": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1695234369,
|
||||||
|
"narHash": "sha256-1XX2K417v9ghnLI9uP6EIEAS1zmy92AenQ04P+v6Si4=",
|
||||||
|
"owner": "Aylur",
|
||||||
|
"repo": "ags",
|
||||||
|
"rev": "364fde91311ca6396c8a82796eb54bbca7e708ae",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Aylur",
|
||||||
|
"repo": "ags",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"chaotic-nyx": {
|
"chaotic-nyx": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"compare-to": "compare-to",
|
"compare-to": "compare-to",
|
||||||
|
@ -38,23 +58,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"eww-systray": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1692622179,
|
|
||||||
"narHash": "sha256-vxMGAa/RTsMADPK4dM/28SV2ktCT0DenYvGsHZ4IJ8c=",
|
|
||||||
"owner": "ralismark",
|
|
||||||
"repo": "eww",
|
|
||||||
"rev": "a82ed62c25ba50f28dc8c3d57efe440d51d6136b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ralismark",
|
|
||||||
"ref": "tray-3",
|
|
||||||
"repo": "eww",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fenix": {
|
"fenix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -416,8 +419,8 @@
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"ags": "ags",
|
||||||
"chaotic-nyx": "chaotic-nyx",
|
"chaotic-nyx": "chaotic-nyx",
|
||||||
"eww-systray": "eww-systray",
|
|
||||||
"fenix": "fenix",
|
"fenix": "fenix",
|
||||||
"fish-plugin-bobthefish": "fish-plugin-bobthefish",
|
"fish-plugin-bobthefish": "fish-plugin-bobthefish",
|
||||||
"fish-plugin-gruvbox-theme": "fish-plugin-gruvbox-theme",
|
"fish-plugin-gruvbox-theme": "fish-plugin-gruvbox-theme",
|
||||||
|
|
15
flake.nix
15
flake.nix
|
@ -69,15 +69,20 @@
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
waybar = {
|
|
||||||
url = "github:alexays/waybar";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
nvim-hmts = {
|
nvim-hmts = {
|
||||||
url = "github:calops/hmts.nvim";
|
url = "github:calops/hmts.nvim";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gruvbox-plus-icon-pack = {
|
||||||
|
url = "github:SylEleuth/gruvbox-plus-icon-pack";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
ags = {
|
||||||
|
url = "github:Aylur/ags";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, home-manager, ... }@inputs:
|
outputs = { self, nixpkgs, home-manager, ... }@inputs:
|
||||||
|
|
12
overlay.nix
12
overlay.nix
|
@ -2,9 +2,18 @@
|
||||||
{
|
{
|
||||||
default = final: prev: {
|
default = final: prev: {
|
||||||
|
|
||||||
|
# aitrack = prev.aitrack.overrideAttrs (old: {
|
||||||
|
# src = prev.fetchFromGitHub {
|
||||||
|
# owner = "mdk97";
|
||||||
|
# repo = "aitrack-linux";
|
||||||
|
# rev = "fd550e826e1423cb7ea8dfdc7a9f6597f8d41114";
|
||||||
|
# hash = "sha256-vwt+AVkpHDZch6RIdN8gNYVrYmUwxT6ahviIE5bqwi0=";
|
||||||
|
# };
|
||||||
|
# });
|
||||||
|
#
|
||||||
eww-hyprland-activewindow = prev.callPackage ./pkgs/eww-hyprland-activewindow { inherit inputs; };
|
eww-hyprland-activewindow = prev.callPackage ./pkgs/eww-hyprland-activewindow { inherit inputs; };
|
||||||
|
|
||||||
gruvbox-plus-icon-pack = final.callPackage ./pkgs/gruvbox-plus-icon-pack { };
|
gruvbox-plus-icon-pack = final.callPackage ./pkgs/gruvbox-plus-icon-pack { inherit inputs; };
|
||||||
|
|
||||||
ncmpcpp = prev.ncmpcpp.override {
|
ncmpcpp = prev.ncmpcpp.override {
|
||||||
visualizerSupport = true;
|
visualizerSupport = true;
|
||||||
|
@ -30,7 +39,6 @@
|
||||||
prev.keyutils
|
prev.keyutils
|
||||||
prev.gnome.zenity
|
prev.gnome.zenity
|
||||||
prev.xdg-user-dirs
|
prev.xdg-user-dirs
|
||||||
|
|
||||||
];
|
];
|
||||||
extraLibraries = prev: [ ];
|
extraLibraries = prev: [ ];
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,25 +1,26 @@
|
||||||
{ stdenvNoCC, fetchFromGitHub, gtk3, gnome-icon-theme, hicolor-icon-theme }:
|
{ stdenvNoCC, fetchFromGitHub, inputs, gtk3, fd, gnome-icon-theme, hicolor-icon-theme }:
|
||||||
|
|
||||||
stdenvNoCC.mkDerivation rec {
|
stdenvNoCC.mkDerivation rec {
|
||||||
pname = "gruvbox-plus-icon-pack";
|
pname = "gruvbox-plus-icon-pack";
|
||||||
version = "4.0";
|
version = "9999";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = inputs.gruvbox-plus-icon-pack;
|
||||||
owner = "SylEleuth";
|
|
||||||
repo = pname;
|
|
||||||
rev = "v${version}";
|
|
||||||
hash = "sha256-KefCHHFtuh2wAGBq6hZr9DpuJ0W99ueh8i1K3tohgG8=";
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [ gtk3 ];
|
nativeBuildInputs = [ gtk3 fd ];
|
||||||
|
|
||||||
propagatedBuildInputs = [ gnome-icon-theme hicolor-icon-theme ];
|
propagatedBuildInputs = [ gnome-icon-theme hicolor-icon-theme ];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/share/icons/GruvboxPlus
|
cd Gruvbox-Plus-Dark
|
||||||
cp -r * $out/share/icons/GruvboxPlus
|
fd " " -X rm
|
||||||
|
mkdir -p $out/share/icons/Gruvbox-Plus-Dark
|
||||||
|
cp -r * $out/share/icons/Gruvbox-Plus-Dark
|
||||||
|
'';
|
||||||
|
|
||||||
gtk-update-icon-cache $out/share/icons/GruvboxPlus
|
postFixup = ''
|
||||||
|
for i in $out/share/icons/*; do
|
||||||
|
gtk-update-icon-cache $i
|
||||||
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
dontDropIconThemeCache = true;
|
dontDropIconThemeCache = true;
|
||||||
|
|
|
@ -2,11 +2,18 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./services
|
./hardware
|
||||||
./programs
|
./programs
|
||||||
|
./services
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
|
tmp.useTmpfs = true;
|
||||||
|
|
||||||
|
kernel.sysctl."vm.max_map_count" = 16777216; #Star Citizen crash fix
|
||||||
|
|
||||||
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
kernelModules = [ "i2c-dev" "i2c-piix4" ];
|
||||||
kernelParams =
|
kernelParams =
|
||||||
[
|
[
|
||||||
"amdgpu.ppfeaturemask=0xffffffff"
|
"amdgpu.ppfeaturemask=0xffffffff"
|
||||||
|
@ -23,7 +30,7 @@
|
||||||
|
|
||||||
grub = {
|
grub = {
|
||||||
enable = true;
|
enable = true;
|
||||||
useOSProber = true;
|
useOSProber = false;
|
||||||
efiSupport = true;
|
efiSupport = true;
|
||||||
device = "nodev";
|
device = "nodev";
|
||||||
};
|
};
|
||||||
|
@ -34,9 +41,6 @@
|
||||||
screen = "2k";
|
screen = "2k";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
|
||||||
kernelModules = [ "i2c-dev" "i2c-piix4" ];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = "schedutil";
|
powerManagement.cpuFreqGovernor = "schedutil";
|
||||||
|
@ -47,6 +51,7 @@
|
||||||
firewall.enable = false;
|
firewall.enable = false;
|
||||||
extraHosts = ''
|
extraHosts = ''
|
||||||
192.168.0.18 steam.deck
|
192.168.0.18 steam.deck
|
||||||
|
127.0.0.1 modules-cdn.eac-prod.on.epicgames.com
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -70,21 +75,7 @@
|
||||||
keyMap = "us-acentos";
|
keyMap = "us-acentos";
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.opengl = {
|
|
||||||
enable = true;
|
|
||||||
extraPackages = [ pkgs.libvdpau-va-gl ];
|
|
||||||
|
|
||||||
driSupport32Bit = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.steam-hardware.enable = true;
|
|
||||||
|
|
||||||
hardware.bluetooth.enable = true;
|
|
||||||
hardware.sane = {
|
|
||||||
enable = true;
|
|
||||||
extraBackends = [ pkgs.sane-airscan ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable sound.
|
# Enable sound.
|
||||||
sound.enable = true;
|
sound.enable = true;
|
||||||
|
|
||||||
|
@ -121,6 +112,7 @@
|
||||||
file
|
file
|
||||||
git
|
git
|
||||||
htop
|
htop
|
||||||
|
inotify-tools
|
||||||
kdiskmark
|
kdiskmark
|
||||||
links2
|
links2
|
||||||
libsForQt5.dolphin
|
libsForQt5.dolphin
|
||||||
|
@ -130,6 +122,7 @@
|
||||||
openrgb
|
openrgb
|
||||||
p7zip
|
p7zip
|
||||||
pciutils
|
pciutils
|
||||||
|
sassc
|
||||||
ripgrep
|
ripgrep
|
||||||
unrar
|
unrar
|
||||||
unzip
|
unzip
|
||||||
|
|
|
@ -1,50 +1,55 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
[
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "amdgpu" "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" =
|
||||||
{
|
{ device = "/dev/disk/by-uuid/f2c5e4e6-b94c-496a-90ef-0f77b8e5c645";
|
||||||
device = "/dev/disk/by-uuid/2949cfe9-f064-47b4-9621-3941b8ea1a42";
|
fsType = "btrfs";
|
||||||
fsType = "xfs";
|
options = [ "subvol=@nixos" "compress-force=zstd" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot/efi" =
|
||||||
|
{ device = "/dev/disk/by-uuid/BE4D-EFA9";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/mnt/btrfs" =
|
||||||
|
{ device = "/dev/disk/by-uuid/f2c5e4e6-b94c-496a-90ef-0f77b8e5c645";
|
||||||
|
fsType = "btrfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/mnt/hdd" =
|
fileSystems."/mnt/hdd" =
|
||||||
{
|
{ device = "/dev/disk/by-uuid/ecbbfb05-ada8-4044-81a6-9a280f93802f";
|
||||||
device = "/dev/disk/by-uuid/ecbbfb05-ada8-4044-81a6-9a280f93802f";
|
|
||||||
fsType = "xfs";
|
fsType = "xfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home" =
|
fileSystems."/home" =
|
||||||
{
|
{ device = "/dev/disk/by-uuid/4dd7a8ea-311a-458b-8839-1d92c7abab1f";
|
||||||
device = "/dev/disk/by-uuid/4dd7a8ea-311a-458b-8839-1d92c7abab1f";
|
|
||||||
fsType = "xfs";
|
fsType = "xfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot/efi" =
|
swapDevices = [ {
|
||||||
{
|
device = "/var/lib/swapfile";
|
||||||
device = "/dev/disk/by-uuid/2128-03CA";
|
size = 16*1024;
|
||||||
fsType = "vfat";
|
} ];
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ ];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp7s0.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.wlp6s0.useDHCP = lib.mkDefault true;
|
# networking.interfaces.wlp6s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
hardware.opengl = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = [ pkgs.libvdpau-va-gl ];
|
||||||
|
driSupport32Bit = true;
|
||||||
|
};
|
||||||
|
chaotic.mesa-git.enable = true;
|
||||||
|
|
||||||
|
hardware.steam-hardware.enable = true;
|
||||||
|
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
hardware.sane = {
|
||||||
|
enable = true;
|
||||||
|
extraBackends = [ pkgs.sane-airscan ];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -45,8 +45,8 @@
|
||||||
};
|
};
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
e = "nvim";
|
e = "nvim";
|
||||||
ls = "${pkgs.exa}/bin/exa --icons";
|
ls = "${pkgs.eza}/bin/eza --icons";
|
||||||
ll = "${pkgs.exa}/bin/exa --icons -l";
|
ll = "${pkgs.eza}/bin/eza --icons -l";
|
||||||
nf = "${pkgs.neofetch}/bin/neofetch";
|
nf = "${pkgs.neofetch}/bin/neofetch";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -83,6 +83,7 @@
|
||||||
header_window_color = "yellow";
|
header_window_color = "yellow";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.mpdris2 = {
|
services.mpdris2 = {
|
||||||
enable = true;
|
enable = true;
|
||||||
notifications = true;
|
notifications = true;
|
||||||
|
|
|
@ -40,6 +40,7 @@ lspconfig.rust_analyzer.setup { capabilities = capabilities }
|
||||||
lspconfig.zls.setup { capabilities = capabilities }
|
lspconfig.zls.setup { capabilities = capabilities }
|
||||||
lspconfig.jedi_language_server.setup { capabilities = capabilities }
|
lspconfig.jedi_language_server.setup { capabilities = capabilities }
|
||||||
lspconfig.bashls.setup { capabilities = capabilities }
|
lspconfig.bashls.setup { capabilities = capabilities }
|
||||||
|
lspconfig.tsserver.setup { capabilities = capabilities }
|
||||||
|
|
||||||
lspconfig.cssls.setup {
|
lspconfig.cssls.setup {
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
|
|
|
@ -53,6 +53,7 @@
|
||||||
nixd
|
nixd
|
||||||
rust-analyzer
|
rust-analyzer
|
||||||
stylua
|
stylua
|
||||||
|
nodePackages.typescript-language-server
|
||||||
nodePackages.vscode-css-languageserver-bin
|
nodePackages.vscode-css-languageserver-bin
|
||||||
zls
|
zls
|
||||||
] ++ [
|
] ++ [
|
||||||
|
|
|
@ -0,0 +1,124 @@
|
||||||
|
const { Widget } = ags.Widget;
|
||||||
|
const { Mpris, Hyprland, SystemTray } = ags.Service;
|
||||||
|
const { execAsync } = ags.Utils;
|
||||||
|
const { Box, Button, Label, Icon, CenterBox, Window } = Widget;
|
||||||
|
|
||||||
|
const Workspaces = (monitor) => Box({
|
||||||
|
className: 'workspaces',
|
||||||
|
connections: [[Hyprland, box => {
|
||||||
|
if (monitor == 0) {
|
||||||
|
box.children = [1,2,3].map(i => Button({
|
||||||
|
onClicked: () => execAsync(`hyprctl dispatch workspace ${i}`),
|
||||||
|
child: Label({ label: `${i}` }),
|
||||||
|
className: Hyprland.active.workspace.id == i ? 'focused' : '',
|
||||||
|
}));
|
||||||
|
} else if (monitor == 1) {
|
||||||
|
box.children = [4,5,6].map(i => Button({
|
||||||
|
onClicked: () => execAsync(`hyprctl dispatch workspace ${i}`),
|
||||||
|
child: Label({ label: `${i}` }),
|
||||||
|
className: Hyprland.active.workspace.id == i ? 'focused' : '',
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}]],
|
||||||
|
});
|
||||||
|
|
||||||
|
const WindowTitle = () => Label({
|
||||||
|
connections: [[Hyprland, label => {
|
||||||
|
label.label = Hyprland.active.client.title || '';
|
||||||
|
label.toggleClassName('windowTitle', label.label);
|
||||||
|
}]],
|
||||||
|
});
|
||||||
|
|
||||||
|
const Media = () => Button({
|
||||||
|
className: 'media',
|
||||||
|
onPrimaryClick: () => Mpris.getPlayer('mpd')?.playPause(),
|
||||||
|
onScrollUp: () => Mpris.getPlayer('mpd')?.previous(),
|
||||||
|
onScrollDown: () => Mpris.getPlayer('mpd')?.next(),
|
||||||
|
child: Label({
|
||||||
|
connections: [[Mpris, label => {
|
||||||
|
const mpris = Mpris.getPlayer('mpd');
|
||||||
|
if (!mpris || mpris.playBackStatus == "Stopped")
|
||||||
|
label.label = ' Stopped';
|
||||||
|
else
|
||||||
|
label.label = `${mpris.playBackStatus == 'Playing' ? ' ' : ' '}${mpris.trackArtists.join(', ')} - ${mpris.trackTitle}`;
|
||||||
|
}]],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
const SysTray = () => Box({
|
||||||
|
className: 'tray',
|
||||||
|
connections: [[SystemTray, box => {
|
||||||
|
box.children = SystemTray.items.map(item => Button({
|
||||||
|
className: 'tray-icon',
|
||||||
|
child: Icon(),
|
||||||
|
onPrimaryClick: (_, event) => item.activate(event),
|
||||||
|
onSecondaryClick: (_, event) => item.openMenu(event),
|
||||||
|
connections: [[item, button => {
|
||||||
|
button.child.icon = item.icon;
|
||||||
|
button.tooltipMarkup = item.tooltipMarkup;
|
||||||
|
}]],
|
||||||
|
}));
|
||||||
|
}]],
|
||||||
|
});
|
||||||
|
|
||||||
|
const Clock = () => Box({
|
||||||
|
className: 'date',
|
||||||
|
children: [
|
||||||
|
Label({
|
||||||
|
label: ' ',
|
||||||
|
}),
|
||||||
|
Label({
|
||||||
|
connections: [
|
||||||
|
[1000, label => execAsync(['date', '+%a %d, %B %H:%M'])
|
||||||
|
.then(date => label.label = date).catch(console.error)],
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
const Left = (monitor) => Box({
|
||||||
|
children: [
|
||||||
|
Workspaces(monitor),
|
||||||
|
WindowTitle(),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
const Center = () => Box({
|
||||||
|
children: [
|
||||||
|
Media(),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const Right = () => Box({
|
||||||
|
halign: 'end',
|
||||||
|
children: [
|
||||||
|
Clock(),
|
||||||
|
SysTray(),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
const Bar = ({ monitor } = {}) => Window({
|
||||||
|
name: `bar-${monitor}`, // name has to be unique
|
||||||
|
className: 'bar',
|
||||||
|
monitor,
|
||||||
|
anchor: ['top', 'left', 'right'],
|
||||||
|
exclusive: true,
|
||||||
|
child: CenterBox({
|
||||||
|
startWidget: Left(`${monitor}`),
|
||||||
|
centerWidget: Center(),
|
||||||
|
endWidget: Right(),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
const scss = ags.App.configDir + '/style.scss';
|
||||||
|
const css = '/tmp/style-ags.css';
|
||||||
|
ags.Utils.exec(`sassc ${scss} ${css}`);
|
||||||
|
|
||||||
|
export default {
|
||||||
|
style: css,
|
||||||
|
windows: [
|
||||||
|
Bar({monitor: 0}),
|
||||||
|
Bar({monitor: 1}),
|
||||||
|
],
|
||||||
|
};
|
|
@ -5,79 +5,68 @@ $wsfg: rgb(235,219,178);
|
||||||
$wsbg: rgb(60,56,54);
|
$wsbg: rgb(60,56,54);
|
||||||
$activewsbg: rgb(102,92,84);
|
$activewsbg: rgb(102,92,84);
|
||||||
|
|
||||||
|
|
||||||
$box-bg: rgb(80,73,69);
|
$box-bg: rgb(80,73,69);
|
||||||
|
|
||||||
//Global Styles
|
* {
|
||||||
|
min-height: unset;
|
||||||
|
}
|
||||||
|
|
||||||
.bar {
|
.bar {
|
||||||
|
min-height: 33px;
|
||||||
|
font-family: "JetBrainsMono Nerd Font";
|
||||||
|
font-size: 12px;
|
||||||
background-color: $bg;
|
background-color: $bg;
|
||||||
color: $fg;
|
color: $fg;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window {
|
.workspaces {
|
||||||
|
background-color: $box-bg;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 5px 0px 5px 10px;
|
||||||
|
font-size: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspaces button {
|
||||||
|
border-radius: 0px;
|
||||||
|
background-color: $wsbg;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspaces button.focused {
|
||||||
|
background-color: $activewsbg;
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.windowTitle {
|
||||||
background-color: $box-bg;
|
background-color: $box-bg;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
padding: 0px 10px 0px 10px;
|
padding: 0px 10px 0px 10px;
|
||||||
margin: 5px 0px 5px 10px;
|
margin: 5px 0px 5px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.volume {
|
.media {
|
||||||
background-color: $box-bg;
|
|
||||||
border-radius: 10px 0px 0px 10px;
|
|
||||||
margin: 5px 0px 5px 0px;
|
|
||||||
padding: 0px 10px 0px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mpd {
|
|
||||||
background-color: $box-bg;
|
background-color: $box-bg;
|
||||||
border-radius: 0px 10px 10px 0px;
|
border-radius: 0px 10px 10px 0px;
|
||||||
padding: 0px 10px 0px 10px;
|
padding: 0px 10px 0px 10px;
|
||||||
margin: 5px 10px 5px 0px;
|
margin: 5px 10px 5px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tray {
|
|
||||||
background-color: $box-bg;
|
|
||||||
border-radius: 10px;
|
|
||||||
padding: 0px 10px 0px 10px;
|
|
||||||
margin: 5px 10px 5px 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.date {
|
.date {
|
||||||
background-color: $box-bg;
|
background-color: $box-bg;
|
||||||
border-radius: 10px;
|
|
||||||
padding: 0px 10px 0px 10px;
|
padding: 0px 10px 0px 10px;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 5px 10px 5px 0px;
|
||||||
|
};
|
||||||
|
|
||||||
|
.tray {
|
||||||
|
background-color: $box-bg;
|
||||||
|
padding: 0px 10px 0px 10px;
|
||||||
|
border-radius: 10px;
|
||||||
margin: 5px 10px 5px 0px;
|
margin: 5px 10px 5px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wswidget {
|
.tray-icon {
|
||||||
|
font-size: 18px;
|
||||||
background-color: $box-bg;
|
background-color: $box-bg;
|
||||||
// border-radius: 10px;
|
padding: 2px;
|
||||||
margin: 5px 0px 5px 10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.w0, .w01, .w02, .w03, .w04, .w05, .w06, .w07, .w08, .w09, .w011, .w022, .w033, .w044, .w055, .w066, .w077, .w088, .w099 {
|
|
||||||
background-color: $wsbg;
|
|
||||||
padding: 3px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.w01, .w011, .w04, .w044 {
|
|
||||||
background-color: $wsbg;
|
|
||||||
// border-radius: 10px 0px 0px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.w03, .w033, .w06, .w066 {
|
|
||||||
background-color: $wsbg;
|
|
||||||
// border-radius: 0px 10px 10px 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Occupied */
|
|
||||||
.w01, .w02, .w03, .w04, .w05, .w06, .w07, .w08, .w09 {
|
|
||||||
background-color: $wsbg;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Focused */
|
|
||||||
.w011, .w022, .w033, .w044, .w055, .w066, .w077, .w088, .w099 {
|
|
||||||
background-color: $activewsbg;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
{ pkgs, lib, inputs, ...}:
|
||||||
|
{
|
||||||
|
imports = [ inputs.ags.homeManagerModules.default];
|
||||||
|
|
||||||
|
programs.ags = {
|
||||||
|
enable = true;
|
||||||
|
configDir = ./ags-config;
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,8 +0,0 @@
|
||||||
@import "panel/eww.scss";
|
|
||||||
|
|
||||||
* {
|
|
||||||
all: unset;
|
|
||||||
|
|
||||||
font-family: "JetBrainsMono Nerd Font";
|
|
||||||
font-size: 12px;
|
|
||||||
};
|
|
|
@ -1 +0,0 @@
|
||||||
(include "panel/eww.yuck")
|
|
|
@ -1,153 +0,0 @@
|
||||||
;; ----------------------------- right monitor
|
|
||||||
(defwidget bar0 []
|
|
||||||
(centerbox
|
|
||||||
:class "bar"
|
|
||||||
:orientation "h"
|
|
||||||
(left_side0)
|
|
||||||
(center)
|
|
||||||
(right_side)
|
|
||||||
))
|
|
||||||
|
|
||||||
(defwidget left_side0 []
|
|
||||||
(box
|
|
||||||
:space-evenly false
|
|
||||||
:orientation "h"
|
|
||||||
:spacing 5
|
|
||||||
|
|
||||||
(box
|
|
||||||
:class "wswidget"
|
|
||||||
:spacing 0
|
|
||||||
(workspaces0))
|
|
||||||
|
|
||||||
(box
|
|
||||||
:class { window0 != "" ? "window" : "" }
|
|
||||||
window0)
|
|
||||||
))
|
|
||||||
|
|
||||||
;; ----------------------------- left monitor
|
|
||||||
|
|
||||||
(defwidget bar1 []
|
|
||||||
(centerbox
|
|
||||||
:class "bar"
|
|
||||||
:orientation "h"
|
|
||||||
(left_side1)
|
|
||||||
(center)
|
|
||||||
(right_side)
|
|
||||||
))
|
|
||||||
|
|
||||||
(defwidget left_side1 []
|
|
||||||
(box
|
|
||||||
:space-evenly false
|
|
||||||
:orientation "h"
|
|
||||||
:spacing 5
|
|
||||||
|
|
||||||
(box
|
|
||||||
:class "wswidget"
|
|
||||||
:spacing 0
|
|
||||||
(workspaces1))
|
|
||||||
|
|
||||||
(box
|
|
||||||
:class { window1 != "" ? "window" : "" }
|
|
||||||
window1)
|
|
||||||
))
|
|
||||||
|
|
||||||
;; -----------------------------
|
|
||||||
|
|
||||||
(defwidget center []
|
|
||||||
(box
|
|
||||||
:space-evenly false
|
|
||||||
:spacing 5
|
|
||||||
|
|
||||||
(eventbox
|
|
||||||
:onscroll "pamixer `echo {} | sed 's/up/\-i/\' | sed 's/down/\-d/'` 10"
|
|
||||||
(box
|
|
||||||
:space-evenly false
|
|
||||||
:class "volume"
|
|
||||||
volume))
|
|
||||||
|
|
||||||
(eventbox
|
|
||||||
:onclick "mpc toggle"
|
|
||||||
(box
|
|
||||||
:class "mpd"
|
|
||||||
mpd))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget right_side []
|
|
||||||
(box
|
|
||||||
:space-evenly false
|
|
||||||
:spacing 5
|
|
||||||
:halign "end"
|
|
||||||
|
|
||||||
(box
|
|
||||||
:space-evenly false
|
|
||||||
:orientation "h"
|
|
||||||
:class "date"
|
|
||||||
date)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
;; ---------------------------- workspace widget
|
|
||||||
|
|
||||||
(deflisten workspace0
|
|
||||||
"scripts/workspaces.sh 0")
|
|
||||||
|
|
||||||
(defwidget workspaces0 []
|
|
||||||
(literal :content workspace0))
|
|
||||||
|
|
||||||
(deflisten workspace1
|
|
||||||
"scripts/workspaces.sh 1")
|
|
||||||
|
|
||||||
(defwidget workspaces1 []
|
|
||||||
(literal :content workspace1))
|
|
||||||
|
|
||||||
;; ---------------------------- window widget
|
|
||||||
|
|
||||||
(deflisten window0 "hyprland-activewindow `hyprctl monitors -j | jq -r \".[0].name\"`")
|
|
||||||
(deflisten window1 "hyprland-activewindow `hyprctl monitors -j | jq -r \".[1].name\"`")
|
|
||||||
|
|
||||||
(defwidget title0 []
|
|
||||||
(label :text "''${window0}"))
|
|
||||||
|
|
||||||
(defwidget title1 []
|
|
||||||
(label :text "''${window1}"))
|
|
||||||
|
|
||||||
;; -----------------------------
|
|
||||||
|
|
||||||
(defpoll volume
|
|
||||||
:initial ""
|
|
||||||
:interval "0.5s"
|
|
||||||
"scripts/get-volume.sh")
|
|
||||||
|
|
||||||
(deflisten mpd
|
|
||||||
:initial ""
|
|
||||||
"scripts/mpd-current-song.sh")
|
|
||||||
|
|
||||||
(defpoll date
|
|
||||||
:interval "10s"
|
|
||||||
"date '+%a %d, %B %H:%M'")
|
|
||||||
|
|
||||||
(defwindow bar0
|
|
||||||
:monitor 0
|
|
||||||
:windowtype "dock"
|
|
||||||
:geometry
|
|
||||||
(geometry :x "0%"
|
|
||||||
:y "0%"
|
|
||||||
:width "100%"
|
|
||||||
:height "32px"
|
|
||||||
:anchor "top center")
|
|
||||||
:exclusive true
|
|
||||||
(bar0))
|
|
||||||
|
|
||||||
(defwindow bar1
|
|
||||||
:monitor 1
|
|
||||||
:windowtype "dock"
|
|
||||||
:geometry
|
|
||||||
(geometry :x "0%"
|
|
||||||
:y "0%"
|
|
||||||
:width "100%"
|
|
||||||
:height "32px"
|
|
||||||
:anchor "top center")
|
|
||||||
:exclusive true
|
|
||||||
(bar1))
|
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
#!/usr/bin/env cached-nix-shell
|
|
||||||
#! nix-shell -i bash -p pulsemixer
|
|
||||||
#
|
|
||||||
volume=$(pamixer --get-volume)
|
|
||||||
|
|
||||||
if [[ $volume -eq 0 ]]; then
|
|
||||||
echo " $volume%"
|
|
||||||
elif [[ $volume -lt 25 ]]; then
|
|
||||||
echo " $volume%"
|
|
||||||
elif [[ $volume -lt 50 ]]; then
|
|
||||||
echo " $volume%"
|
|
||||||
elif [[ $volume -lt 75 ]]; then
|
|
||||||
echo " $volume%"
|
|
||||||
else
|
|
||||||
echo " $volume%"
|
|
||||||
fi
|
|
|
@ -1,20 +0,0 @@
|
||||||
#!/usr/bin/env cached-nix-shell
|
|
||||||
#! nix-shell -i bash -p mpc-cli
|
|
||||||
|
|
||||||
currentsong=""
|
|
||||||
state=""
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
state="$(mpc status %state%)"
|
|
||||||
current_song="$(mpc current)"
|
|
||||||
|
|
||||||
if [[ $state == "playing" ]]; then
|
|
||||||
echo " $current_song"
|
|
||||||
elif [[ $state == "paused" && $current_song ]]; then
|
|
||||||
echo " $current_song"
|
|
||||||
else
|
|
||||||
echo " stopped"
|
|
||||||
fi
|
|
||||||
mpc idle player &> /dev/null
|
|
||||||
done
|
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
#!/usr/bin/env cached-nix-shell
|
|
||||||
#! nix-shell -i bash -p hyprland socat jq
|
|
||||||
|
|
||||||
workspaces() {
|
|
||||||
|
|
||||||
unset -v \
|
|
||||||
o1 o2 o3 o4 o5 o6 \
|
|
||||||
f1 f2 f3 f4 f5 f6
|
|
||||||
|
|
||||||
ows="$(hyprctl workspaces -j | jq '.[] | del(select(.id == -99)) | .id')"
|
|
||||||
|
|
||||||
for num in $ows; do
|
|
||||||
export o"$num"="$num"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Get Focused workspace for current monitor ID
|
|
||||||
arg="$1"
|
|
||||||
num="$(hyprctl monitors -j | jq --argjson arg "$arg" '.[] | select(.id == $arg).activeWorkspace.id')"
|
|
||||||
export f"$num"="$num"
|
|
||||||
|
|
||||||
if [[ $arg -eq 0 ]]; then
|
|
||||||
echo "(eventbox :onscroll \"echo {} | sed -e 's/up/-1/g' -e 's/down/+1/g' | xargs hyprctl dispatch workspace\" \
|
|
||||||
(box :class \"workspace\" :orientation \"h\" :space-evenly \"false\" \
|
|
||||||
(button :onclick \"hyprctl dispatch workspace 1\" :class \"w0$o1$f1\" \"1\") \
|
|
||||||
(button :onclick \"hyprctl dispatch workspace 2\" :class \"w0$o2$f2\" \"2\") \
|
|
||||||
(button :onclick \"hyprctl dispatch workspace 3\" :class \"w0$o3$f3\" \"3\") \
|
|
||||||
)\
|
|
||||||
)"
|
|
||||||
elif [[ $arg -eq 1 ]]; then
|
|
||||||
echo "(eventbox :onscroll \"echo {} | sed -e 's/up/-1/g' -e 's/down/+1/g' | xargs hyprctl dispatch workspace\" \
|
|
||||||
(box :class \"workspace\" :orientation \"h\" :space-evenly \"false\" \
|
|
||||||
(button :onclick \"hyprctl dispatch workspace 4\" :class \"w0$o4$f4\" \"4\") \
|
|
||||||
(button :onclick \"hyprctl dispatch workspace 5\" :class \"w0$o5$f5\" \"5\") \
|
|
||||||
(button :onclick \"hyprctl dispatch workspace 6\" :class \"w0$o6$f6\" \"6\") \
|
|
||||||
)\
|
|
||||||
)"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
workspaces $1
|
|
||||||
socat -u UNIX-CONNECT:/tmp/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock - | while read -r; do
|
|
||||||
workspaces $1
|
|
||||||
done
|
|
|
@ -1,10 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.eww = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.eww-wayland;
|
|
||||||
configDir = ./config;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = [ pkgs.eww-hyprland-activewindow ];
|
|
||||||
}
|
|
|
@ -33,7 +33,7 @@ let
|
||||||
'';
|
'';
|
||||||
|
|
||||||
killprocess = pkgs.writeShellScriptBin "killprocess.sh" ''
|
killprocess = pkgs.writeShellScriptBin "killprocess.sh" ''
|
||||||
ps -x -o pid=,comm= | column -t -o " " | ${pkgs.rofi-wayland}/bin/rofi -dmenu -p "kill process: " | awk '{print $1}' | uniq | xargs -r kill -9
|
ps -x -o pid=,comm= | column -t -o " " | ${pkgs.rofi-wayland}/bin/rofi -dmenu -p "kill process: " | awk '{print $1}' | uniq | xargs -r kill -9
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passmenu = pkgs.writeShellScriptBin "passmenu.sh" ''
|
passmenu = pkgs.writeShellScriptBin "passmenu.sh" ''
|
||||||
|
@ -56,7 +56,7 @@ in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.hyprland.homeManagerModules.default
|
inputs.hyprland.homeManagerModules.default
|
||||||
../eww
|
../ags
|
||||||
../foot
|
../foot
|
||||||
../wob
|
../wob
|
||||||
../mako
|
../mako
|
||||||
|
@ -140,12 +140,12 @@ in
|
||||||
exec-once = ${pkgs.blueman}/bin/blueman-applet
|
exec-once = ${pkgs.blueman}/bin/blueman-applet
|
||||||
exec-once = ${pkgs.networkmanagerapplet}/bin/nm-applet --indicator
|
exec-once = ${pkgs.networkmanagerapplet}/bin/nm-applet --indicator
|
||||||
exec-once = ${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1
|
exec-once = ${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1
|
||||||
exec-once = ${pkgs.mullvad-vpn}/bin/mullvad-gui
|
# exec-once = ${pkgs.mullvad-vpn}/bin/mullvad-gui
|
||||||
exec-once = ${pkgs.ydotool}/bin/ydotoold
|
exec-once = ${pkgs.ydotool}/bin/ydotoold
|
||||||
|
|
||||||
exec = ${pkgs.xorg.xrandr}/bin/xrandr --output ${rightMonitor.display} --primary
|
exec = ${pkgs.xorg.xrandr}/bin/xrandr --output ${rightMonitor.display} --primary
|
||||||
exec = ${wob-voldaemon}/bin/wob-volumeindicator.sh;
|
exec = ${wob-voldaemon}/bin/wob-volumeindicator.sh
|
||||||
exec = pkill eww; ${pkgs.eww-wayland}/bin/eww open-many bar0 bar1
|
exec = ags -q; ags
|
||||||
exec = pkill swww; sleep 2 && ${pkgs.swww}/bin/swww init && ${pkgs.swww}/bin/swww img $(cat ~/.cache/swww/wallpaper.txt)
|
exec = pkill swww; sleep 2 && ${pkgs.swww}/bin/swww init && ${pkgs.swww}/bin/swww img $(cat ~/.cache/swww/wallpaper.txt)
|
||||||
|
|
||||||
#Set cursor
|
#Set cursor
|
||||||
|
@ -211,6 +211,8 @@ in
|
||||||
layerrule = ignorezero, notifications
|
layerrule = ignorezero, notifications
|
||||||
|
|
||||||
layerrule = blur, gtk-layer-shell
|
layerrule = blur, gtk-layer-shell
|
||||||
|
layerrule = blur, bar-0
|
||||||
|
layerrule = blur, bar-1
|
||||||
|
|
||||||
|
|
||||||
windowrulev2 = fullscreen, class:^(hl2_linux)$
|
windowrulev2 = fullscreen, class:^(hl2_linux)$
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
bottles
|
bottles
|
||||||
bottom
|
bottom
|
||||||
calcurse
|
calcurse
|
||||||
discord
|
electron
|
||||||
gamescope_git
|
gamescope_git
|
||||||
gimp
|
gimp
|
||||||
gnome.gnome-boxes
|
gnome.gnome-boxes
|
||||||
|
@ -43,6 +43,7 @@
|
||||||
mangohud
|
mangohud
|
||||||
mesa-demos
|
mesa-demos
|
||||||
nerdfonts
|
nerdfonts
|
||||||
|
nodejs
|
||||||
noto-fonts-cjk-sans
|
noto-fonts-cjk-sans
|
||||||
noto-fonts-cjk-serif
|
noto-fonts-cjk-serif
|
||||||
openmw
|
openmw
|
||||||
|
@ -64,6 +65,7 @@
|
||||||
vimv
|
vimv
|
||||||
vulkan-tools
|
vulkan-tools
|
||||||
vulkan-validation-layers
|
vulkan-validation-layers
|
||||||
|
webcord
|
||||||
xdg-utils
|
xdg-utils
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -80,7 +82,7 @@
|
||||||
|
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
programs.exa = {
|
programs.eza = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -119,8 +121,8 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
iconTheme = {
|
iconTheme = {
|
||||||
package = pkgs.gruvbox-plus-icon-pack;
|
package = pkgs.gruvbox-plus-icon-pack;
|
||||||
name = "GruvboxPlus";
|
name = "Gruvbox-Plus-Dark";
|
||||||
};
|
};
|
||||||
|
|
||||||
cursorTheme = {
|
cursorTheme = {
|
||||||
|
|
Reference in New Issue