├── .github
├── LICENSE
└── README.md
├── .gitmodules
├── conf
├── .Xresources
├── .bashrc
├── .vimrc
├── .xinitrc
├── .zshrc
├── awesome
│ ├── lib
│ │ ├── brightness.lua
│ │ ├── screenshot.lua
│ │ └── volume.lua
│ ├── main
│ │ ├── apps.lua
│ │ ├── autorun.sh
│ │ ├── bindings
│ │ │ ├── bindings.lua
│ │ │ └── custom_bindings.lua
│ │ ├── error_handling.lua
│ │ ├── layout.lua
│ │ ├── menu.lua
│ │ ├── rules.lua
│ │ ├── tags.lua
│ │ └── wallpaper.lua
│ ├── misc
│ │ ├── bar
│ │ │ ├── clock.lua
│ │ │ ├── init.lua
│ │ │ ├── launcher.lua
│ │ │ ├── menu.lua
│ │ │ ├── tag.lua
│ │ │ ├── task.lua
│ │ │ ├── volume.lua
│ │ │ └── wifi.lua
│ │ ├── init.lua
│ │ ├── notif
│ │ │ ├── init.lua
│ │ │ └── notify.lua
│ │ ├── sidebar
│ │ │ ├── calendar.lua
│ │ │ ├── clock.lua
│ │ │ ├── init.lua
│ │ │ ├── player.lua
│ │ │ ├── profile.lua
│ │ │ ├── sliders.lua
│ │ │ ├── stats.lua
│ │ │ ├── uptime.lua
│ │ │ └── wifi.lua
│ │ └── titlebar.lua
│ ├── rc.lua
│ ├── signals
│ │ ├── battery.lua
│ │ ├── brightness.lua
│ │ ├── disk.lua
│ │ ├── init.lua
│ │ ├── player.lua
│ │ ├── volume.lua
│ │ ├── weather.lua
│ │ ├── weather_script.sh
│ │ └── wifi.lua
│ └── theme
│ │ ├── assets
│ │ ├── notif.png
│ │ ├── pfp.jpg
│ │ ├── rklyz.png
│ │ ├── titlebar
│ │ │ ├── close_1.png
│ │ │ ├── close_2.png
│ │ │ ├── minimize_1.png
│ │ │ └── minimize_2.png
│ │ ├── wall.jpg
│ │ ├── wall.png
│ │ └── weather_icon.png
│ │ ├── dark.lua
│ │ ├── light.lua
│ │ └── theme.lua
├── cava
│ └── config
├── mpDris2
│ └── mpDris2.conf
├── mpd
│ ├── database
│ ├── database.gz
│ ├── mpd.conf
│ ├── mpd.db
│ ├── mpd.state
│ ├── old_mpd.conf
│ ├── state
│ └── sticker.sql
├── ncmpcpp
│ ├── config
│ ├── error.log
│ └── lyrics
│ │ ├── Cartoon - Why We Lose.txt
│ │ ├── Glass Animals - Heat Waves.txt
│ │ ├── Masked Wolf - Astronout In The Ocean.txt
│ │ └── Yoasobi - Yoru ni Kakeru.txt
├── picom
│ ├── animation.conf
│ ├── otherpicom.conf
│ ├── picom.conf
│ └── picom2.conf
└── wezterm
│ ├── dark.lua
│ ├── light.lua
│ └── wezterm.lua
└── misc
├── bin
├── bunny
├── bunnyfetch
├── colorblocks
├── colorpanes
└── owl
└── fonts
├── CascadiaCode
├── Caskaydia Cove Nerd Font Complete Mono Windows Compatible.ttf
├── Caskaydia Cove Nerd Font Complete Mono.ttf
├── Caskaydia Cove Nerd Font Complete Windows Compatible.ttf
└── Caskaydia Cove Nerd Font Complete.ttf
├── Icomoon
├── Icomoon Feather.ttf
├── Icomoon Iconic.ttf
├── Icomoon Regular.ttf
└── Icomoon Remix.ttf
├── Iosevka
├── Iosevka Bold Nerd Font Complete.ttf
├── Iosevka Medium Italic Nerd Font Complete.ttf
├── Iosevka Medium Nerd Font Complete.ttf
└── Iosevka Nerd Font Complete.ttf
├── Roboto
├── LICENSE.txt
├── Roboto-Black.ttf
├── Roboto-BlackItalic.ttf
├── Roboto-Bold.ttf
├── Roboto-BoldItalic.ttf
├── Roboto-Italic.ttf
├── Roboto-Light.ttf
├── Roboto-LightItalic.ttf
├── Roboto-Medium.ttf
├── Roboto-MediumItalic.ttf
├── Roboto-Regular.ttf
├── Roboto-Thin.ttf
└── Roboto-ThinItalic.ttf
├── azukifontB.ttf
├── material-design-icons.ttf
└── materialdesignicons-webfont.ttf
/.github/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/.github/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | My Rice..
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | An awesome(wm) **rice** that I made to get comfy experience for my daily usage.
19 |
20 | So.. go ahead on what you're trying to do.
21 |
22 | I wouldn't mind.
23 |
24 | ### My setup 🧰:
25 |
26 | - **OS** - EndeavourOS
27 | - **WM** - AwesomeWM
28 | - **Term** - Wezterm
29 | - **Comp** - Picom
30 |
31 | Nothing special
32 |
33 | > I'm using 1920x1080 screen resolution. Hope things goes perfectly fine for others..
34 |
35 |
36 |
37 | ---
38 |
39 |
40 |
41 | ### How do I get this ❓
42 |
43 |
44 |
45 | Well.. You just need to follow (or not) the following instructions given below
46 |
47 |
48 |
49 | 1. Install the Dependencies
50 |
51 | - [awesome-git](https://aur.archlinux.org/packages/awesome-git)
52 | - [picom (ibhagwan fork)](https://github.com/ibhagwan/picom)
53 | - jq
54 | - inotify-tools
55 | - playerctl
56 | - brightnessctl
57 | - pulseaudio / pipewire-pulse
58 | - network-manager
59 | - mpd
60 | - mpDris2
61 | - ncmpcpp
62 | - xclip
63 | - maim
64 | - pamixer
65 | - rofi
66 | - wezterm
67 | - neovim
68 | - feh
69 | - zsh
70 |
71 |
72 |
73 | **Required Fonts**
74 |
75 | - [Material Design Icons](https://materialdesignicons.com/)
76 | - Roboto
77 |
78 | ```sh
79 | # Arch Linux
80 | yay -S awesome-git mpd ncmpcpp jq inotify-tools playerctl brightnessctl \
81 | pulseaudio networkmanager mpdris2 xclip maim pamixer rofi wezterm \
82 | thunar neovim feh zsh base-devel
83 | ```
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 | 2. Clone the repo
92 |
93 | ```sh
94 | git clone https://github.com/rklyz/MyRice.git
95 | cd MyRice/conf/
96 | git submodule init
97 | git submodule update
98 | ```
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | 3. Copy the config file
107 |
108 | ```sh
109 | cp -rf cava awesome mpd ncmpcpp picom wezterm mpDris2 $HOME/.config/
110 | cp -rf .Xresources .bashrc .vimrc .zshrc $HOME/
111 | mkdir $HOME/.local/share/fonts
112 | cd ..; cp -rf misc/fonts/* $HOME/.local/share/fonts/
113 | fc-cache -v
114 | systemctl enable --user mpd.service; systemctl start --user mpd.service
115 | systemctl enable --user mpDris2.service; systemctl start --user mpDris2.service
116 | ```
117 |
118 | Change to your wall location at awesome.theme.theme
119 |
120 | Choose your /home disk in awesome.signals.disk. ex. /dev/sda2
121 |
122 | Put your city name inside awesome.signals.weather
123 |
124 |
125 |
126 |
127 |
128 | **4. Restart your system & Log in with awesomeWM**
129 |
130 |
131 |
132 | **5. You're done!**
133 |
134 |
135 |
136 | ---
137 |
138 |
139 |
140 | ### Did you say keybind?
141 |
142 | | Keybinds | Uses |
143 | | -------------- | ----------- |
144 | | Mod + Enter | Terminal |
145 | | Mod + Space | Layout |
146 | | Mod + r | Rofi |
147 | | alt + c | Sidebar |
148 | | alt + x | Lockscreen |
149 | | Mod + Ctrl + n | Un-minimize |
150 |
151 |
152 |
153 | ---
154 |
155 |
156 |
157 | ### Colorscheme
158 |
159 | The colorscheme that used in this rice is custom. (still doesn't have name yet)
160 |
161 | ### Light
162 |
163 |
164 |
165 | ### Dark
166 |
167 |
168 |
169 | ---
170 |
171 |
172 |
173 | ### Improvement in the future
174 |
175 | - [x] Notifications enhancement
176 | - [ ] Fixing bug
177 | - [x] Code-Cleaning
178 |
179 |
180 |
181 | ---
182 |
183 |
184 |
185 | ### Million of Thanks to 💕
186 |
187 | - [Ner0z](https://github.com/ner0z/dotfiles)
188 | - [Drahenprofi](https://github.com/drahenprofi/dotfiles)
189 | - [Elenapan](https://github.com/elenapan/dotfiles)
190 | - [Saimoom/Harry](https://github.com/saimoomedits/dotfiles)
191 | - [Rxyhn](https://github.com/rxyhn/dotfiles)
192 |
193 | ### Contributors :wrench:
194 |
195 | - [Rony](https://github.com/ronylee11)
196 | - [unix-parrot](https://github.com/unix-parrot)
197 |
198 |
199 |
200 | **Last but not least.. You guys!**
201 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "conf/awesome/lib/bling"]
2 | path = conf/awesome/lib/bling
3 | url = https://github.com/BlingCorp/bling.git
4 | [submodule "conf/awesome/lib/rubato"]
5 | path = conf/awesome/lib/rubato
6 | url = https://github.com/andOrlando/rubato
7 | [submodule "conf/awesome/awesome/lib/rubato"]
8 | path = conf/awesome/awesome/lib/rubato
9 | url = https://github.com/andOrlando/rubato
10 |
--------------------------------------------------------------------------------
/conf/.Xresources:
--------------------------------------------------------------------------------
1 | URxvt.font: xft:Roboto Mono:size=14:style=Regular, xft:CaskaydiaCove\ NF:size=14:style=Medium
2 | URxvt.intensitystyles: false
3 | URxvt.cursorBlink: true
4 | URxvt.cursorUnderline: true
5 | URxvt.scrollBar: false
6 | URxvt.scrollBar_right: true
7 | URxvt.scrollBar_floating: false
8 | URxvt.scrollstyle: plain
9 | URxvt.scrollWithBuffer: false
10 | URxvt.urgentOnBell: false
11 | URxvt.depth: 32
12 | URxvt.iso14755: false
13 | URxvt.pointerBlank: true
14 | *.internalBorder: 40
15 | URxvt.letterSpace: -1
16 |
17 | Xft.hinting: true
18 | Xft.hintstyle: hintfull
19 | Xft.autohint: true
20 |
21 |
22 | !
23 | !
24 | ! URxvt Extensions
25 | URxvt.perl-ext-common: default,tabbedex,url-select,font-size
26 |
27 | URxvt.keysym.Control-Right: font-size:increase
28 | URxvt.keysym.Control-Left: font-size:decrease
29 | URxvt.keysym.Control-Shift-Right: font-size:incglobal
30 | URxvt.keysym.Control-Shift-Left: font-size:decglobal
31 | URxvt.keysym.Control-equal: font-size:reset
32 | URxvt.keysym.Control-slash: font-size:show
33 |
34 | URxvt.keysym.Control-Shift-C: eval:selection_to_clipboard
35 | URxvt.keysym.Control-Shift-V: eval:paste_clipboard
36 | URxvt.keysym.Control-Up: eval:scroll_up 1
37 | URxvt.keysym.Control-Down: eval:scroll_down 1
38 | URxvt.keysym.Control-Home: eval:scroll_to_top
39 | URxvt.keysym.Control-End: eval:scroll_to_bottom
40 |
41 | ! special
42 | *.foreground: #18181a
43 | *.background: #f2f2e9
44 | *.cursorColor: #18181a
45 |
46 | ! black
47 | *.color0: #e1e4e6
48 | *.color8: #e1e4e6
49 |
50 | ! red
51 | *.color1: #e68a8a
52 | *.color9: #e68a8a
53 |
54 | ! green
55 | *.color2: #c6e687
56 | *.color10: #c6e687
57 |
58 | ! yellow
59 | *.color3: #e6b88a
60 | *.color11: #e6b88a
61 |
62 | ! blue
63 | *.color4: #8aa8e6
64 | *.color12: #8aa8e6
65 |
66 | ! magenta
67 | *.color5: #c78ae6
68 | *.color13: #c78ae6
69 |
70 | ! cyan
71 | *.color6: #8ac7e6
72 | *.color14: #8ac7e6
73 |
74 | ! white
75 | *.color7: #323333
76 | *.color15: #323333
77 |
78 |
--------------------------------------------------------------------------------
/conf/.bashrc:
--------------------------------------------------------------------------------
1 | #
2 | # ~/.bashrc
3 | #
4 |
5 | # If not running interactively, don't do anything
6 | [[ $- != *i* ]] && return
7 |
8 | alias ls='ls --color=auto'
9 | alias c='tput clear'
10 | PS1='> ' # main prompt
11 |
12 | PATH=$PATH:$HOME/.local/bin
13 |
14 | #eval "$(starship init bash)"
15 |
--------------------------------------------------------------------------------
/conf/.vimrc:
--------------------------------------------------------------------------------
1 | call plug#begin()
2 | Plug 'danishprakash/vim-yami'
3 | Plug 'elkowar/yuck.vim'
4 | Plug 'nanotech/jellybeans.vim'
5 | Plug 'cocopon/iceberg.vim'
6 | call plug#end()
7 |
8 | set noeb vb t_vb=
9 |
--------------------------------------------------------------------------------
/conf/.xinitrc:
--------------------------------------------------------------------------------
1 | xrdb -merge $HOME/.Xresources &
2 |
3 | xset -b
4 |
5 | exec awesome
6 |
--------------------------------------------------------------------------------
/conf/.zshrc:
--------------------------------------------------------------------------------
1 | # Lines configured by zsh-newuser-install
2 | HISTFILE=~/.histfile
3 | HISTSIZE=1000
4 | SAVEHIST=1000
5 | bindkey -v
6 | # End of lines configured by zsh-newuser-install
7 | # zsh-autocomplete from marlonrichert
8 | ## source ~/.zsh/zsh-autocomplete/zsh-autocomplete.plugin.zsh
9 |
10 | # For a better Prompt
11 | precmd() { print "" }
12 | PS1='%B%k %4~ / %k%b%f '
13 | PS2='%K{167} %K{235} -> %k '
14 | #RPROMPT='%K{234} %K{235} %F{230}%D{%H:%M} %K{167} %k'
15 |
16 | # The following lines were added by compinstall
17 | zstyle :compinstall filename '$HOME/.zshrc'
18 |
19 | autoload -Uz compinit
20 | compinit
21 | #
22 | # End of lines added by compinstall
23 | #
24 | PATH=$PATH:$HOME/.local/bin
25 | #eval "$(starship init zsh)"
26 |
--------------------------------------------------------------------------------
/conf/awesome/lib/brightness.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | local brightness = {}
8 |
9 | -- Popup
10 | ----------
11 |
12 | brightness.popup = wibox {
13 | visible = false,
14 | ontop = true,
15 | width = dpi(300),
16 | height = dpi(70),
17 | bg = beautiful.transparent
18 | }
19 |
20 | awful.placement.bottom(brightness.popup, { margins = {bottom = dpi(100)}})
21 |
22 | -- Popup Widget
23 | -----------------
24 |
25 | local indicator = wibox.widget {
26 | background_color = beautiful.bg,
27 | color = beautiful.yellow,
28 | shape = function(cr,w,h) gears.shape.rounded_rect(cr,w,h,8) end,
29 | max_value = 100,
30 | widget = wibox.widget.progressbar,
31 | }
32 |
33 | brightness.popup : setup {
34 | indicator,
35 | {
36 | {
37 | font = "Roboto 24",
38 | align = "left",
39 | markup = "🌣",
40 | widget = wibox.widget.textbox,
41 | },
42 | margins = {left = dpi(20), top = dpi(8)},
43 | widget = wibox.container.margin,
44 | },
45 | layout = wibox.layout.stack,
46 | }
47 |
48 | brightness.lifespan = gears.timer {
49 | timeout = 1,
50 | call_now = false,
51 | autostart = false,
52 | single_shot = true,
53 | callback = function()
54 | brightness.popup.visible = false
55 | end
56 | }
57 |
58 | -- Get Brightness
59 | function brightness.get_brightness()
60 | script = "brightnessctl -m | awk -F, '{print substr($4, 0, length($4)-1)}'"
61 | awful.spawn.easy_async_with_shell(script, function(brightness)
62 | indicator.color = beautiful.yellow
63 | if brightness ~= nil then
64 | brightness = tonumber(brightness)
65 | indicator.value = tonumber(brightness)
66 | end
67 | end)
68 | end
69 |
70 | function brightness.changed()
71 | brightness.popup.visible = true
72 | if not brightness.popup.visible then brightness.lifespan:start() else
73 | brightness.lifespan:again()
74 | end
75 | end
76 |
77 | -- Control Room
78 | -----------------
79 |
80 | brightness.increase = function()
81 | local script = [[
82 | brightnessctl set 3%+
83 | ]]
84 |
85 | awful.spawn.with_shell(script)
86 | brightness.get_brightness()
87 | brightness.changed()
88 | end
89 |
90 | brightness.decrease = function()
91 | local script = [[
92 | brightnessctl set 3%-
93 | ]]
94 |
95 | awful.spawn.with_shell(script)
96 | brightness.get_brightness()
97 | brightness.changed()
98 | end
99 |
100 | return brightness
101 |
--------------------------------------------------------------------------------
/conf/awesome/lib/screenshot.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local naughty = require "naughty"
4 |
5 | local notify = require "misc.notif.notify"
6 |
7 | local screenshot = {}
8 |
9 | screenshot.now = function()
10 | local time = os.date("%y-%m-%d_%H:%M:%S")
11 | local location = "/tmp/"..time..".png"
12 |
13 | local script = [[
14 | maim | tee ]]..location..[[ | xclip -selection clipboard -t image/png
15 | ]]
16 |
17 | awful.spawn.with_shell(script)
18 | notify.screenshot(location)
19 | end
20 |
21 | screenshot.later = function()
22 | local time = os.date("%y-%m-%d_%H:%M:%S")
23 | local location = "/tmp/"..time..".png"
24 |
25 | local script = [[
26 | maim -d 5 | tee ]]..location..[[ | xclip -selection clipboard -t image/png
27 | ]]
28 |
29 | awful.spawn.with_shell(script)
30 |
31 | gears.timer {
32 | timeout = 6,
33 | autostart = false,
34 | call_now = false,
35 | single_shot = true,
36 | callback = function()
37 | notify.screenshot(location)
38 | end
39 | }:start()
40 |
41 | end
42 |
43 | return screenshot
44 |
--------------------------------------------------------------------------------
/conf/awesome/lib/volume.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | local volume = {}
8 |
9 | -- Popup
10 | ----------
11 |
12 | volume.popup = wibox {
13 | visible = false,
14 | ontop = true,
15 | width = dpi(300),
16 | height = dpi(70),
17 | bg = beautiful.transparent
18 | }
19 |
20 | awful.placement.bottom(volume.popup, { margins = {bottom = dpi(100)}})
21 |
22 | -- Popup Widget
23 | -----------------
24 |
25 | local indicator = wibox.widget {
26 | background_color = beautiful.bg,
27 | color = beautiful.blue,
28 | shape = function(cr,w,h) gears.shape.rounded_rect(cr,w,h,8) end,
29 | max_value = 100,
30 | widget = wibox.widget.progressbar,
31 | }
32 |
33 | volume.popup : setup {
34 | indicator,
35 | {
36 | {
37 | font = "Roboto 24",
38 | align = "left",
39 | markup = "",
40 | widget = wibox.widget.textbox,
41 | },
42 | margins = {left = dpi(20)},
43 | widget = wibox.container.margin,
44 | },
45 | layout = wibox.layout.stack,
46 | }
47 |
48 | volume.lifespan = gears.timer {
49 | timeout = 1,
50 | call_now = false,
51 | autostart = false,
52 | single_shot = true,
53 | callback = function()
54 | volume.popup.visible = false
55 | end
56 | }
57 |
58 | -- Get Vol
59 | function volume.get_vol()
60 | script = 'pamixer --get-volume'
61 | script2 = 'pamixer --get-mute'
62 | awful.spawn.easy_async_with_shell(script, function(vol)
63 | awful.spawn.easy_async_with_shell(script2, function(is_mute)
64 | if is_mute:match("true") then muted = true else
65 | muted = false
66 | end
67 |
68 | if muted then indicator.color = beautiful.red else
69 | indicator.color = beautiful.blue
70 | end
71 | vol = tonumber(vol:match("(%d+)"))
72 | indicator.value = tonumber(vol)
73 | end)
74 | end)
75 | end
76 |
77 | function volume.changed()
78 | volume.popup.visible = true
79 | if not volume.popup.visible then volume.lifespan:start() else
80 | volume.lifespan:again()
81 | end
82 | end
83 |
84 | -- Control Room
85 | -----------------
86 |
87 | volume.increase = function()
88 | local script = [[
89 | pamixer -i 3
90 | ]]
91 |
92 | awful.spawn(script, false)
93 | volume.get_vol()
94 | volume.changed()
95 | end
96 |
97 | volume.decrease = function()
98 | local script = [[
99 | pamixer -d 3
100 | ]]
101 |
102 | awful.spawn(script, false)
103 | volume.get_vol()
104 | volume.changed()
105 | end
106 |
107 | volume.mute = function()
108 | local script = [[
109 | pamixer -t
110 | ]]
111 |
112 | awful.spawn(script, false)
113 | volume.get_vol()
114 | volume.changed()
115 | end
116 |
117 | return volume
118 |
--------------------------------------------------------------------------------
/conf/awesome/main/apps.lua:
--------------------------------------------------------------------------------
1 | local apps = {
2 | terminal = "wezterm",
3 | launcher = "rofi -show drun",
4 | browser = "firefox",
5 | picture = "feh",
6 | fileManager = "thunar",
7 | }
8 |
9 | return apps
10 |
--------------------------------------------------------------------------------
/conf/awesome/main/autorun.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | picom --config .config/picom/picom.conf
4 |
--------------------------------------------------------------------------------
/conf/awesome/main/bindings/bindings.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local naughty = require "naughty"
4 | local beautiful = require "beautiful"
5 |
6 | local apps = require "main.apps"
7 |
8 | modkey = "Mod4"
9 |
10 | -- General awesome keybindings
11 | awful.keyboard.append_global_keybindings({
12 | awful.key({ modkey, "Control" }, "r", awesome.restart,
13 | {description = "reload awesome", group = "awesome"}),
14 | awful.key({ modkey, "Shift" }, "q", awesome.quit,
15 | {description = "quit awesome", group = "awesome"}),
16 | awful.key({ modkey }, "x",
17 | function ()
18 | awful.prompt.run {
19 | prompt = "Run Lua code: ",
20 | textbox = awful.screen.focused().mypromptbox.widget,
21 | exe_callback = awful.util.eval,
22 | history_path = awful.util.get_cache_dir() .. "/history_eval"
23 | }
24 | end,
25 | {description = "lua execute prompt", group = "awesome"}),
26 | awful.key({ modkey, }, "Return", function () awful.spawn(apps.terminal) end,
27 | {description = "open a terminal", group = "launcher"}),
28 | awful.key({ modkey }, "p", function() menubar.show() end,
29 | {description = "show the menubar", group = "launcher"}),
30 | })
31 |
32 | -- Tag bindings
33 | awful.keyboard.append_global_keybindings({
34 | awful.key({ modkey, }, "Left", awful.tag.viewprev,
35 | {description = "view previous", group = "tag"}),
36 | awful.key({ modkey, }, "Right", awful.tag.viewnext,
37 | {description = "view next", group = "tag"}),
38 | awful.key({ modkey, }, "Escape", awful.tag.history.restore,
39 | {description = "go back", group = "tag"}),
40 | })
41 |
42 | awful.keyboard.append_global_keybindings({
43 | awful.key {
44 | modifiers = { modkey },
45 | keygroup = "numrow",
46 | description = "only view tag",
47 | group = "tag",
48 | on_press = function (index)
49 | local screen = awful.screen.focused()
50 | local tag = screen.tags[index]
51 | if tag then
52 | tag:view_only()
53 | end
54 | end,
55 | },
56 | awful.key {
57 | modifiers = { modkey, "Control" },
58 | keygroup = "numrow",
59 | description = "toggle tag",
60 | group = "tag",
61 | on_press = function (index)
62 | local screen = awful.screen.focused()
63 | local tag = screen.tags[index]
64 | if tag then
65 | awful.tag.viewtoggle(tag)
66 | end
67 | end,
68 | },
69 | awful.key {
70 | modifiers = { modkey, "Shift" },
71 | keygroup = "numrow",
72 | description = "move focused client to tag",
73 | group = "tag",
74 | on_press = function (index)
75 | if client.focus then
76 | local tag = client.focus.screen.tags[index]
77 | if tag then
78 | client.focus:move_to_tag(tag)
79 | end
80 | end
81 | end,
82 | },
83 | awful.key {
84 | modifiers = { modkey, "Control", "Shift" },
85 | keygroup = "numrow",
86 | description = "toggle focused client on tag",
87 | group = "tag",
88 | on_press = function (index)
89 | if client.focus then
90 | local tag = client.focus.screen.tags[index]
91 | if tag then
92 | client.focus:toggle_tag(tag)
93 | end
94 | end
95 | end,
96 | },
97 | awful.key {
98 | modifiers = { modkey },
99 | keygroup = "numpad",
100 | description = "select layout directly",
101 | group = "layout",
102 | on_press = function (index)
103 | local t = awful.screen.focused().selected_tag
104 | if t then
105 | t.layout = t.layouts[index] or t.layout
106 | end
107 | end,
108 | }
109 | })
110 |
111 | -- Focus bindings
112 | awful.keyboard.append_global_keybindings({
113 | awful.key({ modkey, }, "j",
114 | function ()
115 | awful.client.focus.byidx( 1)
116 | end,
117 | {description = "focus next by index", group = "client"}
118 | ),
119 | awful.key({ modkey, }, "k",
120 | function ()
121 | awful.client.focus.byidx(-1)
122 | end,
123 | {description = "focus previous by index", group = "client"}
124 | ),
125 | awful.key({ modkey, }, "Tab",
126 | function ()
127 | awful.client.focus.history.previous()
128 | if client.focus then
129 | client.focus:raise()
130 | end
131 | end,
132 | {description = "go back", group = "client"}),
133 | awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end,
134 | {description = "focus the next screen", group = "screen"}),
135 | awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end,
136 | {description = "focus the previous screen", group = "screen"}),
137 | awful.key({ modkey, "Control" }, "n",
138 | function ()
139 | local c = awful.client.restore()
140 | -- Focus restored client
141 | if c then
142 | c:activate { raise = true, context = "key.unminimize" }
143 | end
144 | end,
145 | {description = "restore minimized", group = "client"}),
146 | })
147 |
148 | -- Layout bindings
149 | awful.keyboard.append_global_keybindings({
150 | awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end,
151 | {description = "swap with next client by index", group = "client"}),
152 | awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end,
153 | {description = "swap with previous client by index", group = "client"}),
154 | awful.key({ modkey, }, "u", awful.client.urgent.jumpto,
155 | {description = "jump to urgent client", group = "client"}),
156 | awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end,
157 | {description = "increase master width factor", group = "layout"}),
158 | awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end,
159 | {description = "decrease master width factor", group = "layout"}),
160 | awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end,
161 | {description = "increase the number of master clients", group = "layout"}),
162 | awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end,
163 | {description = "decrease the number of master clients", group = "layout"}),
164 | awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end,
165 | {description = "increase the number of columns", group = "layout"}),
166 | awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end,
167 | {description = "decrease the number of columns", group = "layout"}),
168 | awful.key({ modkey, }, "space", function () awful.layout.inc( 1) end,
169 | {description = "select next", group = "layout"}),
170 | awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end,
171 | {description = "select previous", group = "layout"}),
172 | })
173 |
174 | -- Client bindings
175 | client.connect_signal("request::default_keybindings", function()
176 | awful.keyboard.append_client_keybindings({
177 | awful.key({ modkey, }, "f",
178 | function (c)
179 | c.fullscreen = not c.fullscreen
180 | c:raise()
181 | end,
182 | {description = "toggle fullscreen", group = "client"}),
183 | awful.key({ modkey }, "q", function (c) c:kill() end,
184 | {description = "close", group = "client"}),
185 | awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle ,
186 | {description = "toggle floating", group = "client"}),
187 | awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end,
188 | {description = "move to master", group = "client"}),
189 | awful.key({ modkey, }, "o", function (c) c:move_to_screen() end,
190 | {description = "move to screen", group = "client"}),
191 | awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end,
192 | {description = "toggle keep on top", group = "client"}),
193 | awful.key({ modkey, }, "n",
194 | function (c)
195 | -- The client currently has the input focus, so it cannot be
196 | -- minimized, since minimized clients can't have the focus.
197 | c.minimized = true
198 | end ,
199 | {description = "minimize", group = "client"}),
200 | awful.key({ modkey, }, "m",
201 | function (c)
202 | c.maximized = not c.maximized
203 | c:raise()
204 | end ,
205 | {description = "(un)maximize", group = "client"}),
206 | awful.key({ modkey, "Control" }, "m",
207 | function (c)
208 | c.maximized_vertical = not c.maximized_vertical
209 | c:raise()
210 | end ,
211 | {description = "(un)maximize vertically", group = "client"}),
212 | awful.key({ modkey, "Shift" }, "m",
213 | function (c)
214 | c.maximized_horizontal = not c.maximized_horizontal
215 | c:raise()
216 | end ,
217 | {description = "(un)maximize horizontally", group = "client"}),
218 | })
219 | end)
220 |
221 | -- Mouse bindings
222 | awful.mouse.append_global_mousebindings({
223 | awful.button({ }, 3, function () mainmenu:toggle() return end),
224 | awful.button({ }, 4, awful.tag.viewprev),
225 | awful.button({ }, 5, awful.tag.viewnext),
226 | })
227 |
228 | client.connect_signal("request::default_mousebindings", function()
229 | awful.mouse.append_client_mousebindings({
230 | awful.button({ }, 1, function (c)
231 | c:activate { context = "mouse_click" }
232 | end),
233 | awful.button({ modkey }, 1, function (c)
234 | c:activate { context = "mouse_click", action = "mouse_move" }
235 | end),
236 | awful.button({ modkey }, 3, function (c)
237 | c:activate { context = "mouse_click", action = "mouse_resize"}
238 | end),
239 | })
240 | end)
241 |
242 |
243 |
--------------------------------------------------------------------------------
/conf/awesome/main/bindings/custom_bindings.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 |
3 | local apps = require "main.apps"
4 | local volume = require "lib.volume"
5 | local brightness = require "lib.brightness"
6 |
7 | modkey = "Mod4"
8 | alt = "Mod1"
9 |
10 | awful.keyboard.append_global_keybindings({
11 | awful.key({modkey}, "r", function() awful.spawn(apps.launcher, false) end), -- Rofi
12 | awful.key({alt}, "c", function() awesome.emit_signal("sidebar::toggle") end), -- Sidebar
13 | awful.key({alt}, "t", function() awful.titlebar.toggle(client.focus) end), -- Toggle titlebar
14 | })
15 |
16 | -- Volume
17 | awful.keyboard.append_global_keybindings({
18 | awful.key({ }, "XF86AudioRaiseVolume", function() volume.increase() end),
19 | awful.key({ }, "XF86AudioLowerVolume", function() volume.decrease() end),
20 | awful.key({ }, "XF86AudioMute", function() volume.mute() end)
21 | })
22 |
23 | -- Brightness
24 | awful.keyboard.append_global_keybindings({
25 | awful.key({ }, "XF86MonBrightnessUp", function() brightness.increase() end),
26 | awful.key({ }, "XF86MonBrightnessDown", function() brightness.decrease() end)
27 | })
28 |
--------------------------------------------------------------------------------
/conf/awesome/main/error_handling.lua:
--------------------------------------------------------------------------------
1 | local naughty = require "naughty"
2 |
3 | naughty.connect_signal("request::display_error", function(message, startup)
4 | naughty.notification {
5 | urgency = "critical",
6 | title = "Oops, an error happened"..(startup and " during startup!" or "!"),
7 | message = message
8 | }
9 | end)
10 |
--------------------------------------------------------------------------------
/conf/awesome/main/layout.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local beautiful = require "beautiful"
4 |
5 | -- Layout
6 | awful.layout.layouts = {
7 | awful.layout.suit.floating,
8 | awful.layout.suit.tile,
9 | }
10 |
11 | -- Client rules
12 | client.connect_signal("mouse::enter", function(c)
13 | c:activate {context = "mouse_enter", raise = false}
14 | end)
15 |
16 | client.connect_signal("request::manage", function (c)
17 | if awesome.startup then awful.client.setslave(c) end
18 | end)
19 |
20 | -- Rounded Corners (I use picom so didn't need those btw)
21 | --[[
22 | client.connect_signal("request::manage", function(c)
23 | if c.fullscreen or c.maximized then
24 | c.shape = function(cr,w,h) gears.shape.rectangle(cr,w,h) end
25 | else
26 | c.shape = function(cr,w,h) gears.shape.rounded_rect(cr,w,h,8) end
27 | end
28 | end)
29 |
30 | -- Disable Rounded Corners when fullscreen or maximized
31 | local function disable_rounded(c)
32 | if c.fullscreen or c.maximized then
33 | c.shape = function(cr,w,h) gears.shape.rectangle(cr,w,h) end
34 | else
35 | c.shape = function(cr,w,h) gears.shape.rounded_rect(cr,w,h,8) end
36 | end
37 | end
38 |
39 | client.connect_signal("property::maximized", function(c)
40 | disable_rounded(c)
41 | end)
42 |
43 | client.connect_signal("property::fullscreen", function(c)
44 | disable_rounded(c)
45 | end)
46 | --]]
47 |
48 | -- Restore client after tiling layout
49 | tag.connect_signal('property::layout', function(t)
50 | for k, c in ipairs(t:clients()) do
51 | if awful.layout.get(mouse.screen) == awful.layout.suit.floating then
52 | local cgeo = awful.client.property.get(c, 'floating_geometry')
53 | if cgeo then
54 | c:geometry(awful.client.property.get(c, 'floating_geometry'))
55 | end
56 | end
57 | end
58 | end)
59 |
60 | client.connect_signal('manage', function(c)
61 | if awful.layout.get(mouse.screen) == awful.layout.suit.floating then
62 | awful.client.property.set(c, 'floating_geometry', c:geometry())
63 | end
64 | end)
65 |
66 | client.connect_signal('property::geometry', function(c)
67 | if awful.layout.get(mouse.screen) == awful.layout.suit.floating then
68 | awful.client.property.set(c, 'floating_geometry', c:geometry())
69 | end
70 | end)
71 |
72 | -- Disable titlebar when tiled
73 | local disable_titlebar = function(t)
74 | for k, c in ipairs(t:clients()) do
75 | if awful.layout.get(mouse.screen) ~= awful.layout.suit.floating then
76 | awful.titlebar.hide(c)
77 | else
78 | awful.titlebar.show(c)
79 | end
80 | end
81 | end
82 |
83 | tag.connect_signal('property::layout', function(t)
84 | disable_titlebar(t)
85 | end)
86 |
87 | client.connect_signal("request::manage", function(c)
88 | if awful.layout.get(mouse.screen) ~= awful.layout.suit.floating then
89 | awful.titlebar.hide(c)
90 | else
91 | awful.titlebar.show(c)
92 | end
93 | end)
94 |
--------------------------------------------------------------------------------
/conf/awesome/main/menu.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local wibox = require "wibox"
3 | local gears = require "gears"
4 |
5 | local apps = require "main.apps"
6 | local screenshot = require "lib.screenshot"
7 |
8 | screenshotMenu = {
9 | { "Screenshot Now", function() screenshot.now() end},
10 | { "Screenshot Later", function() screenshot.later() end}
11 | }
12 |
13 | powerMenu = {
14 | { "Poweroff", function() awful.spawn("poweroff", false) end},
15 | { "Reboot", function() awful.spawn("reboot", false) end}
16 | }
17 |
18 | mainmenu = awful.menu {
19 | items = {
20 | { "Refresh", awesome.restart },
21 | { "Terminal", apps.terminal },
22 | { "Browser", apps.browser },
23 | { "File Manager", apps.fileManager },
24 | { "Screenshot", screenshotMenu },
25 | { "Power Options", powerMenu }
26 | }
27 | }
28 |
29 | mainmenu.wibox.shape = function(cr,w,h)
30 | gears.shape.rounded_rect(cr,w,h,8)
31 | end
32 |
--------------------------------------------------------------------------------
/conf/awesome/main/rules.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local ruled = require "ruled"
4 |
5 | local apps = require "main.apps"
6 |
7 | ruled.client.connect_signal("request::rules", function()
8 | ruled.client.append_rule {
9 | id = "global",
10 | rule = {},
11 | properties = {
12 | focus = awful.client.focus.filter,
13 | raise = true,
14 | screen = awful.screen.preferred,
15 | placement = awful.placement.no_overlap+awful.placement.no_offscreen,
16 | },
17 | }
18 |
19 | ruled.client.append_rule {
20 | id = "titlebars",
21 | rule_any = {
22 | type = {"normal", "dialog"},
23 | },
24 | properties = {
25 | titlebars_enabled = true
26 | }
27 | }
28 |
29 | -- Apps Rules
30 | ruled.client.append_rule {
31 | rule = { class = apps.picture },
32 | properties = {
33 | titlebars_enabled = false
34 | },
35 | }
36 | end)
37 |
--------------------------------------------------------------------------------
/conf/awesome/main/tags.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 |
3 | screen.connect_signal("request::desktop_decoration", function(s)
4 | awful.tag({"1", "2", "3", "4"}, s, awful.layout.layouts[1])
5 | end)
6 |
--------------------------------------------------------------------------------
/conf/awesome/main/wallpaper.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local wibox = require "wibox"
3 | local beautiful = require "beautiful"
4 |
5 | local use_feh = true -- True/False
6 |
7 | local function set_wall(s)
8 | awful.wallpaper {
9 | screen = s,
10 | widget = {
11 | {
12 | image = beautiful.wallpaper,
13 | upscale = true,
14 | downscale = true,
15 | widget = wibox.widget.imagebox,
16 | },
17 | valign = "center",
18 | halign = "center",
19 | tiled = false,
20 | widget = wibox.container.tile,
21 | }
22 | }
23 | end
24 |
25 | screen.connect_signal("request::wallpaper", function(s)
26 | if not use_feh then
27 | set_wall(s)
28 | else
29 | awful.spawn("feh --bg-fill "..beautiful.wallpaper, false)
30 | end
31 | end)
32 |
--------------------------------------------------------------------------------
/conf/awesome/misc/bar/clock.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 |
6 | -- Clock
7 | local clock = wibox.widget.textbox()
8 | clock.font = "Roboto Medium 14"
9 |
10 | gears.timer {
11 | timeout = 30,
12 | autostart = true,
13 | call_now = true,
14 | callback = function()
15 | clock.markup = os.date("%a %H:%M")
16 | end
17 | }
18 |
19 | return clock
20 |
--------------------------------------------------------------------------------
/conf/awesome/misc/bar/init.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 |
6 | local dpi = beautiful.xresources.apply_dpi
7 |
8 | -- Get widgets
9 | local clock = require "misc.bar.clock"
10 | local wifi = require "misc.bar.wifi"
11 | local volume = require "misc.bar.volume"
12 | local launcher = require "misc.bar.launcher"
13 | local menu = require "misc.bar.menu"
14 | local tag = require "misc.bar.tag"
15 | local task = require "misc.bar.task"
16 |
17 | -- Info Icon
18 | local info = wibox.widget {
19 | {
20 | {
21 | {
22 | volume,
23 | wifi,
24 | spacing = dpi(6),
25 | layout = wibox.layout.fixed.horizontal,
26 | },
27 | margins = {top = dpi(2), bottom = dpi(2), left = dpi(6), right = dpi(6)},
28 | widget = wibox.container.margin,
29 | },
30 | shape = function(cr,w,h) gears.shape.rounded_rect(cr,w,h,8) end,
31 | bg = beautiful.bg_alt,
32 | widget = wibox.container.background,
33 | },
34 | margins = {top = dpi(6), bottom = dpi(6)},
35 | widget = wibox.container.margin,
36 | }
37 |
38 | -- Systray
39 | local systray = wibox.widget {
40 | {
41 | {
42 | {
43 | wibox.widget.systray,
44 | layout = wibox.layout.fixed.horizontal,
45 | },
46 | margins = {top = dpi(2), bottom = dpi(2), left = dpi(6), right = dpi(6)},
47 | widget = wibox.container.margin,
48 | },
49 | shape = function(cr,w,h) gears.shape.rounded_rect(cr,w,h,8) end,
50 | bg = beautiful.bg_alt,
51 | widget = wibox.container.background,
52 | },
53 | margins = {top = dpi(6), bottom = dpi(6)},
54 | widget = wibox.container.margin,
55 | }
56 |
57 | -- Right
58 | local right = wibox.widget {
59 | {
60 | systray,
61 | info,
62 | clock,
63 | launcher,
64 | spacing = dpi(20),
65 | layout = wibox.layout.fixed.horizontal,
66 | },
67 | margins = {top = dpi(4), bottom = dpi(4), right = dpi(20)},
68 | widget = wibox.container.margin,
69 | }
70 |
71 | -- Left
72 | local function left(s)
73 | return wibox.widget {
74 | {
75 | tag(s),
76 | spacing = dpi(20),
77 | layout = wibox.layout.fixed.horizontal,
78 | },
79 | margins = {top = dpi(4), bottom = dpi(4), left = dpi(20)},
80 | widget = wibox.container.margin,
81 | }
82 | end
83 |
84 | -- Bar
85 | local function get_bar(s)
86 |
87 | local bar = wibox {
88 | visible = true,
89 | ontop = false,
90 | width = s.geometry.width,
91 | height = dpi(60),
92 | y = s.geometry.height - dpi(60),
93 | bg = beautiful.bg,
94 | type = 'dock'
95 | }
96 |
97 | bar:struts { bottom = dpi(60), top = dpi(20), left = dpi(20), right = dpi(20) }
98 |
99 | bar : setup {
100 | left(s),
101 | {
102 | nil,
103 | --task(s),
104 | expand = 'none',
105 | layout = wibox.layout.align.horizontal,
106 | },
107 | right,
108 | layout = wibox.layout.align.horizontal,
109 | }
110 | end
111 |
112 | awful.screen.connect_for_each_screen(function(s)
113 | get_bar(s)
114 | end)
115 |
--------------------------------------------------------------------------------
/conf/awesome/misc/bar/launcher.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | local apps = require "main.apps"
8 |
9 | local launcher = wibox.widget.textbox()
10 | launcher.font = "Roboto 16"
11 | launcher.markup = ""
12 |
13 | launcher:connect_signal("mouse::enter", function()
14 | launcher.markup = ""
15 | end)
16 |
17 | launcher:connect_signal("mouse::leave", function()
18 | launcher.markup = ""
19 | end)
20 |
21 | launcher:buttons(gears.table.join(
22 | awful.button({ }, 1, function()
23 | awful.spawn(apps.launcher, false)
24 | end)
25 | ))
26 |
27 | return launcher
28 |
--------------------------------------------------------------------------------
/conf/awesome/misc/bar/menu.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local wibox = require "wibox"
3 | local gears = require "gears"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | -- Menu
8 | local menu = wibox.widget.textbox()
9 | menu.font = "Roboto 16"
10 | menu.markup = ""
11 |
12 | menu:connect_signal("mouse::enter", function()
13 | menu.markup = ""
14 | end)
15 |
16 | menu:connect_signal("mouse::leave", function()
17 | menu.markup = ""
18 | end)
19 |
20 | menu:buttons(gears.table.join(
21 | awful.button({ }, 1, function()
22 | awesome.emit_signal("sidebar::toggle")
23 | end)
24 | ))
25 |
26 | return menu
27 |
--------------------------------------------------------------------------------
/conf/awesome/misc/bar/tag.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local naughty = require "naughty"
5 | local beautiful = require "beautiful"
6 | local dpi = beautiful.xresources.apply_dpi
7 |
8 | -- Colors
9 | local colors = {
10 | beautiful.magenta,
11 | beautiful.red,
12 | beautiful.yellow,
13 | beautiful.green,
14 | beautiful.blue
15 | }
16 |
17 | local function update_tag(item, tag, index)
18 | if tag.selected then
19 | item:get_children_by_id("tag")[1].markup = "◆"
20 | elseif #tag:clients() > 0 then
21 | item:get_children_by_id("tag")[1].markup = "◇"
22 | else
23 | item:get_children_by_id("tag")[1].markup = "◇"
24 | end
25 | end
26 |
27 | local button = awful.button({ }, 1, function(t) t:view_only() end)
28 |
29 | return function(s)
30 | local tag = awful.widget.taglist {
31 | screen = s,
32 | filter = awful.widget.taglist.filter.all,
33 | buttons = button,
34 | layout = {
35 | spacing = dpi(4),
36 | layout = wibox.layout.fixed.horizontal,
37 | },
38 | style = {
39 | spacing = dpi(10), --[[
40 | fg_focus = beautiful.red,
41 | fg_empty = beautiful.bg_alt,
42 | fg_occupied = beautiful.fg --]]
43 | },
44 | widget_template = {
45 | id = "tag",
46 | font = "Roboto Medium 14",
47 | widget = wibox.widget.textbox,
48 |
49 | create_callback = function(self, c3, index, object)
50 | update_tag(self, c3, index)
51 | end,
52 |
53 | update_callback = function(self, c3, index, object)
54 | update_tag(self, c3, index)
55 | end
56 | }
57 | }
58 |
59 | return tag
60 | end
61 |
--------------------------------------------------------------------------------
/conf/awesome/misc/bar/task.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | local apps = require "main.apps"
8 |
9 | -- Create tasklist
10 | return function(s)
11 |
12 | local update_task = function(self, c)
13 | if c.active then
14 | self:get_children_by_id("bg")[1].bg = beautiful.bg_alt
15 | return
16 | elseif c.minimized then
17 | self:get_children_by_id("bg")[1].bg = beautiful.bg_alt .. "4d"
18 | return
19 | else
20 | self:get_children_by_id("bg")[1].bg = beautiful.bg
21 | end
22 | end
23 |
24 | local task = awful.widget.tasklist {
25 | screen = s,
26 | filter = awful.widget.tasklist.filter.currenttags,
27 | buttons = {
28 | awful.button({ }, 1, function(c) c:activate {context = "tasklist", action = "toggle_minimization"} end)
29 | },
30 | layout = {
31 | spacing = dpi(0),
32 | layout = wibox.layout.fixed.horizontal,
33 | },
34 | widget_template = {
35 | {
36 | {
37 | id = "client",
38 | widget = awful.widget.clienticon,
39 | },
40 | margins = dpi(12),
41 | widget = wibox.container.margin,
42 | },
43 | id = "bg",
44 | bg = beautiful.bg_alt,
45 | widget = wibox.container.background,
46 |
47 | create_callback = function(self, c, _, __)
48 | self:get_children_by_id("client")[1].client = c
49 | update_task(self, c)
50 | end,
51 |
52 | update_callback = function(self, c, _, __)
53 | self:get_children_by_id("client")[1].client = c
54 | update_task(self, c)
55 | end
56 | },
57 | }
58 |
59 | return task
60 | end
61 |
--------------------------------------------------------------------------------
/conf/awesome/misc/bar/volume.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | -- Volume
8 | local volume = wibox.widget.textbox()
9 | volume.font = "Roboto Medium 18"
10 |
11 | local percentage = wibox.widget.textbox()
12 | percentage.font = "Roboto Medium 14"
13 |
14 | awesome.connect_signal("signal::volume", function(vol, mute)
15 | vol = tonumber(vol)
16 | if mute or vol == 0 then
17 | volume.markup = ""
18 | percentage.markup = "Muted"
19 | else
20 | if vol < 20 then
21 | volume.markup = ""
22 | percentage.markup = vol .. "%"
23 | elseif vol < 60 then
24 | volume.markup = ""
25 | percentage.markup = vol .. "%"
26 | else
27 | volume.markup = ""
28 | percentage.markup = vol .. "%"
29 | end
30 | end
31 | end)
32 |
33 | return {
34 | volume,
35 | --percentage,
36 | spacing = dpi(4),
37 | layout = wibox.layout.fixed.horizontal,
38 | }
39 |
--------------------------------------------------------------------------------
/conf/awesome/misc/bar/wifi.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | -- Wifi
8 | local wifi = wibox.widget.textbox()
9 | wifi.font = "Roboto Medium 16"
10 |
11 | local function get_wifi()
12 | local script = [[
13 | nmcli -g CONNECTIVITY g
14 | ]]
15 |
16 | awful.spawn.easy_async_with_shell(script, function(stdout)
17 | local status = tostring(stdout)
18 | if not status:match("none") then
19 | local get_strength = [[
20 | awk '/^\s*w/ { print int($3 * 100 / 70) }' /proc/net/wireless
21 | ]]
22 |
23 | awful.spawn.easy_async_with_shell(get_strength, function(stdout)
24 | local strength = tonumber(stdout)
25 | if strength < 20 then
26 | wifi.markup = ""
27 | elseif strength < 40 then
28 | wifi.markup = ""
29 | elseif strength < 60 then
30 | wifi.markup = ""
31 | elseif strength < 80 then
32 | wifi.markup = ""
33 | else
34 | wifi.markup = ""
35 | end
36 | end)
37 | else
38 | wifi.markup = ""
39 | end
40 | end)
41 | end
42 |
43 | gears.timer {
44 | timeout = 5,
45 | autostart = true,
46 | call_now = true,
47 | callback = function() get_wifi() end
48 | }
49 |
50 | return wifi
51 |
--------------------------------------------------------------------------------
/conf/awesome/misc/init.lua:
--------------------------------------------------------------------------------
1 | require "misc.titlebar"
2 | require "misc.bar"
3 | require "misc.sidebar"
4 | require "misc.notif"
5 |
--------------------------------------------------------------------------------
/conf/awesome/misc/notif/init.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local wibox = require "wibox"
3 | local gears = require "gears"
4 | local beautiful = require "beautiful"
5 | local ruled = require "ruled"
6 | local naughty = require "naughty"
7 | local dpi = beautiful.xresources.apply_dpi
8 |
9 | naughty.config.defaults.ontop = true
10 | naughty.config.defaults.screen = awful.screen.focused()
11 | naughty.config.defaults.timeout = 5
12 | naughty.config.defaults.title = "Notification"
13 | naughty.config.defaults.position = "top_right"
14 | naughty.config.defaults.border_width = 0
15 |
16 | local function create_notif(n)
17 | local time = os.date "%H:%M"
18 | local icon_visibility
19 |
20 | if n.icon == nil then
21 | icon_visibility = false
22 | else
23 | icon_visibility = true
24 | end
25 |
26 | -- Action widget
27 | local action_widget = {
28 | {
29 | {
30 | id = "text_role",
31 | align = "center",
32 | font = "Roboto Mono 10",
33 | widget = wibox.widget.textbox,
34 | },
35 | margins = {left = dpi(6), right = dpi(6)},
36 | widget = wibox.container.margin,
37 | },
38 | widget = wibox.container.background,
39 | }
40 |
41 | -- Apply action widget ^
42 | local actions = wibox.widget {
43 | notification = n,
44 | base_layout = wibox.widget {
45 | spacing = dpi(8),
46 | layout = wibox.layout.flex.horizontal,
47 | },
48 | widget_template = action_widget,
49 | widget = naughty.list.actions,
50 | }
51 |
52 | local function space_h(length, circumstances)
53 | return wibox.widget {
54 | forced_width = length,
55 | visible = circumstances,
56 | layout = wibox.layout.fixed.horizontal,
57 | }
58 | end
59 |
60 | -- Make other widgets
61 | local title = wibox.widget.textbox()
62 | title.font = "Roboto bold 14"
63 | title.align = 'left'
64 | title.markup = n.title
65 |
66 | local message = wibox.widget.textbox()
67 | message.font = "Roboto Mono 12"
68 | message.align = 'left'
69 | message.markup = n.message
70 |
71 | local icon = wibox.widget {
72 | nil,
73 | {
74 | {
75 | image = n.icon,
76 | visible = icon_visibility,
77 | widget = wibox.widget.imagebox,
78 | },
79 | strategy = "max",
80 | width = dpi(60),
81 | height = dpi(60),
82 | widget = wibox.container.constraint,
83 | },
84 | expand = 'none',
85 | layout = wibox.layout.align.vertical,
86 | }
87 |
88 | local container = wibox.widget {
89 | {
90 | title,
91 | {
92 | icon,
93 | space_h(dpi(10), icon_visibility),
94 | message,
95 | layout = wibox.layout.fixed.horizontal,
96 | },
97 | actions,
98 | spacing = dpi(10),
99 | layout = wibox.layout.fixed.vertical,
100 | },
101 | margins = dpi(20),
102 | widget = wibox.container.margin,
103 | }
104 |
105 | naughty.layout.box {
106 | notification = n,
107 | type = "notification",
108 | bg = beautiful.bg,
109 | border_width = 0,
110 | shape = function(cr,w,h) gears.shape.rounded_rect(cr,w,h,5) end,
111 | widget_template = {
112 | {
113 | {
114 | {
115 | widget = container,
116 | },
117 | strategy = "max",
118 | width = dpi(620),
119 | widget = wibox.container.constraint,
120 | },
121 | strategy = "min",
122 | width = dpi(160),
123 | height = dpi(80),
124 | widget = wibox.container.constraint,
125 | },
126 | bg = beautiful.bg,
127 | widget = wibox.container.background,
128 | }
129 | }
130 | end
131 |
132 | naughty.connect_signal("request::display", function(n)
133 | create_notif(n)
134 | end)
135 |
136 | ruled.notification.connect_signal("request::rules", function()
137 | ruled.notification.append_rule {
138 | rule = {},
139 | properties = {
140 | screen = awful.screen.focused(),
141 | implicit_timeout = 5,
142 | }
143 | }
144 | end)
145 |
146 |
--------------------------------------------------------------------------------
/conf/awesome/misc/notif/notify.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local naughty = require "naughty"
3 |
4 | -- Some more notif function
5 | local notify = {}
6 |
7 | -- Notify after screenshot
8 | notify.screenshot = function(location)
9 | local open = naughty.action {
10 | name = "Open"
11 | }
12 |
13 | open:connect_signal("invoked", function(n)
14 | awful.spawn("feh "..location, false)
15 | end)
16 |
17 | local show = naughty.action {
18 | name = "Show"
19 | }
20 |
21 | show:connect_signal("invoked", function(n)
22 | awful.spawn("thunar "..location, false)
23 | end)
24 |
25 | naughty.notification {
26 | title = "Screenshot",
27 | message = "Smile!",
28 | actions = { open, show },
29 | }
30 | end
31 |
32 | return notify
33 |
--------------------------------------------------------------------------------
/conf/awesome/misc/sidebar/calendar.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | -- Creating Calendar
8 | ----------------------
9 |
10 | -- copied from awesome doc and adjusted a bit
11 | local styles = {}
12 |
13 | styles.month = { bg_color = beautiful.bg_alt}
14 | styles.normal = {
15 | bg_color = beautiful.bg_alt,
16 | padding = dpi(6),
17 | fg_color = beautiful.fg,
18 | }
19 | styles.focus = {
20 | fg_color = beautiful.yellow,
21 | padding = dpi(6),
22 | markup = function(t) return '' .. t .. '' end,
23 | }
24 | styles.header = {
25 | fg_color = beautiful.blue,
26 | markup = function(t) return '' .. t .. '' end,
27 | }
28 | styles.weekday = {
29 | fg_color = beautiful.fg,
30 | markup = function(t) return '' .. t .. '' end,
31 | }
32 |
33 | -- The Function
34 | local function decorate_cell(widget, flag, date)
35 | if flag=="monthheader" and not styles.monthheader then
36 | flag = "header"
37 | end
38 |
39 | local props = styles[flag] or {}
40 |
41 | if props.markup and widget.get_text and widget.set_markup then
42 | widget:set_markup(props.markup(widget:get_text()))
43 | end
44 | -- Change bg color for weekends
45 | local d = {year=date.year, month=(date.month or 1), day=(date.day or 1)}
46 | local weekday = tonumber(os.date("%w", os.time(d)))
47 | local ret = wibox.widget {
48 | {
49 | widget,
50 | margins = props.padding,
51 | widget = wibox.container.margin
52 | },
53 | fg = props.fg_color,
54 | bg = props.bg_color,
55 | widget = wibox.container.background
56 | }
57 |
58 | return ret
59 | end
60 |
61 | local calendar = wibox.widget {
62 | date = os.date("*t"),
63 | font = "Roboto Mono 14",
64 | fn_embed = decorate_cell,
65 | widget = wibox.widget.calendar.month,
66 | }
67 |
68 |
69 | return wibox.widget {
70 | nil,
71 | {
72 | nil,
73 | calendar,
74 | expand = 'none',
75 | layout = wibox.layout.align.horizontal,
76 | },
77 | expand = 'none',
78 | layout = wibox.layout.align.vertical,
79 | }
80 |
--------------------------------------------------------------------------------
/conf/awesome/misc/sidebar/clock.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local wibox = require "wibox"
3 | local gears = require "gears"
4 | local beautiful = require "beautiful"
5 |
6 | local dpi = beautiful.xresources.apply_dpi
7 |
8 | -- Day
9 | local day = wibox.widget.textbox()
10 | day.font = "Roboto bold 32"
11 | day.align = 'center'
12 |
13 | local date = wibox.widget.textbox()
14 | date.font = "Roboto bold 14"
15 | date.align = 'center'
16 |
17 | gears.timer {
18 | timeout = 60,
19 | call_now = true,
20 | autostart = true,
21 | callback = function()
22 | day.markup = ""..os.date("%A")..""
23 | date.markup = os.date("%d %B %Y")
24 | end
25 | }
26 |
27 | return wibox.widget {
28 | day,
29 | date,
30 | spacing = dpi(4),
31 | layout = wibox.layout.fixed.vertical,
32 | }
33 |
--------------------------------------------------------------------------------
/conf/awesome/misc/sidebar/init.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | local rubato = require "lib.rubato"
8 |
9 | -- Var
10 | local width = dpi(420)
11 | local height = awful.screen.focused().geometry.height - dpi(100)
12 |
13 | -- Helper
14 | -----------
15 |
16 | local function round_widget(radius)
17 | return function(cr,w,h)
18 | gears.shape.rounded_rect(cr,w,h,radius)
19 | end
20 | end
21 |
22 | local function center_widget(widgets)
23 | return wibox.widget {
24 | nil,
25 | {
26 | nil,
27 | widgets,
28 | expand = 'none',
29 | layout = wibox.layout.align.horizontal,
30 | },
31 | expand = 'none',
32 | layout = wibox.layout.align.vertical,
33 | }
34 | end
35 |
36 | local function box_widget(widgets, width, height)
37 | --local centered_widget = center_widget(widgets)
38 |
39 | return wibox.widget {
40 | {
41 | {
42 | widgets,
43 | margins = dpi(16),
44 | widget = wibox.container.margin,
45 | },
46 | forced_width = dpi(width),
47 | forced_height = dpi(height),
48 | shape = round_widget(8),
49 | bg = beautiful.bg_alt,
50 | widget = wibox.container.background,
51 | },
52 | margins = {left = dpi(20), right = dpi(20)},
53 | widget = wibox.container.margin,
54 | }
55 | end
56 |
57 | local aa = wibox.widget.textbox()
58 |
59 | -- Get widgets
60 | local profile_widget = require "misc.sidebar.profile"
61 | local player_widget = require "misc.sidebar.player"
62 | local stats_widget = require "misc.sidebar.stats"
63 | local calendar_widget = require "misc.sidebar.calendar"
64 |
65 | -- Combine some widgets
66 | local profile = box_widget(profile_widget, 380, 210)
67 | local player = box_widget(player_widget, 380, 150)
68 | local stats = box_widget(stats_widget, 380, 180)
69 | local calendar = box_widget(calendar_widget, 380, 330)
70 |
71 | -- Spacing
72 | local space = function(height)
73 | return wibox.widget {
74 | forced_height = dpi(height),
75 | layout = wibox.layout.align.horizontal
76 | }
77 | end
78 |
79 | -- Sidebar
80 | local sidebar = wibox {
81 | visible = false,
82 | ontop = true,
83 | width = width,
84 | height = height,
85 | y = dpi(20),
86 | bg = beautiful.bg,
87 | }
88 |
89 | -- Sidebar widget setup
90 | sidebar : setup {
91 | {
92 | profile,
93 | player,
94 | stats,
95 | calendar,
96 | spacing = dpi(20),
97 | layout = wibox.layout.fixed.vertical,
98 | },
99 | margins = { top = dpi(20), bottom = dpi(20)},
100 | widget = wibox.container.margin,
101 | }
102 |
103 | -- Slide animation
104 | local slide = rubato.timed {
105 | pos = awful.screen.focused().geometry.x - sidebar.width,
106 | rate = 60,
107 | intro = 0.2,
108 | duration = 0.4,
109 | subscribed = function(pos)
110 | sidebar.x = awful.screen.focused().geometry.x + pos
111 | end
112 | }
113 |
114 | -- Timer of sidebar's death
115 | sidebar.timer = gears.timer {
116 | timeout = 0.5,
117 | single_shot = true,
118 | callback = function()
119 | sidebar.visible = not sidebar.visible
120 | end
121 | }
122 |
123 | -- Toggle function
124 | sidebar.toggle = function()
125 | if sidebar.visible then
126 | slide.target = awful.screen.focused().geometry.x - sidebar.width
127 | sidebar.timer:start()
128 | else
129 | slide.target = awful.screen.focused().geometry.x + dpi(20)
130 | sidebar.visible = not sidebar.visible
131 | end
132 | end
133 |
134 | -- Get signal to execute the function (if that makes sense)
135 | awesome.connect_signal("sidebar::toggle", function()
136 | sidebar.toggle()
137 | end)
138 |
139 | return sidebar
140 |
--------------------------------------------------------------------------------
/conf/awesome/misc/sidebar/player.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | -- Make Widgets
8 | -----------------
9 |
10 | -- Song's Title
11 | local title = wibox.widget.textbox()
12 | title.font = "Roboto Medium 16"
13 | title.align = "left"
14 | title.valign = "center"
15 |
16 | -- Song's Artist
17 | local artist = wibox.widget.textbox()
18 | artist.font = "Roboto Regular 16"
19 | artist.align = "left"
20 | artist.valign = "bottom"
21 |
22 | -- Song's Length
23 | local length = wibox.widget.textbox()
24 | length.font = "Roboto Mono Regular 14"
25 | length.align = "center"
26 | length.valign = "center"
27 |
28 | -- Player's Button
29 | local toggle = wibox.widget.textbox()
30 | toggle.font = "Roboto 26"
31 |
32 | toggle:buttons(gears.table.join(
33 | awful.button({}, 1, function()
34 | awful.spawn("playerctl -i firefox play-pause", false)
35 | if toggle.markup:match("") then
36 | toggle.markup = ""
37 | else
38 | toggle.markup = ""
39 | end
40 | end)
41 | ))
42 |
43 | local next = wibox.widget.textbox()
44 | next.font = "Roboto 26"
45 | next.markup = ""
46 |
47 | next:buttons(gears.table.join(
48 | awful.button({}, 1, function() awful.spawn("playerctl next", false) end)
49 | ))
50 |
51 | local back = wibox.widget.textbox()
52 | back.font = "Roboto 26"
53 | back.markup = ""
54 |
55 | back:buttons(gears.table.join(
56 | awful.button({}, 1, function() awful.spawn("playerctl previous", false) end)
57 | ))
58 |
59 | -- Get data
60 | awesome.connect_signal("signal::player", function(t, a, l, s)
61 | if not s:match("Playing") then
62 | toggle.markup = ""
63 | else
64 | toggle.markup = ""
65 | end
66 |
67 | title.markup = t
68 | artist.markup = a
69 | length.markup = l
70 | end)
71 |
72 | -- Grouping Widgets
73 | ---------------------
74 |
75 | local buttons = wibox.widget {
76 | back,
77 | toggle,
78 | next,
79 | spacing = dpi(8),
80 | layout = wibox.layout.fixed.horizontal,
81 | }
82 |
83 | return wibox.widget {
84 | {
85 | nil,
86 | {
87 | title,
88 | artist,
89 | layout = wibox.layout.fixed.vertical,
90 | },
91 | expand = 'none',
92 | layout = wibox.layout.align.vertical,
93 | },
94 | {
95 | nil,
96 | nil,
97 | {
98 | length,
99 | {
100 | nil,
101 | buttons,
102 | expand = 'none',
103 | layout = wibox.layout.align.horizontal,
104 | },
105 | spacing = dpi(12),
106 | layout = wibox.layout.fixed.vertical,
107 | },
108 | layout = wibox.layout.align.vertical,
109 | },
110 | layout = wibox.layout.flex.horizontal,
111 | }
112 |
--------------------------------------------------------------------------------
/conf/awesome/misc/sidebar/profile.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local wibox = require "wibox"
3 | local gears = require "gears"
4 | local beautiful = require "beautiful"
5 |
6 | local dpi = beautiful.xresources.apply_dpi
7 |
8 | -- Helper
9 | -----------
10 |
11 | local function round_widget(radius)
12 | return function(cr,w,h)
13 | gears.shape.rounded_rect(cr,w,h,radius)
14 | end
15 | end
16 |
17 | -- Create Widgets
18 | -------------------
19 |
20 | -- Pfp
21 | local pfp = wibox.widget.imagebox()
22 | pfp.image = beautiful.pfp
23 | pfp.clip_shape = gears.shape.circle
24 | pfp.forced_width = dpi(130)
25 | pfp.forced_height = dpi(130)
26 |
27 | -- User
28 | local user = wibox.widget.textbox()
29 | user.font = "Roboto SemiBold 18"
30 | user.align = 'left'
31 | user.markup = ""..beautiful.user..""
32 |
33 | -- Hostname
34 | local hostname = wibox.widget.textbox()
35 | hostname.font = "Roboto Regular 14"
36 | hostname.align = 'left'
37 |
38 | awful.spawn.easy_async_with_shell("cat /proc/sys/kernel/hostname", function(stdout)
39 | hostname.markup = "@"..tostring(stdout)
40 | end)
41 |
42 | -- Weather Icon
43 | local weather_icon = wibox.widget.imagebox()
44 | weather_icon.image = beautiful.weather_icon
45 | weather_icon.forced_width = dpi(70)
46 | weather_icon.forced_height = dpi(47)
47 |
48 | -- Temperature
49 | local temperature = wibox.widget.textbox()
50 | temperature.font = "Roboto Medium 20"
51 | temperature.align = 'left'
52 |
53 | -- How's the weather?
54 | local the_weather = wibox.widget.textbox()
55 | the_weather.font = "Roboto Medium 14"
56 | the_weather.align = "left"
57 |
58 | -- Battery
59 | local bat_desc = wibox.widget.textbox()
60 | bat_desc.font = "Roboto Medium 12"
61 | bat_desc.align = "center"
62 |
63 | local battery = wibox.widget {
64 | {
65 | id = "bat_val",
66 | forced_width = dpi(130),
67 | forced_height = dpi(22),
68 | background_color = "#4B6133",
69 | color = beautiful.green,
70 | shape = round_widget(12),
71 | bar_shape = round_widget(12),
72 | max_value = 100,
73 | widget = wibox.widget.progressbar,
74 | },
75 | {
76 | widget = bat_desc,
77 | },
78 | layout = wibox.layout.stack,
79 | }
80 |
81 | -- Get data 4 widgets!
82 | awesome.connect_signal("signal::bat", function(bat_value, bat_preview)
83 | battery.bat_val.value = bat_value
84 | bat_desc.markup = ""..bat_preview..""
85 | end)
86 |
87 | awesome.connect_signal("signal::weather", function(hows_weather, feels_like)
88 | hows_weather = string.gsub(hows_weather, "'", "")
89 | feels_like = string.gsub(feels_like, "\n", "")
90 | the_weather.markup = hows_weather
91 | temperature.markup = feels_like:match("%d%d").."°C"
92 | end)
93 |
94 | -- Spacing horizontally
95 | local space = wibox.widget {
96 | forced_height = dpi(6),
97 | layout = wibox.layout.align.horizontal
98 | }
99 |
100 | -- Grouping widgets
101 | ---------------------
102 |
103 | local name = wibox.widget {
104 | user,
105 | hostname,
106 | spacing = dpi(4),
107 | layout = wibox.layout.fixed.vertical,
108 | }
109 |
110 | local weather = wibox.widget {
111 | {
112 | weather_icon,
113 | temperature,
114 | spacing = dpi(20),
115 | layout = wibox.layout.fixed.horizontal,
116 | },
117 | {
118 | widget = the_weather,
119 | },
120 | spacing = dpi(8),
121 | layout = wibox.layout.fixed.vertical,
122 | }
123 |
124 | -- The Profile Widget
125 | return wibox.widget {
126 | {
127 | {
128 | pfp,
129 | battery,
130 | spacing = dpi(20),
131 | layout = wibox.layout.fixed.vertical,
132 | },
133 | layout = wibox.layout.fixed.vertical,
134 | },
135 | {
136 | name,
137 | weather,
138 | layout = wibox.layout.fixed.vertical,
139 | },
140 | spacing = dpi(30),
141 | layout = wibox.layout.fixed.horizontal,
142 | }
143 |
--------------------------------------------------------------------------------
/conf/awesome/misc/sidebar/sliders.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | -- Create volume slider
8 | local volume_icon = wibox.widget.textbox()
9 | volume_icon.font = "Roboto Medium 16"
10 | volume_icon.align = 'center'
11 | volume_icon.markup = ""
12 |
13 | local volume_slider = wibox.widget {
14 | forced_width = dpi(220),
15 | forced_height = dpi(30),
16 | bar_shape = gears.shape.rounded_bar,
17 | bar_height = dpi(14),
18 | bar_color = beautiful.bg_alt,
19 | bar_active_color = beautiful.blue,
20 | handle_shape = gears.shape.circle,
21 | handle_color = beautiful.blue,
22 | handle_width = dpi(20),
23 | widget = wibox.widget.slider
24 | }
25 |
26 | local volume = wibox.widget {
27 | nil,
28 | {
29 | volume_icon,
30 | volume_slider,
31 | spacing = dpi(20),
32 | layout = wibox.layout.fixed.horizontal,
33 | },
34 | expand = "none",
35 | layout = wibox.layout.align.vertical,
36 | }
37 |
38 | local update_volume = function()
39 | awful.spawn.easy_async_with_shell("pamixer --get-volume", function(stdout)
40 | volume_slider.value = tonumber(stdout:match("%d+"))
41 | end)
42 | end
43 |
44 | volume_slider:connect_signal("property::value", function(_, vol)
45 | awful.spawn("pamixer --set-volume ".. vol, false)
46 | end)
47 |
48 | -- Create brightness slider
49 | local bright_icon = wibox.widget.textbox()
50 | bright_icon.font = "Roboto Medium 16"
51 | bright_icon.align = 'center'
52 | bright_icon.markup = ""
53 |
54 | local bright_slider = wibox.widget {
55 | forced_width = dpi(220),
56 | forced_height = dpi(30),
57 | bar_shape = gears.shape.rounded_bar,
58 | bar_height = dpi(14),
59 | bar_color = beautiful.bg_alt,
60 | bar_active_color = beautiful.yellow,
61 | handle_shape = gears.shape.circle,
62 | handle_color = beautiful.yellow,
63 | handle_width = dpi(20),
64 | widget = wibox.widget.slider
65 | }
66 |
67 | bright_slider:connect_signal("property::value", function(_, bri)
68 | awful.spawn("brightnessctl set "..bri.."%", false)
69 | end)
70 |
71 | local update_brightness = function()
72 | awful.spawn.easy_async_with_shell("brightnessctl g", function(stdout)
73 | val = tonumber(stdout)
74 | awful.spawn.easy_async_with_shell("brightnessctl max", function(stdout)
75 | bri = val/tonumber(stdout) * 100
76 | bright_slider.value = bri
77 | end)
78 | end)
79 | end
80 |
81 | local brightness = wibox.widget {
82 | nil,
83 | {
84 | bright_icon,
85 | bright_slider,
86 | spacing = dpi(20),
87 | layout = wibox.layout.fixed.horizontal,
88 | },
89 | expand = "none",
90 | layout = wibox.layout.align.vertical,
91 | }
92 |
93 | gears.timer {
94 | timeout = 10,
95 | autostart = true,
96 | call_now = true,
97 | callback = function()
98 | update_volume()
99 | update_brightness()
100 | end
101 | }
102 |
103 | local all_slider = wibox.widget {
104 | volume,
105 | brightness,
106 | spacing = dpi(20),
107 | layout = wibox.layout.fixed.vertical,
108 | }
109 |
110 | return all_slider
111 |
--------------------------------------------------------------------------------
/conf/awesome/misc/sidebar/stats.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local wibox = require "wibox"
3 | local gears = require "gears"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | -- Helper
8 | -----------
9 |
10 | local function round_widget(radius)
11 | return function(cr,w,h)
12 | gears.shape.rounded_rect(cr,w,h,radius)
13 | end
14 | end
15 |
16 | local function grouping_widget(w1,w2)
17 | local container = wibox.widget {
18 | w1,
19 | {
20 | nil,
21 | w2,
22 | expand = 'none',
23 | layout = wibox.layout.align.vertical,
24 | },
25 | spacing = dpi(18),
26 | layout = wibox.layout.fixed.horizontal,
27 | }
28 |
29 | return container
30 | end
31 |
32 | local function center_widget(widget)
33 | return wibox.widget {
34 | nil,
35 | {
36 | nil,
37 | widget,
38 | expand = 'none',
39 | layout = wibox.layout.align.horizontal,
40 | },
41 | expand = 'none',
42 | layout = wibox.layout.align.vertical,
43 | }
44 | end
45 |
46 | -- Create_widgets
47 | -------------------
48 |
49 | -- Disk
50 | local d_icon = wibox.widget.textbox()
51 | d_icon.font = "Roboto Medium 20"
52 | d_icon.align = "left"
53 | d_icon.markup = ""
54 |
55 | local d_slider = wibox.widget {
56 | forced_width = dpi(220),
57 | forced_height = dpi(10),
58 | color = beautiful.red,
59 | background_color = "#663D3D",
60 | shape = round_widget(12),
61 | bar_shape = round_widget(12),
62 | max_value = 100,
63 | value = 20,
64 | widget = wibox.widget.progressbar,
65 | }
66 |
67 | local disk = grouping_widget(d_icon, d_slider)
68 |
69 | -- Vol
70 | local v_icon = wibox.widget.textbox()
71 | v_icon.font = "Roboto Medium 20"
72 | v_icon.align = "left"
73 | v_icon.markup = ""
74 |
75 | local v_slider = wibox.widget {
76 | forced_width = dpi(220),
77 | forced_height = dpi(10),
78 | color = beautiful.blue,
79 | background_color = "#3D4B66",
80 | shape = round_widget(12),
81 | bar_shape = round_widget(12),
82 | max_value = 100,
83 | widget = wibox.widget.progressbar,
84 | }
85 |
86 | local volume = grouping_widget(v_icon, v_slider)
87 |
88 | -- Brightness
89 | local b_icon = wibox.widget.textbox()
90 | b_icon.font = "Roboto Medium 20"
91 | b_icon.align = "left"
92 | b_icon.markup = ""
93 |
94 | local b_slider = wibox.widget {
95 | forced_width = dpi(220),
96 | forced_height = dpi(10),
97 | color = beautiful.yellow,
98 | background_color = "#66523D",
99 | shape = round_widget(12),
100 | bar_shape = round_widget(12),
101 | max_value = 100,
102 | widget = wibox.widget.progressbar,
103 | }
104 |
105 | local brightness = grouping_widget(b_icon, b_slider)
106 |
107 | -- Getting Value for These Widgets
108 | ------------------------------------
109 |
110 | local function get_val()
111 | awesome.connect_signal("signal::volume", function(vol, muted)
112 | if muted then v_slider.value = 0 else
113 | v_slider.color = beautiful.blue
114 | v_slider.value = tonumber(vol)
115 | end
116 | end)
117 |
118 | awesome.connect_signal("signal::brightness", function(bri)
119 | b_slider.value = tonumber(bri)
120 | end)
121 |
122 | awesome.connect_signal("signal::disk", function(disk_perc)
123 | d_slider.value = tonumber(disk_perc)
124 | end)
125 | end
126 |
127 | get_val()
128 |
129 | return center_widget(wibox.widget {
130 | disk,
131 | volume,
132 | brightness,
133 | spacing = dpi(18),
134 | layout = wibox.layout.fixed.vertical,
135 | })
136 |
--------------------------------------------------------------------------------
/conf/awesome/misc/sidebar/uptime.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local wibox = require "wibox"
3 | local gears = require "gears"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | -- Icon
8 | local icon = wibox.widget.textbox()
9 | icon.font = "Roboto Medium 24"
10 | icon.align = 'center'
11 | icon.markup = ""
12 |
13 | -- Uptime
14 | local uptime = wibox.widget.textbox()
15 | uptime.font = "Roboto Medium 16"
16 | uptime.align = 'center'
17 |
18 | local function get_uptime()
19 | local script = [[
20 | uptime -p
21 | ]]
22 |
23 | awful.spawn.easy_async_with_shell(script, function(stdout)
24 | stdout = string.gsub(stdout, "\n", "")
25 | uptime.markup = stdout
26 | end)
27 | end
28 |
29 | gears.timer {
30 | timeout = 60,
31 | autostart = true,
32 | call_now = true,
33 | callback = function()
34 | get_uptime()
35 | end
36 | }
37 |
38 | return wibox.widget {
39 | icon,
40 | uptime,
41 | spacing = dpi(10),
42 | layout = wibox.layout.fixed.horizontal,
43 | }
44 |
--------------------------------------------------------------------------------
/conf/awesome/misc/sidebar/wifi.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local wibox = require "wibox"
3 | local gears = require "gears"
4 | local beautiful = require "beautiful"
5 | local dpi = beautiful.xresources.apply_dpi
6 |
7 | -- Icon
8 | local icon = wibox.widget.textbox()
9 | icon.font = "Roboto Medium 24"
10 | icon.align = 'center'
11 |
12 | -- Wifi Name
13 | local wifi = wibox.widget.textbox()
14 | wifi.font = "Roboto Medium 16"
15 | wifi.align = 'center'
16 | wifi.markup = "Connecting.." -- In case it's still fetching wifi name
17 |
18 | awesome.connect_signal("signal::wifi", function(connected, ssid)
19 | if connected then
20 | ssid = tostring(ssid)
21 | ssid = ssid:match("(.-)[:]")
22 | icon.markup = ""
23 | wifi.markup = ssid
24 | else
25 | icon.markup = ""
26 | wifi.markup = "Not Connected ;-;"
27 | end
28 | end)
29 |
30 | return wibox.widget {
31 | icon,
32 | wifi,
33 | spacing = dpi(10),
34 | layout = wibox.layout.fixed.horizontal
35 | }
36 |
--------------------------------------------------------------------------------
/conf/awesome/misc/titlebar.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 | local beautiful = require "beautiful"
5 |
6 | local dpi = beautiful.xresources.apply_dpi
7 |
8 | ----- Titlebar
9 | local get_titlebar = function(c)
10 | -- Button
11 | local buttons = gears.table.join({
12 | awful.button({ }, 1, function()
13 | c:activate {context = "titlebar", action = "mouse_move"}
14 | end),
15 | awful.button({ }, 3, function()
16 | c:activate {context = "titlebar", action = "mouse_resize"}
17 | end)
18 | })
19 |
20 | -- Titlebar's decorations
21 | local left = wibox.widget {
22 | awful.titlebar.widget.closebutton(c),
23 | awful.titlebar.widget.maximizedbutton(c),
24 | awful.titlebar.widget.minimizebutton(c),
25 | spacing = dpi(6),
26 | layout = wibox.layout.fixed.horizontal,
27 | }
28 |
29 | local middle = wibox.widget {
30 | buttons = buttons,
31 | layout = wibox.layout.fixed.horizontal,
32 | }
33 |
34 | local right = wibox.widget {
35 | buttons = buttons,
36 | layout = wibox.layout.fixed.horizontal,
37 | }
38 |
39 | local container = wibox.widget {
40 | bg = beautiful.bg,
41 | widget = wibox.container.background,
42 | }
43 |
44 | c:connect_signal("focus", function() container.bg = beautiful.bg end)
45 | c:connect_signal("unfocus", function() container.bg = beautiful.bg end)
46 |
47 | return wibox.widget {
48 | {
49 | {
50 | left,
51 | middle,
52 | right,
53 | layout = wibox.layout.align.horizontal,
54 | },
55 | margins = {top = dpi(12), bottom = dpi(12), left = dpi(10), right = dpi(10)},
56 | widget = wibox.container.margin,
57 | },
58 | widget = container,
59 | }
60 | end
61 |
62 | local function top(c)
63 | local titlebar = awful.titlebar(c, {
64 | position = 'top',
65 | size = dpi(50),
66 | })
67 |
68 | titlebar : setup {
69 | widget = get_titlebar(c)
70 | }
71 | end
72 |
73 | client.connect_signal("request::titlebars", function(c)
74 | if c.class == "feh" then
75 | awful.titlebar.hide(c)
76 | else
77 | top(c)
78 | end
79 | end)
80 |
--------------------------------------------------------------------------------
/conf/awesome/rc.lua:
--------------------------------------------------------------------------------
1 | --[[
2 | ______ __ __ ______ ______ ______ __ __ ______ __ __ __ __
3 | /\ __ \ /\ \ _ \ \ /\ ___\ /\ ___\ /\ __ \ /\ "-./ \ /\ ___\ /\ \ _ \ \ /\ "-./ \
4 | \ \ __ \ \ \ \/ ".\ \ \ \ __\ \ \___ \ \ \ \/\ \ \ \ \-./\ \ \ \ __\ \ \ \/ ".\ \ \ \ \-./\ \
5 | \ \_\ \_\ \ \__/".~\_\ \ \_____\ \/\_____\ \ \_____\ \ \_\ \ \_\ \ \_____\ \ \__/".~\_\ \ \_\ \ \_\
6 | \/_/\/_/ \/_/ \/_/ \/_____/ \/_____/ \/_____/ \/_/ \/_/ \/_____/ \/_/ \/_/ \/_/ \/_/
7 |
8 | --]]
9 |
10 | pcall(require, "luarocks.loader")
11 |
12 | local awful = require "awful"
13 | local gears = require "gears"
14 | local beautiful = require "beautiful"
15 |
16 | require "main.error_handling"
17 |
18 | beautiful.init(gears.filesystem.get_configuration_dir() .. "theme/theme.lua")
19 |
20 | -- init config
21 | require "main.wallpaper"
22 | require "main.layout"
23 | require "main.rules"
24 | require "main.bindings.bindings"
25 | require "main.bindings.custom_bindings"
26 | require "main.tags"
27 | require "main.menu"
28 |
29 | require "awful.autofocus"
30 |
31 | -- init widget
32 | require "misc"
33 | require "signals"
34 |
35 | -- Autorun at startup
36 | awful.spawn.with_shell("bash ~/.config/awesome/main/autorun.sh")
37 |
--------------------------------------------------------------------------------
/conf/awesome/signals/battery.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local beautiful = require "beautiful"
4 |
5 | local have_battery = [[
6 | bash -c '
7 | cat /sys/class/power_supply/BAT?/capacity 2>/dev/null | head -1
8 | '
9 | ]]
10 |
11 | local bat_value
12 | local bat_desc
13 |
14 | local function get_bat()
15 | awful.spawn.easy_async(have_battery, function(stdout)
16 | if not stdout:match("%d+") then
17 | bat_value = 0
18 | bat_desc = "No Battery"
19 | awesome.emit_signal("signal::bat", bat_value, bat_desc)
20 | else
21 | bat_value = tonumber(stdout)
22 | bat_desc = bat_value.."% left"
23 | awesome.emit_signal("signal::bat", bat_value, bat_desc)
24 | end
25 | end)
26 | end
27 |
28 | gears.timer {
29 | timeout = 5,
30 | call_now = true,
31 | autostart = true,
32 | callback = function()
33 | get_bat()
34 | end
35 | }
36 |
--------------------------------------------------------------------------------
/conf/awesome/signals/brightness.lua:
--------------------------------------------------------------------------------
1 | -- Copy cat from --> Elena
2 |
3 | -- Provides:
4 | -- signal::brightness
5 | -- percentage (integer)
6 | local awful = require("awful")
7 |
8 | -- Subscribe to backlight changes
9 | -- Requires inotify-tools
10 | local brightness_subscribe_script = [[
11 | bash -c "
12 | while (inotifywait -e modify /sys/class/backlight/?**/brightness -qq) do echo; done
13 | "]]
14 |
15 | local brightness_script = [[
16 | sh -c "
17 | brightnessctl g
18 | "]]
19 |
20 | local brightness_max = [[
21 | sh -c "
22 | brightnessctl m
23 | "]]
24 |
25 | local emit_brightness_info = function()
26 | awful.spawn.with_line_callback(brightness_script, {
27 | stdout = function(value)
28 | awful.spawn.with_line_callback(brightness_max, {
29 | stdout = function(max)
30 | percentage = tonumber(value)/tonumber(max) * 100
31 | percentage = tonumber(percentage) or 0
32 | awesome.emit_signal("signal::brightness", percentage)
33 | end})
34 | end
35 | })
36 | end
37 |
38 | -- Run once to initialize widgets
39 | emit_brightness_info()
40 |
41 | -- Kill old inotifywait process
42 | awful.spawn.easy_async_with_shell("ps x | grep \"inotifywait -e modify /sys/class/backlight\" | grep -v grep | awk '{print $1}' | xargs kill", function ()
43 | -- Update brightness status with each line printed
44 | awful.spawn.with_line_callback(brightness_subscribe_script, {
45 | stdout = function(_)
46 | emit_brightness_info()
47 | end
48 | })
49 | end)
50 |
--------------------------------------------------------------------------------
/conf/awesome/signals/disk.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 |
4 | local which_disk = "/dev/sda2"
5 |
6 | local function get_disk()
7 | local script = [[
8 | df -kH -B 1MB ]]..which_disk..[[ | tail -1 | awk '{printf $5}'
9 | ]]
10 |
11 | awful.spawn.easy_async_with_shell(script, function(disk_perc)
12 | disk_perc = disk_perc:match("%d+")
13 | awesome.emit_signal("signal::disk", disk_perc)
14 | end)
15 | end
16 |
17 | gears.timer {
18 | timeout = 2000,
19 | call_now = true,
20 | autostart = true,
21 | callback = function()
22 | get_disk()
23 | end
24 | }
25 |
--------------------------------------------------------------------------------
/conf/awesome/signals/init.lua:
--------------------------------------------------------------------------------
1 | req = {
2 | "volume",
3 | "brightness",
4 | "wifi",
5 | "weather",
6 | "battery",
7 | "player",
8 | "disk"
9 | }
10 |
11 | for _, x in pairs(req) do
12 | require("signals."..x)
13 | end
14 |
--------------------------------------------------------------------------------
/conf/awesome/signals/player.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 |
4 | -- Script
5 | local title_sc = 'playerctl -i firefox metadata xesam:title'
6 | local artist_sc = 'playerctl -i firefox metadata xesam:artist'
7 | local length_sc = 'playerctl -i firefox metadata --format "{{duration(position)}}/{{duration(mpris:length)}}"'
8 | local status_sc = 'playerctl -i firefox status'
9 |
10 | -- function
11 | local function get_player()
12 | awful.spawn.easy_async_with_shell(title_sc, function(title)
13 | awful.spawn.easy_async_with_shell(artist_sc, function(artist)
14 | awful.spawn.easy_async_with_shell(length_sc, function(length)
15 | awful.spawn.easy_async_with_shell(status_sc, function(status)
16 | title = string.gsub(title, "\n", "")
17 | artist = string.gsub(artist, "\n", "")
18 | length = string.gsub(length, "\n", "")
19 | status = string.gsub(status, "\n", "")
20 | awesome.emit_signal("signal::player", title, artist, length, status)
21 | end)
22 | end)
23 | end)
24 | end)
25 | end
26 |
27 | gears.timer {
28 | timeout = 5,
29 | call_now = true,
30 | autostart = true,
31 | callback = function()
32 | get_player()
33 | end
34 | }
35 |
--------------------------------------------------------------------------------
/conf/awesome/signals/volume.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 | local wibox = require "wibox"
4 |
5 | local vol_sc = 'pamixer --get-volume'
6 | local mute_sc = 'pamixer --get-mute'
7 |
8 | local function get_vol()
9 | awful.spawn.easy_async_with_shell(vol_sc, function(vol)
10 | awful.spawn.easy_async_with_shell(mute_sc, function(mute)
11 | if mute:match("false") then
12 | muted = false
13 | else
14 | muted = true
15 | end
16 |
17 | awesome.emit_signal("signal::volume", vol, muted)
18 | end)
19 | end)
20 | end
21 |
22 | gears.timer {
23 | timeout = 2,
24 | call_now = true,
25 | autostart = true,
26 | callback = function()
27 | get_vol()
28 | end
29 | }
30 |
31 |
32 |
--------------------------------------------------------------------------------
/conf/awesome/signals/weather.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 |
4 | local city = "" -- Ex. London or Salt+Lake+City
5 |
6 | local get_weather = function()
7 | local script = [[
8 | bash -c "$HOME/.config/awesome/signals/weather_script.sh ]] .. city.. [["
9 | ]]
10 |
11 | awful.spawn.easy_async_with_shell(script, function(stdout)
12 | local weather = stdout:match("(.+):")
13 | local feels_like = stdout:match(".+[:](.+)")
14 | awesome.emit_signal('signal::weather', weather, feels_like)
15 | end)
16 | end
17 |
18 | gears.timer {
19 | timeout = 1200,
20 | call_now = true,
21 | autostart = true,
22 | callback = function()
23 | get_weather()
24 | end
25 | }
26 |
--------------------------------------------------------------------------------
/conf/awesome/signals/weather_script.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # This script is used to find weather
3 | city=$1
4 | weather=$(curl -sf "wttr.in/$city?format='%C:%f'")
5 | if [[ ! -z $weather ]]; then
6 | echo $weather
7 | else
8 | echo "Weather unavailable"
9 | fi
10 |
--------------------------------------------------------------------------------
/conf/awesome/signals/wifi.lua:
--------------------------------------------------------------------------------
1 | local awful = require "awful"
2 | local gears = require "gears"
3 |
4 | local old_net_ssid = "Reconnect"
5 | local old_net_stat = false
6 |
7 | local check_wifi = function()
8 | local script = [[
9 | nmcli -t connection show --active
10 | ]]
11 |
12 | awful.spawn.easy_async_with_shell(
13 | script,
14 | function(stdout)
15 | local net_ssid = stdout
16 | local net_stat = true
17 |
18 | if net_ssid == "" then
19 | net_stat = false
20 | net_ssid = "Not Connected"
21 | end
22 |
23 | if net_ssid ~= old_net_ssid then -- Emit signal if there was a change
24 | awesome.emit_signal("signal::wifi", net_stat, net_ssid)
25 | old_net_ssid = net_ssid
26 | old_net_stat = net_stat
27 | end
28 | end
29 | )
30 | end
31 |
32 | check_wifi()
33 |
34 | gears.timer {
35 | timeout = 3,
36 | autostart = true,
37 | call_now = true,
38 | callback = function()
39 | check_wifi()
40 | end,
41 | }
42 |
--------------------------------------------------------------------------------
/conf/awesome/theme/assets/notif.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/awesome/theme/assets/notif.png
--------------------------------------------------------------------------------
/conf/awesome/theme/assets/pfp.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/awesome/theme/assets/pfp.jpg
--------------------------------------------------------------------------------
/conf/awesome/theme/assets/rklyz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/awesome/theme/assets/rklyz.png
--------------------------------------------------------------------------------
/conf/awesome/theme/assets/titlebar/close_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/awesome/theme/assets/titlebar/close_1.png
--------------------------------------------------------------------------------
/conf/awesome/theme/assets/titlebar/close_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/awesome/theme/assets/titlebar/close_2.png
--------------------------------------------------------------------------------
/conf/awesome/theme/assets/titlebar/minimize_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/awesome/theme/assets/titlebar/minimize_1.png
--------------------------------------------------------------------------------
/conf/awesome/theme/assets/titlebar/minimize_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/awesome/theme/assets/titlebar/minimize_2.png
--------------------------------------------------------------------------------
/conf/awesome/theme/assets/wall.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/awesome/theme/assets/wall.jpg
--------------------------------------------------------------------------------
/conf/awesome/theme/assets/wall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/awesome/theme/assets/wall.png
--------------------------------------------------------------------------------
/conf/awesome/theme/assets/weather_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/awesome/theme/assets/weather_icon.png
--------------------------------------------------------------------------------
/conf/awesome/theme/dark.lua:
--------------------------------------------------------------------------------
1 | local dark = {}
2 |
3 | dark.black = "#212126"
4 | dark.red = "#cc7a7a"
5 | dark.green = "#b1cc7a"
6 | dark.yellow = "#cca37a"
7 | dark.blue = "#7a96cc"
8 | dark.magenta = "#b886d1"
9 | dark.pink = "#7ab1cc"
10 | dark.white = "#f2e0ce"
11 | dark.transparent = "#00000000"
12 |
13 | dark.fg = "#f2f2e9"
14 |
15 | dark.bg = "#17171C"
16 | dark.bg_alt = "#212126"
17 |
18 | return dark
19 |
--------------------------------------------------------------------------------
/conf/awesome/theme/light.lua:
--------------------------------------------------------------------------------
1 | local light = {}
2 |
3 | light.black = "#323333"
4 | light.red = "#D96C6C"
5 | light.green = "#B5D96C"
6 | light.yellow = "#D9A36C"
7 | light.blue = "#6C90D9"
8 | light.magenta = "#B56CD9"
9 | light.pink = "#E8B2C0"
10 | light.white = "#E0DEDC"
11 |
12 | light.fg = "#33374c"
13 |
14 | light.bg = "#F2F2E9"
15 | light.bg_alt = "#E1E4E6"
16 |
17 | return light
18 |
--------------------------------------------------------------------------------
/conf/awesome/theme/theme.lua:
--------------------------------------------------------------------------------
1 | --[[
2 | ______ ______ ______ __ __ ______ __ ______ __ __ __
3 | /\ == \ /\ ___\ /\ __ \ /\ \/\ \ /\__ _\ /\ \ /\ ___\ /\ \/\ \ /\ \
4 | \ \ __< \ \ __\ \ \ __ \ \ \ \_\ \ \/_/\ \/ \ \ \ \ \ __\ \ \ \_\ \ \ \ \____
5 | \ \_____\ \ \_____\ \ \_\ \_\ \ \_____\ \ \_\ \ \_\ \ \_\ \ \_____\ \ \_____\
6 | \/_____/ \/_____/ \/_/\/_/ \/_____/ \/_/ \/_/ \/_/ \/_____/ \/_____/
7 |
8 | --]]
9 |
10 | -- Requirement
11 | local xresources = require "beautiful.xresources"
12 | local rnotification = require "ruled.notification"
13 | local dpi = xresources.apply_dpi
14 | local gears = require "gears"
15 | local gfs = require "gears.filesystem"
16 |
17 | -- Var
18 | local themes_path = gfs.get_configuration_dir() .. "theme/"
19 | local walls_path = "~/.local/pictures/Walls/"
20 | local home = os.getenv 'HOME'
21 |
22 | local theme = {}
23 |
24 | ----- User Preferences -----
25 |
26 | theme.wallpaper = themes_path.."assets/wall.png" -- Comment this to use feh
27 |
28 | theme.pfp = themes_path .. "assets/pfp.jpg"
29 | theme.user = string.gsub(os.getenv('USER'), '^%l', string.upper)
30 | theme.hostname = "@Neptune"
31 |
32 | theme.weather_icon = themes_path.."assets/weather_icon.png"
33 |
34 | ----- Font -----
35 |
36 | theme.font = "Roboto Medium 14"
37 |
38 | ----- Colors -----
39 |
40 | local light = require "theme.light"
41 | local dark = require "theme.dark"
42 |
43 | local colors = dark -- Dark / Light
44 |
45 | theme.black = colors.black
46 | theme.red = colors.red
47 | theme.green = colors.green
48 | theme.yellow = colors.yellow
49 | theme.blue = colors.blue
50 | theme.magenta = colors.magenta
51 | theme.pink = colors.pink
52 | theme.white = colors.white
53 | theme.transparent = "#00000000"
54 |
55 | theme.fg = colors.fg
56 |
57 | theme.bg = colors.bg
58 | theme.bg_alt = colors.bg_alt
59 |
60 | ----- General/default Settings -----
61 |
62 | theme.bg_normal = theme.bg
63 | theme.bg_focus = "#212126"
64 | theme.bg_urgent = "#212126"
65 | theme.bg_minimize = "#212126"
66 | theme.bg_systray = "#212126"
67 |
68 | theme.fg_normal = theme.fg
69 | theme.fg_focus = theme.fg_normal
70 | theme.fg_urgent = theme.fg_normal
71 | theme.fg_minimize = theme.fg_normal
72 |
73 | theme.useless_gap = dpi(10)
74 | theme.border_width = dpi(0)
75 |
76 | -- Menu
77 |
78 | theme.menu_height = dpi(35)
79 | theme.menu_width = dpi(200)
80 | theme.menu_border_width = dpi(10)
81 | theme.menu_border_color = theme.bg
82 | theme.menu_fg_focus = theme.fg_normal
83 | theme.menu_fg_normal = theme.taglist_fg_empty
84 | theme.menu_bg_focus = theme.bg_alt
85 | theme.menu_bg_normal = theme.bg
86 | theme.submenu = ">"
87 |
88 | -- titlebar's buttons
89 | theme.titlebar_close_button_normal = gears.color.recolor_image(themes_path .. "assets/titlebar/close_1.png", theme.bg_alt)
90 | theme.titlebar_close_button_focus = gears.color.recolor_image(themes_path .. "assets/titlebar/close_2.png", theme.red)
91 |
92 | theme.titlebar_minimize_button_normal = gears.color.recolor_image(themes_path .. "assets/titlebar/minimize_1.png", theme.bg_alt)
93 | theme.titlebar_minimize_button_focus = gears.color.recolor_image(themes_path .. "assets/titlebar/minimize_2.png", theme.green)
94 |
95 | theme.titlebar_maximized_button_normal_inactive = gears.color.recolor_image(themes_path .. "assets/titlebar/close_1.png", theme.bg_alt)
96 | theme.titlebar_maximized_button_focus_inactive = gears.color.recolor_image(themes_path .. "assets/titlebar/close_1.png", theme.yellow)
97 | theme.titlebar_maximized_button_normal_active = gears.color.recolor_image(themes_path .. "assets/titlebar/close_1.png", theme.bg_alt)
98 | theme.titlebar_maximized_button_focus_active = gears.color.recolor_image(themes_path .. "assets/titlebar/close_1.png", theme.yellow)
99 |
100 | -- You can use your own layout icons like this:
101 | theme.layout_fairh = themes_path.."layouts/fairhw.png"
102 | theme.layout_fairv = themes_path.."layouts/fairvw.png"
103 | theme.layout_floating = themes_path.."layouts/floatingw.png"
104 | theme.layout_magnifier = themes_path.."layouts/magnifierw.png"
105 | theme.layout_max = themes_path.."layouts/maxw.png"
106 | theme.layout_fullscreen = themes_path.."layouts/fullscreenw.png"
107 | theme.layout_tilebottom = themes_path.."layouts/tilebottomw.png"
108 | theme.layout_tileleft = themes_path.."layouts/tileleftw.png"
109 | theme.layout_tile = themes_path.."layouts/tilew.png"
110 | theme.layout_tiletop = themes_path.."layouts/tiletopw.png"
111 | theme.layout_spiral = themes_path.."default/layouts/spiralw.png"
112 | theme.layout_dwindle = themes_path.."default/layouts/dwindlew.png"
113 | theme.layout_cornernw = themes_path.."default/layouts/cornernww.png"
114 | theme.layout_cornerne = themes_path.."default/layouts/cornernew.png"
115 | theme.layout_cornersw = themes_path.."default/layouts/cornersww.png"
116 | theme.layout_cornerse = themes_path.."default/layouts/cornersew.png"
117 |
118 | theme.icon_theme = nil
119 |
120 | rnotification.connect_signal('request::rules', function()
121 | rnotification.append_rule {
122 | rule = { urgency = 'critical' },
123 | properties = { bg = '#ff0000', fg = '#ffffff' }
124 | }
125 | end)
126 |
127 | return theme
128 |
--------------------------------------------------------------------------------
/conf/cava/config:
--------------------------------------------------------------------------------
1 | ## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting.
2 |
3 |
4 | [general]
5 |
6 | # Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
7 | ;mode = normal
8 |
9 | # Accepts only non-negative values.
10 | ;framerate = 60
11 |
12 | # 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
13 | # new as of 0.6.0 autosens of low values (dynamic range)
14 | # 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
15 | ;autosens = 0
16 | ; overshoot = 20
17 |
18 | # Manual sensitivity in %. If autosens is enabled, this will only be the initial value.
19 | # 200 means double height. Accepts only non-negative values.
20 | ;sensitivity = 100
21 |
22 | # The number of bars (0-200). 0 sets it to auto (fill up console).
23 | # Bars' width and space between bars in number of characters.
24 | ;bars = 0
25 | bar_width = 1
26 | bar_spacing = 1
27 |
28 | # For SDL width and space between bars is in pixels, defaults are:
29 | ; bar_width = 20
30 | ; bar_spacing = 5
31 |
32 |
33 | # Lower and higher cutoff frequencies for lowest and highest bars
34 | # the bandwidth of the visualizer.
35 | # Note: there is a minimum total bandwidth of 43Mhz x number of bars.
36 | # Cava will automatically increase the higher cutoff if a too low band is specified.
37 | ; lower_cutoff_freq = 50
38 | ; higher_cutoff_freq = 10000
39 |
40 |
41 | # Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
42 | # only check for input once per second. Cava will wake up once input is detected. 0 = disable.
43 | ; sleep_timer = 0
44 |
45 |
46 | [input]
47 |
48 | # Audio capturing method. Possible methods are: 'pulse', 'alsa', 'fifo', 'sndio' or 'shmem'
49 | # Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with.
50 | #
51 | # All input methods uses the same config variable 'source'
52 | # to define where it should get the audio.
53 | #
54 | # For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
55 | # (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
56 | #
57 | # For alsa 'source' will be the capture device.
58 | # For fifo 'source' will be the path to fifo-file.
59 | # For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
60 | ;method = pulse
61 | ;source = auto
62 |
63 | ; method = alsa
64 | ; source = hw:Loopback,1
65 |
66 | ; method = fifo
67 | ; source = /tmp/mpd.fifo
68 | ; sample_rate = 44100
69 | ; sample_bits = 16
70 |
71 | ; method = shmem
72 | ; source = /squeezelite-AA:BB:CC:DD:EE:FF
73 |
74 | ; method = portaudio
75 | ; source = auto
76 |
77 |
78 | [output]
79 |
80 | # Output method. Can be 'ncurses', 'noncurses', 'raw' or 'sdl'.
81 | # 'noncurses' uses a custom framebuffer technique and prints only changes
82 | # from frame to frame in the terminal. 'ncurses' is default if supported.
83 | #
84 | # 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
85 | # stream of the bar heights that can be used to send to other applications.
86 | # 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
87 | #
88 | # 'sdl' uses the Simple DirectMedia Layer to render in a graphical context.
89 | ;method = ncurses
90 |
91 | # Visual channels. Can be 'stereo' or 'mono'.
92 | # 'stereo' mirrors both channels with low frequencies in center.
93 | # 'mono' outputs left to right lowest to highest frequencies.
94 | # 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
95 | ;channels = stereo
96 | ; mono_option = average
97 |
98 | # Raw output target. A fifo will be created if target does not exist.
99 | ; raw_target = /dev/stdout
100 |
101 | # Raw data format. Can be 'binary' or 'ascii'.
102 | ; data_format = binary
103 |
104 | # Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
105 | ; bit_format = 16bit
106 |
107 | # Ascii max value. In 'ascii' mode range will run from 0 to value specified here
108 | ; ascii_max_range = 1000
109 |
110 | # Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
111 | # Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
112 | ; bar_delimiter = 59
113 | ; frame_delimiter = 10
114 |
115 | # sdl window size and position. -1,-1 is centered.
116 | ; sdl_width = 1000
117 | ; sdl_height = 500
118 | ; sdl_x = -1
119 | ; sdl_y= -1
120 |
121 | [color]
122 |
123 | # Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
124 | # Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires
125 | # ncurses output method and a terminal that can change color definitions such as Gnome-terminal or rxvt.
126 | # if supported, ncurses mode will be forced on if user defined colors are used.
127 | # default is to keep current terminal color
128 | ; background = default
129 | ; foreground = default
130 |
131 | # SDL only support hex code colors, these are the default:
132 | ; background = '#1D2021'
133 | ; foreground = '#D4BE98'
134 |
135 |
136 | # Gradient mode, only hex defined colors (and thereby ncurses mode) are supported,
137 | # background must also be defined in hex or remain commented out. 1 = on, 0 = off.
138 | # You can define as many as 8 different colors. They range from bottom to top of screen
139 | gradient = 1
140 | gradient_count = 4
141 | gradient_color_1 = '#7AB1CC'
142 | gradient_color_2 = '#85ABC2'
143 | gradient_color_3 = '#C28185'
144 | gradient_color_4 = '#CC7A7A'
145 | gradient_color_5 = '#7A96CC'
146 | ; gradient_color_6 = '#cc8033'
147 | ; gradient_color_7 = '#cc5933'
148 | ; gradient_color_8 = '#cc3333'
149 |
150 |
151 |
152 | [smoothing]
153 |
154 | # Percentage value for integral smoothing. Takes values from 0 - 100.
155 | # Higher values means smoother, but less precise. 0 to disable.
156 | ;integral = 80
157 |
158 | # Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
159 | ;monstercat = 1
160 | ;waves = 0
161 |
162 | # Set gravity percentage for "drop off". Higher values means bars will drop faster.
163 | # Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off".
164 | ;gravity = 75
165 |
166 |
167 | # In bar height, bars that would have been lower that this will not be drawn.
168 | ; ignore = 0
169 |
170 |
171 | [eq]
172 |
173 | # This one is tricky. You can have as much keys as you want.
174 | # Remember to uncomment more then one key! More keys = more precision.
175 | # Look at readme.md on github for further explanations and examples.
176 | ;1 = 1 # bass
177 | ;2 = 0.5
178 | ;3 = 1 # midtone
179 | ;4 = 0.5
180 | ;5 = 1 # treble
181 |
--------------------------------------------------------------------------------
/conf/mpDris2/mpDris2.conf:
--------------------------------------------------------------------------------
1 | [Connection]
2 | # You can also export $MPD_HOST and/or $MPD_PORT to change the server.
3 | #host = localhost
4 | #port = 6600
5 | #password =
6 |
7 | [Library]
8 | music_dir = ~/Music
9 | #cover_regex = ^(album|cover|\.?folder|front).*\.(gif|jpeg|jpg|png)$
10 |
11 | [Bling]
12 | mmkeys = False
13 | notify = False
14 | # Urgency of the notification: 0 for low, 1 for medium and 2 for high.
15 | #notify_urgency = 0
16 |
--------------------------------------------------------------------------------
/conf/mpd/database:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/mpd/database
--------------------------------------------------------------------------------
/conf/mpd/database.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/mpd/database.gz
--------------------------------------------------------------------------------
/conf/mpd/mpd.conf:
--------------------------------------------------------------------------------
1 | bind_to_address "127.0.0.1"
2 | port "6600"
3 |
4 | auto_update "yes"
5 | restore_paused "yes"
6 |
7 | music_directory "~/Music"
8 | playlist_directory "~/.config/mpd/playlists"
9 | db_file "~/.config/mpd/mpd.db"
10 | log_file "syslog"
11 | pid_file "/tmp/mpd.pid"
12 | state_file "~/.config/mpd/mpd.state"
13 |
14 | audio_output {
15 | type "alsa"
16 | name "My ALSA Device"
17 | }
18 |
19 | audio_output {
20 | type "pulse"
21 | name "My Pulse Output"
22 | }
23 |
24 | audio_output {
25 | type "fifo"
26 | name "Visualizer"
27 | format "44100:16:2"
28 | path "/tmp/mpd.fifo"
29 | }
30 |
--------------------------------------------------------------------------------
/conf/mpd/mpd.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/mpd/mpd.db
--------------------------------------------------------------------------------
/conf/mpd/mpd.state:
--------------------------------------------------------------------------------
1 | sw_volume: 100
2 | audio_device_state:0:My ALSA Device
3 | audio_device_state:1:My Pulse Output
4 | audio_device_state:1:Visualizer
5 | state: pause
6 | current: 5
7 | time: 124.814000
8 | random: 0
9 | repeat: 1
10 | single: 0
11 | consume: 0
12 | crossfade: 0
13 | mixrampdb: 0.000000
14 | mixrampdelay: -1.000000
15 | playlist_begin
16 | 0:Astronout in The Ocean.mp3
17 | 1:Why we lose.mp3
18 | 2:Piano Stardew Valley.mp3
19 | 3:Glass Animals - Heat Waves-rfTgO9rpqck.mp3
20 | 4:YOASOBI - ハルジオン・Halzion (Lone Alpha Remix).mp3
21 | 5:YOASOBI - 夜に駆ける_Yoru ni Kakeru THE HOME TAKE.mp3
22 | 6:Yoasobi Ano Yume O Nazotte.mp3
23 | 7:Yoasobi Love Letter.mp3
24 | playlist_end
25 |
--------------------------------------------------------------------------------
/conf/mpd/old_mpd.conf:
--------------------------------------------------------------------------------
1 | # An example configuration file for MPD.
2 | # Read the user manual for documentation: http://www.musicpd.org/doc/user/
3 |
4 |
5 | # Files and directories #######################################################
6 | #
7 | # This setting controls the top directory which MPD will search to discover the
8 | # available audio files and add them to the daemon's online database. This
9 | # setting defaults to the XDG directory, otherwise the music directory will be
10 | # be disabled and audio files will only be accepted over ipc socket (using
11 | # file:// protocol) or streaming files over an accepted protocol.
12 | #
13 | music_directory "~/Music"
14 | #
15 | # This setting sets the MPD internal playlist directory. The purpose of this
16 | # directory is storage for playlists created by MPD. The server will use
17 | # playlist files not created by the server but only if they are in the MPD
18 | # format. This setting defaults to playlist saving being disabled.
19 | #
20 | playlist_directory "~/.config/mpd/playlists"
21 | #
22 | # This setting sets the location of the MPD database. This file is used to
23 | # load the database at server start up and store the database while the
24 | # server is not up. This setting defaults to disabled which will allow
25 | # MPD to accept files over ipc socket (using file:// protocol) or streaming
26 | # files over an accepted protocol.
27 | #
28 | db_file "~/.config/mpd/database"
29 |
30 | # These settings are the locations for the daemon log files for the daemon.
31 | #
32 | # The special value "syslog" makes MPD use the local syslog daemon. This
33 | # setting defaults to logging to syslog.
34 | #
35 | # If you use systemd, do not configure a log_file. With systemd, MPD
36 | # defaults to the systemd journal, which is fine.
37 | #
38 | log_file "syslog"
39 |
40 | # This setting sets the location of the file which stores the process ID
41 | # for use of mpd --kill and some init scripts. This setting is disabled by
42 | # default and the pid file will not be stored.
43 | #
44 | # If you use systemd, do not configure a pid_file.
45 | #
46 | #pid_file "~/.mpd/pid"
47 |
48 | # This setting sets the location of the file which contains information about
49 | # most variables to get MPD back into the same general shape it was in before
50 | # it was brought down. This setting is disabled by default and the server
51 | # state will be reset on server start up.
52 | #
53 | state_file "~/.config/mpd/state"
54 | #
55 | # The location of the sticker database. This is a database which
56 | # manages dynamic information attached to songs.
57 | #
58 | sticker_file "~/.config/mpd/sticker.sql"
59 | #
60 | ###############################################################################
61 |
62 |
63 | # General music daemon options ################################################
64 | #
65 | # This setting specifies the user that MPD will run as. MPD should never run as
66 | # root and you may use this setting to make MPD change its user ID after
67 | # initialization. This setting is disabled by default and MPD is run as the
68 | # current user.
69 | #
70 | #user "nobody"
71 | #
72 | # This setting specifies the group that MPD will run as. If not specified
73 | # primary group of user specified with "user" setting will be used (if set).
74 | # This is useful if MPD needs to be a member of group such as "audio" to
75 | # have permission to use sound card.
76 | #
77 | #group "nogroup"
78 | #
79 | # This setting sets the address for the daemon to listen on. Careful attention
80 | # should be paid if this is assigned to anything other than the default, any.
81 | # This setting can deny access to control of the daemon. Not effective if
82 | # systemd socket activation is in use.
83 | #
84 | # For network
85 | #bind_to_address "any"
86 | #
87 | # And for Unix Socket
88 | #bind_to_address "~/.mpd/socket"
89 | #
90 | # This setting is the TCP port that is desired for the daemon to get assigned
91 | # to.
92 | #
93 | #port "6600"
94 | #
95 | # Suppress all messages below the given threshold. Use "verbose" for
96 | # troubleshooting. Available setting arguments are "notice", "info", "verbose",
97 | # "warning" and "error".
98 | #
99 | #log_level "notice"
100 | #
101 | # Setting "restore_paused" to "yes" puts MPD into pause mode instead
102 | # of starting playback after startup.
103 | #
104 | #restore_paused "no"
105 | #
106 | # This setting enables MPD to create playlists in a format usable by other
107 | # music players.
108 | #
109 | #save_absolute_paths_in_playlists "no"
110 | #
111 | # This setting defines a list of tag types that will be extracted during the
112 | # audio file discovery process. The complete list of possible values can be
113 | # found in the user manual.
114 | #metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
115 | #
116 | # This example just enables the "comment" tag without disabling all
117 | # the other supported tags:
118 | #metadata_to_use "+comment"
119 | #
120 | # This setting enables automatic update of MPD's database when files in
121 | # music_directory are changed.
122 | #
123 | #auto_update "yes"
124 | #
125 | # Limit the depth of the directories being watched, 0 means only watch
126 | # the music directory itself. There is no limit by default.
127 | #
128 | #auto_update_depth "3"
129 | #
130 | ###############################################################################
131 |
132 |
133 | # Symbolic link behavior ######################################################
134 | #
135 | # If this setting is set to "yes", MPD will discover audio files by following
136 | # symbolic links outside of the configured music_directory.
137 | #
138 | #follow_outside_symlinks "yes"
139 | #
140 | # If this setting is set to "yes", MPD will discover audio files by following
141 | # symbolic links inside of the configured music_directory.
142 | #
143 | #follow_inside_symlinks "yes"
144 | #
145 | ###############################################################################
146 |
147 |
148 | # Zeroconf / Avahi Service Discovery ##########################################
149 | #
150 | # If this setting is set to "yes", service information will be published with
151 | # Zeroconf / Avahi.
152 | #
153 | #zeroconf_enabled "yes"
154 | #
155 | # The argument to this setting will be the Zeroconf / Avahi unique name for
156 | # this MPD server on the network. %h will be replaced with the hostname.
157 | #
158 | #zeroconf_name "Music Player @ %h"
159 | #
160 | ###############################################################################
161 |
162 |
163 | # Permissions #################################################################
164 | #
165 | # If this setting is set, MPD will require password authorization. The password
166 | # setting can be specified multiple times for different password profiles.
167 | #
168 | #password "password@read,add,control,admin"
169 | #
170 | # This setting specifies the permissions a user has who has not yet logged in.
171 | #
172 | #default_permissions "read,add,control,admin"
173 | #
174 | ###############################################################################
175 |
176 |
177 | # Database #######################################################################
178 | #
179 | # An example of a database section instead of the old 'db_file' setting.
180 | # It enables mounting other storages into the music directory.
181 | #
182 | #database {
183 | # plugin "simple"
184 | # path "~/.local/share/mpd/db
185 | # cache_directory "~/.local/share/mpd/cache"
186 | #}
187 | #
188 | # An example of database config for a satellite setup
189 | #
190 | #music_directory "nfs://fileserver.local/srv/mp3"
191 | #database {
192 | # plugin "proxy"
193 | # host "other.mpd.host"
194 | # port "6600"
195 | #}
196 |
197 | # Input #######################################################################
198 | #
199 | input {
200 | plugin "curl"
201 | # proxy "proxy.isp.com:8080"
202 | # proxy_user "user"
203 | # proxy_password "password"
204 | }
205 |
206 | #
207 | ###############################################################################
208 |
209 | # Audio Output ################################################################
210 | #
211 | # MPD supports various audio output types, as well as playing through multiple
212 | # audio outputs at the same time, through multiple audio_output settings
213 | # blocks. Setting this block is optional, though the server will only attempt
214 | # autodetection for one sound card.
215 | #
216 | # An example of an ALSA output:
217 | #
218 | audio_output {
219 | type "alsa"
220 | name "My ALSA Device"
221 | }
222 | audio_output {
223 | type "pulse"
224 | name "My Pulse Output"
225 | }
226 |
227 | audio_output {
228 | type "fifo"
229 | name "my_fifo"
230 | path "/tmp/mpd.fifo"
231 | format "44100:16:2"
232 | }
233 |
234 | #
235 | # An example of a winmm output (Windows multimedia API).
236 | #
237 | #audio_output {
238 | # type "winmm"
239 | # name "My WinMM output"
240 | ## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
241 | # or
242 | ## device "0" # optional
243 | ## mixer_type "hardware" # optional
244 | #}
245 | #
246 | # An example of a wasapi output (Windows multimedia API).
247 | #
248 | #audio_output {
249 | # type "wasapi"
250 | # name "My WASAPI output"
251 | ## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
252 | # or
253 | ## device "0" # optional
254 | ## Exclusive mode blocks all other audio source, and get best audio quality without resampling.
255 | ## exclusive "no" # optional
256 | ## Enumerate all devices in log.
257 | ## enumerate "no" # optional
258 | #}
259 | #
260 | # An example of an openal output.
261 | #
262 | #audio_output {
263 | # type "openal"
264 | # name "My OpenAL output"
265 | ## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
266 | #}
267 | #
268 | # An example of an sndio output.
269 | #
270 | #audio_output {
271 | # type "sndio"
272 | # name "sndio output"
273 | # mixer_type "hardware"
274 | #}
275 | #
276 | # An example of an OS X output:
277 | #
278 | #audio_output {
279 | # type "osx"
280 | # name "My OS X Device"
281 | ## device "Built-in Output" # optional
282 | ## channel_map "-1,-1,0,1" # optional
283 | #}
284 | #
285 | ## Example "pipe" output:
286 | #
287 | #audio_output {
288 | # type "pipe"
289 | # name "my pipe"
290 | # command "aplay -f cd 2>/dev/null"
291 | ## Or if you're want to use AudioCompress
292 | # command "AudioCompress -m | aplay -f cd 2>/dev/null"
293 | ## Or to send raw PCM stream through PCM:
294 | # command "nc example.org 8765"
295 | # format "44100:16:2"
296 | #}
297 | #
298 | ## An example of a null output (for no audio output):
299 | #
300 | #audio_output {
301 | # type "null"
302 | # name "My Null Output"
303 | # mixer_type "none" # optional
304 | #}
305 | #
306 | ###############################################################################
307 |
308 |
309 | # Normalization automatic volume adjustments ##################################
310 | #
311 | # This setting specifies the type of ReplayGain to use. This setting can have
312 | # the argument "off", "album", "track" or "auto". "auto" is a special mode that
313 | # chooses between "track" and "album" depending on the current state of
314 | # random playback. If random playback is enabled then "track" mode is used.
315 | # See for
316 | # more details about ReplayGain.
317 | # This setting is off by default.
318 | #
319 | #replaygain "album"
320 | #
321 | # This setting sets the pre-amp used for files that have ReplayGain tags. By
322 | # default this setting is disabled.
323 | #
324 | #replaygain_preamp "0"
325 | #
326 | # This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
327 | # By default this setting is disabled.
328 | #
329 | #replaygain_missing_preamp "0"
330 | #
331 | # This setting enables or disables ReplayGain limiting.
332 | # MPD calculates actual amplification based on the ReplayGain tags
333 | # and replaygain_preamp / replaygain_missing_preamp setting.
334 | # If replaygain_limit is enabled MPD will never amplify audio signal
335 | # above its original level. If replaygain_limit is disabled such amplification
336 | # might occur. By default this setting is enabled.
337 | #
338 | #replaygain_limit "yes"
339 | #
340 | # This setting enables on-the-fly normalization volume adjustment. This will
341 | # result in the volume of all playing audio to be adjusted so the output has
342 | # equal "loudness". This setting is disabled by default.
343 | #
344 | #volume_normalization "no"
345 | #
346 | ###############################################################################
347 |
348 | # Character Encoding ##########################################################
349 | #
350 | # If file or directory names do not display correctly for your locale then you
351 | # may need to modify this setting.
352 | #
353 | #filesystem_charset "UTF-8"
354 | #
355 | ###############################################################################
356 |
--------------------------------------------------------------------------------
/conf/mpd/state:
--------------------------------------------------------------------------------
1 | sw_volume: 88
2 | audio_device_state:0:My ALSA Device
3 | audio_device_state:1:My Pulse Output
4 | audio_device_state:1:my_fifo
5 | state: pause
6 | current: 0
7 | time: 1.163000
8 | random: 0
9 | repeat: 0
10 | single: 0
11 | consume: 0
12 | crossfade: 0
13 | mixrampdb: 0.000000
14 | mixrampdelay: -1.000000
15 | playlist_begin
16 | 0:Piano Stardew Valley.mp3
17 | 1:Hollow Knight OST - City Of Tears.mp3
18 | playlist_end
19 |
--------------------------------------------------------------------------------
/conf/mpd/sticker.sql:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/mpd/sticker.sql
--------------------------------------------------------------------------------
/conf/ncmpcpp/config:
--------------------------------------------------------------------------------
1 | # dir
2 | ncmpcpp_directory = ~/.config/ncmpcpp
3 | lyrics_directory = ~/.config/ncmpcpp/lyrics
4 | mpd_music_dir = ~/Music
5 |
6 | [visualizer]
7 | visualizer_in_stereo = "no"
8 | visualizer_type = "ellipse"
9 | visualizer_output_name = "my_fifo"
10 | visualizer_look = ""
11 | visualizer_color = "blue"
12 |
13 | [header]
14 | header_visibility = "no"
15 | header_window_color = "default"
16 | volume_color = "default"
17 | state_line_color = "black"
18 |
19 | [playlist]
20 | playlist_display_mode = "classic"
21 | song_list_format = "$8%a $R%t"
22 | now_playing_prefix = "$b$5"
23 | now_playing_suffix = "$/b$9"
24 |
25 | [statusbar]
26 | progressbar_look = "━━━"
27 | progressbar_color = "black"
28 | progressbar_elapsed_color = "white"
29 | statusbar_visibility = "no"
30 | statusbar_color = "default"
31 | song_status_format = "{{%a{ - %t}}|{ - %f}{ - %b{ (%y)}}}"
32 |
33 | [library]
34 | song_library_format = "{{%a - %t}|{%f}}{$R%l}"
35 | empty_tag_color = "black"
36 |
37 | [global]
38 | colors_enabled = "yes"
39 | main_window_color = "default"
40 | centered_cursor = "yes"
41 | enable_window_title = "yes"
42 | external_editor = "vim"
43 |
--------------------------------------------------------------------------------
/conf/ncmpcpp/error.log:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/ncmpcpp/error.log
--------------------------------------------------------------------------------
/conf/ncmpcpp/lyrics/Cartoon - Why We Lose.txt:
--------------------------------------------------------------------------------
1 | I don't know what you want
2 | Let's have a bit of fun
3 | 'Til I downfall
4 | My love, if you feel like I do right now
5 | Don't say you're on the run
6 | To the other side, my love
7 |
8 | I don't know what you want
9 | Let's have a bit of fun
10 | 'Til I downfall
11 | My love, if you feel like I do right now
12 | Don't say you're on the run
13 | To the other side, my love
14 |
15 | You say you wanna try
16 | But you never do
17 | Sugar there's a reason
18 | Why we lose
19 |
20 | Baby, come on
21 |
22 | You say you wanna try
23 | But you never do
24 | Sugar there's a reason
25 | Why we lose
26 |
27 | You say you wanna cry
28 | But you never do
29 | Sugar there's a reason
30 | Why we lose
--------------------------------------------------------------------------------
/conf/ncmpcpp/lyrics/Glass Animals - Heat Waves.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/ncmpcpp/lyrics/Glass Animals - Heat Waves.txt
--------------------------------------------------------------------------------
/conf/ncmpcpp/lyrics/Masked Wolf - Astronout In The Ocean.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/ncmpcpp/lyrics/Masked Wolf - Astronout In The Ocean.txt
--------------------------------------------------------------------------------
/conf/ncmpcpp/lyrics/Yoasobi - Yoru ni Kakeru.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/conf/ncmpcpp/lyrics/Yoasobi - Yoru ni Kakeru.txt
--------------------------------------------------------------------------------
/conf/picom/animation.conf:
--------------------------------------------------------------------------------
1 | shadow-radius = 60
2 | shadow-opacity = 0.25
3 | shadow-offset-x = -40
4 | shadow-offset-y = -40
5 | corner-radius = 0
6 | rounded-corners-exclude = [
7 | "window_type = 'dock'",
8 | "window_type = 'desktop'",
9 | "class_g = 'awesome'"
10 | ];
11 |
12 | animations = true;
13 | animation-stiffness = 100;
14 | animation-dampening = 22.0;
15 | animation-clamping = true;
16 | animation-mass = 1;
17 | animation-for-open-window = "zoom";
18 | animation-for-menu-window = "slide-down";
19 | animation-for-transient-window = "slide-down";
20 |
21 | # (requires pijulius)
22 | animation-for-workspace-switch-in = "zoom";
23 | animation-for-workspace-switch-out = "zoom";
24 |
--------------------------------------------------------------------------------
/conf/picom/otherpicom.conf:
--------------------------------------------------------------------------------
1 | #################################
2 | # Shadows #
3 | #################################
4 |
5 | corner-radius = 10;
6 | round-borders = 10;
7 | rounded-corners-exclude = [
8 | "class_g ?= 'Notify-osd'",
9 | "class_g = 'dmenu'",
10 | "class_g = 'Polybar'",
11 | "class_g = 'Tint2'",
12 | #"!_NET_WM_STATE@:a *= 'ABOVE'",
13 | #"_GTK_FRAME_EXTENTS@:c"
14 | ];
15 |
16 | # Enabled client-side shadows on windows. Note desktop windows
17 | # (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
18 | # unless explicitly requested using the wintypes option.
19 | #
20 | # shadow = false
21 | shadow = true;
22 |
23 | # The blur radius for shadows, in pixels. (defaults to 12)
24 | # shadow-radius = 12
25 | shadow-radius = 30;
26 |
27 | # The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
28 | shadow-opacity = 0.4
29 |
30 | # The left offset for shadows, in pixels. (defaults to -15)
31 | # shadow-offset-x = -15
32 | shadow-offset-x = -15;
33 |
34 | # The top offset for shadows, in pixels. (defaults to -15)
35 | # shadow-offset-y = -15
36 | shadow-offset-y = -15;
37 |
38 | # Avoid drawing shadows on dock/panel windows. This option is deprecated,
39 | # you should use the *wintypes* option in your config file instead.
40 | #
41 | # no-dock-shadow = false
42 |
43 | # Don't draw shadows on drag-and-drop windows. This option is deprecated,
44 | # you should use the *wintypes* option in your config file instead.
45 | #
46 | # no-dnd-shadow = false
47 |
48 | # Red color value of shadow (0.0 - 1.0, defaults to 0).
49 | # shadow-red = 0
50 |
51 | # Green color value of shadow (0.0 - 1.0, defaults to 0).
52 | # shadow-green = 0
53 |
54 | # Blue color value of shadow (0.0 - 1.0, defaults to 0).
55 | # shadow-blue = 0
56 |
57 | # Do not paint shadows on shaped windows. Note shaped windows
58 | # here means windows setting its shape through X Shape extension.
59 | # Those using ARGB background is beyond our control.
60 | # Deprecated, use
61 | # shadow-exclude = 'bounding_shaped'
62 | # or
63 | # shadow-exclude = 'bounding_shaped && !rounded_corners'
64 | # instead.
65 | #
66 | shadow-ignore-shaped = false
67 |
68 | # Specify a list of conditions of windows that should have no shadow.
69 | #
70 | # examples:
71 | # shadow-exclude = "n:e:Notification";
72 | #
73 | # shadow-exclude = []
74 | shadow-exclude = [
75 | "_GTK_FRAME_EXTENTS@:c", # GTK+ 3 CSD windows https://github.com/chjj/c ompton/issues/189
76 | "! name~=''",
77 | # "Unknown" windows, including xfwm4 alt-tab
78 | "n:e:Notification",
79 | "_NET_WM_WINDOW_TYPE:a = '_NET_WM_WINDOW_TYPE_NOTIFICATION'",
80 | "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'",
81 | #"n:e:Plank",
82 | "n:e:Docky",
83 | "n:e:Whisker Menu",
84 | "g:e:Synapse",
85 | "g:e:Kupfer",
86 | "g:e:Conky",
87 | "n:w:*Firefox*",
88 | "class_g ?= 'Rofi'",
89 | "class_g ?= 'Cairo-dock'",
90 | "name = 'cpt_frame_window'",
91 | ];
92 |
93 | # Specify a X geometry that describes the region in which shadow should not
94 | # be painted in, such as a dock window region. Use
95 | # shadow-exclude-reg = "x10+0+0"
96 | # for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
97 | #
98 | shadow-exclude-reg = "x28+0+0"
99 |
100 | # Crop shadow of a window fully on a particular Xinerama screen to the screen.
101 | # xinerama-shadow-crop = false
102 |
103 |
104 | #################################
105 | # Fading #
106 | #################################
107 |
108 |
109 | # Fade windows in/out when opening/closing and when opacity changes,
110 | # unless no-fading-openclose is used.
111 | # fading = false
112 | fading = true
113 |
114 | # Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
115 | # fade-in-step = 0.028
116 | fade-in-step = 0.03;
117 |
118 | # Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
119 | # fade-out-step = 0.03
120 | fade-out-step = 0.03;
121 |
122 | # The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
123 | fade-delta = 6
124 |
125 | # Specify a list of conditions of windows that should not be faded.
126 | # fade-exclude = []
127 |
128 | # Do not fade on window open/close.
129 | no-fading-openclose = false
130 |
131 | # Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
132 | # no-fading-destroyed-argb = false
133 |
134 |
135 | #################################
136 | # Transparency / Opacity #
137 | #################################
138 |
139 |
140 | # Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
141 | # inactive-opacity = 1
142 | # inactive-opacity = 0.8;
143 |
144 | # Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
145 | # frame-opacity = 1.0
146 | # frame-opacity = 0.7;
147 |
148 | # Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
149 | # menu-opacity = 1.0
150 |
151 | # Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
152 | # inactive-opacity-override = true
153 | inactive-opacity-override = false;
154 |
155 | # Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
156 | # active-opacity = 1.0
157 |
158 | # Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
159 | # inactive-dim = 0.0
160 |
161 | # Specify a list of conditions of windows that should always be considered focused.
162 | # focus-exclude = []
163 | focus-exclude = [
164 | "class_g = 'Cairo-clock'",
165 | "class_g = 'Firefox'"
166 | ];
167 |
168 | # Use fixed inactive dim value, instead of adjusting according to window opacity.
169 | # inactive-dim-fixed = 1.0
170 |
171 | # Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
172 | # like `50:name *= "Firefox"`. picom-trans is recommended over this.
173 | # Note we don't make any guarantee about possible conflicts with other
174 | # programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
175 | # example:
176 | # opacity-rule = [ "80:class_g = 'URxvt'" ];
177 | #
178 | # opacity-rule = []
179 |
180 |
181 | #################################
182 | # Background-Blurring #
183 | #################################
184 |
185 |
186 | # Parameters for background blurring, see the *BLUR* section for more information.
187 | # blur-method =
188 | # blur-size = 12
189 | #
190 | # blur-deviation = false
191 |
192 | # Blur background of semi-transparent / ARGB windows.
193 | # Bad in performance, with driver-dependent behavior.
194 | # The name of the switch may change without prior notifications.
195 | #
196 | # blur-background = false
197 |
198 | # Blur background of windows when the window frame is not opaque.
199 | # Implies:
200 | # blur-background
201 | # Bad in performance, with driver-dependent behavior. The name may change.
202 | #
203 | # blur-background-frame = false
204 |
205 |
206 | # Use fixed blur strength rather than adjusting according to window opacity.
207 | # blur-background-fixed = false
208 |
209 |
210 | # Specify the blur convolution kernel, with the following format:
211 | # example:
212 | # blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
213 | #
214 | # blur-kern = ''
215 | blur-kern = "3x3box";
216 |
217 |
218 | # Exclude conditions for background blur.
219 | # blur-background-exclude = []
220 | blur-background-exclude = [
221 | "window_type = 'dock'",
222 | "window_type = 'desktop'",
223 | "_GTK_FRAME_EXTENTS@:c"
224 | ];
225 |
226 | #################################
227 | # General Settings #
228 | #################################
229 |
230 | # Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
231 | # daemon = false
232 |
233 | # Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
234 | # `xrender` is the default one.
235 | #
236 | # backend = 'glx'
237 | backend = "xrender";
238 |
239 | # Enable/disable VSync.
240 | # vsync = false
241 | vsync = true
242 |
243 | # Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
244 | # dbus = false
245 |
246 | # Try to detect WM windows (a non-override-redirect window with no
247 | # child that has 'WM_STATE') and mark them as active.
248 | #
249 | # mark-wmwin-focused = false
250 | mark-wmwin-focused = true;
251 |
252 | # Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
253 | # mark-ovredir-focused = false
254 | mark-ovredir-focused = true;
255 |
256 | # Try to detect windows with rounded corners and don't consider them
257 | # shaped windows. The accuracy is not very high, unfortunately.
258 | #
259 | # detect-rounded-corners = false
260 | detect-rounded-corners = false;
261 |
262 | # Detect '_NET_WM_OPACITY' on client windows, useful for window managers
263 | # not passing '_NET_WM_OPACITY' of client windows to frame windows.
264 | #
265 | # detect-client-opacity = false
266 | detect-client-opacity = true;
267 |
268 | # Specify refresh rate of the screen. If not specified or 0, picom will
269 | # try detecting this with X RandR extension.
270 | #
271 | # refresh-rate = 60
272 | refresh-rate = 0
273 |
274 | # Limit picom to repaint at most once every 1 / 'refresh_rate' second to
275 | # boost performance. This should not be used with
276 | # vsync drm/opengl/opengl-oml
277 | # as they essentially does sw-opti's job already,
278 | # unless you wish to specify a lower refresh rate than the actual value.
279 | #
280 | # sw-opti =
281 |
282 | # Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
283 | # rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
284 | # provided that the WM supports it.
285 | #
286 | # use-ewmh-active-win = false
287 |
288 | # Unredirect all windows if a full-screen opaque window is detected,
289 | # to maximize performance for full-screen windows. Known to cause flickering
290 | # when redirecting/unredirecting windows.
291 | #
292 | # unredir-if-possible = false
293 |
294 | # Delay before unredirecting the window, in milliseconds. Defaults to 0.
295 | # unredir-if-possible-delay = 0
296 |
297 | # Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
298 | # unredir-if-possible-exclude = []
299 |
300 | # Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
301 | # in the same group focused at the same time.
302 | #
303 | # detect-transient = false
304 | detect-transient = true
305 |
306 | # Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
307 | # group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
308 | # detect-transient is enabled, too.
309 | #
310 | # detect-client-leader = false
311 | detect-client-leader = true
312 |
313 | # Resize damaged region by a specific number of pixels.
314 | # A positive value enlarges it while a negative one shrinks it.
315 | # If the value is positive, those additional pixels will not be actually painted
316 | # to screen, only used in blur calculation, and such. (Due to technical limitations,
317 | # with use-damage, those pixels will still be incorrectly painted to screen.)
318 | # Primarily used to fix the line corruption issues of blur,
319 | # in which case you should use the blur radius value here
320 | # (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
321 | # with a 5x5 one you use `--resize-damage 2`, and so on).
322 | # May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
323 | #
324 | # resize-damage = 1
325 |
326 | # Specify a list of conditions of windows that should be painted with inverted color.
327 | # Resource-hogging, and is not well tested.
328 | #
329 | # invert-color-include = []
330 |
331 | # GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
332 | # Might cause incorrect opacity when rendering transparent content (but never
333 | # practically happened) and may not work with blur-background.
334 | # My tests show a 15% performance boost. Recommended.
335 | #
336 | # glx-no-stencil = false
337 |
338 | # GLX backend: Avoid rebinding pixmap on window damage.
339 | # Probably could improve performance on rapid window content changes,
340 | # but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
341 | # Recommended if it works.
342 | #
343 | # glx-no-rebind-pixmap = false
344 |
345 | # Disable the use of damage information.
346 | # This cause the whole screen to be redrawn everytime, instead of the part of the screen
347 | # has actually changed. Potentially degrades the performance, but might fix some artifacts.
348 | # The opposing option is use-damage
349 | #
350 | # no-use-damage = false
351 | use-damage = true
352 |
353 | # Use X Sync fence to sync clients' draw calls, to make sure all draw
354 | # calls are finished before picom starts drawing. Needed on nvidia-drivers
355 | # with GLX backend for some users.
356 | #
357 | # xrender-sync-fence = false
358 |
359 | # GLX backend: Use specified GLSL fragment shader for rendering window contents.
360 | # See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
361 | # in the source tree for examples.
362 | #
363 | # glx-fshader-win = ''
364 |
365 | # Force all windows to be painted with blending. Useful if you
366 | # have a glx-fshader-win that could turn opaque pixels transparent.
367 | #
368 | # force-win-blend = false
369 |
370 | # Do not use EWMH to detect fullscreen windows.
371 | # Reverts to checking if a window is fullscreen based only on its size and coordinates.
372 | #
373 | # no-ewmh-fullscreen = false
374 |
375 | # Dimming bright windows so their brightness doesn't exceed this set value.
376 | # Brightness of a window is estimated by averaging all pixels in the window,
377 | # so this could comes with a performance hit.
378 | # Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
379 | #
380 | # max-brightness = 1.0
381 |
382 | # Make transparent windows clip other windows like non-transparent windows do,
383 | # instead of blending on top of them.
384 | #
385 | # transparent-clipping = false
386 |
387 | # Set the log level. Possible values are:
388 | # "trace", "debug", "info", "warn", "error"
389 | # in increasing level of importance. Case doesn't matter.
390 | # If using the "TRACE" log level, it's better to log into a file
391 | # using *--log-file*, since it can generate a huge stream of logs.
392 | #
393 | # log-level = "debug"
394 | log-level = "warn";
395 |
396 | # Set the log file.
397 | # If *--log-file* is never specified, logs will be written to stderr.
398 | # Otherwise, logs will to written to the given file, though some of the early
399 | # logs might still be written to the stderr.
400 | # When setting this option from the config file, it is recommended to use an absolute path.
401 | #
402 | # log-file = '/path/to/your/log/file'
403 |
404 | # Show all X errors (for debugging)
405 | # show-all-xerrors = false
406 |
407 | # Write process ID to a file.
408 | # write-pid-path = '/path/to/your/log/file'
409 |
410 | # Window type settings
411 | #
412 | # 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
413 | # "unknown", "desktop", "dock", "toolbar", "menu", "utility",
414 | # "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
415 | # "tooltip", "notification", "combo", and "dnd".
416 | #
417 | # Following per window-type options are available: ::
418 | #
419 | # fade, shadow:::
420 | # Controls window-type-specific shadow and fade settings.
421 | #
422 | # opacity:::
423 | # Controls default opacity of the window type.
424 | #
425 | # focus:::
426 | # Controls whether the window of this type is to be always considered focused.
427 | # (By default, all window types except "normal" and "dialog" has this on.)
428 | #
429 | # full-shadow:::
430 | # Controls whether shadow is drawn under the parts of the window that you
431 | # normally won't be able to see. Useful when the window has parts of it
432 | # transparent, and you want shadows in those areas.
433 | #
434 | # redir-ignore:::
435 | # Controls whether this type of windows should cause screen to become
436 | # redirected again after been unredirected. If you have unredir-if-possible
437 | # set, and doesn't want certain window to cause unnecessary screen redirection,
438 | # you can set this to `true`.
439 | #
440 | wintypes:
441 | {
442 | tooltip = { fade = true; shadow = true; focus = true; full-shadow = false; };
443 | dock = { shadow = false; }
444 | dnd = { shadow = false; }
445 | };
446 |
--------------------------------------------------------------------------------
/conf/picom/picom.conf:
--------------------------------------------------------------------------------
1 | # Picom Settings
2 | # ----------------
3 |
4 | backend = "glx";
5 | vsync = true;
6 | mark-wmwin-focused = true;
7 | detect-rounded-corners = true;
8 | detect-client-opacity = true;
9 | use-damage = true;
10 | refresh-rate = 0;
11 | unredir-if-possible = false;
12 |
13 | # Fade
14 | # ------
15 |
16 | fading = true;
17 | fade-in-step = 0.02;
18 | fade-out-step = 0.02;
19 | fade-delta = 3;
20 |
21 | # Corner
22 | # --------
23 |
24 | corner-radius = 8;
25 | round-borders = 8;
26 | rounded-corners-exclude = [
27 | "class_g ?= 'Notify-osd'",
28 | "class_g = 'dmenu'",
29 | "class_g = 'Polybar'",
30 | "class_g = 'Tint2'",
31 | "!window_type = 'normal'"
32 | ];
33 |
34 | # Shadow
35 | # --------
36 |
37 | shadow = true;
38 | shadow-radius = 14;
39 | shadow-opacity = 0.3;
40 | shadow-offset-x = -27;
41 | shadow-offset-y = 0;
42 | shadow-red = 0.0;
43 | shadow-green = 0.0;
44 | shadow-blue = 0.0;
45 | xinerama-shadow-crop = true;
46 | shadow-exclude = [
47 | # "name = 'Dunst'",
48 | "class_g ?= 'Notify-osd'",
49 | "class_g = 'spectrwm'",
50 | "class_g = 'dmenu'",
51 | "class_g = 'Easystroke'",
52 | "class_g = 'Rofi'",
53 | "class_g = 'GLava'",
54 | "class_g = '_HERBST_FRAME'",
55 | # "!_NET_WM_STATE@:a *= 'ABOVE'",
56 | # "!focused",
57 | # "_GTK_FRAME_EXTENTS@:c"
58 | ];
59 |
60 | # Transparency
61 | # --------------
62 |
63 | inactive-opacity = 1.0;
64 | active-opacity = 1.0;
65 | frame-opacity = 1.0;
66 | dropdown-menu-opacity = 1.0;
67 | popup-menu-opacity = 1.0;
68 | inactive-opacity-override = false;
69 | opacity-rule = [
70 | "100:class_g = 'spectrwm'",
71 | "100:class_g = 'dmenu'",
72 | "100:class_g = 'i3lock'",
73 | "100:class_g = 'mpv'",
74 | "100:class_g = 'FreeTube'",
75 | "100:class_g = 'Zathura'",
76 | "100:class_g = 'firefox'",
77 | "100:class_g = 'discord'",
78 | "100:class_g = 'Thunar'",
79 | "100:class_g = 'feh'",
80 | "50:class_g = 'GLava'",
81 | "100:_GTK_FRAME_EXTENTS@:c"
82 | ];
83 |
84 | # Blur
85 | # ------
86 |
87 | blur-background = true;
88 | blur-method = "dual_kawase";
89 | blur-size = 20;
90 | blur-deviation = 5;
91 | blur-background-fixed = true;
92 | blur-background-frame = true;
93 | blur-kernel = "7x7box";
94 | blur-background-exclude = [
95 | "class_g ~= 'slop'",
96 | "class_g = 'spectrwm'",
97 | "class_g = 'GLava'",
98 | "_GTK_FRAME_EXTENTS@:c",
99 | ];
100 |
101 | # Animations Yay
102 | # ----------------
103 |
104 | animations = false;
105 | animation-stiffness = 300.0;
106 | animation-dampening = 22.0;
107 | animation-clamping = true;
108 | animation-mass = 1.0;
109 | animation-for-open-window = "zoom";
110 | animation-for-unmap-window = "slide-down";
111 | animation-for-menu-window = "slide-down";
112 | animation-for-transient-window = "slide-down";
113 | animation-for-transient-window = "slide-up";
114 |
115 | animation-for-workspace-switch-in = "zoom";
116 | animation-for-workspace-switch-out = "zoom";
117 |
118 | # Wintypes
119 | # ----------
120 |
121 | wintypes:
122 | {
123 | tooltip = {
124 | fade = false;
125 | shadow = false;
126 | opacity = false;
127 | focus = false;
128 | full-shadow = false;
129 | };
130 | dock = {
131 | shadow = false;
132 | }
133 | dnd = {
134 | shadow = false;
135 | }
136 | popup_menu = {
137 | fade = false;
138 | opacity = false;
139 | shadow = false;
140 | }
141 | dropdown_menu = {
142 | fade = false;
143 | opacity = false;
144 | shadow = false;
145 | }
146 | unknown = {fade = false;}
147 | utility = {fade = false;}
148 | desktop = {fade = false; shadow=false;}
149 | toolbar = {fade = false;}
150 | menu = {fade = false; shadow = false;}
151 | splash = {fade = false;}
152 | };
153 |
--------------------------------------------------------------------------------
/conf/picom/picom2.conf:
--------------------------------------------------------------------------------
1 | # Shadows
2 |
3 | shadow = true;
4 | shadow-radius = 14;
5 | shadow-opacity = 0.3;
6 | shadow-offset-x = -12;
7 | shadow-offset-y = -12;
8 |
9 | shadow-exclude = [
10 | "class_g = 'slop'",
11 | "window_type = 'menu'",
12 | "window_type = 'desktop'",
13 | "_GTK_FRAME_EXTENTS@:c"
14 | ];
15 |
16 |
17 | # Fading
18 |
19 | fading = true;
20 | fade-in-step = 0.03;
21 | fade-out-step = 0.03;
22 | fade-delta = 3;
23 |
24 | no-fading-destroyed-argb = true;
25 |
26 | fade-exclude = [
27 | "!window_type = 'dropdown_menu'"
28 | ];
29 |
30 |
31 | # Corners
32 |
33 | corner-radius = 3;
34 | rounded-corners-exclude = [
35 | "!window_type = 'normal'",
36 | ];
37 |
38 |
39 | # Blur
40 |
41 | blur-kern = "11x11gaussian";
42 | blur-method = "dual_kawase";
43 | blur-strength = 8.0;
44 | blur-background = false;
45 | blur-background-frame = true;
46 | blur-background-fixed = true;
47 |
48 | blur-background-exclude = [
49 | "!window_type = 'splash'"
50 | ];
51 |
52 |
53 | # General Settings
54 |
55 | backend = "glx";
56 | vsync = true;
57 | daemon = false;
58 | dbus = false;
59 | mark-wmwin-focused = true;
60 | mark-ovredir-focused = true;
61 | detect-rounded-corners = true;
62 | detect-client-opacity = true;
63 | refresh-rate = 0;
64 | detect-transient = true;
65 | glx-no-stencil = true;
66 | use-damage = true;
67 | resize-damage = 1;
68 | xrender-sync-fence = true;
69 | glx-use-copysubbuffer-mesa = false;
70 | transparent-clipping = false;
71 |
72 | wintypes = {
73 | normal = { full-shadow = true; };
74 | popup_menu = { full-shadow = false; };
75 | notification = { full-shadow = true; };
76 | dropdown_menu = { full-shadow = false; };
77 | };
78 |
--------------------------------------------------------------------------------
/conf/wezterm/dark.lua:
--------------------------------------------------------------------------------
1 | return {
2 | foreground = '#f2f2e9',
3 | background = '#17171C',
4 |
5 | cursor_bg = '#f2f2e9',
6 | cursor_border = '#f2f2e9',
7 |
8 | selection_fg = '#101419',
9 | selection_bg = '#C5C8C6',
10 |
11 | ansi = {
12 | '#212126',
13 | '#cc7a7a',
14 | '#b1cc7a',
15 | '#cca37a',
16 | '#7a96cc',
17 | '#b886d1',
18 | '#7ab1cc',
19 | '#f2e0ce',
20 | },
21 |
22 | brights = {
23 | '#212126',
24 | '#cc7a7a',
25 | '#b1cc7a',
26 | '#cca37a',
27 | '#7a96cc',
28 | '#b886d1',
29 | '#7ab1cc',
30 | '#f2e0ce',
31 | },
32 | }
33 |
--------------------------------------------------------------------------------
/conf/wezterm/light.lua:
--------------------------------------------------------------------------------
1 | return {
2 | foreground = '#18181A',
3 | background = '#F2F2E9',
4 |
5 | cursor_bg = '#111317',
6 | cursor_border = '#111317',
7 |
8 | selection_fg = '#101419',
9 | selection_bg = '#C5C8C6',
10 |
11 | ansi = {
12 | '#E0DEDC',
13 | '#D96C6C',
14 | '#B5D96C',
15 | '#D9A36C',
16 | '#6C90D9',
17 | '#B56CD9',
18 | '#6CB5D9',
19 | '#323333',
20 | },
21 |
22 | brights = {
23 | '#E0DEDC',
24 | '#D96C6C',
25 | '#B5D96C',
26 | '#D9A36C',
27 | '#6C90D9',
28 | '#B56CD9',
29 | '#6CB5D9',
30 | '#323333',
31 | },
32 | }
33 |
--------------------------------------------------------------------------------
/conf/wezterm/wezterm.lua:
--------------------------------------------------------------------------------
1 | local wezterm = require 'wezterm'
2 |
3 | local light = require 'light'
4 | local dark = require 'dark'
5 |
6 | local theme = dark
7 |
8 | return {
9 | front_end = "OpenGL",
10 | enable_wayland = false,
11 |
12 | font_dirs = {"/home/neko/.local/share/fonts"},
13 | font = wezterm.font('Roboto Mono', {weight = 'Regular'}),
14 | font_size = 14.0,
15 | harfbuzz_features = {"calt=0", "clig=0", "liga=0"},
16 |
17 | enable_tab_bar = false,
18 | hide_tab_bar_if_only_one_tab = true,
19 | show_tab_index_in_tab_bar = false,
20 |
21 | default_cursor_style = 'BlinkingUnderline',
22 | cursor_blink_rate = 600,
23 | animation_fps = 1,
24 | cursor_blink_ease_in = 'Constant',
25 | cursor_blink_ease_out = 'Constant',
26 |
27 | visual_bell = {
28 | fade_in_duration_ms = 75,
29 | fade_out_duration_ms = 75,
30 | target = 'CursorColor',
31 | },
32 |
33 | window_padding = {
34 | left = '32pt',
35 | right = '32pt',
36 | top = '32pt',
37 | bottom = '32pt'
38 | },
39 |
40 | colors = {
41 | foreground = theme.foreground,
42 | background = theme.background,
43 |
44 | cursor_bg = theme.cursor_bg,
45 | cursor_border = theme.cursor_border,
46 |
47 | selection_fg = theme.selection_fg,
48 | selection_bg = theme.selection_bg,
49 |
50 | ansi = {
51 | theme.ansi[1],
52 | theme.ansi[2],
53 | theme.ansi[3],
54 | theme.ansi[4],
55 | theme.ansi[5],
56 | theme.ansi[6],
57 | theme.ansi[7],
58 | theme.ansi[8],
59 | },
60 |
61 | brights = {
62 | theme.brights[1],
63 | theme.brights[2],
64 | theme.brights[3],
65 | theme.brights[4],
66 | theme.brights[5],
67 | theme.brights[6],
68 | theme.brights[7],
69 | theme.brights[8],
70 | },
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/misc/bin/bunny:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Thx to -> elenapan for the original script!
3 |
4 | f=3 b=4
5 | for j in f b; do
6 | for i in {0..7}; do
7 | printf -v $j$i %b "\e[${!j}${i}m"
8 | done
9 | done
10 | d=$'\e[1m'
11 | t=$'\e[0m'
12 | v=$'\e[7m'
13 |
14 | name=$(echo $USER)
15 |
16 | # (\ /)
17 | # ( · ·)
18 | # c(")(")
19 |
20 | # (\ /)
21 | # ( . .)
22 | # c(")(")
23 |
24 | tput clear
25 | cat << EOF
26 |
27 | (\ /)
28 | ( $d. .$t)
29 | c($f1"$t)($f1"$t)
30 |
31 | Hello $f4$name
32 | EOF
33 |
--------------------------------------------------------------------------------
/misc/bin/bunnyfetch:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Tiny colored fetch script
3 | # Requires Typicons Font to display the icons
4 | # elenapan @ github
5 |
6 | f=3 b=4
7 | for j in f b; do
8 | for i in {0..7}; do
9 | printf -v $j$i %b "\e[${!j}${i}m"
10 | done
11 | done
12 | d=$'\e[1m'
13 | t=$'\e[0m'
14 | v=$'\e[7m'
15 |
16 | # Items
17 | h=wm
18 | wmname="$(xprop -id $(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}') -notype -f _NET_WM_NAME 8t | grep "WM_NAME" | cut -f2 -d \")"
19 |
20 | k=kr
21 | kernel="$(uname -r | cut -d '-' -f1)"
22 |
23 | sh=sh
24 | shell=$(basename $SHELL)
25 |
26 | o=os
27 | os="$(uname -s)"
28 |
29 | colors=$(for i in {0..7}; do echo -en "\e[${1}$((30 + $i))m▁▁▁"; done)
30 |
31 | # (\ /)
32 | # ( · ·)
33 | # c(")(")
34 |
35 | # (\ /)
36 | # ( . .)
37 | # c(")(")
38 |
39 | tput clear
40 | cat << EOF
41 |
42 | (\ /) $f1$k $t$kernel
43 | ( $d· ·$t) $f4$h $t$wmname
44 | c($f1"$t)($f1"$t) $f3$sh $t$shell
45 |
46 | EOF
47 |
--------------------------------------------------------------------------------
/misc/bin/colorblocks:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Show the terminal colourscheme as blocks
4 | # Inspired by u/dkeg
5 | # Cheers! Addy
6 |
7 | f=3 b=4
8 | for j in f b; do
9 | for i in {0..7}; do
10 | printf -v $j$i %b "\e[${!j}${i}m"
11 | done
12 | done
13 | d=$'\e[1m'
14 | t=$'\e[0m'
15 | v=$'\e[7m'
16 |
17 | cat << EOF
18 |
19 | $f1██████$d██$t $f2██████$d██$t $f3██████$d██$t $f4██████$d██$t $f5██████$d██$t $f6██████$d██$t
20 | $f1██████$d██$t $f2██████$d██$t $f3██████$d██$t $f4██████$d██$t $f5██████$d██$t $f6██████$d██$t
21 | $f1██████$d██$t $f2██████$d██$t $f3██████$d██$t $f4██████$d██$t $f5██████$d██$t $f6██████$d██$t
22 | $ft██████$d$f7██$t $ft██████$d$f7██$t $ft██████$d$f7██$t $ft██████$d$f7██$t $ft██████$d$f7██$t $ft██████$d$f7██$t
23 |
24 | EOF
25 |
--------------------------------------------------------------------------------
/misc/bin/colorpanes:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Author: GekkoP
4 | # Source: http://linuxbbq.org/bbs/viewtopic.php?f=4&t=1656#p33189
5 |
6 | f=3 b=4
7 | for j in f b; do
8 | for i in {0..7}; do
9 | printf -v $j$i %b "\e[${!j}${i}m"
10 | done
11 | done
12 | d=$'\e[1m'
13 | t=$'\e[0m'
14 | v=$'\e[7m'
15 |
16 | tput clear
17 |
18 | cat << EOF
19 |
20 | $f0████$d▄$t $f1████$d▄$t $f2████$d▄$t $f3████$d▄$t $f4████$d▄$t $f5████$d▄$t $f6████$d▄$t $f7████$d▄$t
21 | $f0████$d█$t $f1████$d█$t $f2████$d█$t $f3████$d█$t $f4████$d█$t $f5████$d█$t $f6████$d█$t $f7████$d█$t
22 | $f0████$d█$t $f1████$d█$t $f2████$d█$t $f3████$d█$t $f4████$d█$t $f5████$d█$t $f6████$d█$t $f7████$d█$t
23 | $d$f0 ▀▀▀▀ $d$f1 ▀▀▀▀ $f2▀▀▀▀ $f3▀▀▀▀ $f4▀▀▀▀ $f5▀▀▀▀ $f6▀▀▀▀ $f7▀▀▀▀$t
24 |
25 | EOF
26 |
--------------------------------------------------------------------------------
/misc/bin/owl:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | f=3 b=4
4 | for j in f b; do
5 | for i in {0..7}; do
6 | printf -v $j$i %b "\e[${!j}${i}m"
7 | done
8 | done
9 | d=$'\e[1m'
10 | t=$'\e[0m'
11 | v=$'\e[7m'
12 |
13 | #,___,
14 | #[O.o]
15 | #/)__)
16 | #-"--"-
17 |
18 | tput clear
19 | cat << EOF
20 | $d,___,$t
21 | $d|$t [0.o]
22 | $d|$t /)__)
23 | $d|----$f1"$t$d--$f1"$t$d-$t
24 | EOF
25 |
--------------------------------------------------------------------------------
/misc/fonts/CascadiaCode/Caskaydia Cove Nerd Font Complete Mono Windows Compatible.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/CascadiaCode/Caskaydia Cove Nerd Font Complete Mono Windows Compatible.ttf
--------------------------------------------------------------------------------
/misc/fonts/CascadiaCode/Caskaydia Cove Nerd Font Complete Mono.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/CascadiaCode/Caskaydia Cove Nerd Font Complete Mono.ttf
--------------------------------------------------------------------------------
/misc/fonts/CascadiaCode/Caskaydia Cove Nerd Font Complete Windows Compatible.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/CascadiaCode/Caskaydia Cove Nerd Font Complete Windows Compatible.ttf
--------------------------------------------------------------------------------
/misc/fonts/CascadiaCode/Caskaydia Cove Nerd Font Complete.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/CascadiaCode/Caskaydia Cove Nerd Font Complete.ttf
--------------------------------------------------------------------------------
/misc/fonts/Icomoon/Icomoon Feather.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Icomoon/Icomoon Feather.ttf
--------------------------------------------------------------------------------
/misc/fonts/Icomoon/Icomoon Iconic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Icomoon/Icomoon Iconic.ttf
--------------------------------------------------------------------------------
/misc/fonts/Icomoon/Icomoon Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Icomoon/Icomoon Regular.ttf
--------------------------------------------------------------------------------
/misc/fonts/Icomoon/Icomoon Remix.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Icomoon/Icomoon Remix.ttf
--------------------------------------------------------------------------------
/misc/fonts/Iosevka/Iosevka Bold Nerd Font Complete.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Iosevka/Iosevka Bold Nerd Font Complete.ttf
--------------------------------------------------------------------------------
/misc/fonts/Iosevka/Iosevka Medium Italic Nerd Font Complete.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Iosevka/Iosevka Medium Italic Nerd Font Complete.ttf
--------------------------------------------------------------------------------
/misc/fonts/Iosevka/Iosevka Medium Nerd Font Complete.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Iosevka/Iosevka Medium Nerd Font Complete.ttf
--------------------------------------------------------------------------------
/misc/fonts/Iosevka/Iosevka Nerd Font Complete.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Iosevka/Iosevka Nerd Font Complete.ttf
--------------------------------------------------------------------------------
/misc/fonts/Roboto/LICENSE.txt:
--------------------------------------------------------------------------------
1 |
2 | Apache License
3 | Version 2.0, January 2004
4 | http://www.apache.org/licenses/
5 |
6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7 |
8 | 1. Definitions.
9 |
10 | "License" shall mean the terms and conditions for use, reproduction,
11 | and distribution as defined by Sections 1 through 9 of this document.
12 |
13 | "Licensor" shall mean the copyright owner or entity authorized by
14 | the copyright owner that is granting the License.
15 |
16 | "Legal Entity" shall mean the union of the acting entity and all
17 | other entities that control, are controlled by, or are under common
18 | control with that entity. For the purposes of this definition,
19 | "control" means (i) the power, direct or indirect, to cause the
20 | direction or management of such entity, whether by contract or
21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
22 | outstanding shares, or (iii) beneficial ownership of such entity.
23 |
24 | "You" (or "Your") shall mean an individual or Legal Entity
25 | exercising permissions granted by this License.
26 |
27 | "Source" form shall mean the preferred form for making modifications,
28 | including but not limited to software source code, documentation
29 | source, and configuration files.
30 |
31 | "Object" form shall mean any form resulting from mechanical
32 | transformation or translation of a Source form, including but
33 | not limited to compiled object code, generated documentation,
34 | and conversions to other media types.
35 |
36 | "Work" shall mean the work of authorship, whether in Source or
37 | Object form, made available under the License, as indicated by a
38 | copyright notice that is included in or attached to the work
39 | (an example is provided in the Appendix below).
40 |
41 | "Derivative Works" shall mean any work, whether in Source or Object
42 | form, that is based on (or derived from) the Work and for which the
43 | editorial revisions, annotations, elaborations, or other modifications
44 | represent, as a whole, an original work of authorship. For the purposes
45 | of this License, Derivative Works shall not include works that remain
46 | separable from, or merely link (or bind by name) to the interfaces of,
47 | the Work and Derivative Works thereof.
48 |
49 | "Contribution" shall mean any work of authorship, including
50 | the original version of the Work and any modifications or additions
51 | to that Work or Derivative Works thereof, that is intentionally
52 | submitted to Licensor for inclusion in the Work by the copyright owner
53 | or by an individual or Legal Entity authorized to submit on behalf of
54 | the copyright owner. For the purposes of this definition, "submitted"
55 | means any form of electronic, verbal, or written communication sent
56 | to the Licensor or its representatives, including but not limited to
57 | communication on electronic mailing lists, source code control systems,
58 | and issue tracking systems that are managed by, or on behalf of, the
59 | Licensor for the purpose of discussing and improving the Work, but
60 | excluding communication that is conspicuously marked or otherwise
61 | designated in writing by the copyright owner as "Not a Contribution."
62 |
63 | "Contributor" shall mean Licensor and any individual or Legal Entity
64 | on behalf of whom a Contribution has been received by Licensor and
65 | subsequently incorporated within the Work.
66 |
67 | 2. Grant of Copyright License. Subject to the terms and conditions of
68 | this License, each Contributor hereby grants to You a perpetual,
69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70 | copyright license to reproduce, prepare Derivative Works of,
71 | publicly display, publicly perform, sublicense, and distribute the
72 | Work and such Derivative Works in Source or Object form.
73 |
74 | 3. Grant of Patent License. Subject to the terms and conditions of
75 | this License, each Contributor hereby grants to You a perpetual,
76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77 | (except as stated in this section) patent license to make, have made,
78 | use, offer to sell, sell, import, and otherwise transfer the Work,
79 | where such license applies only to those patent claims licensable
80 | by such Contributor that are necessarily infringed by their
81 | Contribution(s) alone or by combination of their Contribution(s)
82 | with the Work to which such Contribution(s) was submitted. If You
83 | institute patent litigation against any entity (including a
84 | cross-claim or counterclaim in a lawsuit) alleging that the Work
85 | or a Contribution incorporated within the Work constitutes direct
86 | or contributory patent infringement, then any patent licenses
87 | granted to You under this License for that Work shall terminate
88 | as of the date such litigation is filed.
89 |
90 | 4. Redistribution. You may reproduce and distribute copies of the
91 | Work or Derivative Works thereof in any medium, with or without
92 | modifications, and in Source or Object form, provided that You
93 | meet the following conditions:
94 |
95 | (a) You must give any other recipients of the Work or
96 | Derivative Works a copy of this License; and
97 |
98 | (b) You must cause any modified files to carry prominent notices
99 | stating that You changed the files; and
100 |
101 | (c) You must retain, in the Source form of any Derivative Works
102 | that You distribute, all copyright, patent, trademark, and
103 | attribution notices from the Source form of the Work,
104 | excluding those notices that do not pertain to any part of
105 | the Derivative Works; and
106 |
107 | (d) If the Work includes a "NOTICE" text file as part of its
108 | distribution, then any Derivative Works that You distribute must
109 | include a readable copy of the attribution notices contained
110 | within such NOTICE file, excluding those notices that do not
111 | pertain to any part of the Derivative Works, in at least one
112 | of the following places: within a NOTICE text file distributed
113 | as part of the Derivative Works; within the Source form or
114 | documentation, if provided along with the Derivative Works; or,
115 | within a display generated by the Derivative Works, if and
116 | wherever such third-party notices normally appear. The contents
117 | of the NOTICE file are for informational purposes only and
118 | do not modify the License. You may add Your own attribution
119 | notices within Derivative Works that You distribute, alongside
120 | or as an addendum to the NOTICE text from the Work, provided
121 | that such additional attribution notices cannot be construed
122 | as modifying the License.
123 |
124 | You may add Your own copyright statement to Your modifications and
125 | may provide additional or different license terms and conditions
126 | for use, reproduction, or distribution of Your modifications, or
127 | for any such Derivative Works as a whole, provided Your use,
128 | reproduction, and distribution of the Work otherwise complies with
129 | the conditions stated in this License.
130 |
131 | 5. Submission of Contributions. Unless You explicitly state otherwise,
132 | any Contribution intentionally submitted for inclusion in the Work
133 | by You to the Licensor shall be under the terms and conditions of
134 | this License, without any additional terms or conditions.
135 | Notwithstanding the above, nothing herein shall supersede or modify
136 | the terms of any separate license agreement you may have executed
137 | with Licensor regarding such Contributions.
138 |
139 | 6. Trademarks. This License does not grant permission to use the trade
140 | names, trademarks, service marks, or product names of the Licensor,
141 | except as required for reasonable and customary use in describing the
142 | origin of the Work and reproducing the content of the NOTICE file.
143 |
144 | 7. Disclaimer of Warranty. Unless required by applicable law or
145 | agreed to in writing, Licensor provides the Work (and each
146 | Contributor provides its Contributions) on an "AS IS" BASIS,
147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148 | implied, including, without limitation, any warranties or conditions
149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150 | PARTICULAR PURPOSE. You are solely responsible for determining the
151 | appropriateness of using or redistributing the Work and assume any
152 | risks associated with Your exercise of permissions under this License.
153 |
154 | 8. Limitation of Liability. In no event and under no legal theory,
155 | whether in tort (including negligence), contract, or otherwise,
156 | unless required by applicable law (such as deliberate and grossly
157 | negligent acts) or agreed to in writing, shall any Contributor be
158 | liable to You for damages, including any direct, indirect, special,
159 | incidental, or consequential damages of any character arising as a
160 | result of this License or out of the use or inability to use the
161 | Work (including but not limited to damages for loss of goodwill,
162 | work stoppage, computer failure or malfunction, or any and all
163 | other commercial damages or losses), even if such Contributor
164 | has been advised of the possibility of such damages.
165 |
166 | 9. Accepting Warranty or Additional Liability. While redistributing
167 | the Work or Derivative Works thereof, You may choose to offer,
168 | and charge a fee for, acceptance of support, warranty, indemnity,
169 | or other liability obligations and/or rights consistent with this
170 | License. However, in accepting such obligations, You may act only
171 | on Your own behalf and on Your sole responsibility, not on behalf
172 | of any other Contributor, and only if You agree to indemnify,
173 | defend, and hold each Contributor harmless for any liability
174 | incurred by, or claims asserted against, such Contributor by reason
175 | of your accepting any such warranty or additional liability.
176 |
177 | END OF TERMS AND CONDITIONS
178 |
179 | APPENDIX: How to apply the Apache License to your work.
180 |
181 | To apply the Apache License to your work, attach the following
182 | boilerplate notice, with the fields enclosed by brackets "[]"
183 | replaced with your own identifying information. (Don't include
184 | the brackets!) The text should be enclosed in the appropriate
185 | comment syntax for the file format. We also recommend that a
186 | file or class name and description of purpose be included on the
187 | same "printed page" as the copyright notice for easier
188 | identification within third-party archives.
189 |
190 | Copyright [yyyy] [name of copyright owner]
191 |
192 | Licensed under the Apache License, Version 2.0 (the "License");
193 | you may not use this file except in compliance with the License.
194 | You may obtain a copy of the License at
195 |
196 | http://www.apache.org/licenses/LICENSE-2.0
197 |
198 | Unless required by applicable law or agreed to in writing, software
199 | distributed under the License is distributed on an "AS IS" BASIS,
200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201 | See the License for the specific language governing permissions and
202 | limitations under the License.
203 |
--------------------------------------------------------------------------------
/misc/fonts/Roboto/Roboto-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Roboto/Roboto-Black.ttf
--------------------------------------------------------------------------------
/misc/fonts/Roboto/Roboto-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Roboto/Roboto-BlackItalic.ttf
--------------------------------------------------------------------------------
/misc/fonts/Roboto/Roboto-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Roboto/Roboto-Bold.ttf
--------------------------------------------------------------------------------
/misc/fonts/Roboto/Roboto-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Roboto/Roboto-BoldItalic.ttf
--------------------------------------------------------------------------------
/misc/fonts/Roboto/Roboto-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Roboto/Roboto-Italic.ttf
--------------------------------------------------------------------------------
/misc/fonts/Roboto/Roboto-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Roboto/Roboto-Light.ttf
--------------------------------------------------------------------------------
/misc/fonts/Roboto/Roboto-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Roboto/Roboto-LightItalic.ttf
--------------------------------------------------------------------------------
/misc/fonts/Roboto/Roboto-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Roboto/Roboto-Medium.ttf
--------------------------------------------------------------------------------
/misc/fonts/Roboto/Roboto-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Roboto/Roboto-MediumItalic.ttf
--------------------------------------------------------------------------------
/misc/fonts/Roboto/Roboto-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Roboto/Roboto-Regular.ttf
--------------------------------------------------------------------------------
/misc/fonts/Roboto/Roboto-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Roboto/Roboto-Thin.ttf
--------------------------------------------------------------------------------
/misc/fonts/Roboto/Roboto-ThinItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/Roboto/Roboto-ThinItalic.ttf
--------------------------------------------------------------------------------
/misc/fonts/azukifontB.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/azukifontB.ttf
--------------------------------------------------------------------------------
/misc/fonts/material-design-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/material-design-icons.ttf
--------------------------------------------------------------------------------
/misc/fonts/materialdesignicons-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rklyz/MyRice/a4e4630fd3136b3802a5cfaa38435cabdb1e207a/misc/fonts/materialdesignicons-webfont.ttf
--------------------------------------------------------------------------------