diff --git a/flake.lock b/flake.lock
index 698a63a..2ca7871 100644
--- a/flake.lock
+++ b/flake.lock
@@ -21,6 +21,46 @@
"type": "github"
}
},
+ "ags": {
+ "inputs": {
+ "nixpkgs": "nixpkgs"
+ },
+ "locked": {
+ "lastModified": 1718921313,
+ "narHash": "sha256-TFJah1RW5qnYW7kajjAFPAS5j/0q0R3vz9zPjrRA0Mc=",
+ "owner": "Aylur",
+ "repo": "ags",
+ "rev": "646d5ad073ff7f8b1d50cfbd40f5b8a250fcd59d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Aylur",
+ "repo": "ags",
+ "type": "github"
+ }
+ },
+ "anyrun": {
+ "inputs": {
+ "flake-parts": "flake-parts",
+ "nixpkgs": [
+ "nixpkgs"
+ ],
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1717576207,
+ "narHash": "sha256-LU6d1xX7jN1zt10YU7Oym07MtzVfziSmUEznGFdbuaw=",
+ "owner": "Kirottu",
+ "repo": "anyrun",
+ "rev": "7aabad8d5bb7d1bffae903ce86427b888ab824b4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Kirottu",
+ "repo": "anyrun",
+ "type": "github"
+ }
+ },
"base16": {
"inputs": {
"fromYaml": "fromYaml"
@@ -150,6 +190,22 @@
"type": "github"
}
},
+ "firefox-gnome-theme": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1720790484,
+ "narHash": "sha256-H1yMxIoxqpYotxiqXYxNYf3LZ1PE4K/mbjHGtpJrfYI=",
+ "owner": "rafaelmardojai",
+ "repo": "firefox-gnome-theme",
+ "rev": "cbd351c587211d48c77cc679b49aa7292ec556dc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "rafaelmardojai",
+ "repo": "firefox-gnome-theme",
+ "type": "github"
+ }
+ },
"flake-compat": {
"flake": false,
"locked": {
@@ -182,6 +238,47 @@
"type": "github"
}
},
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": [
+ "anyrun",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1717285511,
+ "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_2": {
+ "inputs": {
+ "nixpkgs-lib": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1719994518,
+ "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
"fromYaml": {
"flake": false,
"locked": {
@@ -215,6 +312,29 @@
"type": "github"
}
},
+ "gross": {
+ "inputs": {
+ "flake-parts": [
+ "flake-parts"
+ ],
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1698945515,
+ "narHash": "sha256-c3PpMckBQpVrNmhslN+mY/CZ5DIOLSWxA3ZQsDgTAOg=",
+ "owner": "fufexan",
+ "repo": "gross",
+ "rev": "68de266681bf070372270db822990dfbfe8250b1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "fufexan",
+ "repo": "gross",
+ "type": "github"
+ }
+ },
"home-manager": {
"inputs": {
"nixpkgs": [
@@ -291,8 +411,8 @@
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
- "nixpkgs": "nixpkgs",
- "systems": "systems",
+ "nixpkgs": "nixpkgs_2",
+ "systems": "systems_2",
"xdph": "xdph"
},
"locked": {
@@ -467,7 +587,58 @@
"type": "github"
}
},
+ "matugen": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_3",
+ "systems": "systems_3"
+ },
+ "locked": {
+ "lastModified": 1719821386,
+ "narHash": "sha256-KyDPTF8AdcN7SaanCUtlZMDHAHNYXtrryfcN28PIwTs=",
+ "owner": "InioX",
+ "repo": "Matugen",
+ "rev": "250809841ed4133ced82d78e3d46e2425f86694f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "InioX",
+ "repo": "Matugen",
+ "type": "github"
+ }
+ },
+ "more-waita": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1714324684,
+ "narHash": "sha256-E8zkq8Zfn90Qrn5clXquHAQhAI4K4/7JV7fjujf1P7U=",
+ "owner": "somepaulo",
+ "repo": "MoreWaita",
+ "rev": "0f4ed19f51b5ca8f0622c9e154886efb2a5ff59b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "somepaulo",
+ "repo": "MoreWaita",
+ "type": "github"
+ }
+ },
"nixpkgs": {
+ "locked": {
+ "lastModified": 1718714799,
+ "narHash": "sha256-FUZpz9rg3gL8NVPKbqU8ei1VkPLsTIfAJ2fdAf5qjak=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c00d587b1a1afbf200b1d8f0b0e4ba9deb1c7f0e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
"locked": {
"lastModified": 1720542800,
"narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=",
@@ -483,7 +654,23 @@
"type": "github"
}
},
- "nixpkgs_2": {
+ "nixpkgs_3": {
+ "locked": {
+ "lastModified": 1716330097,
+ "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
"locked": {
"lastModified": 1719690277,
"narHash": "sha256-0xSej1g7eP2kaUF+JQp8jdyNmpmCJKRpO12mKl/36Kc=",
@@ -499,7 +686,7 @@
"type": "github"
}
},
- "nixpkgs_3": {
+ "nixpkgs_5": {
"locked": {
"lastModified": 1714912032,
"narHash": "sha256-clkcOIkg8G4xuJh+1onLG4HPMpbtzdLv4rHxFzgsH9c=",
@@ -518,12 +705,19 @@
"root": {
"inputs": {
"aagl": "aagl",
+ "ags": "ags",
+ "anyrun": "anyrun",
"catppuccin": "catppuccin",
+ "firefox-gnome-theme": "firefox-gnome-theme",
+ "flake-parts": "flake-parts_2",
+ "gross": "gross",
"home-manager": "home-manager",
"hyprland": "hyprland",
"hyprland-hyprspace": "hyprland-hyprspace",
"hyprland-plugins": "hyprland-plugins",
- "nixpkgs": "nixpkgs_2",
+ "matugen": "matugen",
+ "more-waita": "more-waita",
+ "nixpkgs": "nixpkgs_4",
"stylix": "stylix"
}
},
@@ -539,7 +733,7 @@
"flake-compat": "flake-compat_2",
"gnome-shell": "gnome-shell",
"home-manager": "home-manager_2",
- "nixpkgs": "nixpkgs_3"
+ "nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1719525570,
@@ -570,6 +764,36 @@
"type": "github"
}
},
+ "systems_2": {
+ "locked": {
+ "lastModified": 1689347949,
+ "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
+ "owner": "nix-systems",
+ "repo": "default-linux",
+ "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default-linux",
+ "type": "github"
+ }
+ },
+ "systems_3": {
+ "locked": {
+ "lastModified": 1689347949,
+ "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
+ "owner": "nix-systems",
+ "repo": "default-linux",
+ "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default-linux",
+ "type": "github"
+ }
+ },
"xdph": {
"inputs": {
"hyprland-protocols": "hyprland-protocols",
diff --git a/flake.nix b/flake.nix
index 916e5c7..5088f55 100644
--- a/flake.nix
+++ b/flake.nix
@@ -29,6 +29,36 @@
url = "github:KZDKM/Hyprspace";
inputs.hyprland.follows = "hyprland";
};
+
+ ags.url = "github:Aylur/ags";
+
+ flake-parts = {
+ url = "github:hercules-ci/flake-parts";
+ inputs.nixpkgs-lib.follows = "nixpkgs";
+ };
+
+ gross = {
+ url = "github:fufexan/gross";
+ inputs.nixpkgs.follows = "nixpkgs";
+ inputs.flake-parts.follows = "flake-parts";
+ };
+
+ matugen.url = "github:InioX/Matugen";
+
+ more-waita = {
+ url = "github:somepaulo/MoreWaita";
+ flake = false;
+ };
+
+ firefox-gnome-theme = {
+ url = "github:rafaelmardojai/firefox-gnome-theme";
+ flake = false;
+ };
+
+ anyrun = {
+ url = "github:Kirottu/anyrun";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
};
outputs = { self, nixpkgs, ... }@inputs:
diff --git a/modules/home-manager/ricing/awesomewm/default.nix b/modules/home-manager/ricing/awesomewm/default.nix
deleted file mode 100644
index 6c51440..0000000
--- a/modules/home-manager/ricing/awesomewm/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ ... }:
-
-{
- home.file.".config/awesome" = {
- recursive = true;
- source = ./gruv;
- };
-}
\ No newline at end of file
diff --git a/modules/home-manager/ricing/awesomewm/gruv/LICENSE b/modules/home-manager/ricing/awesomewm/gruv/LICENSE
deleted file mode 100644
index f288702..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/LICENSE
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
diff --git a/modules/home-manager/ricing/awesomewm/gruv/evil/battery.lua b/modules/home-manager/ricing/awesomewm/gruv/evil/battery.lua
deleted file mode 100644
index 281d9df..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/evil/battery.lua
+++ /dev/null
@@ -1,67 +0,0 @@
--- Provides:
--- evil::battery
--- percentage (integer)
--- evil::charger
--- plugged (boolean)
-
-local awful = require("awful")
-
-local update_interval = 30
-
--- Subscribe to power supply status changes with acpi_listen
-local charger_script = [[
- sh -c '
- acpi_listen | grep --line-buffered ac_adapter
- '
-]]
-
--- First get battery file path
--- If there are multiple, only get the first one
--- TODO support multiple batteries
-awful.spawn.easy_async_with_shell(
- 'sh -c \'out="$(find /sys/class/power_supply/BAT?/capacity)" && (echo "$out" | head -1) || false\' ',
- function(battery_file, _, __, exit_code)
- -- No battery file found
- if not (exit_code == 0) then
- return
- end
- -- Periodically get battery info
- awful.widget.watch("cat " .. battery_file, update_interval, function(_, stdout)
- awesome.emit_signal("evil::battery", tonumber(stdout))
- end)
- end
-)
-
--- First get charger file path
-awful.spawn.easy_async_with_shell(
- 'sh -c \'out="$(find /sys/class/power_supply/*/online)" && (echo "$out" | head -1) || false\' ',
- function(charger_file, _, __, exit_code)
- -- No charger file found
- if not (exit_code == 0) then
- return
- end
- -- Then initialize function that emits charger info
- local emit_charger_info = function()
- awful.spawn.easy_async_with_shell("cat " .. charger_file, function(out)
- local status = tonumber(out) == 1
- awesome.emit_signal("evil::charger", status)
- end)
- end
-
- -- Run once to initialize widgets
- emit_charger_info()
-
- -- Kill old acpi_listen process
- awful.spawn.easy_async_with_shell(
- "ps x | grep \"acpi_listen\" | grep -v grep | awk '{print $1}' | xargs kill",
- function()
- -- Update charger status with each line printed
- awful.spawn.with_line_callback(charger_script, {
- stdout = function(_)
- emit_charger_info()
- end,
- })
- end
- )
- end
-)
diff --git a/modules/home-manager/ricing/awesomewm/gruv/evil/brightness.lua b/modules/home-manager/ricing/awesomewm/gruv/evil/brightness.lua
deleted file mode 100644
index 907e535..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/evil/brightness.lua
+++ /dev/null
@@ -1,33 +0,0 @@
--- Provides:
--- evil::brightness
--- value (integer)
-local awful = require("awful")
-
-local function emit()
- awful.spawn.with_line_callback('sh -c "light -G"', {
- stdout = function(line)
- local value = math.floor(tonumber(line))
- awesome.emit_signal("evil::brightness", value)
- end,
- })
-end
-
--- Run once to initialize widgets
-emit()
-
--- Subscribe to backlight changes
--- Requires inotify-tools
-local subscribe = [[ bash -c "while (inotifywait -e modify /sys/class/backlight/?*/brightness -qq) do echo; done"]]
-
--- Kill old inotifywait process
-awful.spawn.easy_async_with_shell(
- "ps x | grep \"inotifywait -e modify /sys/class/backlight\" | grep -v grep | awk '{print $1}' | xargs kill",
- function()
- -- Update brightness status with each line printed
- awful.spawn.with_line_callback(subscribe, {
- stdout = function()
- emit()
- end,
- })
- end
-)
diff --git a/modules/home-manager/ricing/awesomewm/gruv/evil/cpu.lua b/modules/home-manager/ricing/awesomewm/gruv/evil/cpu.lua
deleted file mode 100644
index 8bcfe34..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/evil/cpu.lua
+++ /dev/null
@@ -1,18 +0,0 @@
--- Provides:
--- evil::cpu
--- used percentage (integer)
-local awful = require("awful")
-
-local update_interval = 5
-local cpu_idle_script = [[
- sh -c "
- vmstat 1 2 | tail -1 | awk '{printf \"%d\", $15}'
- "]]
-
--- Periodically get cpu info
-awful.widget.watch(cpu_idle_script, update_interval, function(widget, stdout)
- -- local cpu_idle = stdout:match('+(.*)%.%d...(.*)%(')
- local cpu_idle = stdout
- cpu_idle = string.gsub(cpu_idle, "^%s*(.-)%s*$", "%1")
- awesome.emit_signal("evil::cpu", 100 - tonumber(cpu_idle))
-end)
diff --git a/modules/home-manager/ricing/awesomewm/gruv/evil/init.lua b/modules/home-manager/ricing/awesomewm/gruv/evil/init.lua
deleted file mode 100644
index da9747e..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/evil/init.lua
+++ /dev/null
@@ -1,12 +0,0 @@
--- Monitoring
-require("evil.cpu")
-require("evil.ram")
-
--- User controlled
-require("evil.volume")
-require("evil.playerctl")
--- require("evil.brightness")
--- require("evil.battery")
-
--- Internet access required
-require("evil.weather")
diff --git a/modules/home-manager/ricing/awesomewm/gruv/evil/playerctl.lua b/modules/home-manager/ricing/awesomewm/gruv/evil/playerctl.lua
deleted file mode 100644
index 7d8de87..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/evil/playerctl.lua
+++ /dev/null
@@ -1,35 +0,0 @@
--- Provides:
--- evil::playerctl
--- artist (string)
--- song (string)
--- status (string) [playing | paused | stopped]
-local awful = require("awful")
-
-local function emit_info(playerctl_output)
- local artist = playerctl_output:match("artist_start(.*)title_start")
- local title = playerctl_output:match("title_start(.*)status_start")
- -- Use the lower case of status
- local status = playerctl_output:match("status_start(.*)"):lower()
- status = string.gsub(status, "^%s*(.-)%s*$", "%1")
-
- awesome.emit_signal("evil::playerctl", artist, title, status)
-end
-
--- Sleeps until playerctl changes state (pause/play/next/prev)
-local playerctl_script = [[
- sh -c '
- playerctl metadata --format 'artist_start{{artist}}title_start{{title}}status_start{{status}}' --follow
- ']]
-
--- Kill old playerctl process
-awful.spawn.easy_async_with_shell(
- "ps x | grep \"playerctl metadata\" | grep -v grep | awk '{print $1}' | xargs kill",
- function()
- -- Emit song info with each line printed
- awful.spawn.with_line_callback(playerctl_script, {
- stdout = function(line)
- emit_info(line)
- end,
- })
- end
-)
diff --git a/modules/home-manager/ricing/awesomewm/gruv/evil/ram.lua b/modules/home-manager/ricing/awesomewm/gruv/evil/ram.lua
deleted file mode 100644
index 0b2bd28..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/evil/ram.lua
+++ /dev/null
@@ -1,20 +0,0 @@
--- Provides:
--- evil::ram
--- used (integer - mega bytes)
--- total (integer - mega bytes)
-local awful = require("awful")
-
-local update_interval = 20
--- Returns the used amount of ram in percentage
-local ram_script = [[
- sh -c "
- free -m | grep 'Mem:' | awk '{printf \"%d@@%d@\", $7, $2}'
- "]]
-
--- Periodically get ram info
-awful.widget.watch(ram_script, update_interval, function(widget, stdout)
- local available = stdout:match("(.*)@@")
- local total = stdout:match("@@(.*)@")
- local used = tonumber(total) - tonumber(available)
- awesome.emit_signal("evil::ram", used, tonumber(total))
-end)
diff --git a/modules/home-manager/ricing/awesomewm/gruv/evil/volume.lua b/modules/home-manager/ricing/awesomewm/gruv/evil/volume.lua
deleted file mode 100644
index 2616d62..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/evil/volume.lua
+++ /dev/null
@@ -1,49 +0,0 @@
--- Provides:
--- evil::volume
--- volume
--- muted
-local awful = require("awful")
-
-local volume_old = -1
-local muted_old = -1
-local function emit()
- -- Requires wireplumber
- awful.spawn.easy_async_with_shell("wpctl get-volume @DEFAULT_AUDIO_SINK@", function(out)
- local volume = tonumber(string.match(out:match("(%d%.%d+)") * 100, "(%d+)"))
- local muted = out:match("MUTED")
-
- local icon = ""
- if muted or volume == 0 then
- icon = ""
- elseif volume <= 33 then
- icon = ""
- elseif volume <= 66 then
- icon = ""
- elseif volume <= 100 then
- icon = ""
- else
- icon = ""
- end
-
- if volume ~= volume_old or muted ~= muted_old then
- awesome.emit_signal("evil::volume", volume, muted, icon)
- volume_old = volume
- muted_old = muted
- end
- end)
-end
-
--- Run once to initialize widgets
-emit()
-
--- Subscribe to pactl changes
-local subscribe = [[ bash -c "LANG=C pactl subscribe 2> /dev/null | grep --line-buffered \"Event 'change' on sink\"" ]]
-
--- Kill old pactl processes
-awful.spawn.easy_async({ "pkill", "--full", "--uid", os.getenv("USER"), "^pactl subscribe" }, function()
- awful.spawn.with_line_callback(subscribe, {
- stdout = function()
- emit()
- end,
- })
-end)
diff --git a/modules/home-manager/ricing/awesomewm/gruv/evil/weather.lua b/modules/home-manager/ricing/awesomewm/gruv/evil/weather.lua
deleted file mode 100644
index eec1c66..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/evil/weather.lua
+++ /dev/null
@@ -1,31 +0,0 @@
--- Provides:
--- evil::weather
--- result json (string)
-local awful = require("awful")
-local json = require("modules.json")
-
-local api_key = user.openweathermap_key
-local coordinates = user.openweathermap_city_id
-local units = user.openweathermap_weather_units
-
-local url = (
- "https://api.openweathermap.org/data/2.5/onecall"
- .. "?lat="
- .. coordinates[1]
- .. "&lon="
- .. coordinates[2]
- .. "&appid="
- .. api_key
- .. "&units="
- .. units
- .. "&exclude=minutely"
-)
-
-local GET_FORECAST_CMD = [[bash -c "curl -s --show-error -X GET '%s'"]]
-
-awful.widget.watch(string.format(GET_FORECAST_CMD, url), 600, function(_, stdout, stderr)
- if stderr == "" then
- local result = json.decode(stdout)
- awesome.emit_signal("evil::weather", result)
- end
-end)
diff --git a/modules/home-manager/ricing/awesomewm/gruv/helpers.lua b/modules/home-manager/ricing/awesomewm/gruv/helpers.lua
deleted file mode 100644
index 5451331..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/helpers.lua
+++ /dev/null
@@ -1,250 +0,0 @@
-local beautiful = require("beautiful")
-local xresources = require("beautiful.xresources")
-local dpi = xresources.apply_dpi
-local awful = require("awful")
-local gears = require("gears")
-local helpers = {}
-
--- Mouse hover
--- ===================================================================
-function helpers.add_hover_cursor(w, hover_cursor)
- local original_cursor = "left_ptr"
-
- w:connect_signal("mouse::enter", function()
- local w = _G.mouse.current_wibox
- if w then
- w.cursor = hover_cursor
- end
- end)
-
- w:connect_signal("mouse::leave", function()
- local w = _G.mouse.current_wibox
- if w then
- w.cursor = original_cursor
- end
- end)
-end
-
--- Create rounded rectangle shape (in one line)
--- ===================================================================
-function helpers.rrect(radius)
- return function(cr, width, height)
- gears.shape.rounded_rect(cr, width, height, radius)
- end
-end
-
--- Raise or spawn
--- ===================================================================
-function helpers.run_or_raise(match, move, spawn_cmd, spawn_args)
- local matcher = function(c)
- return awful.rules.match(c, match)
- end
-
- -- Find and raise
- local found = false
- for c in awful.client.iterate(matcher) do
- found = true
- c.minimized = false
- if move then
- c:move_to_tag(mouse.screen.selected_tag)
- client.focus = c
- else
- c:jump_to()
- end
- break
- end
-
- -- Spawn if not found
- if not found then
- awful.spawn(spawn_cmd, spawn_args)
- end
-end
-
--- Run raise or minimize a client (scratchpad style)
--- ===================================================================
-function helpers.scratchpad(match, spawn_cmd, spawn_args)
- local cf = client.focus
- if cf and awful.rules.match(cf, match) then
- cf.minimized = true
- else
- helpers.run_or_raise(match, true, spawn_cmd, spawn_args)
- end
-end
-
--- Resize DWIM (Do What I Mean)
--- ===================================================================
--- Resize client or factor
--- Constants
-local floating_resize_amount = dpi(20)
-local tiling_resize_factor = 0.05
----------------
-function helpers.resize_dwim(c, direction)
- if c and c.floating then
- if direction == "up" then
- c:relative_move(0, 0, 0, -floating_resize_amount)
- elseif direction == "down" then
- c:relative_move(0, 0, 0, floating_resize_amount)
- elseif direction == "left" then
- c:relative_move(0, 0, -floating_resize_amount, 0)
- elseif direction == "right" then
- c:relative_move(0, 0, floating_resize_amount, 0)
- end
- elseif awful.layout.get(mouse.screen) ~= awful.layout.suit.floating then
- if direction == "up" then
- awful.client.incwfact(-tiling_resize_factor)
- elseif direction == "down" then
- awful.client.incwfact(tiling_resize_factor)
- elseif direction == "left" then
- awful.tag.incmwfact(-tiling_resize_factor)
- elseif direction == "right" then
- awful.tag.incmwfact(tiling_resize_factor)
- end
- end
-end
-
--- Change volume
--- ===================================================================
-function helpers.volume_control(step)
- local cmd
- if step == 0 then
- cmd = "pactl set-sink-mute @DEFAULT_SINK@ toggle"
- else
- sign = step > 0 and "+" or ""
- cmd = "pactl set-sink-mute @DEFAULT_SINK@ 0 && pactl set-sink-volume @DEFAULT_SINK@ "
- .. sign
- .. tostring(step)
- .. "%"
- end
- awful.spawn.with_shell(cmd)
-end
-
--- Quick markup
--- ===================================================================
-function helpers.colorize_text(text, color)
- return "" .. text .. ""
-end
-
--- Lighten or darken hex colors
--- ===================================================================
--- Rounds to whole number
-local function round(num)
- return math.floor(num + 0.5)
-end
--- Rounds to hundredths
-local function roundH(num)
- return math.floor((num * 100) + 0.5) / 100
-end
-
--- Converts hexadecimal color to HSL
--- Lightness (L) is changed based on amt
--- Converts HSL back to hex
--- amt (0-100) can be negative to darken or positive to lighten
--- The amt specified is added to the color's existing Lightness
--- e.g., (#000000, 25) L = 25 but (#404040, 25) L = 50
-
-function helpers.lighten(hex_color, amt)
- local r, g, b, a
- local hex = hex_color:gsub("#", "")
- if #hex < 6 then
- local t = {}
- for i = 1, #hex do
- local char = hex:sub(i, i)
- t[i] = char .. char
- end
- hex = table.concat(t)
- end
- r = tonumber(hex:sub(1, 2), 16) / 255
- g = tonumber(hex:sub(3, 4), 16) / 255
- b = tonumber(hex:sub(5, 6), 16) / 255
- if #hex ~= 6 then
- a = roundH(tonumber(hex:sub(7, 8), 16) / 255)
- end
-
- local max = math.max(r, g, b)
- local min = math.min(r, g, b)
- local c = max - min
-
- -- Hue
- local h
- if c == 0 then
- h = 0
- elseif max == r then
- h = ((g - b) / c) % 6
- elseif max == g then
- h = ((b - r) / c) + 2
- elseif max == b then
- h = ((r - g) / c) + 4
- end
- h = h * 60
-
- -- Luminance
- local l = (max + min) * 0.5
-
- -- Saturation
- local s
- if l == 0 then
- s = 0
- elseif l <= 0.5 then
- s = c / (l * 2)
- elseif l > 0.5 then
- s = c / (2 - (l * 2))
- end
-
- local H, S, L, A
- H = round(h) / 360
- S = round(s * 100) / 100
- L = round(l * 100) / 100
-
- amt = amt / 100
- if L + amt > 1 then
- L = 1
- elseif L + amt < 0 then
- L = 0
- else
- L = L + amt
- end
-
- local R, G, B
- if S == 0 then
- R, G, B = round(L * 255), round(L * 255), round(L * 255)
- else
- local function hue2rgb(p, q, t)
- if t < 0 then
- t = t + 1
- end
- if t > 1 then
- t = t - 1
- end
- if t < 1 / 6 then
- return p + (q - p) * (6 * t)
- end
- if t < 1 / 2 then
- return q
- end
- if t < 2 / 3 then
- return p + (q - p) * (2 / 3 - t) * 6
- end
- return p
- end
- local q
- if L < 0.5 then
- q = L * (1 + S)
- else
- q = L + S - (L * S)
- end
- local p = 2 * L - q
- R = round(hue2rgb(p, q, (H + 1 / 3)) * 255)
- G = round(hue2rgb(p, q, H) * 255)
- B = round(hue2rgb(p, q, (H - 1 / 3)) * 255)
- end
-
- if a ~= nil then
- A = round(a * 255)
- return string.format("#" .. "%.2x%.2x%.2x%.2x", R, G, B, A)
- else
- return string.format("#" .. "%.2x%.2x%.2x", R, G, B)
- end
-end
-
-return helpers
--- EOF ------------------------------------------------------------------------
diff --git a/modules/home-manager/ricing/awesomewm/gruv/keys.lua b/modules/home-manager/ricing/awesomewm/gruv/keys.lua
deleted file mode 100644
index f189102..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/keys.lua
+++ /dev/null
@@ -1,582 +0,0 @@
--- ░█░█░█▀▀░█░█░█▀▄░▀█▀░█▀█░█▀▄░█▀▀
--- ░█▀▄░█▀▀░░█░░█▀▄░░█░░█░█░█░█░▀▀█
--- ░▀░▀░▀▀▀░░▀░░▀▀░░▀▀▀░▀░▀░▀▀░░▀▀▀
-
-local gears = require("gears")
-local beautiful = require("beautiful")
-local awful = require("awful")
-local hotkeys_popup = require("awful.hotkeys_popup")
-local helpers = require("helpers")
-local awesome = awesome
-local client = client
-local root = root
-local keys = {}
-
-local mod = "Mod4"
-local alt = "Mod1"
-local ctrl = "Control"
-local shift = "Shift"
-
--- Menu
--- =============================================
-local menu = {}
-menu.awesome = {
- {
- "Hotkeys",
- function()
- hotkeys_popup.show_help(nil, awful.screen.focused())
- end,
- },
- {
- "Manual",
- function()
- awful.spawn(user.terminal .. " -e man awesome")
- end,
- },
- {
- "Edit config",
- function()
- awful.spawn(user.editor .. " " .. awesome.conffile)
- end,
- },
- {
- "Restart",
- function()
- awesome.restart()
- end,
- },
- {
- "Quit",
- function()
- awesome.quit()
- end,
- },
-}
-
-menu.mainmenu = awful.menu({
- items = {
- { " Terminal", user.terminal },
- { " Explorer", apps.file_manager },
- { " Browser", apps.browser },
- { " Editor", apps.editor },
- { " GUI Editor", apps.visual_editor },
- { " AwesomeWM", menu.awesome },
- {
- " Notifications",
- function()
- awesome.emit_signal("summon::notif_center")
- end,
- },
- },
-})
-
--- Mouse bindings on desktop
--- =============================================
-keys.desktopbuttons = gears.table.join(
- awful.button({}, 1, function()
- -- Single tap
- awesome.emit_signal("summon::dismiss")
- if menu.mainmenu then
- menu.mainmenu:hide()
- end
- -- if sidebar_hide then
- -- sidebar_hide()
- -- end
- end),
-
- -- Right click - Show app drawer
- awful.button({}, 3, function()
- menu.mainmenu:toggle()
- end),
-
- -- Middle button - Toggle dashboard
- -- awful.button({ }, 2, function()
- -- if dashboard_show then
- -- dashboard_show()
- -- end
- -- end),
-
- -- Scrolling - Switch tags
- -- awful.button({ }, 4, awful.tag.viewprev),
- -- awful.button({ }, 5, awful.tag.viewnext),
-
- -- Side buttons - Control volume
- awful.button({}, 8, function()
- helpers.volume_control(-5)
- end),
- awful.button({}, 9, function()
- helpers.volume_control(5)
- end)
-
- -- Side buttons - Minimize and restore minimized client
- -- awful.button({}, 8, function()
- -- if client.focus ~= nil then
- -- client.focus.minimized = true
- -- end
- -- end),
- -- awful.button({}, 9, function()
- -- local c = awful.client.restore()
- -- -- Focus restored client
- -- if c then
- -- client.focus = c
- -- end
- -- end)
-)
-
--- Global bindings
--- =============================================
-keys.globalkeys = gears.table.join(
- awful.key({
- modifiers = { mod },
- keygroup = "numrow",
- description = "only view tag",
- group = "tag",
- on_press = function(index)
- local screen = awful.screen.focused()
- local tag = screen.tags[index]
- if tag then
- tag:view_only()
- end
- end,
- }),
- awful.key({
- modifiers = { mod, ctrl },
- keygroup = "numrow",
- description = "toggle tag",
- group = "tag",
- on_press = function(index)
- local screen = awful.screen.focused()
- local tag = screen.tags[index]
- if tag then
- awful.tag.viewtoggle(tag)
- end
- end,
- }),
- awful.key({
- modifiers = { mod, shift },
- keygroup = "numrow",
- description = "move focused client to tag",
- group = "tag",
- on_press = function(index)
- if client.focus then
- local tag = client.focus.screen.tags[index]
- if tag then
- client.focus:move_to_tag(tag)
- end
- end
- end,
- }),
- awful.key({ mod }, "space", function()
- awful.layout.inc(1)
- end, { description = "next layout", group = "tag" }),
- awful.key({ mod, shift }, "space", function()
- awful.layout.inc(-1)
- end, { description = "previous layout", group = "tag" }),
-
- -- Tag switcher
- awful.key({ mod }, "Tab", function()
- awful.tag.viewnext()
- end, { description = "next tag", group = "client" }),
- awful.key({ mod, shift }, "Tab", function()
- awful.tag.viewprev()
- end, { description = "prev tag", group = "client" }),
-
- -- Focus client by direction (hjkl keys)
- awful.key({ mod }, "j", function()
- awful.client.focus.bydirection("down")
- end, { description = "focus down", group = "client" }),
- awful.key({ mod }, "k", function()
- awful.client.focus.bydirection("up")
- end, { description = "focus up", group = "client" }),
- awful.key({ mod }, "h", function()
- awful.client.focus.bydirection("left")
- end, { description = "focus left", group = "client" }),
- awful.key({ mod }, "l", function()
- awful.client.focus.bydirection("right")
- end, { description = "focus right", group = "client" }),
-
- -- Focus client by index (cycle through clients)
- awful.key({ mod }, "z", function()
- awful.client.focus.byidx(1)
- end, { description = "focus next by index", group = "client" }),
- awful.key({ mod, shift }, "z", function()
- awful.client.focus.byidx(-1)
- end, { description = "focus next by index", group = "client" }),
-
- -- Focus client by direction (arrow keys)
- awful.key({ mod }, "Down", function()
- awful.client.focus.bydirection("down")
- end, { description = "focus down", group = "client" }),
- awful.key({ mod }, "Up", function()
- awful.client.focus.bydirection("up")
- end, { description = "focus up", group = "client" }),
- awful.key({ mod }, "Left", function()
- awful.client.focus.bydirection("left")
- end, { description = "focus left", group = "client" }),
- awful.key({ mod }, "Right", function()
- awful.client.focus.bydirection("right")
- end, { description = "focus right", group = "client" }),
-
- -- Urgent or Undo:
- -- Jump to urgent client or (if there is no such client) go back
- -- to the last tag
- awful.key({ mod }, "u", function()
- uc = awful.client.urgent.get()
- -- If there is no urgent client, go back to last tag
- if uc == nil then
- awful.tag.history.restore()
- else
- awful.client.urgent.jumpto()
- end
- end, { description = "jump to urgent client", group = "client" }),
-
- awful.key({ mod }, "x", function()
- awful.tag.history.restore()
- end, { description = "go back", group = "tag" }),
-
- -- Spawn terminal
- awful.key({ mod }, "Return", function()
- awful.spawn(user.terminal)
- end, { description = "open a terminal", group = "launcher" }),
-
- -- Spawn floating terminal
- awful.key({ mod, shift }, "Return", function()
- awful.spawn(user.floating_terminal, { floating = true })
- end, { description = "spawn floating terminal", group = "launcher" }),
-
- -- Reload Awesome
- awful.key({ mod, shift }, "r", function()
- awesome.restart()
- end, { description = "reload awesome", group = "awesome" }),
-
- -- Quit Awesome
- awful.key({ mod, shift }, "q", function()
- awesome.quit()
- end, { description = "quit awesome", group = "awesome" }),
- awful.key({ mod, shift }, "x", function()
- awesome.quit()
- -- exit_screen_show()
- end, { description = "quit awesome", group = "awesome" }),
- awful.key({}, "XF86PowerOff", function()
- awesome.quit()
- -- exit_screen_show()
- end, { description = "quit awesome", group = "awesome" }),
-
- -- Resize focused client or layout factor
- awful.key({ mod, ctrl }, "Down", function(c)
- helpers.resize_dwim(client.focus, "down")
- end),
- awful.key({ mod, ctrl }, "Up", function(c)
- helpers.resize_dwim(client.focus, "up")
- end),
- awful.key({ mod, ctrl }, "Left", function(c)
- helpers.resize_dwim(client.focus, "left")
- end),
- awful.key({ mod, ctrl }, "Right", function(c)
- helpers.resize_dwim(client.focus, "right")
- end),
- awful.key({ mod, ctrl }, "j", function(c)
- helpers.resize_dwim(client.focus, "down")
- end),
- awful.key({ mod, ctrl }, "k", function(c)
- helpers.resize_dwim(client.focus, "up")
- end),
- awful.key({ mod, ctrl }, "h", function(c)
- helpers.resize_dwim(client.focus, "left")
- end),
- awful.key({ mod, ctrl }, "l", function(c)
- helpers.resize_dwim(client.focus, "right")
- end),
-
- -- Focus restored client
- awful.key({ mod, shift }, "n", function()
- local c = awful.client.restore()
- if c then
- client.focus = c
- end
- end, { description = "restore minimized", group = "client" }),
-
- -- Dismiss notifications and elements that connect to the dismiss signal
- awful.key({ ctrl }, "space", function()
- awesome.emit_signal("summon::dismiss")
- end, { description = "dismiss notification", group = "notifications" }),
-
- -- Scratchpad terminal
- awful.key({ mod }, "s", function()
- helpers.scratchpad({ instance = "scratchpad" }, user.scratchpad_terminal, nil)
- end, { description = "scratchpad", group = "launcher" }),
-
- -- Screen Shots/Vids
- awful.key({}, "Print", apps.screenshot_full, { description = "screenshot gui", group = "awesome" }),
- awful.key(
- { shift },
- "Print",
- apps.screenshot_clipboard,
- { description = "screenshot to clipboard", group = "awesome" }
- ),
-
- -- Prompt
- awful.key({ mod }, "d", function()
- awful.screen.focused().mypromptbox:run()
- end, { description = "run prompt", group = "launcher" }),
- --- App launcher
- awful.key({ mod }, "a", function()
- awful.spawn(user.app_launcher)
- end, { description = "app launcher", group = "app" }),
- --- Emoji picker
- awful.key({ mod }, "e", apps.emoji_picker, { description = "emoji picker", group = "app" }),
- --- Clipboard
- awful.key({ mod }, "v", apps.clipboard, { description = "clipboard", group = "app" }),
-
- -- Hotkeys list
- awful.key({ mod }, "F1", function()
- hotkeys_popup.show_help()
- end, { description = "show help", group = "awesome" }),
-
- -- Volume control with volume keys
- awful.key({}, "XF86AudioMute", function()
- helpers.volume_control(0)
- end, { description = "(un)mute volume", group = "volume" }),
- awful.key({}, "XF86AudioLowerVolume", function()
- helpers.volume_control(-5)
- awesome.emit_signal("summon::osd")
- end, { description = "lower volume", group = "volume" }),
- awful.key({}, "XF86AudioRaiseVolume", function()
- helpers.volume_control(5)
- awesome.emit_signal("summon::osd")
- end, { description = "raise volume", group = "volume" }),
-
- -- Brightness control with brightness keys
- awful.key({}, "XF86MonBrightnessUp", function()
- awful.spawn("light -A 10")
- awesome.emit_signal("summon::osd")
- end, { description = "increase brightness", group = "brightness" }),
- awful.key({}, "XF86MonBrightnessDown", function()
- awful.spawn("light -U 10")
- awesome.emit_signal("summon::osd")
- end, { description = "decrease brightness", group = "brightness" }),
-
- -- Music
- awful.key({}, "XF86AudioPlay", function()
- awful.spawn.with_shell("playerctl play-pause")
- end, { description = "play pause music", group = "volume" }),
- awful.key({}, "XF86AudioPrev", function()
- awful.spawn.with_shell("playerctl previous")
- end, { description = "previous music", group = "volume" }),
- awful.key({}, "XF86AudioNext", function()
- awful.spawn.with_shell("playerctl next")
- end, { description = "next music", group = "volume" }),
-
- -- Lockscreen
- awful.key({ mod, alt }, "l", function()
- awesome.emit_signal("summon::lock_screen")
- end, { description = "lock screen", group = "hotkeys" }),
-
- -- Apps
- -- Spawn browser
- awful.key({ mod }, "F2", apps.browser, { description = "web browser", group = "launcher" }),
- -- Spawn gui file manager
- awful.key({ mod }, "F3", apps.file_manager, { description = "file manager", group = "launcher" }),
- -- Terminal file manager
- awful.key({ mod }, "F4", apps.term_filemanager, { description = "term filemanager", group = "launcher" }),
- -- Primary editor
- awful.key({ mod }, "F5", apps.editor, { description = "editor", group = "launcher" }),
- -- Gui editor
- awful.key({ mod }, "F6", apps.visual_editor, { description = "visual editor", group = "launcher" }),
- -- Add more
- awful.key({ mod }, "F7", apps.file_manager, { description = "file manager", group = "launcher" }),
- awful.key({ mod }, "F8", apps.file_manager, { description = "file manager", group = "launcher" }),
- awful.key({ mod }, "F9", apps.file_manager, { description = "file manager", group = "launcher" }),
- awful.key({ mod }, "F10", apps.file_manager, { description = "file manager", group = "launcher" }),
- -- Volume control
- awful.key({ mod }, "F11", apps.volume, { description = "volume control", group = "launcher" }),
- -- Process monitor
- awful.key({ mod }, "F12", apps.process_monitor, { description = "process monitor", group = "launcher" })
-)
-
--- Client related bindings
--- =============================================
-keys.clientkeys = gears.table.join(
- -- Swap by direction
- awful.key({ mod, shift }, "j", function()
- awful.client.swap.bydirection("down")
- end),
- awful.key({ mod, shift }, "k", function()
- awful.client.swap.bydirection("up")
- end),
- awful.key({ mod, shift }, "h", function()
- awful.client.swap.bydirection("left")
- end),
- awful.key({ mod, shift }, "l", function()
- awful.client.swap.bydirection("right")
- end),
-
- -- Toggle fullscreen
- awful.key({ mod }, "f", function(c)
- c.fullscreen = not c.fullscreen
- c:raise()
- end, { description = "toggle fullscreen", group = "client" }),
-
- -- Close client
- awful.key({ mod }, "q", function(c)
- c:kill()
- end, { description = "close", group = "client" }),
- awful.key({ alt }, "F4", function(c)
- c:kill()
- end, { description = "close", group = "client" }),
-
- --- Center client
- awful.key({ mod }, "c", function()
- awful.placement.centered(c, { honor_workarea = true, honor_padding = true })
- end),
-
- -- Switch clients
- awful.key({ alt }, "Tab", function()
- awesome.emit_signal("window_switcher::turn_on")
- -- awful.client.focus.byidx(1)
- end, { description = "focus next by index", group = "client" }),
-
- -- Toggle floating
- awful.key({ mod, ctrl }, "space", function(c)
- local layout_is_floating = (awful.layout.get(mouse.screen) == awful.layout.suit.floating)
- if not layout_is_floating then
- awful.client.floating.toggle()
- end
- end, { description = "toggle floating", group = "client" }),
-
- -- Set master
- awful.key({ mod, ctrl }, "Return", function(c)
- c:swap(awful.client.getmaster())
- end, { description = "move to master", group = "client" }),
-
- -- P for pin: keep on top OR sticky
- -- On top
- awful.key({ mod, shift }, "p", function(c)
- c.ontop = not c.ontop
- end, { description = "toggle keep on top", group = "client" }),
- -- Sticky
- awful.key({ mod, ctrl }, "p", function(c)
- c.sticky = not c.sticky
- end, { description = "toggle sticky", group = "client" }),
-
- -- Minimize
- awful.key({ mod }, "n", function(c)
- c.minimized = true
- end, { description = "minimize", group = "client" }),
-
- -- Maximize
- awful.key({ mod }, "m", function(c)
- c.maximized = not c.maximized
- end, { description = "(un)maximize", group = "client" }),
- awful.key({ mod, ctrl }, "m", function(c)
- c.maximized_vertical = not c.maximized_vertical
- c:raise()
- end, { description = "(un)maximize vertically", group = "client" }),
- awful.key({ mod, shift }, "m", function(c)
- c.maximized_horizontal = not c.maximized_horizontal
- c:raise()
- end, { description = "(un)maximize horizontally", group = "client" })
-)
-
--- Mouse buttons on the client (whole window, not just titlebar)
--- =============================================
-keys.clientbuttons = gears.table.join(
- awful.button({}, 1, function(c)
- client.focus = c
- end),
- awful.button({ mod }, 1, awful.mouse.client.move),
- -- awful.button({ mod }, 2, function(c) c:kill() end),
- awful.button({ mod }, 3, function(c)
- client.focus = c
- awful.mouse.client.resize(c)
- -- awful.mouse.resize(c, nil, {jump_to_corner=true})
- end)
-
- -- Super + scroll = Change client opacity
- -- awful.button({ mod }, 4, function(c)
- -- c.opacity = c.opacity + 0.1
- -- end),
- -- awful.button({ mod }, 5, function(c)
- -- c.opacity = c.opacity - 0.1
- -- end)
-)
-
--- Mouse buttons on the tasklist
--- Use 'Any' modifier so that the same buttons can be used in the floating
--- tasklist displayed by the window switcher while the mod is pressed
--- =============================================
-keys.tasklist_buttons = gears.table.join(
- awful.button({ "Any" }, 1, function(c)
- if c == client.focus then
- c.minimized = true
- else
- -- Without this, the following
- -- :isvisible() makes no sense
- c.minimized = false
- if not c:isvisible() and c.first_tag then
- c.first_tag:view_only()
- end
- -- This will also un-minimize
- -- the client, if needed
- client.focus = c
- end
- end),
- -- Middle mouse button closes the window (on release)
- awful.button({ "Any" }, 2, nil, function(c)
- c:kill()
- end),
- awful.button({ "Any" }, 3, function(c)
- c.minimized = true
- end),
- awful.button({ "Any" }, 4, function()
- awful.client.focus.byidx(-1)
- end),
- awful.button({ "Any" }, 5, function()
- awful.client.focus.byidx(1)
- end),
-
- -- Side button up - toggle floating
- awful.button({ "Any" }, 9, function(c)
- c.floating = not c.floating
- end),
- -- Side button down - toggle ontop
- awful.button({ "Any" }, 8, function(c)
- c.ontop = not c.ontop
- end)
-)
-
--- Mouse buttons on a tag of the taglist widget
--- =============================================
-keys.taglist_buttons = gears.table.join(
- awful.button({}, 1, function(t)
- t:view_only()
- end),
- awful.button({ mod }, 1, function(t)
- if client.focus then
- client.focus:move_to_tag(t)
- end
- end),
- -- awful.button({ }, 3, awful.tag.viewtoggle),
- awful.button({}, 3, function(t)
- if client.focus then
- client.focus:move_to_tag(t)
- end
- end),
- awful.button({ mod }, 3, function(t)
- if client.focus then
- client.focus:toggle_tag(t)
- end
- end),
- awful.button({}, 4, function(t)
- awful.tag.viewprev(t.screen)
- end),
- awful.button({}, 5, function(t)
- awful.tag.viewnext(t.screen)
- end)
-)
-
-root.keys(keys.globalkeys)
-root.buttons(keys.desktopbuttons)
-
-return keys
--- EOF ------------------------------------------------------------------------
diff --git a/modules/home-manager/ricing/awesomewm/gruv/modules/json.lua b/modules/home-manager/ricing/awesomewm/gruv/modules/json.lua
deleted file mode 100644
index 3846152..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/modules/json.lua
+++ /dev/null
@@ -1,373 +0,0 @@
---
--- json.lua
---
--- Copyright (c) 2020 rxi
---
--- 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.
---
-
-local json = { _version = "0.1.2" }
-
--------------------------------------------------------------------------------
--- Encode
--------------------------------------------------------------------------------
-
-local encode
-
-local escape_char_map = {
- ["\\"] = "\\",
- ['"'] = '"',
- ["\b"] = "b",
- ["\f"] = "f",
- ["\n"] = "n",
- ["\r"] = "r",
- ["\t"] = "t",
-}
-
-local escape_char_map_inv = { ["/"] = "/" }
-for k, v in pairs(escape_char_map) do
- escape_char_map_inv[v] = k
-end
-
-local function escape_char(c)
- return "\\" .. (escape_char_map[c] or string.format("u%04x", c:byte()))
-end
-
-local function encode_nil(val)
- return "null"
-end
-
-local function encode_table(val, stack)
- local res = {}
- stack = stack or {}
-
- -- Circular reference?
- if stack[val] then
- error("circular reference")
- end
-
- stack[val] = true
-
- if rawget(val, 1) ~= nil or next(val) == nil then
- -- Treat as array -- check keys are valid and it is not sparse
- local n = 0
- for k in pairs(val) do
- if type(k) ~= "number" then
- error("invalid table: mixed or invalid key types")
- end
- n = n + 1
- end
- if n ~= #val then
- error("invalid table: sparse array")
- end
- -- Encode
- for i, v in ipairs(val) do
- table.insert(res, encode(v, stack))
- end
- stack[val] = nil
- return "[" .. table.concat(res, ",") .. "]"
- else
- -- Treat as an object
- for k, v in pairs(val) do
- if type(k) ~= "string" then
- error("invalid table: mixed or invalid key types")
- end
- table.insert(res, encode(k, stack) .. ":" .. encode(v, stack))
- end
- stack[val] = nil
- return "{" .. table.concat(res, ",") .. "}"
- end
-end
-
-local function encode_string(val)
- return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"'
-end
-
-local function encode_number(val)
- -- Check for NaN, -inf and inf
- if val ~= val or val <= -math.huge or val >= math.huge then
- error("unexpected number value '" .. tostring(val) .. "'")
- end
- return string.format("%.14g", val)
-end
-
-local type_func_map = {
- ["nil"] = encode_nil,
- ["table"] = encode_table,
- ["string"] = encode_string,
- ["number"] = encode_number,
- ["boolean"] = tostring,
-}
-
-encode = function(val, stack)
- local t = type(val)
- local f = type_func_map[t]
- if f then
- return f(val, stack)
- end
- error("unexpected type '" .. t .. "'")
-end
-
-function json.encode(val)
- return (encode(val))
-end
-
--------------------------------------------------------------------------------
--- Decode
--------------------------------------------------------------------------------
-
-local parse
-
-local function create_set(...)
- local res = {}
- for i = 1, select("#", ...) do
- res[select(i, ...)] = true
- end
- return res
-end
-
-local space_chars = create_set(" ", "\t", "\r", "\n")
-local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",")
-local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u")
-local literals = create_set("true", "false", "null")
-
-local literal_map = {
- ["true"] = true,
- ["false"] = false,
- ["null"] = nil,
-}
-
-local function next_char(str, idx, set, negate)
- for i = idx, #str do
- if set[str:sub(i, i)] ~= negate then
- return i
- end
- end
- return #str + 1
-end
-
-local function decode_error(str, idx, msg)
- local line_count = 1
- local col_count = 1
- for i = 1, idx - 1 do
- col_count = col_count + 1
- if str:sub(i, i) == "\n" then
- line_count = line_count + 1
- col_count = 1
- end
- end
- error(string.format("%s at line %d col %d", msg, line_count, col_count))
-end
-
-local function codepoint_to_utf8(n)
- -- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa
- local f = math.floor
- if n <= 0x7f then
- return string.char(n)
- elseif n <= 0x7ff then
- return string.char(f(n / 64) + 192, n % 64 + 128)
- elseif n <= 0xffff then
- return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128)
- elseif n <= 0x10ffff then
- return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128, f(n % 4096 / 64) + 128, n % 64 + 128)
- end
- error(string.format("invalid unicode codepoint '%x'", n))
-end
-
-local function parse_unicode_escape(s)
- local n1 = tonumber(s:sub(1, 4), 16)
- local n2 = tonumber(s:sub(7, 10), 16)
- -- Surrogate pair?
- if n2 then
- return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000)
- else
- return codepoint_to_utf8(n1)
- end
-end
-
-local function parse_string(str, i)
- local res = ""
- local j = i + 1
- local k = j
-
- while j <= #str do
- local x = str:byte(j)
-
- if x < 32 then
- decode_error(str, j, "control character in string")
- elseif x == 92 then -- `\`: Escape
- res = res .. str:sub(k, j - 1)
- j = j + 1
- local c = str:sub(j, j)
- if c == "u" then
- local hex = str:match("^[dD][89aAbB]%x%x\\u%x%x%x%x", j + 1)
- or str:match("^%x%x%x%x", j + 1)
- or decode_error(str, j - 1, "invalid unicode escape in string")
- res = res .. parse_unicode_escape(hex)
- j = j + #hex
- else
- if not escape_chars[c] then
- decode_error(str, j - 1, "invalid escape char '" .. c .. "' in string")
- end
- res = res .. escape_char_map_inv[c]
- end
- k = j + 1
- elseif x == 34 then -- `"`: End of string
- res = res .. str:sub(k, j - 1)
- return res, j + 1
- end
-
- j = j + 1
- end
-
- decode_error(str, i, "expected closing quote for string")
-end
-
-local function parse_number(str, i)
- local x = next_char(str, i, delim_chars)
- local s = str:sub(i, x - 1)
- local n = tonumber(s)
- if not n then
- decode_error(str, i, "invalid number '" .. s .. "'")
- end
- return n, x
-end
-
-local function parse_literal(str, i)
- local x = next_char(str, i, delim_chars)
- local word = str:sub(i, x - 1)
- if not literals[word] then
- decode_error(str, i, "invalid literal '" .. word .. "'")
- end
- return literal_map[word], x
-end
-
-local function parse_array(str, i)
- local res = {}
- local n = 1
- i = i + 1
- while 1 do
- local x
- i = next_char(str, i, space_chars, true)
- -- Empty / end of array?
- if str:sub(i, i) == "]" then
- i = i + 1
- break
- end
- -- Read token
- x, i = parse(str, i)
- res[n] = x
- n = n + 1
- -- Next token
- i = next_char(str, i, space_chars, true)
- local chr = str:sub(i, i)
- i = i + 1
- if chr == "]" then
- break
- end
- if chr ~= "," then
- decode_error(str, i, "expected ']' or ','")
- end
- end
- return res, i
-end
-
-local function parse_object(str, i)
- local res = {}
- i = i + 1
- while 1 do
- local key, val
- i = next_char(str, i, space_chars, true)
- -- Empty / end of object?
- if str:sub(i, i) == "}" then
- i = i + 1
- break
- end
- -- Read key
- if str:sub(i, i) ~= '"' then
- decode_error(str, i, "expected string for key")
- end
- key, i = parse(str, i)
- -- Read ':' delimiter
- i = next_char(str, i, space_chars, true)
- if str:sub(i, i) ~= ":" then
- decode_error(str, i, "expected ':' after key")
- end
- i = next_char(str, i + 1, space_chars, true)
- -- Read value
- val, i = parse(str, i)
- -- Set
- res[key] = val
- -- Next token
- i = next_char(str, i, space_chars, true)
- local chr = str:sub(i, i)
- i = i + 1
- if chr == "}" then
- break
- end
- if chr ~= "," then
- decode_error(str, i, "expected '}' or ','")
- end
- end
- return res, i
-end
-
-local char_func_map = {
- ['"'] = parse_string,
- ["0"] = parse_number,
- ["1"] = parse_number,
- ["2"] = parse_number,
- ["3"] = parse_number,
- ["4"] = parse_number,
- ["5"] = parse_number,
- ["6"] = parse_number,
- ["7"] = parse_number,
- ["8"] = parse_number,
- ["9"] = parse_number,
- ["-"] = parse_number,
- ["t"] = parse_literal,
- ["f"] = parse_literal,
- ["n"] = parse_literal,
- ["["] = parse_array,
- ["{"] = parse_object,
-}
-
-parse = function(str, idx)
- local chr = str:sub(idx, idx)
- local f = char_func_map[chr]
- if f then
- return f(str, idx)
- end
- decode_error(str, idx, "unexpected character '" .. chr .. "'")
-end
-
-function json.decode(str)
- if type(str) ~= "string" then
- error("expected argument of type string, got " .. type(str))
- end
- local res, idx = parse(str, next_char(str, 1, space_chars, true))
- idx = next_char(str, idx, space_chars, true)
- if idx <= #str then
- decode_error(str, idx, "trailing garbage")
- end
- return res
-end
-
-return json
--- EOF ------------------------------------------------------------------------
diff --git a/modules/home-manager/ricing/awesomewm/gruv/modules/lockscreen/init.lua b/modules/home-manager/ricing/awesomewm/gruv/modules/lockscreen/init.lua
deleted file mode 100644
index de1b8c8..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/modules/lockscreen/init.lua
+++ /dev/null
@@ -1,32 +0,0 @@
-local awful = require("awful")
-local gfs = require("gears.filesystem")
-
-local lock_screen = {}
-
-local lua_pam_path = gfs.get_configuration_dir() .. "modules/lockscren/lib/liblua_pam.so"
-
--- Initialize authentication method based on whether lua-pam has been
--- installed or not
-awful.spawn.easy_async_with_shell("stat " .. lua_pam_path .. " >/dev/null 2>&1", function(_, __, ___, exitcode)
- if exitcode == 0 then
- local pam = require("liblua_pam")
- -- lua-pam was installed.
- -- Authenticate with PAM
- -- TODO: setup lib-pam
- lock_screen.authenticate = function(password)
- return pam.auth_current_user(password)
- end
- else
- -- lua-pam was NOT installed.
- -- Authenticate with user.lock_screen_custom_password
- lock_screen.authenticate = function(password)
- return password == user.lock_screen_custom_password
- end
- end
-
- -- Load the lock_screen element
- require("modules.lockscreen.lockscreen")
-end)
-
-return lock_screen
--- EOF ------------------------------------------------------------------------
diff --git a/modules/home-manager/ricing/awesomewm/gruv/modules/lockscreen/lib/liblua_pam.so b/modules/home-manager/ricing/awesomewm/gruv/modules/lockscreen/lib/liblua_pam.so
deleted file mode 100644
index fb05778..0000000
Binary files a/modules/home-manager/ricing/awesomewm/gruv/modules/lockscreen/lib/liblua_pam.so and /dev/null differ
diff --git a/modules/home-manager/ricing/awesomewm/gruv/modules/lockscreen/lockscreen.lua b/modules/home-manager/ricing/awesomewm/gruv/modules/lockscreen/lockscreen.lua
deleted file mode 100644
index 9a67225..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/modules/lockscreen/lockscreen.lua
+++ /dev/null
@@ -1,404 +0,0 @@
-local gears = require("gears")
-local awful = require("awful")
-local beautiful = require("beautiful")
-local xresources = require("beautiful.xresources")
-local dpi = xresources.apply_dpi
-local wibox = require("wibox")
-local lock_screen = require("modules.lockscreen")
-
---- Word Clock Lock Screen
---- ~~~~~~~~~~~~~~~~~~~~~~
-
-local lock_screen_symbol = ""
-local lock_screen_fail_symbol = ""
-local lock_animation_icon = wibox.widget({
- --- Set forced size to prevent flickering when the icon rotates
- forced_height = dpi(80),
- forced_width = dpi(80),
- font = beautiful.icon_font_name .. "40",
- align = "center",
- valign = "center",
- widget = wibox.widget.textbox(lock_screen_symbol),
-})
-
-local some_textbox = wibox.widget.textbox()
-
--- Create the lock screen wibox
--- Use widgets::splash::visibility or
--- Set the type to "splash" and set all "splash" windows to be blurred in your
--- compositor configuration file
-lock_screen_box = wibox({ visible = false, ontop = true, type = "splash", screen = screen.primary })
-awful.placement.maximize(lock_screen_box)
-
-lock_screen_box.bg = beautiful.transparent
-lock_screen_box.fg = beautiful.fg_normal
-
---- Add lockscreen to each screen
-awful.screen.connect_for_each_screen(function(s)
- if s == screen.primary then
- s.mylockscreen = lock_screen_box
- else
- s.mylockscreen = wibox({
- visible = false,
- ontop = true,
- type = "splash",
- screen = s,
- })
- awful.placement.maximize(s.mylockscreen)
- s.mylockscreen.bg = beautiful.bg_normal
- end
-end)
-
-local function set_visibility(v)
- for s in screen do
- s.mylockscreen.visible = v
- end
-end
-
---- Word Clock
---- ~~~~~~~~~
-local char =
- "I T L I S A S A M P M A C Q U A R T E R D C T W E N T Y F I V E X H A L F S T E N F T O P A S T E R U N I N E O N E S I X T H R E E F O U R F I V E T W O E I G H T E L E V E N S E V E N T W E L V E T E N S E O C L O C K"
-
-local pos_map = {
- ["it"] = { 1, 2 },
- ["is"] = { 4, 5 },
- ["a"] = { 12, 12 },
- ["quarter"] = { 14, 20 },
- ["twenty"] = { 23, 28 },
- ["five"] = { 29, 32 },
- ["half"] = { 34, 37 },
- ["ten"] = { 39, 41 },
- ["past"] = { 45, 48 },
- ["to"] = { 43, 44 },
- ["1"] = { 56, 58 },
- ["2"] = { 75, 77 },
- ["3"] = { 62, 66 },
- ["4"] = { 67, 70 },
- ["5"] = { 71, 74 },
- ["6"] = { 59, 61 },
- ["7"] = { 89, 93 },
- ["8"] = { 78, 82 },
- ["9"] = { 52, 55 },
- ["10"] = { 100, 102 },
- ["11"] = { 83, 88 },
- ["12"] = { 94, 99 },
- ["oclock"] = { 105, 110 },
-}
-
-local char_map = {
- ["it"] = {},
- ["is"] = {},
- ["a"] = {},
- ["quarter"] = {},
- ["twenty"] = {},
- ["five"] = {},
- ["half"] = {},
- ["ten"] = {},
- ["past"] = {},
- ["to"] = {},
- ["1"] = {},
- ["2"] = {},
- ["3"] = {},
- ["4"] = {},
- ["5"] = {},
- ["6"] = {},
- ["7"] = {},
- ["8"] = {},
- ["9"] = {},
- ["10"] = {},
- ["11"] = {},
- ["12"] = {},
- ["oclock"] = {},
-}
-
-local reset_map = { 4, 12, 14, 23, 29, 34, 39, 43, 45, 52, 56, 59, 62, 67, 71, 75, 78, 83, 89, 94, 100, 105 }
-
-function split_str(s, delimiter)
- result = {}
- for match in (s .. delimiter):gmatch("(.-)" .. delimiter) do
- table.insert(result, match)
- end
-
- return result
-end
-
-local time_char = split_str(char, " ")
-
-local time = wibox.widget({
- forced_num_cols = 11,
- spacing = dpi(6),
- layout = wibox.layout.grid,
-})
-
-local function create_text_widget(index, w)
- local text_widget = wibox.widget({
- id = "t" .. index,
- markup = w,
- font = beautiful.font_name .. "Bold 24",
- align = "center",
- valign = "center",
- forced_width = dpi(36),
- forced_height = dpi(36),
- widget = wibox.widget.textbox,
- })
-
- time:add(text_widget)
-
- return text_widget
-end
-
-local var_count = 0
-for i, m in pairs(time_char) do
- local text = "" .. m .. ""
-
- var_count = var_count + 1
- local create_dummy_text = true
-
- for j, k in pairs(pos_map) do
- if i >= pos_map[j][1] and i <= pos_map[j][2] then
- char_map[j][var_count] = create_text_widget(i, text)
- create_dummy_text = false
- end
-
- for _, n in pairs(reset_map) do
- if i == n then
- var_count = 1
- end
- end
- end
-
- if create_dummy_text then
- create_text_widget(i, text)
- end
-end
-
-local function activate_word(w)
- for i, m in pairs(char_map[w]) do
- local text = m.text
- m.markup = "" .. text .. ""
- end
-end
-
-local function deactivate_word(w)
- for i, m in pairs(char_map[w]) do
- local text = m.text
- m.markup = "" .. text .. ""
- end
-end
-
-local function reset_time()
- for j, k in pairs(char_map) do
- deactivate_word(j)
- end
-
- activate_word("it")
- activate_word("is")
-end
-
-gears.timer({
- timeout = 1,
- call_now = true,
- autostart = true,
- callback = function()
- local time = os.date("%I" .. ":%M")
- local h, m = time:match("(%d+):(%d+)")
- local min = tonumber(m)
- local hour = tonumber(h)
-
- reset_time()
-
- if min >= 0 and min <= 2 or min >= 58 and min <= 59 then
- activate_word("oclock")
- elseif min >= 3 and min <= 7 or min >= 53 and min <= 57 then
- activate_word("five")
- elseif min >= 8 and min <= 12 or min >= 48 and min <= 52 then
- activate_word("ten")
- elseif min >= 13 and min <= 17 or min >= 43 and min <= 47 then
- activate_word("a")
- activate_word("quarter")
- elseif min >= 18 and min <= 22 or min >= 38 and min <= 42 then
- activate_word("twenty")
- elseif min >= 23 and min <= 27 or min >= 33 and min <= 37 then
- activate_word("twenty")
- activate_word("five")
- elseif min >= 28 and min <= 32 then
- activate_word("half")
- end
-
- if min >= 3 and min <= 32 then
- activate_word("past")
- elseif min >= 33 and min <= 57 then
- activate_word("to")
- end
-
- local hh
-
- if min >= 0 and min <= 30 then
- hh = hour
- else
- hh = hour + 1
- end
-
- if hh > 12 then
- hh = hh - 12
- end
-
- activate_word(tostring(hh))
- end,
-})
-
---- Lock animation
-local lock_animation_widget_rotate = wibox.container.rotate()
-
-local arc = function()
- return function(cr, width, height)
- gears.shape.arc(cr, width, height, 5, 0, math.pi / 2, true, true)
- end
-end
-
-local lock_animation_arc = wibox.widget({
- shape = arc(),
- bg = beautiful.transparent,
- forced_width = dpi(100),
- forced_height = dpi(100),
- widget = wibox.container.background,
-})
-
-local lock_animation = {
- {
- lock_animation_arc,
- widget = lock_animation_widget_rotate,
- },
- lock_animation_icon,
- layout = wibox.layout.stack,
-}
-
---- Lock helper functions
-local characters_entered = 0
-local function reset()
- characters_entered = 0
- lock_animation_icon.markup = lock_screen_symbol
- lock_animation_widget_rotate.direction = "north"
- lock_animation_arc.bg = beautiful.transparent
-end
-
-local function fail()
- characters_entered = 0
- lock_animation_icon.markup = lock_screen_fail_symbol
- lock_animation_widget_rotate.direction = "north"
- lock_animation_arc.bg = beautiful.transparent
-end
-
-local animation_colors = {
- --- Rainbow sequence
- beautiful.red,
- beautiful.magenta,
- beautiful.blue,
- beautiful.cyan,
- beautiful.green,
- beautiful.yellow,
-}
-
-local animation_directions = { "north", "west", "south", "east" }
-
---- Function that "animates" every key press
-local function key_animation(char_inserted)
- local color
- local direction = animation_directions[(characters_entered % 4) + 1]
- if char_inserted then
- color = animation_colors[(characters_entered % 6) + 1]
- lock_animation_icon.markup = lock_screen_symbol
- else
- if characters_entered == 0 then
- reset()
- else
- color = beautiful.white .. "55"
- end
- end
-
- lock_animation_arc.bg = color
- lock_animation_widget_rotate.direction = direction
-end
-
---- Get input from user
-local function grab_password()
- awful.prompt.run({
- hooks = {
- --- Custom escape behaviour: Do not cancel input with Escape
- --- Instead, this will just clear any input received so far.
- {
- {},
- "Escape",
- function(_)
- reset()
- grab_password()
- end,
- },
- --- Fix for Control+Delete crashing the keygrabber
- {
- { "Control" },
- "Delete",
- function()
- reset()
- grab_password()
- end,
- },
- },
- keypressed_callback = function(mod, key, cmd)
- --- Only count single character keys (thus preventing "Shift", "Escape", etc from triggering the animation)
- if #key == 1 then
- characters_entered = characters_entered + 1
- key_animation(true)
- elseif key == "BackSpace" then
- if characters_entered > 0 then
- characters_entered = characters_entered - 1
- end
- key_animation(false)
- end
- end,
- exe_callback = function(input)
- --- Check input
- if lock_screen.authenticate(input) then
- --- YAY
- reset()
- set_visibility(false)
- awesome.emit_signal("widgets::splash::visibility", false)
- else
- --- NAY
- fail()
- grab_password()
- end
- end,
- textbox = some_textbox,
- })
-end
-
-awesome.connect_signal("summon::lock_screen", function()
- set_visibility(true)
- grab_password()
- awesome.emit_signal("widgets::splash::visibility", true)
-end)
-
-lock_screen_box:setup({
- --- Horizontal centering
- nil,
- {
- --- Vertical centering
- nil,
- {
- wibox.widget({
- forced_height = dpi(20),
- layout = wibox.layout.fixed.vertical,
- }),
- time,
- lock_animation,
- spacing = dpi(60),
- layout = wibox.layout.fixed.vertical,
- },
- expand = "none",
- layout = wibox.layout.align.vertical,
- },
- expand = "none",
- layout = wibox.layout.align.horizontal,
-})
diff --git a/modules/home-manager/ricing/awesomewm/gruv/modules/notification_center.lua b/modules/home-manager/ricing/awesomewm/gruv/modules/notification_center.lua
deleted file mode 100644
index d15b07c..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/modules/notification_center.lua
+++ /dev/null
@@ -1,261 +0,0 @@
-local gears = require("gears")
-local awful = require("awful")
-local wibox = require("wibox")
-local naughty = require("naughty")
-local beautiful = require("beautiful")
-local helpers = require("helpers")
-
--- Notification list
-local label = wibox.widget({
- text = "Notifications",
- align = "center",
- widget = wibox.widget.textbox,
-})
-
-local notifs_clear = wibox.widget({
- markup = " ",
- align = "center",
- valign = "center",
- widget = wibox.widget.textbox,
-})
-
-notifs_clear:buttons(gears.table.join(awful.button({}, 1, function()
- _G.notif_center_reset_notifs_container()
-end)))
-
-local notifs_empty = wibox.widget({
- forced_height = dpi(300),
- widget = wibox.container.background,
- {
- layout = wibox.layout.flex.vertical,
- {
- markup = "No notifications",
- font = beautiful.font,
- align = "center",
- valign = "center",
- widget = wibox.widget.textbox,
- },
- },
-})
-
-local notifs_container = wibox.widget({
- forced_width = dpi(240),
- forced_height = dpi(715),
- layout = wibox.layout.fixed.vertical,
- spacing = dpi(10),
- spacing_widget = {
- top = dpi(2),
- bottom = dpi(2),
- left = dpi(6),
- right = dpi(6),
- widget = wibox.container.margin,
- {
- widget = wibox.container.background,
- },
- },
-})
-
-local remove_notifs_empty = true
-
-notif_center_reset_notifs_container = function()
- notifs_container:reset(notifs_container)
- notifs_container:insert(1, notifs_empty)
- remove_notifs_empty = true
-end
-
-notif_center_remove_notif = function(box)
- notifs_container:remove_widgets(box)
-
- if #notifs_container.children == 0 then
- notifs_container:insert(1, notifs_empty)
- remove_notifs_empty = true
- end
-end
-
-local create_notif = function(icon, n, width)
- local time = os.date("%H:%M:%S")
-
- local icon_widget = wibox.widget({
- widget = wibox.container.constraint,
- {
- widget = wibox.container.margin,
- margins = dpi(20),
- {
- widget = wibox.widget.imagebox,
- image = icon,
- clip_shape = gears.shape.circle,
- halign = "center",
- valign = "center",
- },
- },
- })
-
- local title_widget = wibox.widget({
- widget = wibox.container.scroll.horizontal,
- step_function = wibox.container.scroll.step_functions.waiting_nonlinear_back_and_forth,
- speed = 50,
- forced_width = dpi(200),
- {
- widget = wibox.widget.textbox,
- text = n.title,
- align = "left",
- forced_width = dpi(200),
- },
- })
-
- local time_widget = wibox.widget({
- widget = wibox.container.background,
- bg = beautiful.fg_normal,
- fg = beautiful.bg_normal,
- {
- widget = wibox.container.margin,
- margins = { left = dpi(10), right = dpi(10), top = dpi(4), bottom = dpi(4) },
- {
- widget = wibox.widget.textbox,
- text = time,
- align = "right",
- valign = "bottom",
- },
- },
- })
-
- local text_notif = wibox.widget({
- markup = n.message,
- align = "left",
- forced_width = dpi(165),
- widget = wibox.widget.textbox,
- })
-
- local box = wibox.widget({
- widget = wibox.container.background,
- forced_height = dpi(120),
- bg = beautiful.black_alt,
- {
- layout = wibox.layout.align.horizontal,
- icon_widget,
- {
- widget = wibox.container.margin,
- margins = dpi(10),
- {
- layout = wibox.layout.align.vertical,
- expand = "none",
- {
- layout = wibox.layout.fixed.vertical,
- spacing = dpi(10),
- {
- layout = wibox.layout.align.horizontal,
- expand = "none",
- title_widget,
- nil,
- time_widget,
- },
- text_notif,
- },
- },
- },
- },
- })
-
- box:buttons(gears.table.join(awful.button({}, 1, function()
- _G.notif_center_remove_notif(box)
- end)))
-
- return box
-end
-
-notifs_container:buttons(gears.table.join(
- awful.button({}, 4, nil, function()
- if #notifs_container.children == 1 then
- return
- end
- notifs_container:insert(1, notifs_container.children[#notifs_container.children])
- notifs_container:remove(#notifs_container.children)
- end),
-
- awful.button({}, 5, nil, function()
- if #notifs_container.children == 1 then
- return
- end
- notifs_container:insert(#notifs_container.children + 1, notifs_container.children[1])
- notifs_container:remove(1)
- end)
-))
-
-notifs_container:insert(1, notifs_empty)
-
-naughty.connect_signal("request::display", function(n)
- if #notifs_container.children == 1 and remove_notifs_empty then
- notifs_container:reset(notifs_container)
- remove_notifs_empty = false
- end
-
- local appicon = n.icon or n.app_icon
- if not appicon then
- appicon = beautiful.awesome_icon
- end
-
- notifs_container:insert(1, create_notif(appicon, n, width))
-end)
-
-local notifs = wibox.widget({
- spacing = dpi(10),
- layout = wibox.layout.fixed.vertical,
- {
- widget = wibox.container.margin,
- margins = dpi(10),
- {
- layout = wibox.layout.align.horizontal,
- label,
- nil,
- notifs_clear,
- },
- },
- notifs_container,
-})
-
--- Main window
-local main = wibox.widget({
- widget = wibox.container.background,
- bg = beautiful.bg_normal,
- {
- widget = wibox.container.margin,
- margins = dpi(10),
- {
- layout = wibox.layout.fixed.vertical,
- fill_space = true,
- spacing = dpi(10),
- notifs,
- },
- },
-})
-
-local notif_center = awful.popup({
- shape = helpers.rrect(beautiful.border_radius),
- visible = false,
- ontop = true,
- border_width = beautiful.border_width,
- border_color = beautiful.widget_border_color,
- minimum_height = dpi(585),
- maximum_height = dpi(585),
- minimum_width = dpi(500),
- maximum_width = dpi(500),
- placement = function(d)
- awful.placement.bottom_right(d, { honor_workarea = true, margins = dpi(5) + beautiful.border_width * 2 })
- end,
- widget = main,
-})
-
--- Summon functions
-awesome.connect_signal("summon::notif_center", function()
- notif_center.visible = not notif_center.visible
-end)
-
--- Hide on click on other windows
-client.connect_signal("button::press", function()
- notif_center.visible = false
-end)
-
-awesome.connect_signal("summon::dismiss", function()
- naughty.destroy_all_notifications()
- notif_center.visible = false
-end)
diff --git a/modules/home-manager/ricing/awesomewm/gruv/modules/window_switcher.lua b/modules/home-manager/ricing/awesomewm/gruv/modules/window_switcher.lua
deleted file mode 100644
index f086b38..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/modules/window_switcher.lua
+++ /dev/null
@@ -1,281 +0,0 @@
-local awful = require("awful")
-local gears = require("gears")
-local wibox = require("wibox")
-local beautiful = require("beautiful")
-local dpi = beautiful.xresources.apply_dpi
-
-local window_switcher_first_client -- The client that was focused when the window_switcher was activated
-local window_switcher_minimized_clients = {} -- The clients that were minimized when the window switcher was activated
-local window_switcher_grabber
-
-local get_num_clients = function()
- local minimized_clients_in_tag = 0
- local matcher = function(c)
- return awful.rules.match(c, {
- minimized = true,
- skip_taskbar = false,
- hidden = false,
- first_tag = awful.screen.focused().selected_tag,
- })
- end
- for c in awful.client.iterate(matcher) do
- minimized_clients_in_tag = minimized_clients_in_tag + 1
- end
- return minimized_clients_in_tag + #awful.screen.focused().clients
-end
-
-local window_switcher_hide = function(window_switcher_box)
- -- Add currently focused client to history
- if client.focus then
- local window_switcher_last_client = client.focus
- awful.client.focus.history.add(window_switcher_last_client)
- -- Raise client that was focused originally
- -- Then raise last focused client
- if window_switcher_first_client and window_switcher_first_client.valid then
- window_switcher_first_client:raise()
- window_switcher_last_client:raise()
- end
- end
-
- -- Minimize originally minimized clients
- local s = awful.screen.focused()
- for _, c in pairs(window_switcher_minimized_clients) do
- if c and c.valid and not (client.focus and client.focus == c) then
- c.minimized = true
- end
- end
- -- Reset helper table
- window_switcher_minimized_clients = {}
-
- -- Resume recording focus history
- awful.client.focus.history.enable_tracking()
- -- Stop and hide window_switcher
- awful.keygrabber.stop(window_switcher_grabber)
- window_switcher_box.visible = false
- window_switcher_box.widget = nil
- collectgarbage("collect")
-end
-
-local function draw_widget(mouse_keys)
- local tasklist_widget = awful.widget.tasklist({
- screen = awful.screen.focused(),
- filter = awful.widget.tasklist.filter.currenttags,
- buttons = mouse_keys,
- style = {
- font = beautiful.font,
- bg_normal = beautiful.bg_normal,
- bg_focus = beautiful.bg_focus,
- fg_normal = beautiful.fg_normal,
- fg_focus = beautiful.fg_focus,
- shape = gears.shape.rounded_rect,
- },
- layout = {
- layout = wibox.layout.fixed.horizontal,
- },
- widget_template = {
- {
- {
- {
- awful.widget.clienticon,
- forced_height = dpi(80),
- forced_width = dpi(80),
- halign = "center",
- valign = "center",
- widget = wibox.container.place,
- },
- {
- {
- widget = wibox.container.scroll.horizontal,
- step_function = wibox.container.scroll.step_functions.waiting_nonlinear_back_and_forth,
- fps = 60,
- speed = 75,
- {
- id = "text_role",
- widget = wibox.widget.textbox,
- },
- },
- halign = "center",
- valign = "center",
- widget = wibox.container.place,
- },
- spacing = dpi(15),
- layout = wibox.layout.fixed.vertical,
- },
- margins = dpi(15),
- widget = wibox.container.margin,
- },
- forced_width = dpi(150),
- forced_height = dpi(150),
- id = "background_role",
- widget = wibox.container.background,
- },
- })
-
- return wibox.widget({
- {
- tasklist_widget,
- margins = dpi(15),
- widget = wibox.container.margin,
- },
- bg = beautiful.background,
- shape = gears.shape.rounded_rect,
- widget = wibox.container.background,
- })
-end
-
-local hide_window_switcher_key = "Escape"
-
-local select_client_key = 1
-local minimize_key = "n"
-local unminimize_key = "N"
-local kill_client_key = "q"
-
-local cycle_key = "Tab"
-
-local previous_key = "Left"
-local next_key = "Right"
-
-local vim_previous_key = "h"
-local vim_next_key = "l"
-
-local scroll_previous_key = 4
-local scroll_next_key = 5
-
-local window_switcher_box = awful.popup({
- -- bg = beautiful.transparent,
- visible = false,
- ontop = true,
- placement = awful.placement.centered,
- screen = awful.screen.focused(),
- widget = wibox.container.background, -- A dummy widget to make awful.popup not scream
- widget = draw_widget(),
-})
-
-local mouse_keys = gears.table.join(
- awful.button({
- modifiers = { "Any" },
- button = select_client_key,
- on_press = function(c)
- client.focus = c
- end,
- }),
-
- awful.button({
- modifiers = { "Any" },
- button = scroll_previous_key,
- on_press = function()
- awful.client.focus.byidx(-1)
- end,
- }),
-
- awful.button({
- modifiers = { "Any" },
- button = scroll_next_key,
- on_press = function()
- awful.client.focus.byidx(1)
- end,
- })
-)
-
-local keyboard_keys = {
- [hide_window_switcher_key] = function()
- window_switcher_hide(window_switcher_box)
- end,
-
- [minimize_key] = function()
- if client.focus then
- client.focus.minimized = true
- end
- end,
- [unminimize_key] = function()
- if awful.client.restore() then
- client.focus = awful.client.restore()
- end
- end,
- [kill_client_key] = function()
- if client.focus then
- client.focus:kill()
- end
- end,
-
- [cycle_key] = function()
- awful.client.focus.byidx(1)
- end,
-
- [previous_key] = function()
- awful.client.focus.byidx(1)
- end,
- [next_key] = function()
- awful.client.focus.byidx(-1)
- end,
-
- [vim_previous_key] = function()
- awful.client.focus.byidx(1)
- end,
- [vim_next_key] = function()
- awful.client.focus.byidx(-1)
- end,
-}
-
-window_switcher_box:connect_signal("property::width", function()
- if window_switcher_box.visible and get_num_clients() == 0 then
- window_switcher_hide(window_switcher_box)
- end
-end)
-
-window_switcher_box:connect_signal("property::height", function()
- if window_switcher_box.visible and get_num_clients() == 0 then
- window_switcher_hide(window_switcher_box)
- end
-end)
-
-awesome.connect_signal("window_switcher::turn_on", function()
- local number_of_clients = get_num_clients()
- if number_of_clients == 0 then
- return
- end
-
- -- Store client that is focused in a variable
- window_switcher_first_client = client.focus
-
- -- Stop recording focus history
- awful.client.focus.history.disable_tracking()
-
- -- Go to previously focused client (in the tag)
- awful.client.focus.history.previous()
-
- -- Track minimized clients
- -- Unminimize them
- -- Lower them so that they are always below other
- -- originally unminimized windows
- local clients = awful.screen.focused().selected_tag:clients()
- for _, c in pairs(clients) do
- if c.minimized then
- table.insert(window_switcher_minimized_clients, c)
- c.minimized = false
- c:lower()
- end
- end
-
- -- Start the keygrabber
- window_switcher_grabber = awful.keygrabber.run(function(_, key, event)
- if event == "release" then
- -- Hide if the modifier was released
- -- We try to match Super or Alt or Control since we do not know which keybind is
- -- used to activate the window switcher (the keybind is set by the user in keys.lua)
- if key:match("Super") or key:match("Alt") or key:match("Control") then
- window_switcher_hide(window_switcher_box)
- end
- -- Do nothing
- return
- end
-
- -- Run function attached to key, if it exists
- if keyboard_keys[key] then
- keyboard_keys[key]()
- end
- end)
-
- window_switcher_box.widget = draw_widget(mouse_keys)
- window_switcher_box.visible = true
-end)
diff --git a/modules/home-manager/ricing/awesomewm/gruv/rc.lua b/modules/home-manager/ricing/awesomewm/gruv/rc.lua
deleted file mode 100644
index 4bb0991..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/rc.lua
+++ /dev/null
@@ -1,798 +0,0 @@
--- ░█▄█░█▀█░█▀▄░█▀▀░█▀▀░█▀█░█▀█░█▀█░▀█▀░▀░█▀▀░░░█▀█░█░█░█▀▀░█▀▀░█▀█░█▄█░█▀▀
--- ░█░█░█░█░█▀▄░▀▀█░█▀▀░█░█░█▀█░█▀▀░░█░░░░▀▀█░░░█▀█░█▄█░█▀▀░▀▀█░█░█░█░█░█▀▀
--- ░▀░▀░▀▀▀░▀▀░░▀▀▀░▀▀▀░▀░▀░▀░▀░▀░░░▀▀▀░░░▀▀▀░░░▀░▀░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀
-
--- >> The file that binds everything together.
-local awesome = awesome
-local client = client
-local screen = screen
-local decorations = {}
-
--- User variables and preferences
--- ===================================================================
-user = {
- terminal = "wezterm start --always-new-process",
- floating_terminal = "wezterm start --class floating_terminal",
- scratchpad_terminal = "wezterm start --class scratchpad",
- editor = "wezterm start --class editor -e hx",
- browser = "firefox",
- file_manager = "pcmanfm",
- term_filemanager = "wezterm start --class term_filemanager -e yazi",
- visual_editor = "",
- openweathermap_key = "d1b3b6a81db867259446b0863d5f9108",
- openweathermap_city_id = {
- "25.6", -- lat
- "85.1167", -- lon
- },
- openweathermap_weather_units = "metric",
- lock_screen_custom_password = "040424",
- app_launcher = "rofi -matching fuzzy -show drun",
-}
-
--- Initialization
--- ===================================================================
-local beautiful = require("beautiful")
--- Make dpi function global
-dpi = beautiful.xresources.apply_dpi
-
--- Load AwesomeWM libraries
-local gears = require("gears")
-local gfs = require("gears.filesystem")
-local awful = require("awful")
-require("awful.autofocus")
--- Default notification library
-local naughty = require("naughty")
-
--- Load theme
-beautiful.init(gfs.get_configuration_dir() .. "themes/gruva/" .. "theme.lua")
-
--- Error handling
--- ===================================================================
-naughty.connect_signal("request::display_error", function(message, startup)
- naughty.notification({
- urgency = "critical",
- title = "Oops, an error happened" .. (startup and " during startup!" or "!"),
- message = message,
- })
-end)
-
--- Features
--- ===================================================================
--- Load helper functions
-local helpers = require("helpers")
--- Apps
-apps = {
- -- TODO: switchtotag not working?
- browser = function()
- awful.spawn(user.browser, { switchtotag = true })
- end,
- file_manager = function()
- awful.spawn(user.file_manager, { floating = true })
- end,
- term_filemanager = function()
- awful.spawn(user.term_filemanager, { floating = true })
- end,
- editor = function()
- helpers.run_or_raise({ instance = "editor" }, false, user.editor, { switchtotag = true })
- end,
- visual_editor = function()
- helpers.run_or_raise({ class = "" }, false, user.visual_editor, { switchtotag = true })
- end,
- volume = function()
- helpers.run_or_raise({ class = "Pavucontrol" }, true, "pavucontrol")
- end,
- process_monitor = function()
- helpers.run_or_raise(
- { instance = "bottom" },
- false,
- user.terminal .. " --class bottom -e btm",
- { switchtotag = true }
- )
- end,
- screenshot_full = function()
- awful.spawn.with_shell("maim -s | swappy -f -")
- end,
- screenshot_clipboard = function()
- awful.spawn.with_shell("maim -s | xclip -selection clipboard -t image/png")
- end,
- clipboard = function()
- awful.spawn.with_shell("clipmenu")
- end,
- emoji_picker = function()
- awful.spawn("rofi -show emoji")
- end,
-}
-
--- Confuguration folder
-require("themes/gruva")
-
--- Keybinds and mousebinds
-local keys = require("keys")
-
--- Lock screen
--- Make sure to install lua-pam as described in the README or configure your
--- custom password in the 'user' section above
-require("modules.lockscreen")
--- Window switcher
-require("modules.window_switcher")
--- Notification center
-require("modules.notification_center")
-
--- Daemons
--- Most widgets that display system/external info depend on evil.
--- Make sure to initialize it last in order to allow all widgets to connect to
--- their needed evil signals.
-require("evil")
-
--- Get screen geometry
--- I am using a single screen setup and I assume that screen geometry will not
--- change during the session.
-local screen_width = awful.screen.focused().geometry.width
-local screen_height = awful.screen.focused().geometry.height
-
--- Layouts
--- ===================================================================
--- Table of layouts to cover with awful.layout.inc, order matters.
-awful.layout.layouts = {
- awful.layout.suit.tile,
- awful.layout.suit.floating,
- awful.layout.suit.max,
- --awful.layout.suit.spiral,
- --awful.layout.suit.spiral.dwindle,
- --awful.layout.suit.tile.top,
- --awful.layout.suit.fair,
- --awful.layout.suit.fair.horizontal,
- --awful.layout.suit.tile.left,
- --awful.layout.suit.tile.bottom,
- --awful.layout.suit.max.fullscreen,
- --awful.layout.suit.corner.nw,
- --awful.layout.suit.magnifier,
- --awful.layout.suit.corner.ne,
- --awful.layout.suit.corner.sw,
- --awful.layout.suit.corner.se,
-}
-
--- Wallpaper
--- ===================================================================
-local function set_wallpaper(s)
- if beautiful.wallpaper then
- local wallpaper = beautiful.wallpaper
- -- If wallpaper is a function, call it with the screen
- if type(wallpaper) == "function" then
- wallpaper = wallpaper(s)
- end
-
- -- >> Method 1: Built in wallpaper function
- gears.wallpaper.maximized(wallpaper, s, true)
-
- -- >> Method 2: Set theme's wallpaper with feh
- -- awful.spawn.with_shell("feh --bg-fill " .. wallpaper)
-
- -- >> Method 3: Set last wallpaper with feh
- -- awful.spawn.with_shell(os.getenv("HOME") .. "/.fehbg")
- end
-end
-
--- Set wallpaper
-awful.screen.connect_for_each_screen(function(s)
- set_wallpaper(s)
-end)
-
--- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
-screen.connect_signal("property::geometry", set_wallpaper)
-
--- Tags
--- ===================================================================
-awful.screen.connect_for_each_screen(function(s)
- -- Each screen has its own tag table.
- local l = awful.layout.suit -- Alias to save time :)
- -- Tag layouts
- local layouts = {
- l.max,
- l.max,
- l.max,
- l.max,
- l.max,
- l.max,
- l.tile,
- l.tile,
- l.tile,
- l.tile,
- }
-
- -- Tag names
- local tagnames = beautiful.tagnames or { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }
- -- Create all tags at once (without seperate configuration for each tag)
- awful.tag(tagnames, s, layouts)
-
- -- Create tags with seperate configuration for each tag
- -- awful.tag.add(tagnames[1], {
- -- layout = layouts[1],
- -- screen = s,
- -- master_width_factor = 0.6,
- -- selected = true,
- -- })
- -- ...
-end)
-
--- Determines how floating clients should be placed
-local floating_client_placement = function(c)
- -- If the layout is floating or there are no other visible
- -- clients, center client
- if awful.layout.get(mouse.screen) ~= awful.layout.suit.floating or #mouse.screen.clients == 1 then
- return awful.placement.centered(c, { honor_padding = true, honor_workarea = true })
- end
-
- -- Else use this placement
- local p = awful.placement.no_overlap + awful.placement.no_offscreen
- return p(c, { honor_padding = true, honor_workarea = true, margins = beautiful.useless_gap * 2 })
-end
-
-local centered_client_placement = function(c)
- return gears.timer.delayed_call(function()
- awful.placement.centered(c, { honor_padding = true, honor_workarea = true })
- end)
-end
-
--- Rules
--- ===================================================================
--- Rules to apply to new clients (through the "manage" signal).
-awful.rules.rules = {
- {
- -- All clients will match this rule.
- rule = {},
- properties = {
- border_width = beautiful.border_width,
- border_color = beautiful.border_normal,
- focus = awful.client.focus.filter,
- raise = true,
- keys = keys.clientkeys,
- buttons = keys.clientbuttons,
- screen = awful.screen.focused,
- size_hints_honor = false,
- honor_workarea = true,
- honor_padding = true,
- maximized = false,
- titlebars_enabled = beautiful.titlebars_enabled,
- maximized_horizontal = false,
- maximized_vertical = false,
- placement = floating_client_placement,
- },
- },
-
- -- Floating clients
- {
- rule_any = {
- instance = {
- "floating_terminal",
- "Devtools", -- Firefox devtools
- },
- class = {
- "Gpick",
- "Lxappearance",
- "Nm-connection-editor",
- "File-roller",
- "fst",
- "Nvidia-settings",
- },
- name = {
- "Event Tester", -- xev
- "MetaMask Notification",
- "Picture in picture",
- },
- role = {
- "AlarmWindow",
- "pop-up",
- "GtkFileChooserDialog",
- "conversation",
- },
- type = {
- "dialog",
- },
- },
- properties = { floating = true },
- },
-
- -- Fullscreen clients
- {
- rule_any = {
- class = {
- "dota2",
- "dontstarve_steam",
- },
- instance = {
- "synthetik.exe",
- },
- },
- properties = { fullscreen = true },
- },
-
- -- Centered clients
- {
- rule_any = {
- type = {
- "dialog",
- },
- class = {
- "Steam",
- "discord",
- "music",
- "scratchpad",
- },
- instance = {
- "music",
- "scratchpad",
- },
- role = {
- "GtkFileChooserDialog",
- "conversation",
- },
- },
- properties = { placement = centered_client_placement },
- },
-
- -- Titlebars ON (explicitly)
- {
- rule_any = {
- type = {
- "dialog",
- },
- role = {
- "conversation",
- },
- },
- callback = function(c)
- decorations.show(c)
- end,
- },
-
- -- "Needy": Clients that steal focus when they are urgent
- {
- rule_any = {
- class = {
- "TelegramDesktop",
- "firefox",
- "Nightly",
- },
- type = {
- "dialog",
- },
- },
- callback = function(c)
- c:connect_signal("property::urgent", function()
- if c.urgent then
- c:jump_to()
- end
- end)
- end,
- },
-
- -- Fixed terminal geometry for floating terminals
- {
- rule_any = {
- class = {
- "Alacritty",
- "Termite",
- "mpvtube",
- "kitty",
- "st-256color",
- "st",
- "URxvt",
- },
- },
- properties = { width = screen_width * 0.45, height = screen_height * 0.5 },
- },
-
- -- File chooser dialog
- {
- rule_any = { role = { "GtkFileChooserDialog" } },
- properties = { floating = true, width = screen_width * 0.55, height = screen_height * 0.65 },
- },
-
- -- Pavucontrol
- {
- rule_any = { class = { "Pavucontrol" } },
- properties = { floating = true, width = screen_width * 0.45, height = screen_height * 0.8 },
- },
-
- -- Galculator
- {
- rule_any = { class = { "Galculator" } },
- except_any = { type = { "dialog" } },
- properties = { floating = true, width = screen_width * 0.2, height = screen_height * 0.4 },
- },
-
- -- File managers
- {
- rule_any = {
- class = {
- "Pcmanfm",
- "Nemo",
- "Thunar",
- },
- },
- except_any = {
- type = { "dialog" },
- },
- properties = { floating = true, width = screen_width * 0.45, height = screen_height * 0.55 },
- },
-
- -- Scratchpad
- {
- rule_any = {
- instance = {
- "scratchpad",
- "markdown_input",
- },
- class = {
- "scratchpad",
- "markdown_input",
- },
- },
- properties = {
- skip_taskbar = false,
- floating = true,
- ontop = false,
- minimized = true,
- sticky = false,
- width = screen_width * 0.7,
- height = screen_height * 0.75,
- },
- },
-
- -- Music clients (usually a terminal running ncmpcpp)
- {
- rule_any = {
- class = {
- "music",
- },
- instance = {
- "music",
- },
- },
- properties = {
- floating = true,
- width = screen_width * 0.45,
- height = screen_height * 0.50,
- },
- },
-
- -- Image viewers
- {
- rule_any = {
- class = {
- "feh",
- "Sxiv",
- },
- },
- properties = {
- floating = true,
- width = screen_width * 0.7,
- height = screen_height * 0.75,
- },
- callback = function(c)
- awful.placement.centered(c, { honor_padding = true, honor_workarea = true })
- end,
- },
-
- -- Steam guard
- {
- rule = { name = "Steam Guard - Computer Authorization Required" },
- properties = { floating = true },
- -- Such a stubborn window, centering it does not work
- -- callback = function(c)
- -- gears.timer.delayed_call(function()
- -- awful.placement.centered(c,{honor_padding = true, honor_workarea=true})
- -- end)
- -- end
- },
-
- -- MPV
- {
- rule = { class = "mpv" },
- properties = {},
- callback = function(c)
- -- Make it floating, ontop and move it out of the way if the current tag is maximized
- if awful.layout.get(awful.screen.focused()) == awful.layout.suit.max then
- c.floating = true
- c.ontop = true
- c.width = screen_width * 0.30
- c.height = screen_height * 0.35
- awful.placement.bottom_right(c, {
- honor_padding = true,
- honor_workarea = true,
- margins = { bottom = beautiful.useless_gap * 2, right = beautiful.useless_gap * 2 },
- })
- end
-
- -- Restore `ontop` after fullscreen is disabled
- -- Sorta tries to fix: https://github.com/awesomeWM/awesome/issues/667
- c:connect_signal("property::fullscreen", function()
- if not c.fullscreen then
- c.ontop = true
- end
- end)
- end,
- },
-
- -- Start application on specific workspace
- -- ===================================================================
- -- Browsing
- {
- rule_any = {
- class = {
- "firefox",
- "Nightly",
- "Vivaldi-stable",
- },
- },
- except_any = {
- role = { "GtkFileChooserDialog" },
- instance = { "Toolkit" },
- type = { "dialog" },
- },
- properties = { screen = 1, tag = awful.screen.focused().tags[1] },
- },
-
- -- Editing
- {
- rule_any = {
- class = {
- "^editor$",
- "VSCodium",
- },
- },
- properties = { screen = 1, tag = awful.screen.focused().tags[2] },
- },
-
- -- Games
- {
- rule_any = {
- class = {
- "Wine",
- },
- instance = {},
- },
- properties = { screen = 1, tag = awful.screen.focused().tags[3] },
- },
-
- -- Chatting
- {
- rule_any = {
- class = {
- "discord",
- "Signal",
- "Slack",
- "zoom",
- },
- },
- properties = { screen = 1, tag = awful.screen.focused().tags[4] },
- },
-
- -- System monitoring
- {
- rule_any = {
- class = {
- "htop",
- "bottom",
- },
- instance = {
- "htop",
- "bottom",
- },
- },
- properties = { screen = 1, tag = awful.screen.focused().tags[5] },
- },
-
- -- Image editing
- {
- rule_any = {
- class = {
- "Gimp",
- },
- },
- properties = { screen = 1, tag = awful.screen.focused().tags[6] },
- },
-
- -- Mail
- {
- rule_any = {
- class = {
- "email",
- },
- instance = {
- "email",
- },
- },
- properties = { screen = 1, tag = awful.screen.focused().tags[7] },
- },
-
- -- Game clients/launchers
- {
- rule_any = {
- class = {
- "Steam",
- "battle.net.exe",
- "Lutris",
- },
- name = {
- "Steam",
- },
- },
- properties = { screen = 1, tag = awful.screen.focused().tags[8] },
- },
-
- -- Miscellaneous
- -- All clients that I want out of my way when they are running
- {
- rule_any = {
- class = {
- "torrent",
- "Transmission",
- "Deluge",
- "VirtualBox Manager",
- "KeePassXC",
- },
- instance = {
- "torrent",
- "qemu",
- },
- },
- except_any = {
- type = { "dialog" },
- },
- properties = { screen = 1, tag = awful.screen.focused().tags[10] },
- },
-}
-
--- Signals
--- ===================================================================
-if beautiful.border_width > 0 then
- client.connect_signal("focus", function(c)
- c.border_color = beautiful.border_focus
- end)
- client.connect_signal("unfocus", function(c)
- c.border_color = beautiful.border_normal
- end)
-end
-
--- Set mouse resize mode (live or after)
-awful.mouse.resize.set_mode("live")
-
--- Restore geometry for floating clients
--- (for example after swapping from tiling mode to floating mode)
-tag.connect_signal("property::layout", function(t)
- for k, c in ipairs(t:clients()) do
- if awful.layout.get(mouse.screen) == awful.layout.suit.floating then
- local cgeo = awful.client.property.get(c, "floating_geometry")
- if cgeo then
- c:geometry(awful.client.property.get(c, "floating_geometry"))
- end
- end
- end
-end)
-
-client.connect_signal("manage", function(c)
- if awful.layout.get(mouse.screen) == awful.layout.suit.floating then
- awful.client.property.set(c, "floating_geometry", c:geometry())
- end
-end)
-
-client.connect_signal("property::geometry", function(c)
- if awful.layout.get(mouse.screen) == awful.layout.suit.floating then
- awful.client.property.set(c, "floating_geometry", c:geometry())
- end
-end)
-
--- When switching to a tag with urgent clients, raise them.
--- This fixes the issue (visual mismatch) where after switching to
--- a tag which includes an urgent client, the urgent client is
--- unfocused but still covers all other windows (even the currently
--- focused window).
-awful.tag.attached_connect_signal(s, "property::selected", function()
- local urgent_clients = function(c)
- return awful.rules.match(c, { urgent = true })
- end
- for c in awful.client.iterate(urgent_clients) do
- if c.first_tag == mouse.screen.selected_tag then
- client.focus = c
- end
- end
-end)
-
--- Enable sloppy focus, so that focus follows mouse.
--- client.connect_signal("mouse::enter", function(c)
--- c:activate { context = "mouse_enter", raise = false }
--- end)
-
--- Raise focused clients automatically
-client.connect_signal("focus", function(c)
- c:raise()
-end)
-
--- Focus all urgent clients automatically
--- client.connect_signal("property::urgent", function(c)
--- if c.urgent then
--- c.minimized = false
--- c:jump_to()
--- end
--- end)
-
--- Disable ontop when the client is not floating, and restore ontop if needed
--- when the client is floating again
--- I never want a non floating client to be ontop.
-client.connect_signal("property::floating", function(c)
- if c.floating then
- if c.restore_ontop then
- c.ontop = c.restore_ontop
- end
- else
- c.restore_ontop = c.ontop
- c.ontop = false
- end
-end)
-
--- Hide all windows when a splash is shown
-awesome.connect_signal("widgets::splash::visibility", function(vis)
- local t = screen.primary.selected_tag
- if vis then
- for idx, c in ipairs(t:clients()) do
- c.hidden = true
- end
- else
- for idx, c in ipairs(t:clients()) do
- c.hidden = false
- end
- end
-end)
-
--- Decorations
--- ===================================================================
-local wibox = require("wibox")
--- Apply rounded corners to clients if needed
-if beautiful.border_radius and beautiful.border_radius > 0 then
- client.connect_signal("manage", function(c, startup)
- if not c.fullscreen and not c.maximized then
- c.shape = helpers.rrect(beautiful.border_radius)
- end
- end)
-
- -- Fullscreen and maximized clients should not have rounded corners
- local function no_round_corners(c)
- if c.fullscreen or c.maximized then
- c.shape = gears.shape.rectangle
- else
- c.shape = helpers.rrect(beautiful.border_radius)
- end
- end
-
- client.connect_signal("property::fullscreen", no_round_corners)
- client.connect_signal("property::maximized", no_round_corners)
-
- beautiful.snap_shape = helpers.rrect(beautiful.border_radius * 2)
-else
- beautiful.snap_shape = gears.shape.rectangle
-end
-
-function decorations.show(c)
- if not c.custom_decoration or not c.custom_decoration[beautiful.titlebar_position] then
- awful.titlebar.show(c, beautiful.titlebar_position)
- end
-end
-
--- Dummy titlebar
-client.connect_signal("request::titlebars", function(c)
- awful.titlebar(c)
-end)
-
--- Startup apps
--- ===================================================================
--- Spawn once
--- awful.spawn.once({}, false)
--- With shell
--- awful.spawn.with_shell({}, false)
-
--- Garbage collection
--- ===================================================================
-collectgarbage("setpause", 110)
-collectgarbage("setstepmul", 1000)
diff --git a/modules/home-manager/ricing/awesomewm/gruv/themes/gruva/init.lua b/modules/home-manager/ricing/awesomewm/gruv/themes/gruva/init.lua
deleted file mode 100644
index a8d0027..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/themes/gruva/init.lua
+++ /dev/null
@@ -1,733 +0,0 @@
--- ░█▀▀░█▀█░█▀█░█▀▀░▀█▀░█▀▀░█░█░█▀▄░█▀█░▀█▀░▀█▀░█▀█░█▀█
--- ░█░░░█░█░█░█░█▀▀░░█░░█░█░█░█░█▀▄░█▀█░░█░░░█░░█░█░█░█
--- ░▀▀▀░▀▀▀░▀░▀░▀░░░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀░▀░░▀░░▀▀▀░▀▀▀░▀░▀
-
-local gears = require("gears")
-local awful = require("awful")
-local wibox = require("wibox")
-local beautiful = require("beautiful")
-local naughty = require("naughty")
-local menubar = require("menubar")
-local keys = require("keys")
-local helpers = require("helpers")
-local awesome = awesome
-local client = client
-
--- ░█░█░▀█▀░█▀▄░█▀▀░█▀▀░▀█▀░█▀▀
--- ░█▄█░░█░░█░█░█░█░█▀▀░░█░░▀▀█
--- ░▀░▀░▀▀▀░▀▀░░▀▀▀░▀▀▀░░▀░░▀▀▀
-
--- Memory widget
--- ===================================================================
-local memory_widget = wibox.widget({
- {
- {
- {
- {
- id = "icon",
- text = "",
- forced_width = dpi(30),
- align = "center",
- valign = "center",
- font = beautiful.wibar_icon_font,
- widget = wibox.widget.textbox,
- },
- -- fixing font centering
- right = dpi(3),
- widget = wibox.container.margin,
- },
- bg = beautiful.darkblue,
- fg = beautiful.light_bg,
- widget = wibox.widget.background,
- },
- {
- {
- id = "text",
- font = beautiful.wibar_font,
- widget = wibox.widget.textbox,
- },
- left = dpi(5),
- right = dpi(5),
- widget = wibox.container.margin,
- },
- layout = wibox.layout.fixed.horizontal,
- },
- fg = beautiful.light_bg,
- bg = beautiful.blue,
- widget = wibox.container.background,
-})
-
-awesome.connect_signal("evil::ram", function(used, total)
- memory_widget:get_children_by_id("text")[1].markup = tostring(used) .. " MB"
-end)
-
--- Clock widget
--- ===================================================================
-local clock_widget = wibox.widget({
- {
- {
- {
- {
- id = "icon",
- text = "",
- forced_width = dpi(30),
- align = "center",
- valign = "center",
- font = beautiful.wibar_icon_font,
- widget = wibox.widget.textbox,
- },
- -- fixing font centering
- right = dpi(3),
- widget = wibox.container.margin,
- },
- bg = beautiful.darkgreen,
- fg = beautiful.light_bg,
- widget = wibox.widget.background,
- },
- {
- {
- id = "text",
- format = "%a %b %d - %I:%M %p",
- font = beautiful.wibar_font,
- widget = wibox.widget.textclock,
- },
- left = dpi(5),
- right = dpi(5),
- widget = wibox.container.margin,
- },
- layout = wibox.layout.fixed.horizontal,
- },
- fg = beautiful.light_bg,
- bg = beautiful.green,
- widget = wibox.container.background,
-})
-
--- CPU widget
--- ===================================================================
-local cpu_widget = wibox.widget({
- {
- {
- {
- {
- id = "icon",
- text = "",
- forced_width = dpi(30),
- align = "center",
- valign = "center",
- font = beautiful.wibar_icon_font,
- widget = wibox.widget.textbox,
- },
- -- fixing font centering
- right = dpi(5),
- widget = wibox.container.margin,
- },
- bg = beautiful.cyan,
- fg = beautiful.light_bg,
- widget = wibox.widget.background,
- },
- {
- {
- id = "text",
- font = beautiful.wibar_font,
- widget = wibox.widget.textbox,
- },
- left = dpi(5),
- right = dpi(5),
- widget = wibox.container.margin,
- },
- layout = wibox.layout.fixed.horizontal,
- },
- fg = beautiful.cyan,
- bg = beautiful.light_bg,
- widget = wibox.container.background,
-})
-
-awesome.connect_signal("evil::cpu", function(cpu_idle)
- cpu_widget:get_children_by_id("text")[1].markup = tostring(cpu_idle) .. "%"
-end)
-
--- Weather widget
--- ===================================================================
-local weather_widget = wibox.widget({
- {
- {
- {
- id = "icon",
- text = "",
- forced_width = dpi(30),
- align = "center",
- valign = "center",
- font = beautiful.wibar_icon_font,
- widget = wibox.widget.textbox,
- },
- bg = beautiful.magenta,
- fg = beautiful.light_bg,
- widget = wibox.widget.background,
- },
- {
- {
- {
- id = "description",
- font = beautiful.wibar_font,
- widget = wibox.widget.textbox,
- },
- nil,
- {
- id = "temp_current",
- align = "right",
- font = beautiful.wibar_font,
- widget = wibox.widget.textbox,
- },
- widget = wibox.layout.align.horizontal,
- },
- left = dpi(5),
- right = dpi(5),
- widget = wibox.container.margin,
- },
- layout = wibox.layout.fixed.horizontal,
- },
- fg = beautiful.magenta,
- bg = beautiful.light_bg,
- widget = wibox.container.background,
-})
-
-awesome.connect_signal("evil::weather", function(result)
- weather_widget:get_children_by_id("description")[1].markup = result.current.weather[1].description:gsub(
- "^%l",
- string.upper
- ) .. ", "
- weather_widget:get_children_by_id("temp_current")[1].markup = math.floor(result.current.temp)
- .. "°C"
-end)
-
--- Playerctl widget
--- ===================================================================
-local playerctl_widget = wibox.widget({
- {
- {
- {
- id = "icon",
- text = "",
- forced_width = dpi(30),
- align = "center",
- valign = "center",
- font = beautiful.wibar_icon_font,
- widget = wibox.widget.textbox,
- },
- bg = beautiful.red,
- fg = beautiful.light_bg,
- widget = wibox.widget.background,
- },
- {
- {
- id = "text",
- text = "Not Playing",
- font = beautiful.wibar_font,
- align = "center",
- forced_width = dpi(100),
- widget = wibox.widget.textbox,
- },
- left = dpi(10),
- right = dpi(10),
- widget = wibox.container.margin,
- },
- layout = wibox.layout.fixed.horizontal,
- },
- fg = beautiful.red,
- bg = beautiful.light_bg,
- widget = wibox.container.background,
-})
-
-awesome.connect_signal("evil::playerctl", function(artist, title, status)
- playerctl_widget:get_children_by_id("text")[1].markup = title
-end)
-
-playerctl_widget:buttons(gears.table.join(
- -- left click = all players
- awful.button({}, 1, function()
- awful.spawn.with_shell("playerctl play-pause")
- end)
- -- right click = specific player
- -- awful.button({}, 3, function()
- -- awful.spawn.with_shell("mpvc toggle")
- -- end)
-))
-
--- Volume bar widget
--- ===================================================================
-local volume_bar = wibox.widget({
- max_value = 100,
- value = 70,
- forced_width = dpi(100),
- shape = helpers.rrect(dpi(6)),
- bar_shape = helpers.rrect(dpi(6)),
- color = beautiful.bg_focus,
- background_color = beautiful.light_bg,
- widget = wibox.widget.progressbar,
-})
-
-awesome.connect_signal("evil::volume", function(volume, muted)
- volume_bar.value = volume
-
- if muted then
- volume_bar.color = beautiful.light_bg
- else
- volume_bar.color = beautiful.bg_focus
- end
-end)
-
--- Battery bar widget
--- ===================================================================
-local battery_bar = wibox.widget({
- max_value = 100,
- value = 50,
- forced_width = dpi(100),
- shape = helpers.rrect(dpi(6)),
- bar_shape = helpers.rrect(dpi(6)),
- color = beautiful.bg_focus,
- background_color = beautiful.light_bg,
- widget = wibox.widget.progressbar,
-})
-
-awesome.connect_signal("evil::battery", function(value)
- battery_bar.value = value
-end)
-
--- Osd
--- ===================================================================
-local slider = wibox.widget({
- widget = wibox.widget.progressbar,
- max_value = 100,
- forced_width = dpi(380),
- forced_height = dpi(10),
- shape = gears.shape.rounded_bar,
- bar_shape = gears.shape.rounded_bar,
- background_color = beautiful.light_bg,
- color = beautiful.bg_focus,
-})
-
-local icon_widget = wibox.widget({
- widget = wibox.widget.textbox,
- font = beautiful.icon_font_name .. "15",
- forced_width = dpi(30),
- align = "center",
- valign = "center",
-})
-
-local text = wibox.widget({
- widget = wibox.widget.textbox,
- halign = "center",
-})
-
-local info = wibox.widget({
- layout = wibox.layout.fixed.horizontal,
- {
- widget = wibox.container.margin,
- margins = dpi(20),
- {
- layout = wibox.layout.fixed.horizontal,
- fill_space = true,
- spacing = dpi(8),
- icon_widget,
- {
- widget = wibox.container.background,
- forced_width = dpi(36),
- text,
- },
- slider,
- },
- },
-})
-
-local osd = awful.popup({
- shape = helpers.rrect(beautiful.border_radius),
- visible = false,
- ontop = true,
- border_width = beautiful.widget_border_width,
- border_color = beautiful.widget_border_color,
- minimum_height = dpi(60),
- maximum_height = dpi(60),
- minimum_width = dpi(290),
- maximum_width = dpi(290),
- placement = function(c)
- awful.placement.bottom(c, { margins = dpi(20) + beautiful.border_width * 2 })
- end,
- widget = info,
-})
-
--- volume
-awesome.connect_signal("evil::volume", function(volume, muted, icon)
- slider.value = volume
- text.text = volume
- icon_widget.text = icon
-end)
-
--- bright
-awesome.connect_signal("evil::brightness", function(value)
- slider.value = value
- text.text = value
- icon_widget.text = ""
-end)
-
--- function
-local function osd_hide()
- osd.visible = false
- osd_timer:stop()
-end
-
-local osd_timer = gears.timer({
- timeout = 3,
- callback = osd_hide,
-})
-
-local function osd_toggle()
- if not osd.visible then
- osd.visible = true
- osd_timer:start()
- else
- osd_timer:again()
- end
-end
-
-awesome.connect_signal("summon::osd", function()
- osd_toggle()
-end)
-
--- ░█░█░▀█▀░█▀▄░█▀█░█▀▄
--- ░█▄█░░█░░█▀▄░█▀█░█▀▄
--- ░▀░▀░▀▀▀░▀▀░░▀░▀░▀░▀
--- Create a wibox for each screen and add it
-awful.screen.connect_for_each_screen(function(s)
- -- Create a promptbox for each screen
- s.mypromptbox = awful.widget.prompt({ prompt = " Run: ", fg = beautiful.wibar_fg })
- -- Create an imagebox widget which will contain an icon indicating which layout we're using.
- -- We need one layoutbox per screen.
- s.mylayoutbox = {
- widget = wibox.container.place,
- awful.widget.layoutbox({
- screen = s,
- resize = true,
- forced_width = dpi(15),
- forced_height = dpi(15),
- widget = wibox.container.place,
- -- Add buttons, allowing you to change the layout
- buttons = {
- awful.button({}, 1, function()
- awful.layout.inc(1)
- end),
- awful.button({}, 3, function()
- awful.layout.inc(-1)
- end),
- awful.button({}, 4, function()
- awful.layout.inc(1)
- end),
- awful.button({}, 5, function()
- awful.layout.inc(-1)
- end),
- },
- }),
- }
-
- -- Create a taglist widget
- -- Helper function that updates a taglist item
- local update_taglist = function(self, tag, index)
- local tagBox = self:get_children_by_id("underline")[1]
- local tagName = self:get_children_by_id("index_role")[1]
- if tag.selected then
- tagName.markup = helpers.colorize_text(
- beautiful.taglist_text_focused[index],
- beautiful.taglist_text_color_focused[index]
- )
- tagBox.bg = beautiful.taglist_text_color_occupied[index]
- elseif tag.urgent then
- tagName.markup =
- helpers.colorize_text(beautiful.taglist_text_urgent[index], beautiful.taglist_text_color_urgent[index])
- tagBox.bg = beautiful.wibar_bg
- elseif #tag:clients() > 0 then
- tagName.markup = helpers.colorize_text(
- beautiful.taglist_text_occupied[index],
- beautiful.taglist_text_color_occupied[index]
- )
- tagBox.bg = beautiful.wibar_bg
- else
- tagName.markup =
- helpers.colorize_text(beautiful.taglist_text_empty[index], beautiful.taglist_text_color_empty[index])
- tagBox.bg = beautiful.wibar_bg
- end
- end
-
- s.mytaglist = awful.widget.taglist({
- screen = s,
- filter = awful.widget.taglist.filter.all,
- layout = wibox.layout.fixed.horizontal,
- buttons = keys.taglist_buttons,
- widget_template = {
- {
- {
- layout = wibox.layout.fixed.vertical,
- {
- {
- id = "index_role",
- font = beautiful.taglist_text_font,
- align = "center",
- valign = "center",
- forced_width = dpi(24),
- widget = wibox.widget.textbox,
- },
- top = dpi(0),
- right = dpi(4),
- bottom = dpi(-1),
- widget = wibox.container.margin,
- },
- {
- {
- top = dpi(0),
- bottom = dpi(3),
- widget = wibox.container.margin,
- },
- id = "underline",
- bg = beautiful.wibar_bg,
- shape = gears.shape.rectangle,
- widget = wibox.container.background,
- },
- },
- widget = wibox.container.margin,
- right = dpi(4),
- },
- id = "background_role",
- widget = wibox.container.background,
- shape = gears.shape.rectangle,
- create_callback = update_taglist,
- update_callback = update_taglist,
- },
- })
-
- -- Create a tasklist widget
- s.mytasklist = awful.widget.tasklist({
- screen = s,
- filter = awful.widget.tasklist.filter.currenttags,
- buttons = keys.tasklist_buttons,
- style = {
- font = beautiful.tasklist_font,
- bg = beautiful.tasklist_bg_normal,
- },
- layout = {
- spacing = dpi(4),
- -- layout = wibox.layout.fixed.horizontal
- layout = wibox.layout.flex.horizontal,
- },
- widget_template = {
- {
- {
- {
- {
- id = "icon_role",
- widget = wibox.widget.imagebox,
- },
- margins = dpi(2),
- widget = wibox.container.margin,
- },
- {
- id = "text_role",
- widget = wibox.widget.textbox,
- },
- layout = wibox.layout.fixed.horizontal,
- },
- forced_width = dpi(220),
- left = dpi(10),
- right = dpi(10),
- widget = wibox.container.margin,
- },
- -- border_width = dpi(2),
- -- shape = gears.shape.rounded_bar,
- -- id = "bg_role",
- id = "background_role",
- widget = wibox.container.background,
- },
- })
-
- -- Create a system tray widget
- s.systray = wibox.widget.systray()
- s.systray.visible = true -- can be toggled by a keybind
-
- -- Create the wibox
- s.mywibox = awful.wibar({
- position = beautiful.wibar_position,
- screen = s,
- type = "dock",
- width = beautiful.wibar_width,
- height = beautiful.wibar_height,
- shape = helpers.rrect(beautiful.wibar_border_radius),
- })
-
- s.mywibox:setup({
- {
- {
- s.mytaglist,
- s.mytasklist,
- align = "left",
- spacing = dpi(10),
- layout = wibox.layout.fixed.horizontal,
- },
- {
- s.mypromptbox,
- playerctl_widget,
- -- volume_bar,
- -- battery_bar,
- align = "center",
- spacing = dpi(10),
- layout = wibox.layout.fixed.horizontal,
- },
- {
- weather_widget,
- memory_widget,
- cpu_widget,
- clock_widget,
- s.systray,
- s.mylayoutbox,
- align = "right",
- spacing = dpi(10),
- layout = wibox.layout.fixed.horizontal,
- },
- expand = "none",
- layout = wibox.layout.align.horizontal,
- },
- top = dpi(3),
- bottom = dpi(3),
- left = dpi(3),
- right = dpi(3),
- widget = wibox.container.margin,
- })
-
- -- Place bar at the top and add margins
- awful.placement.top(s.mywibox, { margins = beautiful.screen_margin * 0 }) -- No margin
-end)
-
--- ░█▀█░█▀█░▀█▀░▀█▀░█▀█░█▀█░█▀▀
--- ░█░█░█▀▀░░█░░░█░░█░█░█░█░▀▀█
--- ░▀▀▀░▀░░░░▀░░▀▀▀░▀▀▀░▀░▀░▀▀▀
-
--- Notification settings
--- ===================================================================
--- Handle notification icon
-naughty.connect_signal("request::icon", function(n, context, hints)
- -- Handle other contexts here
- if context ~= "app_icon" then
- n.icon = beautiful.awesome_icon
- return
- end
-
- -- Use XDG icon
- local path = menubar.utils.lookup_icon(hints.app_icon) or menubar.utils.lookup_icon(hints.app_icon:lower())
-
- if path then
- n.icon = path
- end
-end)
-
-naughty.connect_signal("request::display", function(n)
- naughty.layout.box({
- notification = n,
- type = "notification",
- cursor = "hand1",
- shape = beautiful.notification_shape,
- maximum_width = beautiful.notification_max_width,
- maximum_height = beautiful.notification_max_height,
- widget_template = {
- widget = wibox.container.constraint,
- strategy = "max",
- {
- widget = naughty.container.background,
- id = "background_role",
- {
- widget = wibox.container.margin,
- margins = dpi(10),
- {
- layout = wibox.layout.fixed.horizontal,
- spacing = dpi(20),
- fill_space = true,
- {
- widget = wibox.container.place,
- {
- widget = wibox.container.background,
- shape = gears.shape.circle,
- naughty.widget.icon,
- },
- },
- {
- layout = wibox.layout.fixed.vertical,
- spacing = dpi(10),
- naughty.widget.title,
- naughty.widget.message,
- },
- },
- },
- },
- },
- })
-end)
-
--- Titlebar
--- ===================================================================
-client.connect_signal("request::titlebars", function(c)
- local titlebar = awful.titlebar(c, {
- position = beautiful.titlebar_position,
- size = beautiful.titlebar_size,
- })
-
- local buttons = gears.table.join(
- awful.button({}, 1, function()
- client.focus = c
- c:raise()
- awful.mouse.client.move(c)
- end),
- awful.button({}, 3, function()
- client.focus = c
- c:raise()
- awful.mouse.client.resize(c)
- end)
- )
-
- titlebar.widget = {
- layout = wibox.layout.flex.horizontal,
- -- {
- -- widget = wibox.container.place,
- -- align = "left",
- -- {
- -- widget = wibox.container.margin,
- -- margins = { left = dpi(10), right = dpi(10) top = dpi(8), bottom = dpi(8) },
- -- {
- -- layout = wibox.layout.fixed.horizontal,
- -- spacing = 8,
- -- awful.titlebar.widget.maximizedbutton(c),
- -- awful.titlebar.widget.minimizebutton(c),
- -- awful.titlebar.widget.closebutton(c),
- -- },
- -- },
- -- },
- {
- widget = wibox.container.background,
- buttons = buttons,
- {
- widget = wibox.container.margin,
- left = dpi(10),
- right = dpi(10),
- {
- widget = wibox.container.constraint,
- width = dpi(100),
- {
- align = beautiful.titlebar_title_align,
- widget = awful.titlebar.widget.titlewidget(c),
- },
- },
- },
- },
- }
-end)
-
--- Startup apps
--- ===================================================================
--- awful.spawn.once({},false)
--- With shell
--- awful.spawn.with_shell({}, false)
--- EOF ------------------------------------------------------------------------
diff --git a/modules/home-manager/ricing/awesomewm/gruv/themes/gruva/theme.lua b/modules/home-manager/ricing/awesomewm/gruv/themes/gruva/theme.lua
deleted file mode 100644
index 1d49387..0000000
--- a/modules/home-manager/ricing/awesomewm/gruv/themes/gruva/theme.lua
+++ /dev/null
@@ -1,309 +0,0 @@
--- ░▀█▀░█░█░█▀▀░█▄█░█▀▀
--- ░░█░░█▀█░█▀▀░█░█░█▀▀
--- ░░▀░░▀░▀░▀▀▀░▀░▀░▀▀▀
-
-local theme_assets = require("beautiful.theme_assets")
-local xresources = require("beautiful.xresources")
-local dpi = xresources.apply_dpi
-local xrdb = xresources.get_current_theme()
-local gears = require("gears")
-local gfs = require("gears.filesystem")
-local helpers = require("helpers")
-local rnotification = require("ruled.notification")
-local themes_path = gfs.get_themes_dir()
-local theme = {}
-
--- Default wallpaper
-theme.wallpaper = os.getenv("HOME") .. "/Pictures/wall.png"
-
--- ░█▀▀░█▀█░█▀█░▀█▀░█▀▀
--- ░█▀▀░█░█░█░█░░█░░▀▀█
--- ░▀░░░▀▀▀░▀░▀░░▀░░▀▀▀
-
-theme.font_name = "monospace "
-theme.font = theme.font_name .. "10"
-theme.wibar_font = theme.font_name .. "Bold 10"
-theme.icon_font_name = "monospace "
-theme.wibar_icon_font = theme.font_name .. "12"
-
--- ░█▀▀░█▀█░█░░░█▀█░█▀▄░█▀▀
--- ░█░░░█░█░█░░░█░█░█▀▄░▀▀█
--- ░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀
-
--- Colors
-theme.black = xrdb.color0
-theme.black_alt = xrdb.color8
-theme.red = xrdb.color1
-theme.darkred = helpers.lighten(theme.red, -10)
-theme.green = xrdb.color2
-theme.darkgreen = helpers.lighten(theme.green, -10)
-theme.yellow = xrdb.color3
-theme.darkyellow = helpers.lighten(theme.yellow, -10)
-theme.blue = xrdb.color4
-theme.darkblue = helpers.lighten(theme.blue, -10)
-theme.magenta = xrdb.color5
-theme.darkmagenta = helpers.lighten(theme.magenta, -10)
-theme.cyan = xrdb.color6
-theme.darkcyan = helpers.lighten(theme.cyan, -10)
-theme.white = xrdb.color7
-theme.white_alt = xrdb.color15
-theme.light_bg = helpers.lighten(theme.black, 5)
-theme.transparent = "#00000000"
-
--- Background Colors
-theme.bg_normal = theme.black
-theme.bg_focus = theme.blue
-theme.bg_urgent = theme.red
-theme.bg_minimize = theme.black
-
--- Foreground Colors
-theme.fg_normal = theme.white
-theme.fg_focus = theme.black
-theme.fg_urgent = theme.white
-theme.fg_minimize = theme.black_alt
-
---- ░█░█░▀█▀░░░█▀▀░█░░░█▀▀░█▄█░█▀▀░█▀█░▀█▀░█▀▀
---- ░█░█░░█░░░░█▀▀░█░░░█▀▀░█░█░█▀▀░█░█░░█░░▀▀█
---- ░▀▀▀░▀▀▀░░░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀░▀░▀░░▀░░▀▀▀
-
--- Borders
--- ===================================================================
-theme.border_width = dpi(3)
-theme.border_normal = theme.light_bg
-theme.border_focus = theme.blue
-theme.border_radius = dpi(15)
-theme.widget_border_width = dpi(2)
-theme.widget_border_color = theme.light_bg
-
--- Wibar
--- ===================================================================
-theme.wibar_position = "top"
-theme.wibar_height = dpi(27)
-theme.wibar_width = dpi(1366)
-theme.wibar_bg = theme.black
-theme.wibar_fg = theme.white
-theme.wibar_border_color = theme.black
-theme.wibar_border_width = dpi(0)
-theme.wibar_border_radius = dpi(0)
-
--- Taglist
--- ===================================================================
-theme.taglist_text_font = theme.wibar_ico_font
-theme.taglist_text_empty = { "", "", "", "", "", "", "[]=", "", "", "" }
-theme.taglist_text_occupied = { "", "", "", "", "", "", "[]=", "", "", "" }
-theme.taglist_text_focused = { "", "", "", "", "", "", "[]=", "", "", "" }
-theme.taglist_text_urgent = { "", "", "", "", "", "", "", "", "", "" }
-
-theme.taglist_text_color_empty = {
- theme.black_alt,
- theme.black_alt,
- theme.black_alt,
- theme.black_alt,
- theme.black_alt,
- theme.black_alt,
- theme.black_alt,
- theme.black_alt,
- theme.black_alt,
- theme.black_alt,
-}
-theme.taglist_text_color_occupied = {
- theme.blue,
- theme.green,
- theme.yellow,
- theme.red,
- theme.cyan,
- theme.magenta,
- theme.cyan,
- theme.cyan,
- theme.cyan,
- theme.cyan,
-}
-theme.taglist_text_color_focused = {
- theme.blue,
- theme.green,
- theme.yellow,
- theme.red,
- theme.cyan,
- theme.magenta,
- theme.cyan,
- theme.cyan,
- theme.cyan,
- theme.cyan,
-}
-theme.taglist_text_color_urgent = {
- theme.blue,
- theme.green,
- theme.yellow,
- theme.red,
- theme.cyan,
- theme.magenta,
- theme.cyan,
- theme.cyan,
- theme.cyan,
- theme.cyan,
-}
-
--- Text Taglist (default)
-theme.taglist_font = theme.wibar_font
-theme.taglist_bg_focus = theme.wibar_bg
-theme.taglist_fg_focus = theme.fg_focus
-theme.taglist_bg_occupied = theme.wibar_bg
-theme.taglist_fg_occupied = theme.fg_normal
-theme.taglist_bg_empty = theme.wibar_bg
-theme.taglist_fg_empty = theme.black_alt
-theme.taglist_bg_urgent = theme.wibar_bg
-theme.taglist_fg_urgent = theme.fg_urgent
-theme.taglist_disable_icon = true
-theme.taglist_spacing = dpi(0)
-local taglist_square_size = dpi(0)
-theme.taglist_squares_sel = theme_assets.taglist_squares_sel(taglist_square_size, theme.fg_focus)
-theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(taglist_square_size, theme.fg_normal)
-
--- Tasklist
--- ===================================================================
-theme.tasklist_font = theme.font
-theme.tasklist_disable_icon = false
-theme.tasklist_plain_task_name = true
-theme.tasklist_bg_focus = theme.wibar_bg
-theme.tasklist_fg_focus = theme.fg_normal
-theme.tasklist_bg_normal = theme.wibar_bg
-theme.tasklist_fg_normal = theme.black_alt
-theme.tasklist_bg_minimize = theme.bg_minimize
-theme.tasklist_fg_minimize = theme.fg_minimize
-theme.tasklist_bg_urgent = theme.bg_urgent
-theme.tasklist_fg_urgent = theme.fg_urgent
-theme.tasklist_align = "left"
-
---- Titlebar
--- ===================================================================
-theme.titlebars_enabled = false
-theme.titlebar_size = dpi(32)
-theme.titlebar_title_enabled = true
-theme.titlebar_font = theme.font
-theme.titlebar_title_align = "right"
-theme.titlebar_position = "top"
-theme.titlebar_bg = theme.bg_normal
--- theme.titlebar_bg_focus = theme.bg_focus
--- theme.titlebar_bg_normal = theme.bg_normal
--- theme.titlebar_fg = theme.fg_normal
--- theme.titlebar_fg_focus = theme.fg_focus
--- theme.titlebar_fg_normal = theme.fg_normal
-
--- Menu
--- Variables set for theming the menu:
--- ===================================================================
-theme.menu_height = dpi(30)
-theme.menu_width = dpi(150)
-theme.menu_bg_normal = theme.bg_normal
-theme.menu_fg_normal = theme.fg_normal
-theme.menu_bg_focus = theme.bg_focus
-theme.menu_fg_focus = theme.fg_focus
-theme.menu_border_width = theme.widget_border_width
-theme.menu_border_color = theme.widget_border_color
-
--- Gaps
--- ===================================================================
-theme.useless_gap = dpi(8)
-theme.screen_margin = dpi(3)
-
--- Systray
--- ===================================================================
-theme.bg_systray = theme.wibar_bg
-
--- Notifications
--- ===================================================================
-theme.notification_font = theme.font
-theme.notification_bg = theme.bg_normal
-theme.notification_fg = theme.fg_normal
-theme.notification_border_width = theme.widget_border_width
-theme.notification_border_color = theme.widget_border_color
-theme.notification_max_width = dpi(300)
-theme.notification_max_height = dpi(190)
-theme.notification_position = "top_right"
-theme.notification_border_radius = theme.border_radius
-theme.notification_spacing = theme.screen_margin * 2
-theme.notification_shape = helpers.rrect(theme.notification_border_radius)
-
--- Set different colors for notifications.
-rnotification.connect_signal("request::rules", function()
- rnotification.append_rule({
- rule = { urgency = "critical" },
- properties = {
- implicit_timeout = 4,
- bg = theme.bg_urgent,
- fg = theme.fg_urgent,
- font = theme.notification_font,
- position = theme.notification_position,
- border_color = theme.notification_border_color,
- margin = theme.notification_margin,
- },
- })
- rnotification.append_rule({
- rule = { urgency = "normal" },
- properties = {
- implicit_timeout = 4,
- bg = theme.bg_normal,
- fg = theme.fg_normal,
- font = theme.notification_font,
- position = theme.notification_position,
- border_color = theme.notification_border_color,
- margin = theme.notification_margin,
- },
- })
- rnotification.append_rule({
- rule = { urgency = "low" },
- properties = {
- implicit_timeout = 4,
- bg = theme.bg_normal,
- fg = theme.fg_normal,
- font = theme.notification_font,
- position = theme.notification_position,
- border_color = theme.notification_border_color,
- margin = theme.notification_margin,
- },
- })
-end)
-
--- Layout icons
--- ===================================================================
-theme.layout_max = themes_path .. "default/layouts/maxw.png"
-theme.layout_tile = themes_path .. "default/layouts/tilew.png"
-theme.layout_floating = themes_path .. "default/layouts/floatingw.png"
--- not in use layouts
-theme.layout_cornernw = themes_path .. "default/layouts/cornernww.png"
-theme.layout_cornerne = themes_path .. "default/layouts/cornernew.png"
-theme.layout_cornersw = themes_path .. "default/layouts/cornersww.png"
-theme.layout_cornerse = themes_path .. "default/layouts/cornersew.png"
-theme.layout_fairh = themes_path .. "default/layouts/fairhw.png"
-theme.layout_fairv = themes_path .. "default/layouts/fairvw.png"
-theme.layout_magnifier = themes_path .. "default/layouts/magnifierw.png"
-theme.layout_fullscreen = themes_path .. "default/layouts/fullscreenw.png"
-theme.layout_spiral = themes_path .. "default/layouts/spiralw.png"
-theme.layout_dwindle = themes_path .. "default/layouts/dwindlew.png"
-theme.layout_tiletop = themes_path .. "default/layouts/tiletopw.png"
-theme.layout_tilebottom = themes_path .. "default/layouts/tilebottomw.png"
-theme.layout_tileleft = themes_path .. "default/layouts/tileleftw.png"
--- Recolor layout icons
-theme = theme_assets.recolor_layout(theme, theme.red)
--- Layoutlist
-theme.layoutlist_shape_selected = gears.shape.rounded_rect
-theme.layoutlist_bg_selected = theme.bg_focus
-
--- Misc
--- ===================================================================
--- Edge snap
-theme.snap_bg = theme.light_bg
-theme.snap_shape = helpers.rrect(theme.border_radius)
-theme.snap_border_width = theme.widget_border_width
-
--- Hotkeys popup
-theme.hotkeys_modifiers_fg = theme.blue
-
--- Generate Awesome icon:
-theme.awesome_icon = theme_assets.awesome_icon(theme.menu_height, theme.bg_focus, theme.fg_focus)
--- Define the icon theme for application icons. If not set then the icons
--- from /usr/share/icons and /usr/share/icons/hicolor will be used.
-theme.icon_theme = nil
-
-return theme
--- EOF ------------------------------------------------------------------------
diff --git a/modules/home-manager/ricing/catppuccin/default.nix b/modules/home-manager/ricing/catppuccin/default.nix
deleted file mode 100644
index 2be6036..0000000
--- a/modules/home-manager/ricing/catppuccin/default.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{ inputs, ... }:
-
-{
- imports = [
- inputs.catppuccin.homeManagerModules.catppuccin
- ];
-
- catppuccin = {
- enable = true;
- accent = "rosewater";
- flavor = "latte";
-
- pointerCursor.enable = true;
- };
-
- gtk = {
- enable = true;
-
- catppuccin = {
- enable = true;
- accent = "rosewater";
- flavor = "latte";
- gnomeShellTheme = true;
-
- icon = {
- enable = true;
- accent = "rosewater";
- flavor = "latte";
- };
- };
- };
-
- programs.kitty.catppuccin = {
- enable = true;
- flavor = "latte";
- };
-
- programs.neovim.catppuccin = {
- enable = true;
- flavor = "latte";
- };
-
- programs.starship.catppuccin = {
- enable = true;
- flavor = "latte";
- };
-
- programs.zsh.syntaxHighlighting.catppuccin = {
- enable = true;
- flavor = "latte";
- };
-
- qt.style.catppuccin = {
- enable = true;
- accent = "rosewater";
- apply = true;
- flavor = "latte";
- };
-}
\ No newline at end of file
diff --git a/modules/home-manager/ricing/default.nix b/modules/home-manager/ricing/default.nix
index 1f3ddbf..332f59f 100644
--- a/modules/home-manager/ricing/default.nix
+++ b/modules/home-manager/ricing/default.nix
@@ -8,16 +8,16 @@
];
# GTK theming
- gtk.enable = true;
+ #gtk.enable = true;
- gtk.iconTheme.package = pkgs.gruvbox-plus-icons;
- gtk.iconTheme.name = "Gruvbox-Plus-Dark";
+ #gtk.iconTheme.package = pkgs.gruvbox-plus-icons;
+ #gtk.iconTheme.name = "Gruvbox-Plus-Dark";
# Qt theming
- qt.enable = true;
- qt.platformTheme = "gtk";
- qt.style.name = "adwaita-dark";
- qt.style.package = pkgs.adwaita-qt;
+ #qt.enable = true;
+ #qt.platformTheme = "gtk";
+ #qt.style.name = "adwaita-dark";
+ #qt.style.package = pkgs.adwaita-qt;
programs.yazi.enable = true;
diff --git a/modules/home-manager/ricing/hyprland/default.nix b/modules/home-manager/ricing/hyprland/default.nix
deleted file mode 100644
index 35b8ce4..0000000
--- a/modules/home-manager/ricing/hyprland/default.nix
+++ /dev/null
@@ -1,243 +0,0 @@
-{
- inputs,
- pkgs,
- ...
-}: let
- hyprland = inputs.hyprland.packages.${pkgs.system}.hyprland;
- # plugins = inputs.hyprland-plugins.packages.${pkgs.system};
-
- yt = pkgs.writeShellScript "yt" ''
- notify-send "Opening video" "$(wl-paste)"
- mpv "$(wl-paste)"
- '';
-
- playerctl = "${pkgs.playerctl}/bin/playerctl";
- brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl";
- pactl = "${pkgs.pulseaudio}/bin/pactl";
-in {
-
- imports = [
- ./eww
- ];
-
- xdg.desktopEntries."org.gnome.Settings" = {
- name = "Settings";
- comment = "Gnome Control Center";
- icon = "org.gnome.Settings";
- exec = "env XDG_CURRENT_DESKTOP=gnome ${pkgs.gnome.gnome-control-center}/bin/gnome-control-center";
- categories = ["X-Preferences"];
- terminal = false;
- };
-
- wayland.windowManager.hyprland = {
- enable = true;
- package = hyprland;
- systemd.enable = true;
- xwayland.enable = true;
- plugins = [
- # inputs.hyprland-hyprspace.packages.${pkgs.system}.default
- # plugins.hyprexpo
- # plugins.hyprbars
- # plugins.borderspp
- ];
-
- settings = {
- exec-once = [
- ];
-
- monitor = [
- "eDP-1, preferred, auto-right, 1"
- "HDMI-A-2, preferrred, auto-left, 1"
- ];
-
- general = {
- layout = "dwindle";
- resize_on_border = true;
- };
-
- misc = {
- disable_splash_rendering = true;
- force_default_wallpaper = 1;
- };
-
- input = {
- kb_layout = "us";
- follow_mouse = 1;
- touchpad = {
- natural_scroll = "yes";
- disable_while_typing = true;
- drag_lock = true;
- };
- sensitivity = 0;
- float_switch_override_focus = 2;
- };
-
- binds = {
- allow_workspace_cycles = true;
- };
-
- dwindle = {
- pseudotile = "yes";
- preserve_split = "yes";
- # no_gaps_when_only = "yes";
- };
-
- gestures = {
- workspace_swipe = true;
- workspace_swipe_use_r = true;
- };
-
- windowrule = let
- f = regex: "float, ^(${regex})$";
- in [
- (f "org.gnome.Calculator")
- (f "org.gnome.Nautilus")
- (f "pavucontrol")
- (f "nm-connection-editor")
- (f "blueberry.py")
- (f "org.gnome.Settings")
- (f "org.gnome.design.Palette")
- (f "Color Picker")
- (f "xdg-desktop-portal")
- (f "xdg-desktop-portal-gnome")
- (f "de.haeckerfelix.Fragments")
- (f "com.github.Aylur.ags")
- "workspace 7, title:Spotify"
- ];
-
- bind = let
- binding = mod: cmd: key: arg: "${mod}, ${key}, ${cmd}, ${arg}";
- mvfocus = binding "SUPER" "movefocus";
- ws = binding "SUPER" "workspace";
- resizeactive = binding "SUPER CTRL" "resizeactive";
- mvactive = binding "SUPER ALT" "moveactive";
- mvtows = binding "SUPER SHIFT" "movetoworkspace";
- e = "exec, ags -b hypr";
- arr = [1 2 3 4 5 6 7];
- in
- [
- "CTRL SHIFT, R, ${e} quit; ags -b hypr"
- "SUPER, R, ${e} -t launcher"
- "SUPER, Tab, ${e} -t overview"
- ",XF86PowerOff, ${e} -r 'powermenu.shutdown()'"
- ",XF86Launch4, ${e} -r 'recorder.start()'"
- ",Print, ${e} -r 'recorder.screenshot()'"
- "SHIFT,Print, ${e} -r 'recorder.screenshot(true)'"
- "SUPER, Return, exec, xterm" # xterm is a symlink, not actually xterm
- "SUPER, W, exec, firefox"
- "SUPER, E, exec, wezterm -e lf"
-
- # youtube
- ", XF86Launch1, exec, ${yt}"
-
- "ALT, Tab, focuscurrentorlast"
- "CTRL ALT, Delete, exit"
- "ALT, Q, killactive"
- "SUPER, F, togglefloating"
- "SUPER, G, fullscreen"
- "SUPER, O, fakefullscreen"
- "SUPER, P, togglesplit"
-
- (mvfocus "k" "u")
- (mvfocus "j" "d")
- (mvfocus "l" "r")
- (mvfocus "h" "l")
- (ws "left" "e-1")
- (ws "right" "e+1")
- (mvtows "left" "e-1")
- (mvtows "right" "e+1")
- (resizeactive "k" "0 -20")
- (resizeactive "j" "0 20")
- (resizeactive "l" "20 0")
- (resizeactive "h" "-20 0")
- (mvactive "k" "0 -20")
- (mvactive "j" "0 20")
- (mvactive "l" "20 0")
- (mvactive "h" "-20 0")
- ]
- ++ (map (i: ws (toString i) (toString i)) arr)
- ++ (map (i: mvtows (toString i) (toString i)) arr);
-
- bindle = [
- ",XF86MonBrightnessUp, exec, ${brightnessctl} set +5%"
- ",XF86MonBrightnessDown, exec, ${brightnessctl} set 5%-"
- ",XF86KbdBrightnessUp, exec, ${brightnessctl} -d asus::kbd_backlight set +1"
- ",XF86KbdBrightnessDown, exec, ${brightnessctl} -d asus::kbd_backlight set 1-"
- ",XF86AudioRaiseVolume, exec, ${pactl} set-sink-volume @DEFAULT_SINK@ +5%"
- ",XF86AudioLowerVolume, exec, ${pactl} set-sink-volume @DEFAULT_SINK@ -5%"
- ];
-
- bindl = [
- ",XF86AudioPlay, exec, ${playerctl} play-pause"
- ",XF86AudioStop, exec, ${playerctl} pause"
- ",XF86AudioPause, exec, ${playerctl} pause"
- ",XF86AudioPrev, exec, ${playerctl} previous"
- ",XF86AudioNext, exec, ${playerctl} next"
- ",XF86AudioMicMute, exec, ${pactl} set-source-mute @DEFAULT_SOURCE@ toggle"
- ];
-
- bindm = [
- "SUPER, mouse:273, resizewindow"
- "SUPER, mouse:272, movewindow"
- ];
-
- decoration = {
- drop_shadow = "yes";
- shadow_range = 8;
- shadow_render_power = 2;
- "col.shadow" = "rgba(00000044)";
-
- dim_inactive = false;
-
- blur = {
- enabled = true;
- size = 8;
- passes = 3;
- new_optimizations = "on";
- noise = 0.01;
- contrast = 0.9;
- brightness = 0.8;
- popups = true;
- };
- };
-
- animations = {
- enabled = "yes";
- bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
- animation = [
- "windows, 1, 5, myBezier"
- "windowsOut, 1, 7, default, popin 80%"
- "border, 1, 10, default"
- "fade, 1, 7, default"
- "workspaces, 1, 6, default"
- ];
- };
-
- plugin = {
- overview = {
- centerAligned = true;
- hideTopLayers = true;
- hideOverlayLayers = true;
- showNewWorkspace = true;
- exitOnClick = true;
- exitOnSwitch = true;
- drawActiveWorkspace = true;
- reverseSwipe = true;
- };
- hyprbars = {
- bar_color = "rgb(2a2a2a)";
- bar_height = 28;
- col_text = "rgba(ffffffdd)";
- bar_text_size = 11;
- bar_text_font = "Ubuntu Nerd Font";
-
- buttons = {
- button_size = 0;
- "col.maximize" = "rgba(ffffff11)";
- "col.close" = "rgba(ff111133)";
- };
- };
- };
- };
- };
-}
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/empty-notification.png b/modules/home-manager/ricing/hyprland/eww/config/assets/empty-notification.png
deleted file mode 100644
index aedb537..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/empty-notification.png and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/fullpfp.png b/modules/home-manager/ricing/hyprland/eww/config/assets/fullpfp.png
deleted file mode 100644
index 9984e6c..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/fullpfp.png and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/pfp.png b/modules/home-manager/ricing/hyprland/eww/config/assets/pfp.png
deleted file mode 100644
index 7e58ae9..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/pfp.png and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/snoo.png b/modules/home-manager/ricing/hyprland/eww/config/assets/snoo.png
deleted file mode 100644
index 361c11d..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/snoo.png and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-clear-night.jpg b/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-clear-night.jpg
deleted file mode 100644
index a5a36c2..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-clear-night.jpg and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-clear-sky.jpg b/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-clear-sky.jpg
deleted file mode 100644
index 799b4dc..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-clear-sky.jpg and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-clouds-night.jpg b/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-clouds-night.jpg
deleted file mode 100644
index 8d2c696..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-clouds-night.jpg and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-clouds.jpg b/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-clouds.jpg
deleted file mode 100644
index 441dabd..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-clouds.jpg and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-fog.jpg b/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-fog.jpg
deleted file mode 100644
index 925eb08..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-fog.jpg and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-showers-scattered.jpg b/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-showers-scattered.jpg
deleted file mode 100644
index 41439b9..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-showers-scattered.jpg and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-showers.jpg b/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-showers.jpg
deleted file mode 100644
index e6f942e..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-showers.jpg and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-snow.jpg b/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-snow.jpg
deleted file mode 100644
index a579d1c..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-snow.jpg and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-stroms.jpg b/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-stroms.jpg
deleted file mode 100644
index 83fb291..0000000
Binary files a/modules/home-manager/ricing/hyprland/eww/config/assets/weather/weather-stroms.jpg and /dev/null differ
diff --git a/modules/home-manager/ricing/hyprland/eww/config/eww.scss b/modules/home-manager/ricing/hyprland/eww/config/eww.scss
deleted file mode 100644
index 30c2281..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/eww.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-@mixin rounding {
- border-radius: 12px;
- }
-
-
- .themes {
- margin-right: 1rem;
- }
-
- @import "style/colors";
- @import "style/bar/init";
- @import "style/control/init";
- @import "style/dash/init";
- @import "style/moment/init";
-
- * {
- all: unset;
- transition: 100ms ease;
- }
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/eww.yuck b/modules/home-manager/ricing/hyprland/eww/config/eww.yuck
deleted file mode 100644
index 5a29c22..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/eww.yuck
+++ /dev/null
@@ -1,5 +0,0 @@
-(include "./yuck/_vars.yuck")
-(include "./yuck/bar/_init.yuck")
-(include "./yuck/control/_init.yuck")
-(include "./yuck/dash/_init.yuck")
-(include "./yuck/moment/_init.yuck")
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/scripts/ap.sh b/modules/home-manager/ricing/hyprland/eww/config/scripts/ap.sh
deleted file mode 100644
index 3533f65..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/scripts/ap.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env bash
-STATUS="$(rfkill list | sed -n 2p | awk '{print $3}')"
-
-
-toggle() {
- if [[ $STATUS == "no" ]]; then
- rfkill block all
- notify-send --urgency=normal "Airplane Mode" "Airplane mode has been turned on!"
- else
- rfkill unblock all
- notify-send --urgency=normal "Airplane Mode" "Airplane mode has been turned off!"
- fi
-}
-
-class() {
- if [[ $STATUS == "no" ]]; then
- echo inactive
- else
- echo active
- fi
-}
-
-if [[ $1 == "--toggle" ]]; then
- toggle
-elif [[ $1 == "--class" ]]; then
- class
-fi
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/scripts/bat.sh b/modules/home-manager/ricing/hyprland/eww/config/scripts/bat.sh
deleted file mode 100644
index 123d756..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/scripts/bat.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/sh
-
-bat=/sys/class/power_supply/BAT0/
-per="$(cat "$bat/capacity")"
-
-icon() {
-
-if [ "$per" -gt "90" ]; then
- icon=""
-elif [ "$per" -gt "80" ]; then
- icon=""
-elif [ "$per" -gt "70" ]; then
- icon=""
-elif [ "$per" -gt "60" ]; then
- icon=""
-elif [ "$per" -gt "49" ]; then
- icon=""
-elif [ "$per" -gt "40" ]; then
- icon=""
-elif [ "$per" -gt "20" ]; then
- icon="assets/battery_nearly-low.png"
-elif [ "$per" -gt "10" ]; then
- icon="assets/battery_low.png"
- notify-send -u critical "Battery Low" "Connect Charger"
-elif [ "$per" -gt "0" ]; then
- icon="assets/battery_low.png"
- notify-send -u critical "Battery Low" "Connect Charger"
-else
- echo && exit
-fi
-echo "$icon"
-}
-
-percent() {
-echo $per
-}
-
-
-status(){
- if [[ -d /sys/class/power_supply/ACAD ]]; then
- echo " "
- elif [[ -d /sys/class/power_supply/BAT0 ]]; then
- [[ $(cat /sys/class/power_supply/BAT0/status) == "Discharging" ]] && echo "" || echo ""
- else
- echo ""
- fi
-}
-
-class() {
- if [ "$per" -gt "90" ]; then
- class="color: #81c19b"
- elif [ "$per" -gt "80" ]; then
- class="color: #81c19b"
- elif [ "$per" -gt "70" ]; then
- class="color: #81c19b"
- elif [ "$per" -gt "60" ]; then
- class="color: #81c19b"
- elif [ "$per" -gt "49" ]; then
- class="color: #8FA7A9"
- elif [ "$per" -gt "40" ]; then
- class="color: #8FA7A9"
- elif [ "$per" -gt "20" ]; then
- class="color: #ecd28b"
- elif [ "$per" -gt "10" ]; then
- class="color: #df5b61"
- elif [ "$per" -gt "0" ]; then
- class="color: #df5b61"
- else
- echo "" && exit
- fi
- echo "$class"
-}
-
-[ "$1" = "icon" ] && icon && exit
-[ "$1" = "percent" ] && percent && exit
-[ "$1" = "status" ] && status && exit
-[ "$1" = "class" ] && class && exit
-
-exit
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/scripts/bl.sh b/modules/home-manager/ricing/hyprland/eww/config/scripts/bl.sh
deleted file mode 100644
index 331ae80..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/scripts/bl.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env bash
-
-toggle() {
- STATUS="$(bluetoothctl show | grep Powered | awk '{print $2}')"
- if [ $STATUS == "yes" ]; then
- bluetoothctl power off
- notify-send --icon=bluetooth-offline --urgency=normal "Bluetooth" "Bluetooth has been turned off."
- else
- bluetoothctl power on
- notify-send --icon=volume-level-high --urgency=normal "Bluetooth" "Bluetooth has been turned on."
- fi
-}
-
-class() {
- # off
- if [ $(bluetoothctl show | grep "Powered: yes" | wc -c) -eq 0 ]
- then
- echo inactive
- else
- echo active
- fi
-}
-
-status() {
- # not connected
- if [ $(bluetoothctl show | grep "Powered: yes" | wc -c) -eq 0 ]; then
- echo "Off"
- else
- # on
- if [ $(echo info | bluetoothctl | grep 'Device' | wc -c) -eq 0 ]; then
- echo "On"
- else
- # get device alias
- DEVICE=`echo info | bluetoothctl | grep 'Alias:' | awk -F: '{ print $2 }'`
- echo "$DEVICE"
- fi
- fi
-}
-
-
-if [[ $1 == "--status" ]]; then
- status
-elif [[ $1 == "--icon" ]]; then
- icon
-elif [[ $1 == "--toggle" ]]; then
- toggle
-elif [[ $1 == "--class" ]]; then
- class
-elif [[ $1 == "--battery" ]]; then
- battery
-fi
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/scripts/cpu.sh b/modules/home-manager/ricing/hyprland/eww/config/scripts/cpu.sh
deleted file mode 100644
index 4af8f68..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/scripts/cpu.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-CPU=$(cat /sys/class/thermal/thermal_zone*/temp)
-TEMP=$((CPU / 1000))
-echo $TEMP
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/scripts/dnd.sh b/modules/home-manager/ricing/hyprland/eww/config/scripts/dnd.sh
deleted file mode 100644
index 0063af9..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/scripts/dnd.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env bash
-
-STATUS=$(dunstctl is-paused)
-
-toggle() {
- if [ $STATUS == "false" ]; then
- dunstctl set-paused true
- else
- dunstctl set-paused false
- fi
-}
-
-
-class() {
- if [ $STATUS == "false" ]; then
- echo inactive
- else
- echo active
- fi
-}
-
-if [[ $1 == "--toggle" ]]; then
- toggle
-elif [[ $1 == "--class" ]]; then
- class
-fi
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/scripts/ms.sh b/modules/home-manager/ricing/hyprland/eww/config/scripts/ms.sh
deleted file mode 100644
index 20df83e..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/scripts/ms.sh
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/usr/bin/env bash
-# scripts by adi1090x
-
-## Get data
-STATUS="$(mpc status)"
-COVER="/tmp/.music_cover.png"
-MUSIC_DIR="$HOME/Music"
-
-## Get status
-get_status() {
- if [[ $STATUS == *"[playing]"* ]]; then
- echo ""
- else
- echo ""
- fi
-}
-
-## Get song
-get_song() {
- song=`mpc -f %title% current`
- if [[ -z "$song" ]]; then
- echo "Offline"
- else
- echo "$song"
- fi
-}
-
-## Get artist
-get_artist() {
- artist=`mpc -f %artist% current`
- if [[ -z "$artist" ]]; then
- echo ""
- else
- echo "$artist"
- fi
-}
-
-## Get time
-get_time() {
- time=`mpc status | grep "%)" | awk '{print $4}' | tr -d '(%)'`
- if [[ -z "$time" ]]; then
- echo "0"
- else
- echo "$time"
- fi
-}
-get_ctime() {
- ctime=`mpc status | grep "#" | awk '{print $3}' | sed 's|/.*||g'`
- if [[ -z "$ctime" ]]; then
- echo "0:00"
- else
- echo "$ctime"
- fi
-}
-get_ttime() {
- ttime=`mpc -f %time% current`
- if [[ -z "$ttime" ]]; then
- echo "0:00"
- else
- echo "$ttime"
- fi
-}
-
-## Get cover
-get_cover() {
- ffmpeg -i "${MUSIC_DIR}/$(mpc current -f %file%)" "${COVER}" -y &> /dev/null
- STATUS=$?
-
- # Check if the file has a embbeded album art
- if [ "$STATUS" -eq 0 ];then
- echo "$COVER"
- else
- echo "images/music.png"
- fi
-}
-
-## Execute accordingly
-if [[ "$1" == "--song" ]]; then
- get_song
-elif [[ "$1" == "--artist" ]]; then
- get_artist
-elif [[ "$1" == "--status" ]]; then
- get_status
-elif [[ "$1" == "--time" ]]; then
- get_time
-elif [[ "$1" == "--ctime" ]]; then
- get_ctime
-elif [[ "$1" == "--ttime" ]]; then
- get_ttime
-elif [[ "$1" == "--cover" ]]; then
- get_cover
-elif [[ "$1" == "--toggle" ]]; then
- mpc -q toggle
-elif [[ "$1" == "--next" ]]; then
- { mpc -q next; get_cover; }
-elif [[ "$1" == "--prev" ]]; then
- { mpc -q prev; get_cover; }
-fi
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/scripts/notification_logger.zsh b/modules/home-manager/ricing/hyprland/eww/config/scripts/notification_logger.zsh
deleted file mode 100644
index 5514923..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/scripts/notification_logger.zsh
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/usr/bin/env zsh
-function _set_vars() {
- typeset -gx DUNST_CACHE_DIR="$HOME/.cache/dunst"
- typeset -gx DUNST_LOG="$DUNST_CACHE_DIR/notifications.txt"
- typeset -gx DEFAULT_QUOTE="To fake it is to stand guard over emptiness. ── Arthur Herzog"
- typeset -gx DUNST_QUOTES="$DUNST_CACHE_DIR/quotes.txt"
-}
-
-function _unset_vars() {
- unset DUNST_CACHE_DIR
- unset DUNST_LOG
- unset DUNST_QUOTES
- unset DEFAULT_QUOTE
-}
-_set_vars
-
-mkdir "$DUNST_CACHE_DIR" 2>/dev/null
-touch "$DUNST_LOG" 2>/dev/null
-
-function create_cache() {
- local urgency
- case "$DUNST_URGENCY" in
- "LOW"|"NORMAL"|"CRITICAL") urgency="$DUNST_URGENCY";;
- *) urgency="OTHER";;
- esac
-
- local summary
- local body
- [ "$DUNST_SUMMARY" = "" ] && summary="Summary unavailable." || summary="$DUNST_SUMMARY"
- [ "$DUNST_BODY" = "" ] && body="Body unavailable." || body="$(print "$DUNST_BODY" | recode html)"
-
- local glyph
- case "$urgency" in
- "LOW") glyph="";;
- "NORMAL") glyph=" ";;
- "CRITICAL") glyph="";;
- *) glyph="";;
- esac
- case "$DUNST_APP_NAME" in
- "Spotify") glyph="";;
- "mpd") glyph="";;
- "picom") glyph="";;
- "sxhkd") glyph="";;
- "changebrightness") glyph="";;
- "nightmode") glyph="";;
- "microphone") glyph="";;
- "changevolume") glyph="";;
- "screenshot") glyph="";;
- "firefox") glyph=" ";;
- esac
- # pipe stdout -> pipe cat stdin (cat conCATs multiple files and sends to stdout) -> absorb stdout from cat
- # concat: "one" + "two" + "three" -> notice how the order matters i.e. "one" will be prepended
- print '(card :width 400 :class "control-center-card control-center-card-'$urgency' control-center-card-'$DUNST_APP_NAME'" :glyph_class "control-center-'$urgency' control-center-'$DUNST_APP_NAME'" :SL "'$DUNST_ID'" :L "dunstctl history-pop '$DUNST_ID'" :body "'$body'" :summary "'$summary'" :glyph "'$glyph'")' \
- | cat - "$DUNST_LOG" \
- | sponge "$DUNST_LOG"
-}
-
-function compile_caches() { tr '\n' ' ' < "$DUNST_LOG" }
-
-function make_literal() {
- local caches="$(compile_caches)"
- [[ "$caches" == "" ]] \
- && print '(box :class "control-center-empty-box" :width 360 :height 350 :orientation "vertical" :space-evenly false (image :class "control-center-empty-banner" :valign "center" :vexpand true :path "assets/empty-notification.svg" :image-width 200 :image-height 200) )' \
- || print "(scroll :width 360 :height 350 :vscroll true (box :hexpand true :orientation 'vertical' :class 'control-center-scroll-box' :spacing 15 :space-evenly false $caches))"
-}
-
-function clear_logs() {
- killall dunst 2>/dev/null
- dunst & disown
- print > "$DUNST_LOG"
-}
-
-function pop() { sed -i '1d' "$DUNST_LOG" }
-
-function drop() { sed -i '$d' "$DUNST_LOG" }
-
-function remove_line() { sed -i '/SL "'$1'"/d' "$DUNST_LOG" }
-
-function critical_count() {
- local crits=$(cat $DUNST_LOG | grep CRITICAL | wc -l)
- local total=$(cat $DUNST_LOG | wc -l)
- print $(((crits*100)/total))
-}
-
-function subscribe() {
- make_literal
- local lines=$(cat $DUNST_LOG | wc -l)
- while sleep 0.1; do
- local new=$(cat $DUNST_LOG | wc -l)
- [[ $lines -ne $new ]] && lines=$new && print
- done | while read -r _ do; make_literal done
-}
-
-case "$1" in
- "pop") pop;;
- "drop") drop;;
- "clear") clear_logs;;
- "subscribe") subscribe;;
- "rm_id") remove_line $2;;
- "crits") critical_count;;
- *) create_cache;;
-esac
-
-sed -i '/^$/d' "$DUNST_LOG"
-_unset_vars
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/scripts/weathercopy.sh b/modules/home-manager/ricing/hyprland/eww/config/scripts/weathercopy.sh
deleted file mode 100644
index 4aa78ea..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/scripts/weathercopy.sh
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/bin/sh
-
-# Rename This To weather.sh and add your api key
-
-encode_to_url_format() {
- echo "$1" | sed 's/ /%20/g'
-}
-
-check_if_empty() {
- [[ -z "$1" ]] && echo "0" || echo "$1"
-}
-
-KEY=""
-CITY="New Delhi"
-CITY=$(encode_to_url_format "$CITY")
-WEATHER=$(curl -sf "api.openweathermap.org/data/2.5/weather?q=$CITY&appid=$KEY&units=metric")
-
-WEATHER_DESC=$(echo $WEATHER | jq -r ".weather[0].main")
-WEATHER_TEMP=$(echo $WEATHER | jq ".main.temp" | cut -d "." -f 1)
-WEATHER_ICON_CODE=$(echo "$WEATHER" | jq -r ".weather[].icon" | head -1)
-WEATHER_FEELS_LIKE=$(echo $WEATHER | jq ".main.feels_like" | cut -d "." -f 1)
-WEATHER_HUMIDITY=$(echo $WEATHER | jq ".main.humidity" | cut -d "." -f 1)
-WEATHER_ICON=""
-WEATHER_IMAGE=""
-WEATHER_HEX=""
-
-case $WEATHER_ICON_CODE in
- "01d")
- WEATHER_ICON=" "
- WEATHER_IMAGE="clear-sky"
- WEATHER_HEX="#ffd86b"
- ;;
- "01n")
- WEATHER_ICON=" "
- WEATHER_IMAGE="clear-night"
- WEATHER_HEX="#fcdcf6"
- ;;
- "02d")
- WEATHER_ICON=" "
- WEATHER_IMAGE="clouds"
- WEATHER_HEX="#adadff"
- ;;
- "02n")
- WEATHER_ICON=" "
- WEATHER_HEX="#adadff"
- WEATHER_IMAGE="clouds-night"
- ;;
- "03d")
- WEATHER_ICON=" "
- WEATHER_IMAGE="clouds"
- WEATHER_HEX="#adadff"
- ;;
- "03n")
- WEATHER_ICON=" "
- WEATHER_IMAGE="clouds-night"
- WEATHER_HEX="#adadff"
- ;;
- "04d")
- WEATHER_ICON=" "
- WEATHER_IMAGE="clouds"
- WEATHER_HEX="#adadff"
- ;;
- "04n")
- WEATHER_ICON=" "
- WEATHER_IMAGE="clouds-night"
- WEATHER_HEX="#adadff"
- ;;
- "09d")
- WEATHER_ICON=""
- WEATHER_IMAGE="clouds-showers-scattered"
- WEATHER_HEX="#6b95ff"
- ;;
- "09n")
- WEATHER_ICON=""
- WEATHER_IMAGE="clouds-showers-scattered"
- WEATHER_HEX="#6b95ff"
- ;;
- "10d")
- WEATHER_ICON=""
- WEATHER_IMAGE="clouds-showers"
- WEATHER_HEX="#6b95ff"
- ;;
- "10n")
- WEATHER_ICON=""
- WEATHER_IMAGE="clouds-showers"
- WEATHER_HEX="#6b95ff"
- ;;
- "11d")
- WEATHER_ICON=""
- WEATHER_IMAGE="stroms"
- WEATHER_HEX="#ffeb57"
- ;;
- "11n")
- WEATHER_ICON=""
- WEATHER_IMAGE="stroms"
- WEATHER_HEX="#ffeb57"
- ;;
- "13d")
- WEATHER_ICON=" "
- WEATHER_IMAGE="snow"
- WEATHER_HEX="#e3e6fc"
- ;;
- "13n")
- WEATHER_ICON=" "
- WEATHER_IMAGE="snow"
- WEATHER_HEX="#e3e6fc"
- ;;
- "50d")
- WEATHER_ICON=" "
- WEATHER_IMAGE="fog"
- WEATHER_HEX="#84afdb"
- ;;
- "50n")
- WEATHER_IMAGE="fog"
- WEATHER_ICON=" "
- WEATHER_HEX="#84afdb"
- ;;
- *)
- WEATHER_ICON=" "
- WEATHER_IMAGE="clouds"
- WEATHER_HEX="#adadff"
- ;;
-esac
-
-case $1 in
- "current_temp")
- check_if_empty $WEATHER_TEMP
- ;;
- "current_temp_fahrenheit")
- WEATHER_TEMP=$((($WEATHER_TEMP * 9 / 5) + 32))
- check_if_empty $WEATHER_TEMP
- ;;
- "feels_like")
- check_if_empty $WEATHER_FEELS_LIKE
- ;;
- "humidity")
- check_if_empty $WEATHER_HUMIDITY
- ;;
- "weather_desc")
- [[ -z $WEATHER_DESC ]] && echo "Not Available." || echo "$WEATHER_DESC"
- ;;
- "icon")
- echo $WEATHER_ICON
- ;;
- "hex")
- echo $WEATHER_HEX
- ;;
- "image")
- echo $WEATHER_IMAGE
- ;;
- "full")
- echo $WEATHER
- ;;
-esac
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/scripts/wifi.sh b/modules/home-manager/ricing/hyprland/eww/config/scripts/wifi.sh
deleted file mode 100644
index 0ddc61e..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/scripts/wifi.sh
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env bash
-STATUS=$(nmcli | grep wlo1 | awk 'FNR == 1 {print $2}')
-SSID=$(iwgetid | awk -F '"' '{ print $2 }')
-STRENGTH=$(awk 'NR==3 {printf("%.0f",$3*10/7)}' /proc/net/wireless)
-
-toggle() {
- if [[ $STATUS == "connected" ]]; then
- nmcli radio wifi off
- notify-send --icon=window-close --urgency=normal "Wi-Fi" "Wi-Fi has been turned off!"
- else
- nmcli radio wifi on
- notify-send --icon=checkmark --urgency=normal "Wi-Fi" "Wi-Fi has been turned on, you are back online!"
- fi
-}
-
-
-class() {
- if [[ $STATUS == "connected" ]]; then
- echo active
- else
- echo inactive
- fi
-}
-
-ssid() {
- if [[ $STATUS == "connected" ]]; then
- echo $(iwgetid -r)
-
- else
- echo "n/a"
- fi
-}
-color() {
- if [[ $STATUS == "connected" ]]; then
- echo "green"
-
- else
- echo "red"
- fi
-}
-icon() {
- if [[ $STATUS == "connected" ]]; then
- echo " "
-
- else
- echo " "
- fi
-}
-speed() {
- s1=$(awk 'NR==3 {print $3}''' /proc/net/wireless)
- s2=${s1::-1}
- echo $s2
-}
-
-if [[ $1 == "--toggle" ]]; then
- toggle
-elif [[ $1 == "--class" ]]; then
- class
-elif [[ $1 == "--ssid" ]]; then
- ssid
-elif [[ $1 == "--color" ]]; then
- color
-elif [[ $1 == "--icon" ]]; then
- icon
-elif [[ $1 == "--speed" ]]; then
- speed
-fi
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/scripts/ws.sh b/modules/home-manager/ricing/hyprland/eww/config/scripts/ws.sh
deleted file mode 100644
index a572921..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/scripts/ws.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env sh
-#
-ACTIVEWS=$(hyprctl -j monitors | jq ".[0].activeWorkspace.id")
-export a"$ACTIVEWS"="active"
-
-function handle_event {
- case ${1%>>*} in
- workspace)
- unset a"$ACTIVEWS"
- ACTIVEWS=${1#*>>}
- export a"$ACTIVEWS"="active"
- create_taglist
- ;;
- focusedmon)
- ACTIVEWS=${1#*,}
- ;;
- createworkspace)
- local WORKSPACE=${1#*>>}
- export o"$WORKSPACE"="occupied"
- create_taglist
- ;;
- destroyworkspace)
- local WORKSPACE=${1#*>>}
- unset o"$WORKSPACE"
- create_taglist
- esac
-}
-
-function create_taglist {
- echo "[\"$o1 $a1\", \"$o2 $a2\", \"$o3 $a3\", \"$o4 $a4\", \"$o5 $a5\", \"$o6 $a6\", \"$o7 $a7\"]"
-}
-
-for NUM in {0..8}; do
- WORKSPACE=$(hyprctl -j workspaces | jq ".[$NUM].id")
- if [[ $WORKSPACE != "null" ]]; then
- export o"$WORKSPACE"="occupied"
- fi
-done
-
-create_taglist
-
-socat -u UNIX-CONNECT:/tmp/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock - | while read -r event; do
-handle_event "$event"
-done
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/style/bar/_init.scss b/modules/home-manager/ricing/hyprland/eww/config/style/bar/_init.scss
deleted file mode 100644
index e69de29..0000000
diff --git a/modules/home-manager/ricing/hyprland/eww/config/style/control/_init.scss b/modules/home-manager/ricing/hyprland/eww/config/style/control/_init.scss
deleted file mode 100644
index 5c8a3e3..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/style/control/_init.scss
+++ /dev/null
@@ -1,124 +0,0 @@
-.control {
- @include rounding;
- background: $background;
- padding: 1rem;
- }
-
- .sliders {
- @include rounding;
- background: $background-alt;
- padding: 2rem;
- }
-
- .volscale trough {
- min-width: 8rem;
- min-height: 16px;
- background: rgba($comment, 0.4);
- @include rounding;
- }
-
- .volscale trough highlight {
- @include rounding;
- background: $green;
- }
-
- .brightscale trough {
- min-width: 8rem;
- min-height: 16px;
- background: rgba($comment, 0.4);
- @include rounding;
- }
-
- .brightscale trough highlight {
- @include rounding;
- background: $yellow;
- }
-
- .profile {
- padding: 0.5rem;
- }
-
- .profiletime {
- font-family: "Rubik";
- font-size: 16px;
- }
-
- .music {
- @include rounding;
- min-height: 10rem;
- background-size: cover;
- background-position: center;
- }
-
- .music-g {
- background-image: linear-gradient(to right, rgba($background, 0.95) 30%, rgba($background, 0.5));
- }
-
- .musicbutton {
- font-family: "Iosevka Nerd Font";
- padding: 1rem;
- font-size: 30px;
- }
-
- .musicbuttons {
- background: $background-alt;
- padding: 0.5rem 1rem;
- @include rounding;
- }
-
- .profileexit {
- color: $red;
- font-size: 28px;
- border-radius: 10px;
- padding: 1rem 2rem 1rem 1.6rem;
- background: linear-gradient(to bottom right, rgba($red, 0.05), rgba($red, 0.03));
- }
-
- .music-scale trough {
- min-width: 8rem;
- min-height: 10px;
- background: rgba($background-alt, 0);
- }
-
- .music-scale trough highlight {
- background: $magenta;
- }
-
- .musicinfo {
- font-family: "Rubik";
- font-size: 16px;
- padding: 1rem;
- }
-
- .musicname {
- font-size: 18px;
- }
-
- .setbtn {
- font-family: Material Design Icons;
- background: rgba($comment, 0.2);
- @include rounding;
- padding: 1.7rem;
- font-size: 24px;
- }
-
- .active {
- background: $accent;
- color: $background;
- }
-
- .scaleicon {
- font-family: Material Design Icons;
- font-size: 18px;
- }
-
- .mono {
- font-size: 16px;
- font-family: "Iosevka Nerd Font";
- }
-
- .buttons {
- background: $background-alt;
- padding: 16px;
- @include rounding;
- }
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/style/dash/_init.scss b/modules/home-manager/ricing/hyprland/eww/config/style/dash/_init.scss
deleted file mode 100644
index e23f031..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/style/dash/_init.scss
+++ /dev/null
@@ -1,153 +0,0 @@
-.dash {
- background: $background;
- padding: 2rem;
- @include rounding;
- }
-
- .notifcenter {
- @include rounding;
- padding: 1rem;
- background: rgba($background-alt, 0.4);
- }
-
- .eon {
- font-family: Rubik;
- font-size: 1.3rem;
- margin-top: 1rem;
- }
-
- .notification {
- font-family: Rubik;
- background: rgba($background-alt, 0.6);
- @include rounding;
-
- &-close {
- font-family: Material Design Icons;
- color: $red;
- font-size: 1.3rem;
- }
- }
-
- .notification-title {
- padding: 1rem;
- @include rounding;
- background: $background-alt;
- }
-
- .notification-body {
- padding: 1rem;
- }
-
- .dashpfp {
- min-height: 200px;
- @include rounding;
- }
-
- .dashgradient {
- background-image: linear-gradient(to right, rgba($background, 0.5) 30%, rgba($background, 0.7));
- }
-
- .dashtime {
- font-family: Rubik;
- background: $background-alt;
- @include rounding;
- padding: 1rem;
- }
-
- .timelabel {
- font-family: Iosevka Nerd Font;
- font-size: 1rem;
- }
-
- .timelabelu {
- font-family: Rubik;
- font-size: 1.1rem;
- color: $blue;
- }
-
- .stats {
- padding: 1rem;
- @include rounding;
- background: rgba($background-alt, 0.4);
- }
-
- .gridline {
- background: $background-alt;
- @include rounding;
- }
-
- .statscale trough {
- min-width: 1.5rem;
- margin: .5rem 0;
- min-height: 16px;
- @include rounding;
- }
-
- .magentascale trough highlight {
- @include rounding;
- background: $magenta;
- }
-
- .greenscale trough highlight {
- @include rounding;
- background: $green;
- }
-
- .bluescale trough highlight {
- @include rounding;
- background: $blue;
- }
-
- .redscale trough highlight {
- @include rounding;
- background: $red;
- }
-
- .yellowscale trough highlight {
- @include rounding;
- background: $yellow;
- }
-
- .circgreen {
- color: $green;
- }
-
- .circred {
- color: $red;
- }
-
- .altstat {
- @include rounding;
- background: rgba($background-alt, 0.8);
- padding: 1rem 2rem;
- }
-
- .tt {
- font-family: Material Design Icons;
- padding: 1.5rem;
- font-size: 1.7rem;
- }
-
- .clabel {
- font-family: Iosevka Nerd Font;
- color: $comment;
- }
-
-
- .dashmusic {
- @include rounding;
- background: rgba($background-alt, 0.8);
- padding: 1rem;
- }
-
- .dashart {
- @include rounding;
- opacity: 0.6;
- min-height: 100px;
- min-width: 120px;
- }
-
- .dmi {
- margin-top: 1rem;
- font-family: Rubik;
- }
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/style/moment/_init.scss b/modules/home-manager/ricing/hyprland/eww/config/style/moment/_init.scss
deleted file mode 100644
index e83db82..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/style/moment/_init.scss
+++ /dev/null
@@ -1,113 +0,0 @@
-.moment {
- background: $background;
- padding: 1.2rem;
- @include rounding;
- font-family: "Rubik";
- }
-
- calendar {
- font-family: "Rubik";
-
- &:selected {
- color: $accent;
- }
-
- &:indeterminate {
- color: rgba(205, 219, 249, 0.3);
- }
- }
-
-
- .bgblue {
- background: $blue;
- }
-
- .bgred {
- background: $red;
- }
-
- .bgpink {
- background: $magenta;
- }
-
- .moment_calendar {
- background-color: $background-alt;
- @include rounding;
- border-radius: 10px;
-
- .moment_cal-box {
- padding: 0 1rem;
- background-color: $background-alt;
- @include rounding;
- border-radius: inherit;
-
- margin: 0.4em;
-
-
- .moment_day-names {
- font-family: "Rubik";
- margin: 0.1em 0.5em 0.5em;
- font-size: 16px;
- color: $red;
- }
-
- .moment_cal {
- font-size: 17px;
- padding: 1em .6em 0.3em;
- }
- }
- }
-
- .m {
- font-family: "Rubik";
- font-size: 1.3rem;
- color: $blue;
- }
-
- .moment_month-year {
- font-family: "Rubik";
- font-size: 1.3rem;
- color: $foreground;
- margin: 1rem 0;
- }
-
- .moment_up {
- padding: 18px;
- background: $background;
- }
-
- .mo {
- font-family: "Rubik";
- font-size: 4rem;
- }
-
- .woverlay {
- background: linear-gradient(to right, rgba($background, 0.94), rgba($background-alt, 0.86));
-
- }
-
- .wicon {
- font-size: 4.3rem;
- color: $foreground;
- }
-
- .wdesc {
- font-family: "Rubik";
- font-size: 1.4rem;
- color: $foreground;
- }
-
- .weatherimage {
- min-height: 150px;
- min-width: 400px;
- @include rounding;
- background-position: bottom;
- }
-
- .ok {
- padding: 3rem;
- }
-
- .wtemp {
- font-size: 2.3em;
- }
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/yuck/_vars.yuck b/modules/home-manager/ricing/hyprland/eww/config/yuck/_vars.yuck
deleted file mode 100644
index ca34236..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/yuck/_vars.yuck
+++ /dev/null
@@ -1,49 +0,0 @@
-(defpoll hour :interval "1s" `date +%H`)
-(defpoll minute :interval "1s" `date +%M`)
-(defpoll day :interval "1s" `date "+%A"`)
-(defpoll ampm :interval "1s" `date "+%p"`)
-(defpoll date :interval "1s" `date "+%D"`)
-(defpoll month_year :interval "24h"
- "date '+%B %Y'")
-(defpoll calendar_day :interval "10h"
- "date '+%d'")
-(defpoll calendar_year :interval "10h"
- "date '+%Y'")
-(defpoll thourtime :interval "40s" `date +"%a %I:%M %p"`)
-
-;; SYSTEM VARS
-(defpoll volume :interval "1s" `pamixer --get-volume`)
-(defpoll brightness :interval "1s" `brightnessctl -m -d amdgpu_bl0 | awk -F, '{print substr($4, 0, length($4)-1)}' | tr -d '%'`)
-
-(defvar pfp "/home/namish/.config/eww/assets/pfp.png")
-(defvar fullpfp "/home/namish/.config/eww/assets/fullpfp.png")
-
-(defpoll cputemp :interval "1s" "~/.config/eww/scripts/cpu.sh")
-(defpoll wifisped :interval "1s" "~/.config/eww/scripts/wifi.sh --speed")
-
-(defpoll battery :interval "1s" `~/.config/eww/scripts/bat.sh percent`)
-(defpoll wifiConnected :interval "2s" `~/.config/eww/scripts/wifi.sh --icon`)
-
-(defpoll song :interval "2s" "~/.config/eww/scripts/ms.sh --song")
-(defpoll song_artist :interval "2s" "~/.config/eww/scripts/ms.sh --artist")
-(defpoll current_status :interval "1s" "~/.config/eww/scripts/ms.sh --time")
-(defpoll song_status :interval "1s" "~/.config/eww/scripts/ms.sh --status")
-(defpoll cover_art :interval "2s" "~/.config/eww/scripts/ms.sh --cover")
-
-(defpoll username :interval "48h" "whoami")
-(defpoll hostname :interval "48h" "hostname")
-(defpoll uptime :interval "1m" "uptime -p | sed -e 's/up //;s/ hours,/h/;s/ hour,/h/;s/ minutes/m/;s/ minute/m/'")
-
-(defpoll apactive :interval '1s' "~/.config/eww/scripts/ap.sh --class")
-(defpoll dndactive :interval '1s' "~/.config/eww/scripts/dnd.sh --class")
-(defpoll wifiactive :interval '1s' "~/.config/eww/scripts/wifi.sh --class")
-(defpoll btactive :interval '1s' "~/.config/eww/scripts/bl.sh --class")
-(defpoll wallpaper :interval "1h" "source ~/.local/bin/upw && echo $WALLPAPER")
-
-(defpoll weathericon :interval "2h" "~/.config/eww/scripts/weather.sh icon")
-(defpoll weatherimage :interval "2h" "~/.config/eww/scripts/weather.sh image")
-(defpoll current_temp :interval "2h" "~/.config/eww/scripts/weather.sh current_temp")
-(defpoll current_desc :interval "2h" "~/.config/eww/scripts/weather.sh weather_desc")
-
-(defpoll dunsthistory :interval "250ms" "dunstctl history")
-(defpoll dunstcount :interval "250ms" "dunstctl count history")
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/yuck/bar/_init.yuck b/modules/home-manager/ricing/hyprland/eww/config/yuck/bar/_init.yuck
deleted file mode 100644
index 1b3d81e..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/yuck/bar/_init.yuck
+++ /dev/null
@@ -1,88 +0,0 @@
-
-(defwidget profile[]
- (box :orientation 'h' :space-evenly false :class "profile" :spacing 20
- (image :hexpand true :halign "start" :image-width 50 :path pfp)
- (box :orientation 'v' :valign 'center' :space-evenly false :halign "end" :spacing 3
- (box :class "profiletime" :halign "end" "${username}@${hostname}")
- (box :class "profiletime" :halign "end" "${uptime}")
- )
- )
-)
-
-(defwidget music[]
- (box :orientation "h" :space-evenly false :spacing 15
- (overlay :hexpand true
- (box :orientation 'v' :space-evenly false :class "music" :style "background-image: url('${cover_art}');"
- )
- (box :class "music-g")
- (box :orientation 'v' :space-evenly false
- (box :orientation 'v' :space-evenly false :vexpand true :class "musicinfo"
- (box :orientation "v" :halign 'start' :space-evenly false :spacing 3
- (box :halign 'start' :class "musicname" song)
- (box :halign 'start' :class "musicartist" song_artist)
- )
- )
- (scale :onchange "mpc seek {}%" :class "scale music-scale" :value current_status )
- )
- )
- (box :orientation 'v' :class "musicbuttons"
- (button :onclick "~/.config/eww/scripts/ms.sh --prev":valign 'center' :class "musicbutton" "")
- (button :onclick "~/.config/eww/scripts/ms.sh --toggle" :valign 'center' :class "musicbutton" "${song_status}")
- (button :onclick "~/.config/eww/scripts/ms.sh --next" :valign 'center' :class "musicbutton" "")
- )
- )
-)
-
-(defwidget setbtn[?icon active func label]
- (button :halign 'center' :class "${active == 'active' ? 'active' : ''} setbtn" :onclick "${func}"
- (box :hexpand true :halign "start" "${icon}" )
- )
-)
-
-(defwidget slider[value icon function class]
- (box :orientation "h" :hexpand true :space-evenly false :spacing 20
- (box :class "scaleicon" icon)
- (box :class "${class}" :hexpand true
- (scale :class "scale ${class}"
- :min 0
- :max 100
- :orientation "h"
- :value value
- :onchange function
- :active true
- :valign 'center')
- )
- )
-)
-
-(defwidget buttons[]
- (box :orientation 'h' :class "buttons" :spacing 5
- (setbtn :icon "" :func "~/.config/eww/scripts/wifi.sh --toggle" :label "wifi" :active wifiactive)
- (setbtn :icon "" :func "~/.config/eww/scripts/bl.sh --toggle" :label "bluetooth" :active btactive)
- (setbtn :icon "" :func "~/.config/eww/scripts/dnd.sh --toggle" :label "silent" :active dndactive)
- (setbtn :icon "" :func "~/.config/eww/scripts/ap.sh --toggle" :label "airplane" :active apactive)
-))
-
-
-(defwidget control[]
- (box :orientation "v" :class "control" :space-evenly false :spacing 15
- (profile)
- (box :orientation "v" :class "sliders" :space-evenly false :spacing 25
- (slider :class "brightscale" :icon "" :value brightness :function "brightnessctl s {}%")
- (slider :class "volscale" :icon "" :value volume :round-digits 0 :function "pamixer --set-volume {}")
- )
- (music)
- (buttons)
- )
-)
-
-(defwindow control
- :monitor 0
- :geometry (geometry :x "290px"
- :y "20px"
- :width "450px"
- :height "580px"
- :anchor "top right")
- :stacking "fg"
- :exclusive true
- (control))
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/yuck/control/_init.yuck b/modules/home-manager/ricing/hyprland/eww/config/yuck/control/_init.yuck
deleted file mode 100644
index 1b3d81e..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/yuck/control/_init.yuck
+++ /dev/null
@@ -1,88 +0,0 @@
-
-(defwidget profile[]
- (box :orientation 'h' :space-evenly false :class "profile" :spacing 20
- (image :hexpand true :halign "start" :image-width 50 :path pfp)
- (box :orientation 'v' :valign 'center' :space-evenly false :halign "end" :spacing 3
- (box :class "profiletime" :halign "end" "${username}@${hostname}")
- (box :class "profiletime" :halign "end" "${uptime}")
- )
- )
-)
-
-(defwidget music[]
- (box :orientation "h" :space-evenly false :spacing 15
- (overlay :hexpand true
- (box :orientation 'v' :space-evenly false :class "music" :style "background-image: url('${cover_art}');"
- )
- (box :class "music-g")
- (box :orientation 'v' :space-evenly false
- (box :orientation 'v' :space-evenly false :vexpand true :class "musicinfo"
- (box :orientation "v" :halign 'start' :space-evenly false :spacing 3
- (box :halign 'start' :class "musicname" song)
- (box :halign 'start' :class "musicartist" song_artist)
- )
- )
- (scale :onchange "mpc seek {}%" :class "scale music-scale" :value current_status )
- )
- )
- (box :orientation 'v' :class "musicbuttons"
- (button :onclick "~/.config/eww/scripts/ms.sh --prev":valign 'center' :class "musicbutton" "")
- (button :onclick "~/.config/eww/scripts/ms.sh --toggle" :valign 'center' :class "musicbutton" "${song_status}")
- (button :onclick "~/.config/eww/scripts/ms.sh --next" :valign 'center' :class "musicbutton" "")
- )
- )
-)
-
-(defwidget setbtn[?icon active func label]
- (button :halign 'center' :class "${active == 'active' ? 'active' : ''} setbtn" :onclick "${func}"
- (box :hexpand true :halign "start" "${icon}" )
- )
-)
-
-(defwidget slider[value icon function class]
- (box :orientation "h" :hexpand true :space-evenly false :spacing 20
- (box :class "scaleicon" icon)
- (box :class "${class}" :hexpand true
- (scale :class "scale ${class}"
- :min 0
- :max 100
- :orientation "h"
- :value value
- :onchange function
- :active true
- :valign 'center')
- )
- )
-)
-
-(defwidget buttons[]
- (box :orientation 'h' :class "buttons" :spacing 5
- (setbtn :icon "" :func "~/.config/eww/scripts/wifi.sh --toggle" :label "wifi" :active wifiactive)
- (setbtn :icon "" :func "~/.config/eww/scripts/bl.sh --toggle" :label "bluetooth" :active btactive)
- (setbtn :icon "" :func "~/.config/eww/scripts/dnd.sh --toggle" :label "silent" :active dndactive)
- (setbtn :icon "" :func "~/.config/eww/scripts/ap.sh --toggle" :label "airplane" :active apactive)
-))
-
-
-(defwidget control[]
- (box :orientation "v" :class "control" :space-evenly false :spacing 15
- (profile)
- (box :orientation "v" :class "sliders" :space-evenly false :spacing 25
- (slider :class "brightscale" :icon "" :value brightness :function "brightnessctl s {}%")
- (slider :class "volscale" :icon "" :value volume :round-digits 0 :function "pamixer --set-volume {}")
- )
- (music)
- (buttons)
- )
-)
-
-(defwindow control
- :monitor 0
- :geometry (geometry :x "290px"
- :y "20px"
- :width "450px"
- :height "580px"
- :anchor "top right")
- :stacking "fg"
- :exclusive true
- (control))
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/yuck/dash/_init.yuck b/modules/home-manager/ricing/hyprland/eww/config/yuck/dash/_init.yuck
deleted file mode 100644
index 0418b8f..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/yuck/dash/_init.yuck
+++ /dev/null
@@ -1,157 +0,0 @@
-(defwidget notification [title summary body id icon ?LC ?reveal_close_icon]
- (box :class "notification" :orientation "v" :height 150 :space-evenly "false"
- (box :class "notification-title"
- (label :class "notification-title-text" :halign "start" :text title)
- (box :halign "end"
- (button :class "notification-close"
- :onclick "dunstctl history-rm ${id}"
- "")
- )
- )
- (box :class "notification-body" :space-evenly "false" :orientation "v"
- (box :space-evenly "false" :spacing 20 :orientation "h"
- (image :path icon :image-height 70)
- (box
- (box :class "notification-content" :orientation "v" :space-evenly "false"
- (label :class "notification-summary" :halign "start" :valign "start"
- :limit-width 15
- :text summary)
- (label :class "notification-message" :halign "start" :valign "start"
- :limit-width 45 :wrap true :tooltip body
- :xalign 0
- :text body)
- )
- )
- )
- )
- )
-)
-
-(defwidget sc[color val]
- (box
- (scale :orientation 'v' :flipped true :min 0 :max 100 :active false :class "${color}scale statscale" :value val)
- )
-)
-
-(defwidget circprog[value icon label color]
- (box :class "altstat" :orientation 'v' :spacing 10 :space-evenly false
- (box :class "clabel" :halign "start" label)
- (box :class "circbar"
- (circular-progress :class " circ${color}"
- :value value
- :thickness 3
- :clockwise true
- :start-at 30
- (box :class "tt" icon)
- ))
- )
-)
-(defwidget dash[]
- (box :class "dash" :spacing 20 :orientation "h"
- (box :class "leftthing" :orientation 'v' :space-evenly false :spacing 20
- (box :orientation 'h' :spacing 20
- (overlay
- (box :class "dashpfp" :style "background: url('${fullpfp}'); background-size: cover;")
- (box :class "dashgradient")
- )
- (box :orientation 'v' :spacing 20
- (box :class "dashtime" :orientation 'v' :space-evenly false
- (box :orientation 'v' :space-evenly false :valign "center" :spacing 3 :vexpand true
- (box :valign "center" :halign "start" :class "timelabelu" "Hello There")
- (box :valign "center" :halign "start" :class "timelabel" uptime)
- )
- )
- (box :class "dashtime" :orientation 'v' :space-evenly false :spacing 5
- (box :orientation 'v' :space-evenly false :valign "center" :spacing 3 :vexpand true
- (box :valign "center" :halign "start" :class "timelabelu" "Time")
- (box :valign "center" :halign "start" :class "timelabel" thourtime)
- )
- )
- )
- )
- (box :orientation 'h' :space-evenly false :spacing 20
- (box :class "altstats" :orientation 'v' :spacing 20
- (circprog :value {EWW_CPU.avg} :icon "" :label "CPU" :color "red")
- (circprog :value cputemp :icon "" :label "TEMP" :color "green")
- )
- (box :class "stats" :orientation 'h' :hexpand true
- (overlay
- (box :orientation 'v' :spacing 60
- (box :height 3 :class "gridline")
- (box :height 3 :class "gridline")
- (box :height 3 :class "gridline")
- (box :height 3 :class "gridline")
- (box :height 3 :class "gridline")
- )
- (box :orientation 'h' :spacing 75
- (box :width 3 :class "gridline")
- (box :width 3 :class "gridline")
- (box :width 3 :class "gridline")
- (box :width 3 :class "gridline")
- )
- (box :orientation 'h'
- (sc :val {EWW_RAM.used_mem_perc} :color "red")
- (sc :val wifisped :color "blue")
- (sc :val {EWW_DISK["/"].used_perc} :color "magenta")
- (sc :val battery :color "green")
- )
- ))
- )
- (box :orientation "h" :vexpand true :class "dashmusic" :space-evenly false :spacing 20
- (box :class "dashart" :style "background-image: url('${cover_art}'); background-size:cover;")
- (box :orientation 'v' :halign "center" :hexpand true :valign "center" :vexpand true :space-evenly false :class "dmi"
- (box :halign 'center' :class "musicname" song)
- (box :halign 'center' :class "musicartist" song_artist)
- (box :orientation 'h' (button :onclick "~/.config/eww/scripts/ms.sh --prev":valign 'center' :class "musicbutton" "")
- (button :onclick "~/.config/eww/scripts/ms.sh --toggle" :valign 'center' :class "musicbutton" "${song_status}")
- (button :onclick "~/.config/eww/scripts/ms.sh --next" :valign 'center' :class "musicbutton" "")
- )
- )
- )
- )
- (box :class "notifcenter" :orientation 'v' :space-evenly true
- (scroll :vscroll true
- (box :orientation 'v' :space-evenly false
- (box :orientation "v" :space-evenly false :spacing 20
- (for entry in {dunsthistory["data"][0]}
- (box :class "notification-history" :orientation "v" :space-evenly "false"
- (box :orientation 'v' :space-evenly false
- (notification :class 'notif-${entry["id"]["data"]}'
- :title {entry["appname"]["data"]}
- :id {entry["id"]["data"]}
- :summary {entry["summary"]["data"]}
- :body {entry["body"]["data"]}
- :icon {(entry["icon_path"]["data"] ?: "/home/namish/.config/awesome/theme/assets/notif.png")}
- :reveal_close_icon "false"
- :is_ss {entry["appname"]["data"] == "Screenshot Tool" ? "true" : "false"}
- )
- )
- )
- )
- )
-
- (revealer :valign "center" :vexpand true :reveal {dunstcount <= 0} :transition "crossfade"
- (box :orientation "v" :space-evenly "false" :spacing 10 :valign "center"
- (image :image-height 200 :path "/home/namish/.config/eww/assets/empty-notification.png")
- (label :class "eon"
- :valign "center"
- :text "No Notifications."
- )
- )
- )
-
- )
- )
- )
-)
-)
-(defwindow dash
- :monitor 0
- :geometry (geometry :x "0px"
- :y "20px"
- :width "900px"
- :height "700px"
- :anchor "top center")
- :stacking "fg"
- :exclusive false
- (dash))
\ No newline at end of file
diff --git a/modules/home-manager/ricing/hyprland/eww/config/yuck/moment/_init.yuck b/modules/home-manager/ricing/hyprland/eww/config/yuck/moment/_init.yuck
deleted file mode 100644
index bf0e14c..0000000
--- a/modules/home-manager/ricing/hyprland/eww/config/yuck/moment/_init.yuck
+++ /dev/null
@@ -1,68 +0,0 @@
-(defwidget moment_calendar[]
- (box :class " moment_calendar" :orientation "v" :space-evenly false
- (box :class "moment_up" :space-evenly false :orientation "v" :spacing 20 (mtime) (label :class "m" :halign 'center' :hexpand true :text "${day}, ${calendar_day} ${month_year}") )
- (box :class "moment_cal-box"
- :orientation "v"
- :space-evenly "false"
- (label :class "moment_month-year" :text month_year)
- (box :class "moment_day-names" :orientation "h" :space-evenly "true"
- (label :text "Su")
- (label :text "Mo")
- (label :text "Tu")
- (label :text "We")
- (label :text "Th")
- (label :text "Fr")
- (label :text "Sa")
- )
- (calendar :class "moment_cal"
- :show-details false :show-heading false :show-day-names false)
- )
- )
-)
-
-(defwidget mtime[]
- (box :space-evenly false :halign "center" :orientation 'h' :spacing 15
- (label :class "mo" :halign 'center' :text "${hour}")
- (box :class "sep" :valign "center" :space-evenly false :orientation 'v'
- (box :width 3 :height 20 :class "bgblue")
- (box :width 3 :height 20 :class "bgpink")
- (box :width 3 :height 20 :class "bgred")
- )
- (label :class "mo" :halign 'center':text "${minute}")
- )
-)
-
-(defwidget weather[]
- (box :orientation 'v'
- (overlay :vexpand true
- (box :orientation 'v' :hexpand true :space-evenly false :halign 'center' :class "weatherimage" :style "background: url('/home/namish/.config/eww/assets/weather/weather-${weatherimage}.jpg'); background-size:cover;")
- (box :class "woverlay" :hexpand true :vexpand true)
- (box :class "ok" :hexpand true :valign "center"
- (box :orientation 'v' :halign "start" :space-evenly false
- (box :class "wicon" weathericon)
- )
- (box :orientation 'v' :space-evenly false :valign "center"
- (box :class "wtemp" :halign "end" "${current_temp}°C")
- (box :class "wdesc" :halign "end" current_desc)
- )
- )
- )
- )
- )
-
-(defwidget moment[]
- (box :orientation 'v' :spacing 20 :class 'moment' :space-evenly false
- (moment_calendar) (weather))
-)
-
-
-(defwindow moment
- :monitor 0
- :geometry (geometry :x "290px"
- :y "20px"
- :width "360px"
- :height "650px"
- :anchor "top right")
- :stacking "fg"
- :exclusive true
- (moment))
diff --git a/modules/home-manager/ricing/hyprland/eww/default.nix b/modules/home-manager/ricing/hyprland/eww/default.nix
deleted file mode 100644
index 33b1dba..0000000
--- a/modules/home-manager/ricing/hyprland/eww/default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ pkgs, ... }:
-
-{
-
- programs.eww = {
- configDir = ./config;
- enable = true;
- };
-}
\ No newline at end of file
diff --git a/modules/home-manager/ricing/rofi/config/config.rasi b/modules/home-manager/ricing/rofi/config/config.rasi
deleted file mode 100644
index e334821..0000000
--- a/modules/home-manager/ricing/rofi/config/config.rasi
+++ /dev/null
@@ -1,199 +0,0 @@
-* {
-active: #b8bb26ff;
-active-background: var(active);
-active-foreground: var(background);
-alternate-active-background: var(active);
-alternate-active-foreground: var(background);
-alternate-background: var(background-alt);
-alternate-normal-background: var(background-alt);
-alternate-normal-foreground: var(foreground);
-alternate-urgent-background: var(urgent);
-alternate-urgent-foreground: var(background);
-background: #282828ff;
-background-alt: #3c3836ff;
-background-colour: var(background);
-border-colour: var(selected);
-font: "monospace bold 10";
-foreground: #d5c4a1ff;
-foreground-colour: var(foreground);
-handle-colour: var(selected);
-normal-background: var(background-alt);
-normal-foreground: var(foreground);
-selected: #83a598ff;
-selected-active-background: var(urgent);
-selected-active-foreground: var(background);
-selected-normal-background: var(selected);
-selected-normal-foreground: var(background);
-selected-urgent-background: var(active);
-selected-urgent-foreground: var(background);
-urgent: #fb4934ff;
-urgent-background: var(urgent);
-urgent-foreground: var(background);
-}
-
-configuration {
-display-clipboard: ">";
-display-combi: ">";
-display-drun: ">";
-display-emoji: ">";
-drun-display-format: "{name}";
-modi: "drun,combi,emoji";
-show-icons: false;
-window-format: "{w} · {c} · {t}";
-}
-
-element {
-background-color: transparent;
-border: 0px solid;
-border-color: @border-colour;
-border-radius: 0px;
-cursor: pointer;
-enabled: true;
-margin: 0px;
-padding: 12px;
-spacing: 10px;
-text-color: @foreground-colour;
-}
-
-element alternate.active {
-background-color: var(alternate-active-background);
-text-color: var(alternate-active-foreground);
-}
-
-element alternate.normal {
-background-color: var(alternate-normal-background);
-text-color: var(alternate-normal-foreground);
-}
-
-element alternate.urgent {
-background-color: var(alternate-urgent-background);
-text-color: var(alternate-urgent-foreground);
-}
-
-element normal.active {
-background-color: var(active-background);
-text-color: var(active-foreground);
-}
-
-element normal.normal {
-background-color: var(normal-background);
-text-color: var(normal-foreground);
-}
-
-element normal.urgent {
-background-color: var(urgent-background);
-text-color: var(urgent-foreground);
-}
-
-element selected.active {
-background-color: var(selected-active-background);
-text-color: var(selected-active-foreground);
-}
-
-element selected.normal {
-background-color: var(selected-normal-background);
-text-color: var(selected-normal-foreground);
-}
-
-element selected.urgent {
-background-color: var(selected-urgent-background);
-text-color: var(selected-urgent-foreground);
-}
-
-element-icon {
-background-color: transparent;
-cursor: inherit;
-size: 24px;
-text-color: inherit;
-}
-
-element-text {
-background-color: transparent;
-cursor: inherit;
-highlight: inherit;
-horizontal-align: 0.0;
-text-color: inherit;
-vertical-align: 0.5;
-}
-
-entry {
-background-color: inherit;
-cursor: text;
-enabled: true;
-margin: 8px 0px 0px 14px;
-placeholder: "Search...";
-placeholder-color: inherit;
-text-color: inherit;
-}
-
-inputbar {
-background-color: @background-colour;
-border: 0px;
-border-color: @border-colour;
-border-radius: 0px;
-children: [ prompt, entry ];
-enabled: true;
-margin: 0px;
-padding: 0px 0px 6px 0px;
-spacing: 10px;
-text-color: @foreground-colour;
-}
-
-listview {
-background-color: transparent;
-border: 0px solid;
-border-color: @border-colour;
-border-radius: 0px;
-columns: 1;
-cursor: "default";
-cycle: true;
-dynamic: true;
-enabled: true;
-fixed-columns: true;
-fixed-height: true;
-layout: vertical;
-lines: 7;
-margin: 0px;
-padding: 0px;
-reverse: false;
-scrollbar: false;
-spacing: 10px;
-text-color: @foreground-colour;
-}
-
-mainbox {
-background-color: transparent;
-border: 0px solid;
-border-color: @border-colour;
-border-radius: 0px 0px 0px 0px;
-children: [ inputbar, listview];
-enabled: true;
-margin: 0px;
-padding: 10px;
-spacing: 10px;
-}
-
-prompt {
-background-color: @background-alt;
-enabled: true;
-padding: 2px 14px 4px 14px;
-text-color: inherit;
-}
-
-window {
-anchor: center;
-background-color: @background-colour;
-border: 2px solid;
-border-color: @border-colour;
-border-radius: 0px;
-cursor: "default";
-enabled: true;
-fullscreen: false;
-location: center;
-margin: 0px;
-padding: 0px;
-transparency: "real";
-width: 420px;
-x-offset: 0px;
-y-offset: 0px;
-}
\ No newline at end of file
diff --git a/modules/home-manager/ricing/rofi/default.nix b/modules/home-manager/ricing/rofi/default.nix
deleted file mode 100644
index f8a09d5..0000000
--- a/modules/home-manager/ricing/rofi/default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ pkgs, ... }:
-
-{
- home.packages = with pkgs; [
- rofi
- rofi-emoji
- ];
-
- home.file.".config" = {
- recursive = true;
- source = ./config;
- };
-}
\ No newline at end of file
diff --git a/modules/home-manager/ricing/stylix/default.nix b/modules/home-manager/ricing/stylix/default.nix
deleted file mode 100644
index e487a4f..0000000
--- a/modules/home-manager/ricing/stylix/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{ ... }:
-
-{
- stylix = {
- enable = true;
- autoEnable = false;
-
- image = ../../../wallpapers/maze.png;
-
- targets = {
- gnome.enable = true;
- gtk.enable = true;
- };
- };
-}
\ No newline at end of file
diff --git a/modules/home-manager/terminal/default.nix b/modules/home-manager/terminal/default.nix
index e0af135..7fb51f3 100644
--- a/modules/home-manager/terminal/default.nix
+++ b/modules/home-manager/terminal/default.nix
@@ -2,8 +2,7 @@
{
imports = [
- ./shell
./kitty
- ./wezterm
+ ./shell
];
}
\ No newline at end of file
diff --git a/modules/home-manager/terminal/wezterm/colors.nix b/modules/home-manager/terminal/wezterm/colors.nix
deleted file mode 100644
index c0af943..0000000
--- a/modules/home-manager/terminal/wezterm/colors.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ ... }:
-
-{
- programs.wezterm.colorSchemes = {
- ansi = [
- "282828" "fb4934" "b8bb26" "fabd2f"
- "83a598" "d3869b" "8ec07c" "d5c4a1"
- ];
-
- background = "282828";
-
- brights = [
- "665c54" "fb4934" "b8bb26" "fabd2f"
- "83a598" "d3869b" "8ec07c" "fbf1c7"
- ];
-
- cursor_bg = "d5c4a1";
- cursor_fg = "282828";
- foreground = "d5c4a1";
- selection_bg = "d5c4a1";
- selection_fg = "282828";
-
- tab_bar = {
- background = "282828";
- inactive_tab_edge = "282828";
-
- active_tab = {
- bg_color = "83a598";
- fg_color = "d5c4a1";
- };
-
- inactive_tab = {
- bg_color = "282828";
- fg_color = "d5c4a1";
- };
-
- new_tab = {
- bg_color = "282828";
- fg_color = "83a598";
- };
-
- new_tab_hover = {
- bg_color = "282828";
- fg_color = "d5c4a1";
- };
- };
- };
-}
\ No newline at end of file
diff --git a/modules/home-manager/terminal/wezterm/config.nix b/modules/home-manager/terminal/wezterm/config.nix
deleted file mode 100644
index 0b05374..0000000
--- a/modules/home-manager/terminal/wezterm/config.nix
+++ /dev/null
@@ -1,107 +0,0 @@
-{ pkgs, ... }:
-
-{
- programs.wezterm.extraConfig = ''
- -- ~/.config/wezterm/wezterm.lua
--- See https://wezfurlong.org/wezterm/
-
--- Add config folder to watchlist for config reloads.
-local wezterm = require 'wezterm';
-wezterm.add_to_config_reload_watch_list(wezterm.config_dir)
-
-function font_with_fallback(name, params)
- local names = { name, "emoji" }
- return wezterm.font_with_fallback(names, params)
-end
-
-local font_name = "monospace"
-
-return {
- -- Font config
- font = font_with_fallback(font_name),
- font_rules = {
- {
- italic = true,
- font = font_with_fallback(font_name, { italic = true })
- },
- {
- italic = true,
- intensity = "Bold",
- font = font_with_fallback(font_name, { bold = true, italic = true })
- },
- {
- intensity = "Bold",
- font = font_with_fallback(font_name, { bold = true })
- }
- },
- font_size = 10,
- line_height = 1.0,
- default_cursor_style = "SteadyUnderline",
-
- -- Keys
- disable_default_key_bindings = true,
- keys = {
- {
- mods = "CTRL|SHIFT",
- key = [[\]],
- action = wezterm.action {
- SplitHorizontal = { domain = "CurrentPaneDomain" }
- }
- },
- {
- mods = "CTRL",
- key = [[\]],
- action = wezterm.action {
- SplitVertical = { domain = "CurrentPaneDomain" }
- }
- },
- {
- key = "t",
- mods = "CTRL",
- action = wezterm.action { SpawnTab = "CurrentPaneDomain" }
- },
- {
- key = "w",
- mods = "CTRL",
- action = wezterm.action { CloseCurrentTab = { confirm = false } }
- },
- {
- mods = "CTRL",
- key = "Tab",
- action = wezterm.action { ActivateTabRelative = 1 }
- },
- {
- mods = "CTRL|SHIFT",
- key = "Tab",
- action = wezterm.action { ActivateTabRelative = -1 }
- },
- { key = "x", mods = "CTRL", action = "ActivateCopyMode" },
- {
- key = "v",
- mods = "CTRL|SHIFT",
- action = wezterm.action { PasteFrom = "Clipboard" }
- },
- {
- key = "c",
- mods = "CTRL|SHIFT",
- action = wezterm.action { CopyTo = "ClipboardAndPrimarySelection" }
- },
- {
- key = "L",
- mods = "CTRL",
- action = wezterm.action.ShowDebugOverlay
- }
- },
- front_end = "WebGpu",
- enable_wayland = true,
- check_for_updates = false,
- color_scheme = "gruvbox-dark-medium",
- window_padding = { left = "30pt", right = "30pt", top = "30pt", bottom = "30pt" },
- inactive_pane_hsb = { saturation = 1.0, brightness = 1.0 },
- enable_tab_bar = true,
- use_fancy_tab_bar = false,
- hide_tab_bar_if_only_one_tab = true,
- show_tab_index_in_tab_bar = false,
-}
- '';
-}
\ No newline at end of file
diff --git a/modules/home-manager/terminal/wezterm/default.nix b/modules/home-manager/terminal/wezterm/default.nix
deleted file mode 100644
index 4aef248..0000000
--- a/modules/home-manager/terminal/wezterm/default.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ pkgs, ... }:
-
-{
-
- imports = [
- ./colors.nix
- ];
-
- programs.wezterm = {
- enable = true;
- };
-}
\ No newline at end of file
diff --git a/modules/ricing/catppuccin/default.nix b/modules/ricing/catppuccin/default.nix
deleted file mode 100644
index b215a25..0000000
--- a/modules/ricing/catppuccin/default.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ ... }:
-
-{
- # global
- catppuccin = {
- enable = true;
- accent = "rosewater";
- flavor = "latte";
- };
-}
\ No newline at end of file
diff --git a/modules/ricing/stylix/default.nix b/modules/ricing/stylix/default.nix
deleted file mode 100644
index 8e8959f..0000000
--- a/modules/ricing/stylix/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ pkgs, ... }:
-
-{
- stylix = {
- enable = true;
- autoEnable = true;
-
- homeManagerIntegration.autoImport = false;
-
- image = ../../wallpapers/maze.png;
-
- polarity = "dark";
-
- targets.grub.useImage = true;
-
- cursor = {
- package = pkgs.bibata-cursors;
- name = "Bibata-Modern-Ice";
- };
- };
-}
\ No newline at end of file