forked from Shinonome/dots-hyprland
Merge branch 'main' into patch-1
This commit is contained in:
@@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
@@ -3,105 +3,93 @@
|
||||
<author>end_4</author>
|
||||
<_description>Catppuccin port but very random</_description>
|
||||
|
||||
<!-- The scheme tries to look like the default GVim scheme,
|
||||
since it is also what the hardwired GtkSourceView 1 color
|
||||
scheme did -->
|
||||
|
||||
<!-- Palette -->
|
||||
<color name="white" value="#F8F8F2"/>
|
||||
<color name="white" value="#53566F"/>
|
||||
<color name="blue" value="#2E70F5"/>
|
||||
<color name="magenta" value="#DA70D6"/>
|
||||
<color name="violet" value="#934CF0"/>
|
||||
<color name="cyan" value="#66D9EF"/>
|
||||
<color name="grey" value="#817D69"/>
|
||||
<color name="green" value="#44A230"/>
|
||||
<color name="bordeaux" value="#B22757"/>
|
||||
<color name="red" value="#E64856"/>
|
||||
<color name="yellow" value="#E4D973"/>
|
||||
<color name="purple" value="#934CF0"/>
|
||||
|
||||
<color name="onSuccess" value="#D1E8D5"/>
|
||||
<color name="success" value="#213528"/>
|
||||
<color name="onError" value="#ffb4a9"/>
|
||||
<color name="error" value="#680003"/>
|
||||
|
||||
<!-- Global Settings -->
|
||||
<style name="current-line" background="#EFF1F5"/>
|
||||
<style name="current-line-number" background="#eeeeec"/>
|
||||
<style name="draw-spaces" foreground="#babdb6"/>
|
||||
<style name="background-pattern" background="#EFF1F5"/>
|
||||
|
||||
<!-- Bracket Matching -->
|
||||
<!-- <style name="bracket-match" foreground="white" background="grey"/> -->
|
||||
<!-- <style name="bracket-mismatch" foreground="white" background="red"/> -->
|
||||
|
||||
<!-- Right Margin -->
|
||||
<style name="right-margin" foreground="#EFF1F5" background="#EFF1F5"/>
|
||||
|
||||
<!-- Search Matching -->
|
||||
<style name="search-match" background="yellow"/>
|
||||
|
||||
<!-- Comments -->
|
||||
<style name="def:comment" foreground="grey" italic="true"/>
|
||||
<style name="def:shebang" foreground="grey" bold="true"/>
|
||||
<style name="def:doc-comment-element" italic="true"/>
|
||||
|
||||
<!-- Constants -->
|
||||
<style name="def:constant" foreground="black"/>
|
||||
<style name="def:special-char" foreground="yellow"/>
|
||||
|
||||
<!-- Identifiers -->
|
||||
<style name="def:identifier" foreground="green"/>
|
||||
|
||||
<!-- Statements -->
|
||||
<style name="def:statement" foreground="cyan" bold="true"/>
|
||||
|
||||
<!-- Types -->
|
||||
<style name="def:type" foreground="cyan" bold="true"/>
|
||||
|
||||
<!-- Others -->
|
||||
<style name="def:preprocessor" foreground="purple"/>
|
||||
<style name="def:error" background="red" bold="true"/>
|
||||
<style name="def:warning" background="yellow"/>
|
||||
<style name="def:note" foreground="bordeaux" bold="true"/>
|
||||
<style name="def:underlined" italic="true" underline="single"/>
|
||||
|
||||
<!-- Heading styles, uncomment to enable -->
|
||||
<!--
|
||||
<style name="def:heading0" scale="5.0"/>
|
||||
<style name="def:heading1" scale="2.5"/>
|
||||
<style name="def:heading2" scale="2.0"/>
|
||||
<style name="def:heading3" scale="1.7"/>
|
||||
<style name="def:heading4" scale="1.5"/>
|
||||
<style name="def:heading5" scale="1.3"/>
|
||||
<style name="def:heading6" scale="1.2"/>
|
||||
-->
|
||||
|
||||
<!-- Language specific styles -->
|
||||
<style name="diff:added-line" background="success" foreground="onSuccess"/>
|
||||
<style name="diff:removed-line" background="error" foreground="onError"/>
|
||||
<style name="diff:changed-line" use-style="def:preprocessor"/>
|
||||
<style name="diff:special-case" use-style="def:constant"/>
|
||||
<style name="diff:location" use-style="def:statement"/>
|
||||
<style name="diff:diff-file" use-style="def:type"/>
|
||||
|
||||
<style name="xml:tags" foreground="red"/>
|
||||
<style name="xml:attribute-name" foreground="green"/>
|
||||
<style name="xml:namespace" foreground="cyan" bold="true"/>
|
||||
|
||||
<style name="js:object" foreground="cyan" bold="true"/>
|
||||
<style name="js:constructors" foreground="cyan"/>
|
||||
|
||||
<style name="latex:display-math" foreground="purple"/>
|
||||
<style name="latex:command" foreground="green" bold="true"/>
|
||||
<style name="latex:include" use-style="def:preprocessor"/>
|
||||
|
||||
<style name="sh:variable" foreground="purple"/>
|
||||
|
||||
<!-- legacy styles for old lang files -->
|
||||
<style name="Others" foreground="cyan" bold="true"/>
|
||||
<style name="Others 2" foreground="cyan"/>
|
||||
<style name="Others 3" foreground="purple"/>
|
||||
<style name="bracket-match" background="#E3E6EB" bold="true"/>
|
||||
<style name="bracket-mismatch" background="#E3E6EB" underline="true"/>
|
||||
<style name="c:preprocessor" foreground="#DF8E1D"/>
|
||||
<style name="css:at-rules" foreground="#8839EF"/>
|
||||
<style name="css:color" foreground="#DF8E1D"/>
|
||||
<style name="css:keyword" foreground="#256BF5"/>
|
||||
<style name="current-line" background="#E3E6EB"/>
|
||||
<style name="cursor" foreground="#DC8A78"/>
|
||||
<style name="def:base-n-integer" foreground="#DF8E1D"/>
|
||||
<style name="def:boolean" foreground="#DF8E1D"/>
|
||||
<style name="def:builtin" foreground="#DF8E1D"/>
|
||||
<style name="def:character" foreground="#DF8E1D"/>
|
||||
<style name="def:comment" foreground="#9DA1B1"/>
|
||||
<style name="def:complex" foreground="#DF8E1D"/>
|
||||
<style name="def:decimal" foreground="#DF8E1D"/>
|
||||
<style name="def:doc-comment" foreground="#9DA1B1"/>
|
||||
<style name="def:doc-comment-element" foreground="#9DA1B1"/>
|
||||
<style name="def:error" foreground="#D53055" background="#EAEDF2"/>
|
||||
<style name="def:floating-point" foreground="#DF8E1D"/>
|
||||
<style name="def:function" foreground="#256BF5"/>
|
||||
<style name="def:identifier" foreground="#000000"/>
|
||||
<style name="def:keyword" foreground="#8839EF"/>
|
||||
<style name="def:note" foreground="#9DA1B1"/>
|
||||
<style name="def:number" foreground="#FE640B"/>
|
||||
<style name="def:operator" foreground="#8839EF"/>
|
||||
<style name="def:preprocessor" foreground="#256BF5"/>
|
||||
<style name="def:reserved" foreground="#8839EF"/>
|
||||
<style name="def:shebang" foreground="#9DA1B1"/>
|
||||
<style name="def:special-char" foreground="#256BF5"/>
|
||||
<style name="def:special-constant" foreground="#DF8E1D"/>
|
||||
<style name="def:statement" foreground="#8839EF"/>
|
||||
<style name="def:string" foreground="#4AA537"/>
|
||||
<style name="def:type" foreground="#256BF5" italic="true"/>
|
||||
<style name="diff:added-line" foreground="#282D32" background="#ACF2BD"/>
|
||||
<style name="diff:changed-line" foreground="#282D32" background="#F1F2C3"/>
|
||||
<style name="diff:location" foreground="#9DA1B1"/>
|
||||
<style name="diff:removed-line" foreground="#282D32" background="#FFEEF0"/>
|
||||
<style name="draw-spaces" foreground="#3b3a32"/>
|
||||
<style name="html:dtd" foreground="#4AA537"/>
|
||||
<style name="html:tag" foreground="#8839EF"/>
|
||||
<style name="js:function" foreground="#256BF5"/>
|
||||
<style name="line-numbers" foreground="#9699AA" background="#EAEDF2"/>
|
||||
<style name="perl:builtin" foreground="#256BF5"/>
|
||||
<style name="perl:include-statement" foreground="#8839EF"/>
|
||||
<style name="perl:special-variable" foreground="#DF8E1D"/>
|
||||
<style name="perl:variable" foreground="#000000"/>
|
||||
<style name="php:string" foreground="#4AA537"/>
|
||||
<style name="python:builtin-constant" foreground="#8839EF"/>
|
||||
<style name="python:builtin-function" foreground="#256BF5"/>
|
||||
<style name="python:module-handler" foreground="#8839EF"/>
|
||||
<style name="python:special-variable" foreground="#8839EF"/>
|
||||
<style name="ruby:attribute-definition" foreground="#8839EF"/>
|
||||
<style name="ruby:builtin" foreground="#000000"/>
|
||||
<style name="ruby:class-variable" foreground="#000000"/>
|
||||
<style name="ruby:constant" foreground="#000000"/>
|
||||
<style name="ruby:global-variable" foreground="#256BF5"/>
|
||||
<style name="ruby:instance-variable" foreground="#000000"/>
|
||||
<style name="ruby:module-handler" foreground="#8839EF"/>
|
||||
<style name="ruby:predefined-variable" foreground="#DF8E1D"/>
|
||||
<style name="ruby:regex" foreground="#f6aa11"/>
|
||||
<style name="ruby:special-variable" foreground="#8839EF"/>
|
||||
<style name="ruby:symbol" foreground="#DF8E1D"/>
|
||||
<style name="rubyonrails:attribute-definition" foreground="#8839EF"/>
|
||||
<style name="rubyonrails:block-parameter" foreground="#fd971f" italic="true"/>
|
||||
<style name="rubyonrails:builtin" foreground="#000000"/>
|
||||
<style name="rubyonrails:class-inherit" foreground="#256BF5" underline="true" italic="true"/>
|
||||
<style name="rubyonrails:class-name" foreground="#256BF5"/>
|
||||
<style name="rubyonrails:class-variable" foreground="#000000"/>
|
||||
<style name="rubyonrails:complex-interpolation" foreground="#DF8E1D"/>
|
||||
<style name="rubyonrails:constant" foreground="#000000"/>
|
||||
<style name="rubyonrails:global-variable" foreground="#256BF5"/>
|
||||
<style name="rubyonrails:instance-variable" foreground="#000000"/>
|
||||
<style name="rubyonrails:module-handler" foreground="#8839EF"/>
|
||||
<style name="rubyonrails:module-name" foreground="#256BF5"/>
|
||||
<style name="rubyonrails:predefined-variable" foreground="#DF8E1D"/>
|
||||
<style name="rubyonrails:rails" foreground="#000000"/>
|
||||
<style name="rubyonrails:regex" foreground="#f6aa11"/>
|
||||
<style name="rubyonrails:simple-interpolation" foreground="#DF8E1D"/>
|
||||
<style name="rubyonrails:special-variable" foreground="#8839EF"/>
|
||||
<style name="rubyonrails:symbol" foreground="#DF8E1D"/>
|
||||
<style name="search-match" background="#E3E6EB" bold="true" underline="true"/>
|
||||
<style name="selection" foreground="#f8f8f2" background="#444444"/>
|
||||
<style name="text" foreground="#f8f8f2" background="#222222"/>
|
||||
<style name="xml:attribute-name" foreground="#256BF5"/>
|
||||
<style name="xml:element-name" foreground="#8839EF"/>
|
||||
<style name="xml:entity" foreground="#c8cecc"/>
|
||||
<style name="xml:namespace" foreground="#8839EF"/>
|
||||
<style name="xml:tag" foreground="#8839EF"/>
|
||||
|
||||
</style-scheme>
|
||||
|
||||
@@ -1,106 +1,121 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright (C) 2014 Leo Iannacone <info@leoiannacone.com>
|
||||
|
||||
This file was generated from a textmate theme named Monokai Extended
|
||||
with tm2gtksw2 tool. (Alexandre da Silva)
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
-->
|
||||
|
||||
<!-- MODIFIED -->
|
||||
|
||||
<style-scheme id="custom" _name="Custom" version="1.0">
|
||||
<author>end_4</author>
|
||||
<_description>Monokai port but very random</_description>
|
||||
<author>Leo Iannacone</author>
|
||||
<_description>Based on SublimeText Monokai Extended - Generated with tm2gtksw2</_description>
|
||||
|
||||
<!-- The scheme tries to look like the default GVim scheme,
|
||||
since it is also what the hardwired GtkSourceView 1 color
|
||||
scheme did -->
|
||||
<style name="bracket-match" background="#333333" bold="true"/>
|
||||
<style name="bracket-mismatch" background="#333333" underline="true"/>
|
||||
<style name="c:preprocessor" foreground="#be84ff"/>
|
||||
<style name="css:at-rules" foreground="#f92672"/>
|
||||
<style name="css:color" foreground="#be84ff"/>
|
||||
<style name="css:keyword" foreground="#66d9ef"/>
|
||||
<style name="current-line" background="#333333"/>
|
||||
<style name="cursor" foreground="#f8f8f0"/>
|
||||
<style name="def:base-n-integer" foreground="#be84ff"/>
|
||||
<style name="def:boolean" foreground="#be84ff"/>
|
||||
<style name="def:builtin" foreground="#be84ff"/>
|
||||
<style name="def:character" foreground="#be84ff"/>
|
||||
<style name="def:comment" foreground="#75715e"/>
|
||||
<style name="def:complex" foreground="#be84ff"/>
|
||||
<style name="def:decimal" foreground="#be84ff"/>
|
||||
<style name="def:doc-comment" foreground="#75715e"/>
|
||||
<style name="def:doc-comment-element" foreground="#75715e"/>
|
||||
<style name="def:error" foreground="#f8f8f0" background="#f92672"/>
|
||||
<style name="def:floating-point" foreground="#be84ff"/>
|
||||
<style name="def:function" foreground="#a6e22e"/>
|
||||
<style name="def:identifier" foreground="#ffffff"/>
|
||||
<style name="def:keyword" foreground="#f92672"/>
|
||||
<style name="def:note" foreground="#75715e"/>
|
||||
<style name="def:number" foreground="#be84ff"/>
|
||||
<style name="def:operator" foreground="#f92672"/>
|
||||
<style name="def:preprocessor" foreground="#66d9ef"/>
|
||||
<style name="def:reserved" foreground="#f92672"/>
|
||||
<style name="def:shebang" foreground="#75715e"/>
|
||||
<style name="def:special-char" foreground="#66d9ef"/>
|
||||
<style name="def:special-constant" foreground="#be84ff"/>
|
||||
<style name="def:statement" foreground="#f92672"/>
|
||||
<style name="def:string" foreground="#e6db74"/>
|
||||
<style name="def:type" foreground="#66d9ef" italic="true"/>
|
||||
<style name="diff:added-line" foreground="#a6e22e"/>
|
||||
<style name="diff:changed-line" foreground="#e6db74"/>
|
||||
<style name="diff:location" foreground="#75715e"/>
|
||||
<style name="diff:removed-line" foreground="#f92672"/>
|
||||
<style name="draw-spaces" foreground="#3b3a32"/>
|
||||
<style name="html:dtd" foreground="#e6db74"/>
|
||||
<style name="html:tag" foreground="#f92672"/>
|
||||
<style name="js:function" foreground="#66d9ef"/>
|
||||
<style name="line-numbers" foreground="#bebeba" background="#333333"/>
|
||||
<style name="perl:builtin" foreground="#a6e22e"/>
|
||||
<style name="perl:include-statement" foreground="#f92672"/>
|
||||
<style name="perl:special-variable" foreground="#be84ff"/>
|
||||
<style name="perl:variable" foreground="#ffffff"/>
|
||||
<style name="php:string" foreground="#e6db74"/>
|
||||
<style name="python:builtin-constant" foreground="#f92672"/>
|
||||
<style name="python:builtin-function" foreground="#a6e22e"/>
|
||||
<style name="python:module-handler" foreground="#f92672"/>
|
||||
<style name="python:special-variable" foreground="#f92672"/>
|
||||
<style name="ruby:attribute-definition" foreground="#f92672"/>
|
||||
<style name="ruby:builtin" foreground="#ffffff"/>
|
||||
<style name="ruby:class-variable" foreground="#ffffff"/>
|
||||
<style name="ruby:constant" foreground="#ffffff"/>
|
||||
<style name="ruby:global-variable" foreground="#a6e22e"/>
|
||||
<style name="ruby:instance-variable" foreground="#ffffff"/>
|
||||
<style name="ruby:module-handler" foreground="#f92672"/>
|
||||
<style name="ruby:predefined-variable" foreground="#be84ff"/>
|
||||
<style name="ruby:regex" foreground="#f6aa11"/>
|
||||
<style name="ruby:special-variable" foreground="#f92672"/>
|
||||
<style name="ruby:symbol" foreground="#be84ff"/>
|
||||
<style name="rubyonrails:attribute-definition" foreground="#f92672"/>
|
||||
<style name="rubyonrails:block-parameter" foreground="#fd971f" italic="true"/>
|
||||
<style name="rubyonrails:builtin" foreground="#ffffff"/>
|
||||
<style name="rubyonrails:class-inherit" foreground="#a6e22e" underline="true" italic="true"/>
|
||||
<style name="rubyonrails:class-name" foreground="#66d9ef"/>
|
||||
<style name="rubyonrails:class-variable" foreground="#ffffff"/>
|
||||
<style name="rubyonrails:complex-interpolation" foreground="#be84ff"/>
|
||||
<style name="rubyonrails:constant" foreground="#ffffff"/>
|
||||
<style name="rubyonrails:global-variable" foreground="#a6e22e"/>
|
||||
<style name="rubyonrails:instance-variable" foreground="#ffffff"/>
|
||||
<style name="rubyonrails:module-handler" foreground="#f92672"/>
|
||||
<style name="rubyonrails:module-name" foreground="#66d9ef"/>
|
||||
<style name="rubyonrails:predefined-variable" foreground="#be84ff"/>
|
||||
<style name="rubyonrails:rails" foreground="#ffffff"/>
|
||||
<style name="rubyonrails:regex" foreground="#f6aa11"/>
|
||||
<style name="rubyonrails:simple-interpolation" foreground="#be84ff"/>
|
||||
<style name="rubyonrails:special-variable" foreground="#f92672"/>
|
||||
<style name="rubyonrails:symbol" foreground="#be84ff"/>
|
||||
<style name="search-match" background="#333333" bold="true" underline="true"/>
|
||||
<style name="selection" foreground="#f8f8f2" background="#444444"/>
|
||||
<style name="text" foreground="#f8f8f2" background="#222222"/>
|
||||
<style name="xml:attribute-name" foreground="#a6e22e"/>
|
||||
<style name="xml:element-name" foreground="#f92672"/>
|
||||
<style name="xml:entity" foreground="#c8cecc"/>
|
||||
<style name="xml:namespace" foreground="#f92672"/>
|
||||
<style name="xml:tag" foreground="#f92672"/>
|
||||
|
||||
<!-- Palette -->
|
||||
<color name="white" value="#F8F8F2"/>
|
||||
<color name="blue" value="#179FFF"/>
|
||||
<color name="magenta" value="#DA70D6"/>
|
||||
<color name="violet" value="#AA7FF9"/>
|
||||
<color name="cyan" value="#66D9EF"/>
|
||||
<color name="grey" value="#817D69"/>
|
||||
<color name="green" value="#A0D82E"/>
|
||||
<color name="bordeaux" value="#B22757"/>
|
||||
<color name="red" value="#F92672"/>
|
||||
<color name="yellow" value="#E4D973"/>
|
||||
<color name="purple" value="#A47AEE"/>
|
||||
|
||||
<color name="onSuccess" value="#D1E8D5"/>
|
||||
<color name="success" value="#213528"/>
|
||||
<color name="onError" value="#ffb4a9"/>
|
||||
<color name="error" value="#680003"/>
|
||||
|
||||
<!-- Global Settings -->
|
||||
<style name="current-line" background="#3E3D32"/>
|
||||
<style name="current-line-number" background="#eeeeec"/>
|
||||
<style name="draw-spaces" foreground="#babdb6"/>
|
||||
<style name="background-pattern" background="#000000"/>
|
||||
|
||||
<!-- Bracket Matching -->
|
||||
<!-- <style name="bracket-match" foreground="white" background="grey"/> -->
|
||||
<!-- <style name="bracket-mismatch" foreground="white" background="red"/> -->
|
||||
|
||||
<!-- Right Margin -->
|
||||
<style name="right-margin" foreground="#000000" background="#000000"/>
|
||||
|
||||
<!-- Search Matching -->
|
||||
<style name="search-match" background="yellow"/>
|
||||
|
||||
<!-- Comments -->
|
||||
<style name="def:comment" foreground="grey" italic="true"/>
|
||||
<style name="def:shebang" foreground="grey" bold="true"/>
|
||||
<style name="def:doc-comment-element" italic="true"/>
|
||||
|
||||
<!-- Constants -->
|
||||
<style name="def:constant" foreground="white"/>
|
||||
<style name="def:special-char" foreground="yellow"/>
|
||||
|
||||
<!-- Identifiers -->
|
||||
<style name="def:identifier" foreground="green"/>
|
||||
|
||||
<!-- Statements -->
|
||||
<style name="def:statement" foreground="cyan" bold="true"/>
|
||||
|
||||
<!-- Types -->
|
||||
<style name="def:type" foreground="cyan" bold="true"/>
|
||||
|
||||
<!-- Others -->
|
||||
<style name="def:preprocessor" foreground="purple"/>
|
||||
<style name="def:error" background="red" bold="true"/>
|
||||
<style name="def:warning" background="yellow"/>
|
||||
<style name="def:note" foreground="bordeaux" bold="true"/>
|
||||
<style name="def:underlined" italic="true" underline="single"/>
|
||||
|
||||
<!-- Heading styles, uncomment to enable -->
|
||||
<!--
|
||||
<style name="def:heading0" scale="5.0"/>
|
||||
<style name="def:heading1" scale="2.5"/>
|
||||
<style name="def:heading2" scale="2.0"/>
|
||||
<style name="def:heading3" scale="1.7"/>
|
||||
<style name="def:heading4" scale="1.5"/>
|
||||
<style name="def:heading5" scale="1.3"/>
|
||||
<style name="def:heading6" scale="1.2"/>
|
||||
-->
|
||||
|
||||
<!-- Language specific styles -->
|
||||
<style name="diff:added-line" background="success" foreground="onSuccess"/>
|
||||
<style name="diff:removed-line" background="error" foreground="onError"/>
|
||||
<style name="diff:changed-line" use-style="def:preprocessor"/>
|
||||
<style name="diff:special-case" use-style="def:constant"/>
|
||||
<style name="diff:location" use-style="def:statement"/>
|
||||
<style name="diff:diff-file" use-style="def:type"/>
|
||||
|
||||
<style name="xml:tags" foreground="red"/>
|
||||
<style name="xml:attribute-name" foreground="green"/>
|
||||
<style name="xml:namespace" foreground="cyan" bold="true"/>
|
||||
|
||||
<style name="js:object" foreground="cyan" bold="true"/>
|
||||
<style name="js:constructors" foreground="cyan"/>
|
||||
|
||||
<style name="latex:display-math" foreground="purple"/>
|
||||
<style name="latex:command" foreground="green" bold="true"/>
|
||||
<style name="latex:include" use-style="def:preprocessor"/>
|
||||
|
||||
<style name="sh:variable" foreground="purple"/>
|
||||
|
||||
<!-- legacy styles for old lang files -->
|
||||
<style name="Others" foreground="cyan" bold="true"/>
|
||||
<style name="Others 2" foreground="cyan"/>
|
||||
<style name="Others 3" foreground="purple"/>
|
||||
|
||||
</style-scheme>
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
// This file is for the actual widget for each single notification
|
||||
|
||||
const { GLib, Gdk, Gtk } = imports.gi;
|
||||
import Widget from 'resource:///com/github/Aylur/ags/widget.js'
|
||||
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js'
|
||||
@@ -9,14 +8,16 @@ import { setupCursorHover } from "../.widgetutils/cursorhover.js";
|
||||
import { AnimatedCircProg } from "./cairo_circularprogress.js";
|
||||
|
||||
function guessMessageType(summary) {
|
||||
if (summary.includes('recording')) return 'screen_record';
|
||||
if (summary.includes('battery') || summary.includes('power')) return 'power';
|
||||
if (summary.includes('screenshot')) return 'screenshot_monitor';
|
||||
if (summary.includes('welcome')) return 'waving_hand';
|
||||
if (summary.includes('time')) return 'scheduleb';
|
||||
if (summary.includes('installed')) return 'download';
|
||||
if (summary.includes('update')) return 'update';
|
||||
if (summary.startsWith('file')) return 'folder_copy';
|
||||
const str = summary.toLowerCase();
|
||||
if (str.includes('reboot')) return 'restart_alt';
|
||||
if (str.includes('recording')) return 'screen_record';
|
||||
if (str.includes('battery') || summary.includes('power')) return 'power';
|
||||
if (str.includes('screenshot')) return 'screenshot_monitor';
|
||||
if (str.includes('welcome')) return 'waving_hand';
|
||||
if (str.includes('time')) return 'scheduleb';
|
||||
if (str.includes('installed')) return 'download';
|
||||
if (str.includes('update')) return 'update';
|
||||
if (str.startsWith('file')) return 'folder_copy';
|
||||
return 'chat';
|
||||
}
|
||||
|
||||
|
||||
@@ -92,3 +92,78 @@ export const TabContainer = ({ icons, names, children, className = '', setup = (
|
||||
|
||||
return mainBox;
|
||||
}
|
||||
|
||||
|
||||
export const IconTabContainer = ({
|
||||
iconWidgets, names, children, className = '',
|
||||
setup = () => { }, onChange = () => { },
|
||||
tabsHpack = 'center', tabSwitcherClassName = '',
|
||||
...rest
|
||||
}) => {
|
||||
const shownIndex = Variable(0);
|
||||
let previousShownIndex = 0;
|
||||
const count = Math.min(iconWidgets.length, names.length, children.length);
|
||||
const tabs = Box({
|
||||
homogeneous: true,
|
||||
hpack: tabsHpack,
|
||||
className: `spacing-h-5 ${tabSwitcherClassName}`,
|
||||
children: iconWidgets.map((icon, i) => Button({
|
||||
className: 'tab-icon',
|
||||
tooltipText: names[i],
|
||||
child: icon,
|
||||
setup: setupCursorHover,
|
||||
onClicked: () => shownIndex.value = i,
|
||||
})),
|
||||
setup: (self) => self.hook(shownIndex, (self) => {
|
||||
self.children[previousShownIndex].toggleClassName('tab-icon-active', false);
|
||||
self.children[shownIndex.value].toggleClassName('tab-icon-active', true);
|
||||
previousShownIndex = shownIndex.value;
|
||||
}),
|
||||
});
|
||||
const tabSection = Box({
|
||||
homogeneous: true,
|
||||
children: [EventBox({
|
||||
onScrollUp: () => mainBox.prevTab(),
|
||||
onScrollDown: () => mainBox.nextTab(),
|
||||
child: Box({
|
||||
vertical: true,
|
||||
hexpand: true,
|
||||
children: [
|
||||
tabs,
|
||||
]
|
||||
})
|
||||
})]
|
||||
});
|
||||
const contentStack = Stack({
|
||||
transition: 'slide_left_right',
|
||||
children: children.reduce((acc, currentValue, index) => {
|
||||
acc[index] = currentValue;
|
||||
return acc;
|
||||
}, {}),
|
||||
setup: (self) => self.hook(shownIndex, (self) => {
|
||||
self.shown = `${shownIndex.value}`;
|
||||
}),
|
||||
});
|
||||
const mainBox = Box({
|
||||
attribute: {
|
||||
children: children,
|
||||
shown: shownIndex,
|
||||
names: names,
|
||||
},
|
||||
vertical: true,
|
||||
className: `spacing-v-5 ${className}`,
|
||||
setup: (self) => {
|
||||
self.pack_start(tabSection, false, false, 0);
|
||||
self.pack_end(contentStack, true, true, 0);
|
||||
setup(self);
|
||||
self.hook(shownIndex, (self) => onChange(self, shownIndex.value));
|
||||
},
|
||||
...rest,
|
||||
});
|
||||
mainBox.nextTab = () => shownIndex.value = Math.min(shownIndex.value + 1, count - 1);
|
||||
mainBox.prevTab = () => shownIndex.value = Math.max(shownIndex.value - 1, 0);
|
||||
mainBox.cycleTab = () => shownIndex.value = (shownIndex.value + 1) % count;
|
||||
mainBox.shown = shownIndex;
|
||||
|
||||
return mainBox;
|
||||
}
|
||||
|
||||
@@ -59,31 +59,20 @@ export default (text) => {
|
||||
return output.join('\n');
|
||||
}
|
||||
|
||||
export const markdownTest = `# Heading 1
|
||||
## Heading 2
|
||||
### Heading 3
|
||||
#### Heading 4
|
||||
##### Heading 5
|
||||
1. yes
|
||||
2. no
|
||||
127. well
|
||||
- Bulletpoint starting with minus
|
||||
* Bulletpoint starting with asterisk
|
||||
---
|
||||
- __Underline__ __ No underline __
|
||||
- **Bold** ** No bold **
|
||||
- _Italics1_ *Italics2* _ No Italics _
|
||||
- A color: #D6BAFF
|
||||
- nvidia green: #7ABB08
|
||||
- sub-item
|
||||
\`\`\`javascript
|
||||
// A code block!
|
||||
myArray = [23, 123, 43, 54, '6969'];
|
||||
console.log('uwu');
|
||||
export const markdownTest = `## Inline formatting
|
||||
- **Bold** *Italics* __Underline__
|
||||
- \`Monospace text\` 🤓
|
||||
- Colors
|
||||
- Nvidia green #7ABB08
|
||||
- Soundcloud orange #FF5500
|
||||
## Code block
|
||||
\`\`\`cpp
|
||||
#include <bits/stdc++.h>
|
||||
const std::string GREETING="UwU";
|
||||
int main() { std::cout << GREETING; }
|
||||
\`\`\`
|
||||
- Random instruction thing
|
||||
- To update arch lincox, run \`sudo pacman -Syu\`
|
||||
\`\`\`tex
|
||||
\\frac{d}{dx} \\left( \\frac{x-438}{x^2+23x-7} \\right) = \\frac{-x^2 + 869}{(x^2+23x-7)^2} \\\\ \\frac{d}{dx} \\left( \\frac{x-438}{x^2+23x-7} \\right) = \\frac{-x^2 + 869}{(x^2+23x-7)^2}
|
||||
## LaTeX
|
||||
\`\`\`latex
|
||||
\\frac{d}{dx} \\left( \\frac{x-438}{x^2+23x-7} \\right) = \\frac{-x^2 + 869}{(x^2+23x-7)^2} \\\\ → \\\\ cos(2x) = 2cos^2(x) - 1 = 1 - 2sin^2(x) = cos^2(x) - sin^2(x)
|
||||
\`\`\`
|
||||
`;
|
||||
`;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
const { GLib } = imports.gi;
|
||||
import Variable from 'resource:///com/github/Aylur/ags/variable.js';
|
||||
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
|
||||
const { execAsync, exec } = Utils;
|
||||
|
||||
@@ -9,7 +10,7 @@ export const hasFlatpak = !!exec(`bash -c 'command -v flatpak'`);
|
||||
|
||||
const LIGHTDARK_FILE_LOCATION = `${GLib.get_user_cache_dir()}/ags/user/colormode.txt`;
|
||||
const colorMode = Utils.exec('bash -c "sed -n \'1p\' $HOME/.cache/ags/user/colormode.txt"');
|
||||
export let darkMode = !(Utils.readFile(LIGHTDARK_FILE_LOCATION).split('\n')[0].trim() == 'light');
|
||||
export let darkMode = Variable(!(Utils.readFile(LIGHTDARK_FILE_LOCATION).split('\n')[0].trim() == 'light'));
|
||||
export const hasPlasmaIntegration = !!Utils.exec('bash -c "command -v plasma-browser-integration-host"');
|
||||
|
||||
export const getDistroIcon = () => {
|
||||
|
||||
@@ -187,7 +187,7 @@ const CoverArt = ({ player, ...rest }) => {
|
||||
}
|
||||
|
||||
const coverPath = player.coverPath;
|
||||
const stylePath = `${player.coverPath}${darkMode ? '' : '-l'}${COVER_COLORSCHEME_SUFFIX}`;
|
||||
const stylePath = `${player.coverPath}${darkMode.value ? '' : '-l'}${COVER_COLORSCHEME_SUFFIX}`;
|
||||
if (player.coverPath == lastCoverPath) { // Since 'notify::cover-path' emits on cover download complete
|
||||
Utils.timeout(200, () => {
|
||||
// self.attribute.showImage(self, coverPath);
|
||||
@@ -206,9 +206,9 @@ const CoverArt = ({ player, ...rest }) => {
|
||||
|
||||
// Generate colors
|
||||
execAsync(['bash', '-c',
|
||||
`${App.configDir}/scripts/color_generation/generate_colors_material.py --path '${coverPath}' --mode ${darkMode ? 'dark' : 'light'} > ${App.configDir}/scss/_musicmaterial.scss`])
|
||||
`${App.configDir}/scripts/color_generation/generate_colors_material.py --path '${coverPath}' --mode ${darkMode.value ? 'dark' : 'light'} > ${App.configDir}/scss/_musicmaterial.scss`])
|
||||
.then(() => {
|
||||
exec(`wal -i "${player.coverPath}" -n -t -s -e -q ${darkMode ? '' : '-l'}`)
|
||||
exec(`wal -i "${player.coverPath}" -n -t -s -e -q ${darkMode.value ? '' : '-l'}`)
|
||||
exec(`cp ${GLib.get_user_cache_dir()}/wal/colors.scss ${App.configDir}/scss/_musicwal.scss`);
|
||||
exec(`sass ${App.configDir}/scss/_music.scss ${stylePath}`);
|
||||
Utils.timeout(200, () => {
|
||||
|
||||
@@ -3,6 +3,7 @@ import App from 'resource:///com/github/Aylur/ags/app.js';
|
||||
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
|
||||
const { execAsync, exec } = Utils;
|
||||
import Todo from "../../services/todo.js";
|
||||
import { darkMode } from '../.miscutils/system.js';
|
||||
|
||||
export function hasUnterminatedBackslash(inputString) {
|
||||
// Use a regular expression to match a trailing odd number of backslashes
|
||||
@@ -11,7 +12,7 @@ export function hasUnterminatedBackslash(inputString) {
|
||||
}
|
||||
|
||||
export function launchCustomCommand(command) {
|
||||
const args = command.split(' ');
|
||||
const args = command.toLowerCase().split(' ');
|
||||
if (args[0] == '>raw') { // Mouse raw input
|
||||
Utils.execAsync('hyprctl -j getoption input:accel_profile')
|
||||
.then((output) => {
|
||||
@@ -31,17 +32,21 @@ export function launchCustomCommand(command) {
|
||||
execAsync([`bash`, `-c`, `${App.configDir}/scripts/color_generation/switchcolor.sh --pick`, `&`]).catch(print);
|
||||
}
|
||||
else if (args[0] == '>light') { // Light mode
|
||||
darkMode.value = false;
|
||||
execAsync([`bash`, `-c`, `mkdir -p ${GLib.get_user_cache_dir()}/ags/user && sed -i "1s/.*/light/" ${GLib.get_user_cache_dir()}/ags/user/colormode.txt`])
|
||||
.then(execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/switchcolor.sh`]))
|
||||
.catch(print);
|
||||
}
|
||||
else if (args[0] == '>dark') { // Dark mode
|
||||
darkMode.value = true;
|
||||
execAsync([`bash`, `-c`, `mkdir -p ${GLib.get_user_cache_dir()}/ags/user && sed -i "1s/.*/dark/" ${GLib.get_user_cache_dir()}/ags/user/colormode.txt`])
|
||||
.then(execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/switchcolor.sh`]))
|
||||
.catch(print);
|
||||
}
|
||||
else if (args[0] == '>badapple') { // Black and white
|
||||
execAsync([`bash`, `-c`, `${App.configDir}/scripts/color_generation/applycolor.sh --bad-apple`]).catch(print)
|
||||
execAsync([`bash`, `-c`, `mkdir -p ${GLib.get_user_cache_dir()}/ags/user && sed -i "3s/.*/monochrome/" ${GLib.get_user_cache_dir()}/ags/user/colormode.txt`])
|
||||
.then(execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/switchcolor.sh`]))
|
||||
.catch(print);
|
||||
}
|
||||
else if (args[0] == '>material') { // Use material colors
|
||||
execAsync([`bash`, `-c`, `mkdir -p ${GLib.get_user_cache_dir()}/ags/user && echo "material" > ${GLib.get_user_cache_dir()}/ags/user/colorbackend.txt`]).catch(print)
|
||||
|
||||
@@ -10,8 +10,8 @@ import md2pango from '../../.miscutils/md2pango.js';
|
||||
import { darkMode } from "../../.miscutils/system.js";
|
||||
|
||||
const LATEX_DIR = `${GLib.get_user_cache_dir()}/ags/media/latex`;
|
||||
const CUSTOM_SOURCEVIEW_SCHEME_PATH = `${App.configDir}/assets/themes/sourceviewtheme${darkMode ? '' : '-light'}.xml`;
|
||||
const CUSTOM_SCHEME_ID = `custom${darkMode ? '' : '-light'}`;
|
||||
const CUSTOM_SOURCEVIEW_SCHEME_PATH = `${App.configDir}/assets/themes/sourceviewtheme${darkMode.value ? '' : '-light'}.xml`;
|
||||
const CUSTOM_SCHEME_ID = `custom${darkMode.value ? '' : '-light'}`;
|
||||
const USERNAME = GLib.get_user_name();
|
||||
|
||||
/////////////////////// Custom source view colorscheme /////////////////////////
|
||||
@@ -82,7 +82,7 @@ const Latex = (content = '') => {
|
||||
const latexViewArea = Box({
|
||||
// vscroll: 'never',
|
||||
// hscroll: 'automatic',
|
||||
homogeneous: true,
|
||||
// homogeneous: true,
|
||||
attribute: {
|
||||
render: async (self, text) => {
|
||||
if (text.length == 0) return;
|
||||
@@ -107,7 +107,7 @@ const Latex = (content = '') => {
|
||||
text=$(cat ${filePath} | sed 's/$/ \\\\\\\\/g' | sed 's/&=/=/g')
|
||||
LaTeX -headless -input="$text" -output=${outFilePath} -textsize=${fontSize * 1.1} -padding=0 -maxwidth=${latexViewArea.get_allocated_width() * 0.85}
|
||||
sed -i 's/fill="rgb(0%, 0%, 0%)"/style="fill:#000000"/g' ${outFilePath}
|
||||
sed -i 's/stroke="rgb(0%, 0%, 0%)"/stroke="${darkMode ? '#ffffff' : '#000000'}"/g' ${outFilePath}
|
||||
sed -i 's/stroke="rgb(0%, 0%, 0%)"/stroke="${darkMode.value ? '#ffffff' : '#000000'}"/g' ${outFilePath}
|
||||
`;
|
||||
Utils.writeFile(renderScript, scriptFilePath).catch(print);
|
||||
Utils.exec(`chmod a+x ${scriptFilePath}`)
|
||||
|
||||
@@ -39,7 +39,6 @@ const CommandButton = (command) => Button({
|
||||
|
||||
export const booruTabIcon = Box({
|
||||
hpack: 'center',
|
||||
className: 'sidebar-chat-apiswitcher-icon',
|
||||
homogeneous: true,
|
||||
children: [
|
||||
MaterialIcon('gallery_thumbnail', 'norm'),
|
||||
@@ -349,7 +348,7 @@ export const booruView = Scrollable({
|
||||
// Always scroll to bottom with new content
|
||||
const adjustment = scrolledWindow.get_vadjustment();
|
||||
adjustment.connect("changed", () => {
|
||||
if(!chatEntry.hasFocus) return;
|
||||
if (!chatEntry.hasFocus) return;
|
||||
adjustment.set_value(adjustment.get_upper() - adjustment.get_page_size());
|
||||
})
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ import { chatEntry } from '../apiwidgets.js';
|
||||
|
||||
export const chatGPTTabIcon = Icon({
|
||||
hpack: 'center',
|
||||
className: 'sidebar-chat-apiswitcher-icon',
|
||||
icon: `openai-symbolic`,
|
||||
});
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@ const MODEL_NAME = `Gemini`;
|
||||
|
||||
export const geminiTabIcon = Icon({
|
||||
hpack: 'center',
|
||||
className: 'sidebar-chat-apiswitcher-icon',
|
||||
icon: `google-gemini-symbolic`,
|
||||
})
|
||||
|
||||
@@ -104,6 +103,15 @@ export const GeminiSettings = () => MarginRevealer({
|
||||
GeminiService.assistantPrompt = newValue;
|
||||
},
|
||||
}),
|
||||
ConfigToggle({
|
||||
icon: 'shield',
|
||||
name: 'Safety',
|
||||
desc: 'When turned off, tells the API (not the model) \nto not block harmful/explicit content',
|
||||
initValue: GeminiService.safe,
|
||||
onChange: (self, newValue) => {
|
||||
GeminiService.safe = newValue;
|
||||
},
|
||||
}),
|
||||
ConfigToggle({
|
||||
icon: 'history',
|
||||
name: 'History',
|
||||
|
||||
@@ -39,8 +39,6 @@ const CommandButton = (command) => Button({
|
||||
|
||||
export const waifuTabIcon = Box({
|
||||
hpack: 'center',
|
||||
className: 'sidebar-chat-apiswitcher-icon',
|
||||
homogeneous: true,
|
||||
children: [
|
||||
MaterialIcon('photo', 'norm'),
|
||||
]
|
||||
@@ -251,7 +249,7 @@ const WaifuImage = (taglist) => {
|
||||
else Utils.execAsync(['bash', '-c', `wget -O '${thisBlock.attribute.imagePath}' '${url}'`])
|
||||
.then(showImage)
|
||||
.catch(print);
|
||||
thisBlock.css = `background-color: mix(${darkMode ? 'black' : 'white'}, ${dominant_color}, 0.97);`;
|
||||
thisBlock.css = `background-color: mix(${darkMode.value ? 'black' : 'white'}, ${dominant_color}, 0.97);`;
|
||||
},
|
||||
},
|
||||
children: [
|
||||
|
||||
@@ -16,6 +16,7 @@ import { checkKeybind } from '../.widgetutils/keybind.js';
|
||||
const TextView = Widget.subclass(Gtk.TextView, "AgsTextView");
|
||||
|
||||
import { widgetContent } from './sideleft.js';
|
||||
import { IconTabContainer } from '../.commonwidgets/tabcontainer.js';
|
||||
|
||||
const EXPAND_INPUT_THRESHOLD = 30;
|
||||
const APIS = [
|
||||
@@ -53,7 +54,6 @@ const APIS = [
|
||||
},
|
||||
];
|
||||
let currentApiId = 0;
|
||||
APIS[currentApiId].tabIcon.toggleClassName('sidebar-chat-apiswitcher-icon-enabled', true);
|
||||
|
||||
function apiSendMessage(textView) {
|
||||
// Get text
|
||||
@@ -75,6 +75,11 @@ export const chatEntry = TextView({
|
||||
acceptsTab: false,
|
||||
className: 'sidebar-chat-entry txt txt-smallie',
|
||||
setup: (self) => self
|
||||
.hook(App, (self, currentName, visible) => {
|
||||
if (visible && currentName === 'sideleft') {
|
||||
self.grab_focus();
|
||||
}
|
||||
})
|
||||
.hook(GPTService, (self) => {
|
||||
if (APIS[currentApiId].name != 'Assistant (GPTs)') return;
|
||||
self.placeholderText = (GPTService.key.length > 0 ? 'Message the model...' : 'Enter API Key...');
|
||||
@@ -170,16 +175,6 @@ const textboxArea = Box({ // Entry area
|
||||
]
|
||||
});
|
||||
|
||||
const apiContentStack = Stack({
|
||||
vexpand: true,
|
||||
transition: 'slide_left_right',
|
||||
transitionDuration: userOptions.animations.durationLarge,
|
||||
children: APIS.reduce((acc, api) => {
|
||||
acc[api.name] = api.contentWidget;
|
||||
return acc;
|
||||
}, {}),
|
||||
})
|
||||
|
||||
const apiCommandStack = Stack({
|
||||
transition: 'slide_up_down',
|
||||
transitionDuration: userOptions.animations.durationLarge,
|
||||
@@ -189,41 +184,23 @@ const apiCommandStack = Stack({
|
||||
}, {}),
|
||||
})
|
||||
|
||||
function switchToTab(id) {
|
||||
APIS[currentApiId].tabIcon.toggleClassName('sidebar-chat-apiswitcher-icon-enabled', false);
|
||||
APIS[id].tabIcon.toggleClassName('sidebar-chat-apiswitcher-icon-enabled', true);
|
||||
apiContentStack.shown = APIS[id].name;
|
||||
apiCommandStack.shown = APIS[id].name;
|
||||
chatPlaceholder.label = APIS[id].placeholderText;
|
||||
currentApiId = id;
|
||||
}
|
||||
|
||||
const apiSwitcher = EventBox({
|
||||
onScrollUp: () => apiWidgets.attribute.prevTab(),
|
||||
onScrollDown: () => apiWidgets.attribute.nextTab(),
|
||||
child: CenterBox({
|
||||
centerWidget: Box({
|
||||
className: 'sidebar-chat-apiswitcher spacing-h-5',
|
||||
hpack: 'center',
|
||||
children: APIS.map((api, id) => Button({
|
||||
child: api.tabIcon,
|
||||
tooltipText: api.name,
|
||||
setup: setupCursorHover,
|
||||
onClicked: () => {
|
||||
switchToTab(id);
|
||||
}
|
||||
})),
|
||||
}),
|
||||
endWidget: Button({
|
||||
hpack: 'end',
|
||||
className: 'txt-subtext txt-norm icon-material',
|
||||
label: 'lightbulb',
|
||||
tooltipText: 'Use PageUp/PageDown to switch between API pages',
|
||||
setup: setupCursorHoverInfo,
|
||||
}),
|
||||
})
|
||||
export const apiContentStack = IconTabContainer({
|
||||
tabSwitcherClassName: 'sidebar-chat-apiswitcher',
|
||||
className: 'margin-top-5',
|
||||
iconWidgets: APIS.map((api) => api.tabIcon),
|
||||
names: APIS.map((api) => api.name),
|
||||
children: APIS.map((api) => api.contentWidget),
|
||||
onChange: (self, id) => {
|
||||
apiCommandStack.shown = APIS[id].name;
|
||||
chatPlaceholder.label = APIS[id].placeholderText;
|
||||
currentApiId = id;
|
||||
}
|
||||
});
|
||||
|
||||
function switchToTab(id) {
|
||||
apiContentStack.shown.value = id;
|
||||
}
|
||||
|
||||
const apiWidgets = Widget.Box({
|
||||
attribute: {
|
||||
'nextTab': () => switchToTab(Math.min(currentApiId + 1, APIS.length - 1)),
|
||||
@@ -233,7 +210,6 @@ const apiWidgets = Widget.Box({
|
||||
className: 'spacing-v-10',
|
||||
homogeneous: false,
|
||||
children: [
|
||||
apiSwitcher,
|
||||
apiContentStack,
|
||||
apiCommandStack,
|
||||
textboxArea,
|
||||
|
||||
@@ -41,8 +41,12 @@ if [[ "$1" = "#"* ]]; then # this is a color
|
||||
color_generation/applycolor.sh
|
||||
fi
|
||||
elif [ "$backend" = "material" ]; then
|
||||
smartflag=''
|
||||
if [ "$3" = "--smart" ]; then
|
||||
smartflag='--smart True'
|
||||
fi
|
||||
color_generation/generate_colors_material.py --path "$1" \
|
||||
--mode "$lightdark" --scheme "$materialscheme" --transparency "$transparency" --cache '.cache/ags/user/color.txt' \
|
||||
--mode "$lightdark" --scheme "$materialscheme" --transparency "$transparency" --cache '.cache/ags/user/color.txt' $smartflag \
|
||||
> "$HOME"/.cache/ags/user/generated/material_colors.scss
|
||||
if [ "$2" = "--apply" ]; then
|
||||
cp "$HOME"/.cache/ags/user/generated/material_colors.scss "$HOME/.config/ags/scss/_material.scss"
|
||||
|
||||
@@ -14,31 +14,12 @@ parser.add_argument('--path', type=str, default=None, help='generate colorscheme
|
||||
parser.add_argument('--color', type=str, default=None, help='generate colorscheme from color')
|
||||
parser.add_argument('--mode', type=str, choices=['dark', 'light'], default='dark', help='dark or light mode')
|
||||
parser.add_argument('--scheme', type=str, default=None, help='material scheme to use')
|
||||
parser.add_argument('--smart', type=str, default=False, help='decide scheme type based on image color')
|
||||
parser.add_argument('--transparency', type=str, choices=['opaque', 'transparent'], default='opaque', help='enable transparency')
|
||||
parser.add_argument('--cache', type=str, default=None, help='file path (relative to home) to store the generated color')
|
||||
parser.add_argument('--debug', action='store_true', default=False, help='debug mode')
|
||||
args = parser.parse_args()
|
||||
|
||||
# Default scheme -> Tonal Spot (Android Default)
|
||||
from materialyoucolor.scheme.scheme_vibrant import SchemeVibrant as Scheme
|
||||
if args.scheme is not None:
|
||||
if args.scheme == 'fruitsalad':
|
||||
from materialyoucolor.scheme.scheme_fruit_salad import SchemeFruitSalad as Scheme
|
||||
elif args.scheme == 'expressive':
|
||||
from materialyoucolor.scheme.scheme_expressive import SchemeExpressive as Scheme
|
||||
elif args.scheme == 'monochrome':
|
||||
from materialyoucolor.scheme.scheme_monochrome import SchemeMonochrome as Scheme
|
||||
elif args.scheme == 'rainbow':
|
||||
from materialyoucolor.scheme.scheme_rainbow import SchemeRainbow as Scheme
|
||||
elif args.scheme == 'tonalspot':
|
||||
from materialyoucolor.scheme.scheme_tonal_spot import SchemeTonalSpot as Scheme
|
||||
elif args.scheme == 'neutral':
|
||||
from materialyoucolor.scheme.scheme_neutral import SchemeNeutral as Scheme
|
||||
elif args.scheme == 'fidelity':
|
||||
from materialyoucolor.scheme.scheme_fidelity import SchemeFidelity as Scheme
|
||||
elif args.scheme == 'content':
|
||||
from materialyoucolor.scheme.scheme_content import SchemeContent as Scheme
|
||||
|
||||
def hex_to_argb(hex_color):
|
||||
color = hex_color.lstrip('#')
|
||||
if len(color) != 6:
|
||||
@@ -70,16 +51,44 @@ if args.path is not None:
|
||||
basewidth = 64
|
||||
wpercent = (basewidth/float(img.size[0]))
|
||||
hsize = int((float(img.size[1])*float(wpercent)))
|
||||
img = img.resize((basewidth,hsize),Image.Resampling.LANCZOS)
|
||||
img = img.resize((basewidth,hsize),Image.Resampling.BICUBIC)
|
||||
argb = sourceColorFromImage(img)
|
||||
if args.cache is not None:
|
||||
export_color_file=os.environ['HOME'] + "/" + args.cache
|
||||
with open(export_color_file, 'w') as file:
|
||||
file.write(argb_to_hex(argb))
|
||||
hct = Hct.from_int(argb)
|
||||
if(args.smart):
|
||||
if(hct.chroma < 20):
|
||||
args.scheme = 'neutral'
|
||||
if(hct.tone > 60):
|
||||
darkmode = False
|
||||
elif args.color is not None:
|
||||
argb = hex_to_argb(args.color)
|
||||
hct = Hct.from_int(argb)
|
||||
|
||||
scheme = Scheme(Hct.from_int(argb), darkmode, 0.0)
|
||||
# Default scheme -> Tonal Spot (Android Default)
|
||||
from materialyoucolor.scheme.scheme_vibrant import SchemeVibrant as Scheme
|
||||
if args.scheme is not None:
|
||||
if args.scheme == 'fruitsalad':
|
||||
from materialyoucolor.scheme.scheme_fruit_salad import SchemeFruitSalad as Scheme
|
||||
elif args.scheme == 'expressive':
|
||||
from materialyoucolor.scheme.scheme_expressive import SchemeExpressive as Scheme
|
||||
elif args.scheme == 'monochrome':
|
||||
from materialyoucolor.scheme.scheme_monochrome import SchemeMonochrome as Scheme
|
||||
elif args.scheme == 'rainbow':
|
||||
from materialyoucolor.scheme.scheme_rainbow import SchemeRainbow as Scheme
|
||||
elif args.scheme == 'tonalspot':
|
||||
from materialyoucolor.scheme.scheme_tonal_spot import SchemeTonalSpot as Scheme
|
||||
elif args.scheme == 'neutral':
|
||||
from materialyoucolor.scheme.scheme_neutral import SchemeNeutral as Scheme
|
||||
elif args.scheme == 'fidelity':
|
||||
from materialyoucolor.scheme.scheme_fidelity import SchemeFidelity as Scheme
|
||||
elif args.scheme == 'content':
|
||||
from materialyoucolor.scheme.scheme_content import SchemeContent as Scheme
|
||||
|
||||
# Generate
|
||||
scheme = Scheme(hct, darkmode, 0.0)
|
||||
|
||||
for color in vars(MaterialDynamicColors).keys():
|
||||
color_name = getattr(MaterialDynamicColors, color)
|
||||
@@ -90,6 +99,13 @@ for color in vars(MaterialDynamicColors).keys():
|
||||
print('$' + color + ': ' + hex_color + ';')
|
||||
|
||||
if args.debug == True:
|
||||
print('---------------------')
|
||||
print('Hue', hct.hue)
|
||||
print('Chroma', hct.chroma)
|
||||
print('Tone', hct.tone)
|
||||
print('Dark mode?', darkmode)
|
||||
print('Scheme', args.scheme)
|
||||
print('---------------------')
|
||||
for color in vars(MaterialDynamicColors).keys():
|
||||
color_name = getattr(MaterialDynamicColors, color)
|
||||
if hasattr(color_name, "get_hct"):
|
||||
|
||||
@@ -26,4 +26,4 @@ else
|
||||
fi
|
||||
|
||||
# Generate colors for ags n stuff
|
||||
"$HOME"/.config/ags/scripts/color_generation/colorgen.sh "${imgpath}" --apply
|
||||
"$HOME"/.config/ags/scripts/color_generation/colorgen.sh "${imgpath}" --apply --smart
|
||||
|
||||
@@ -6,6 +6,9 @@ getdate() {
|
||||
getaudiooutput() {
|
||||
pactl list sources | grep 'Name' | grep 'monitor' | cut -d ' ' -f2
|
||||
}
|
||||
getactivemonitor() {
|
||||
hyprctl monitors -j | gojq -r '.[] | select(.focused == true) | .name'
|
||||
}
|
||||
|
||||
cd ~/Videos || exit
|
||||
if pgrep wf-recorder > /dev/null; then
|
||||
@@ -16,11 +19,10 @@ else
|
||||
if [[ "$1" == "--sound" ]]; then
|
||||
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t --geometry "$(slurp)" --audio="$(getaudiooutput)" & disown
|
||||
elif [[ "$1" == "--fullscreen-sound" ]]; then
|
||||
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t --audio="$(getaudiooutput)" & disown
|
||||
wf-recorder -o $(getactivemonitor) --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t --audio="$(getaudiooutput)" & disown
|
||||
elif [[ "$1" == "--fullscreen" ]]; then
|
||||
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t & disown
|
||||
else
|
||||
wf-recorder -o $(getactivemonitor) --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t & disown
|
||||
else
|
||||
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t --geometry "$(slurp)" & disown
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -32,6 +32,8 @@ input-field {
|
||||
label { # Clock
|
||||
monitor =
|
||||
text = $TIME
|
||||
shadow_passes = 1
|
||||
shadow_boost = 0.5
|
||||
color = $text_color
|
||||
font_size = 65
|
||||
font_family = $font_family_clock
|
||||
@@ -43,6 +45,8 @@ label { # Clock
|
||||
label { # Greeting
|
||||
monitor =
|
||||
text = hi $USER !!!
|
||||
shadow_passes = 1
|
||||
shadow_boost = 0.5
|
||||
color = $text_color
|
||||
font_size = 20
|
||||
font_family = $font_family
|
||||
@@ -54,6 +58,8 @@ label { # Greeting
|
||||
label { # lock icon
|
||||
monitor =
|
||||
text = lock
|
||||
shadow_passes = 1
|
||||
shadow_boost = 0.5
|
||||
color = $text_color
|
||||
font_size = 21
|
||||
font_family = $font_material_symbols
|
||||
@@ -65,6 +71,8 @@ label { # lock icon
|
||||
label { # "locked" text
|
||||
monitor =
|
||||
text = locked
|
||||
shadow_passes = 1
|
||||
shadow_boost = 0.5
|
||||
color = $text_color
|
||||
font_size = 14
|
||||
font_family = $font_family
|
||||
@@ -77,6 +85,8 @@ label { # "locked" text
|
||||
label { # Status
|
||||
monitor =
|
||||
text = cmd[update:5000] ~/.config/hypr/hyprlock/status.sh
|
||||
shadow_passes = 1
|
||||
shadow_boost = 0.5
|
||||
color = $text_color
|
||||
font_size = 14
|
||||
font_family = $font_family
|
||||
|
||||
@@ -110,17 +110,17 @@ $bar_ws_width_focus_active: 2.045rem;
|
||||
// Focus is the bar mode name, not the workspace state!
|
||||
|
||||
.bar-ws-focus {
|
||||
background-color: $layer2;
|
||||
background-color: $surfaceVariant;
|
||||
min-width: $bar_ws_width_focus;
|
||||
}
|
||||
|
||||
.bar-ws-focus-active {
|
||||
min-width: $bar_ws_width_focus_active;
|
||||
background-color: $layer2;
|
||||
background-color: $onLayer0;
|
||||
}
|
||||
|
||||
.bar-ws-focus-occupied {
|
||||
background-color: $layer2;
|
||||
background-color: $secondaryContainer;
|
||||
}
|
||||
|
||||
.bar-clock-box {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
$transparency: 0.5;
|
||||
$transparentize_amount: 0.3;
|
||||
$transparentize_surface_amount: 0.7;
|
||||
$rootTransparency: 0.31; // Transparency = 1 - opacity
|
||||
$transparency: 0.8;
|
||||
|
||||
// Extended material
|
||||
$success: #4f6354;
|
||||
@@ -17,10 +16,8 @@ $onSuccessContainer: #0c1f13;
|
||||
}
|
||||
|
||||
// Transparent versions
|
||||
$t_surface: transparentize($surface, $transparentize_surface_amount);
|
||||
|
||||
@if $transparent == True {
|
||||
$background: transparentize($background, $transparency);
|
||||
$background: transparentize($background, $rootTransparency);
|
||||
$surface: transparentize($surface, $transparency);
|
||||
$surfaceDim: transparentize($surfaceDim, $transparency);
|
||||
$surfaceBright: transparentize($surfaceBright, $transparency);
|
||||
|
||||
@@ -2,11 +2,6 @@
|
||||
// border: 1px solid $onSurfaceVariant; // Debugging
|
||||
// }
|
||||
|
||||
// *:focus {
|
||||
// outline: 1px solid mix($onSurface, $surface, 40%);
|
||||
// -gtk-outline-radius: $rounding_small;
|
||||
// }
|
||||
|
||||
* {
|
||||
selection {
|
||||
background-color: $secondary;
|
||||
@@ -27,11 +22,11 @@
|
||||
}
|
||||
|
||||
menu {
|
||||
@include elevation-border-softer;
|
||||
@include small-rounding;
|
||||
border: 1px solid mix($surfaceContainer, $onBackground, 80%); // I hate this
|
||||
padding: 0.681rem;
|
||||
background: $layer2;
|
||||
color: $onLayer2;
|
||||
border-radius: 1.159rem;
|
||||
background: opacify($surfaceContainer, 1);
|
||||
color: $onSurface;
|
||||
-gtk-outline-radius: 1.159rem;
|
||||
|
||||
animation-name: appear;
|
||||
@@ -89,9 +84,8 @@ tooltip {
|
||||
animation-timing-function: ease-out;
|
||||
animation-iteration-count: 1;
|
||||
@include normal-rounding;
|
||||
background-color: $surfaceVariant;
|
||||
color: $onSurfaceVariant;
|
||||
border: 1px solid $onSurfaceVariant;
|
||||
background-color: opacify($color: $inverseSurface, $amount: 1);
|
||||
color: $inverseOnSurface;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////
|
||||
@@ -107,8 +101,8 @@ tooltip {
|
||||
popover {
|
||||
@include elevation-border-softer;
|
||||
padding: 0.681rem;
|
||||
background: $surfaceVariant;
|
||||
color: $onSurfaceVariant;
|
||||
background: $surfaceContainerHigh;
|
||||
color: $onSurface;
|
||||
border-radius: 1.159rem;
|
||||
-gtk-outline-radius: 1.159rem;
|
||||
|
||||
@@ -123,17 +117,11 @@ popover {
|
||||
|
||||
.configtoggle-box {
|
||||
padding: 0.205rem 0.341rem;
|
||||
border: 0.136rem solid transparent;
|
||||
}
|
||||
|
||||
.configtoggle-box:focus {
|
||||
border: 0.136rem solid mix($onSurface, $surface, 40%);
|
||||
}
|
||||
|
||||
.switch-bg {
|
||||
@include element_decel;
|
||||
@include full-rounding;
|
||||
background-color: mix($surface, $background, 50%);
|
||||
border: 0.136rem solid $onSurface;
|
||||
min-width: 2.864rem;
|
||||
min-height: 1.637rem;
|
||||
@@ -148,7 +136,7 @@ popover {
|
||||
@include full-rounding;
|
||||
@include menu_decel;
|
||||
background-color: $onSurface;
|
||||
color: $surface;
|
||||
color: $layer1;
|
||||
min-width: 0.819rem;
|
||||
min-height: 0.819rem;
|
||||
margin-left: 0.477rem;
|
||||
@@ -195,7 +183,7 @@ popover {
|
||||
|
||||
.segment-btn:focus,
|
||||
.segment-btn:hover {
|
||||
background-color: $hovercolor;
|
||||
background-color: $layer0Hover;
|
||||
}
|
||||
|
||||
.segment-btn-enabled {
|
||||
@@ -215,13 +203,13 @@ popover {
|
||||
.multipleselection-btn {
|
||||
@include small-rounding;
|
||||
padding: 0rem 0.341rem;
|
||||
border: 0.034rem solid $outlineVariant;
|
||||
border: 0.034rem solid $outline;
|
||||
color: $onSurface;
|
||||
}
|
||||
|
||||
.multipleselection-btn:focus,
|
||||
.multipleselection-btn:hover {
|
||||
background-color: $hovercolor;
|
||||
background-color: $layer0Hover;
|
||||
color: $onSurface;
|
||||
}
|
||||
|
||||
@@ -264,12 +252,15 @@ popover {
|
||||
@include small-rounding;
|
||||
@include element_decel;
|
||||
min-height: 2.5rem;
|
||||
color: $onSurface;
|
||||
color: $onLayer0;
|
||||
}
|
||||
|
||||
.tab-btn:hover {
|
||||
background-color: $layer0Hover;
|
||||
}
|
||||
|
||||
.tab-btn:hover,
|
||||
.tab-btn:focus {
|
||||
background-color: $hovercolor;
|
||||
background-color: $surfaceContainerLow;
|
||||
}
|
||||
|
||||
.tab-btn-active>box>label {
|
||||
@@ -283,6 +274,20 @@ popover {
|
||||
color: $primary;
|
||||
}
|
||||
|
||||
.tab-icon {
|
||||
@include element_decel;
|
||||
@include full-rounding;
|
||||
min-width: 2.182rem;
|
||||
min-height: 2.182rem;
|
||||
font-size: 1.406rem;
|
||||
color: $onSurface;
|
||||
}
|
||||
|
||||
.tab-icon-active {
|
||||
background-color: $secondaryContainer;
|
||||
color: $onSecondaryContainer;
|
||||
}
|
||||
|
||||
widget {
|
||||
@include small-rounding;
|
||||
}
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
@include titlefont;
|
||||
@include bg-textshadow;
|
||||
font-size: 5.795rem;
|
||||
color: $onBackground;
|
||||
color: $onLayer0;
|
||||
}
|
||||
|
||||
.bg-time-date {
|
||||
@include titlefont;
|
||||
@include bg-textshadow;
|
||||
font-size: 2.591rem;
|
||||
color: $onBackground;
|
||||
color: $onLayer0;
|
||||
}
|
||||
|
||||
.bg-distro-box {
|
||||
@@ -37,7 +37,7 @@
|
||||
@include titlefont;
|
||||
@include bg-textshadow;
|
||||
font-size: 1.432rem;
|
||||
color: $onBackground;
|
||||
color: $onLayer0;
|
||||
}
|
||||
|
||||
.bg-distro-name {
|
||||
@@ -61,9 +61,8 @@
|
||||
.bg-quicklaunch-btn {
|
||||
@include mainfont;
|
||||
@include full-rounding;
|
||||
background-color: $surfaceVariant;
|
||||
color: $onSurfaceVariant;
|
||||
border: 0.068rem solid $subtext;
|
||||
background-color: $layer2;
|
||||
color: $onLayer2;
|
||||
min-width: 4.432rem;
|
||||
min-height: 2.045rem;
|
||||
padding: 0.273rem 0.682rem;
|
||||
@@ -71,11 +70,11 @@
|
||||
|
||||
.bg-quicklaunch-btn:hover,
|
||||
.bg-quicklaunch-btn:focus {
|
||||
background-color: mix($surfaceVariant, $onSurfaceVariant, 95%);
|
||||
background-color: $layer2Hover;
|
||||
}
|
||||
|
||||
.bg-quicklaunch-btn:active {
|
||||
background-color: mix($surfaceVariant, $onSurfaceVariant, 90%);
|
||||
background-color: $layer2Active;
|
||||
}
|
||||
|
||||
.bg-system-bg {
|
||||
@@ -85,10 +84,9 @@
|
||||
|
||||
.bg-system-circprog {
|
||||
@include fluent_decel_long;
|
||||
// margin-left: 0.273rem;
|
||||
min-width: 0.205rem; // Trough stroke width
|
||||
min-height: 4.091rem; // Diameter
|
||||
font-size: 0px;
|
||||
padding: 0rem;
|
||||
background-color: $surfaceVariant;
|
||||
background-color: $layer2;
|
||||
}
|
||||
@@ -12,11 +12,11 @@
|
||||
|
||||
.dock-app-btn:hover,
|
||||
.dock-app-btn:focus {
|
||||
background-color: mix($surface, $onSurface, 90%);
|
||||
background-color: $layer0Hover;
|
||||
}
|
||||
|
||||
.dock-app-btn:active {
|
||||
background-color: mix($surface, $onSurface, 85%);
|
||||
background-color: $layer0Active;
|
||||
}
|
||||
|
||||
.dock-app-icon {
|
||||
@@ -27,5 +27,5 @@
|
||||
|
||||
.dock-separator {
|
||||
min-width: 0.068rem;
|
||||
background-color: $surfaceVariant;
|
||||
background-color: $outline;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ $rounding_large: 1.705rem;
|
||||
|
||||
@mixin titlefont {
|
||||
// Geometric sans-serif
|
||||
font-family: "Gabarito", "Poppins", "Lexend", sans-serif;
|
||||
font-family: "Gabarito", "Poppins", "Readex Pro", "Lexend", sans-serif;
|
||||
}
|
||||
|
||||
@mixin mainfont {
|
||||
@@ -61,7 +61,7 @@ $rounding_large: 1.705rem;
|
||||
@mixin readingfont {
|
||||
// The most readable fonts, for a comfortable reading experience
|
||||
// in stuff like AI chat on sidebar
|
||||
font-family: "Lexend", "Noto Sans", sans-serif;
|
||||
font-family: "Readex Pro", "Lexend", "Noto Sans", sans-serif;
|
||||
// font-weight: 500;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
@import './musicwal';
|
||||
@import './colors';
|
||||
@import './lib_mixins';
|
||||
$music_transparentize_amount: 0.3;
|
||||
$music_gradient1: mix($color1, $background, 50%);
|
||||
|
||||
// @if $darkmode == True {
|
||||
@@ -31,10 +32,10 @@ $onSecondaryContainer: mix($color7, $color2, 90%);
|
||||
background-color: $layer0;
|
||||
padding: 0rem 1.023rem;
|
||||
background: // Inspired by Amberol
|
||||
linear-gradient(127deg, transparentize($music_gradient1, $music_colorstart_transparentize), transparentize($music_gradient1, $music_colorstart_transparentize - $transparentize_amount + $music_extra_transparentize) 70.71%),
|
||||
linear-gradient(217deg, transparentize($music_gradient2, $music_colorstart_transparentize), transparentize($music_gradient2, $music_colorstart_transparentize - $transparentize_amount + $music_extra_transparentize) 70.71%),
|
||||
linear-gradient(127deg, transparentize($music_gradient1, $music_colorstart_transparentize), transparentize($music_gradient1, $music_colorstart_transparentize - $music_transparentize_amount + $music_extra_transparentize) 70.71%),
|
||||
linear-gradient(217deg, transparentize($music_gradient2, $music_colorstart_transparentize), transparentize($music_gradient2, $music_colorstart_transparentize - $music_transparentize_amount + $music_extra_transparentize) 70.71%),
|
||||
radial-gradient(circle at 0% 100%, $color4 13%, rgba(0, 0, 0, 0) 100%),
|
||||
linear-gradient(336deg, transparentize($music_gradient3, $music_colorstart_transparentize), transparentize($music_gradient3, $music_colorstart_transparentize - $transparentize_amount + $music_extra_transparentize) 70.71%),
|
||||
linear-gradient(336deg, transparentize($music_gradient3, $music_colorstart_transparentize), transparentize($music_gradient3, $music_colorstart_transparentize - $music_transparentize_amount + $music_extra_transparentize) 70.71%),
|
||||
linear-gradient($background, $background), // We don't want wallpaper tint, so here's a fully opaque surface
|
||||
;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
.notif-low {
|
||||
@include notif-rounding;
|
||||
background-color: $layer2;
|
||||
color: $onSurfaceVariant;
|
||||
color: $onLayer2;
|
||||
padding: $rounding_small;
|
||||
padding-right: $rounding_small + 0.545rem;
|
||||
}
|
||||
@@ -13,7 +13,7 @@
|
||||
.notif-normal {
|
||||
@include notif-rounding;
|
||||
background-color: $layer2;
|
||||
color: $onSurfaceVariant;
|
||||
color: $onLayer2;
|
||||
padding: $rounding_small;
|
||||
padding-right: $rounding_small + 0.545rem;
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
min-width: 30.682rem;
|
||||
background-color: $layer2;
|
||||
border: 0.034rem solid $outlineVariant;
|
||||
color: $onSurfaceVariant;
|
||||
color: $onLayer2;
|
||||
padding: $rounding_small;
|
||||
padding-right: $rounding_small + 0.545rem;
|
||||
}
|
||||
@@ -54,7 +54,7 @@
|
||||
min-width: 30.682rem;
|
||||
background-color: $layer2;
|
||||
border: 0.034rem solid $outlineVariant;
|
||||
color: $onSurfaceVariant;
|
||||
color: $onLayer2;
|
||||
padding: $rounding_small;
|
||||
padding-right: $rounding_small + 0.545rem;
|
||||
}
|
||||
@@ -129,11 +129,11 @@
|
||||
|
||||
.notif-expand-btn:hover,
|
||||
.notif-expand-btn:focus {
|
||||
background: $hovercolor;
|
||||
background: $layer2Hover;
|
||||
}
|
||||
|
||||
.notif-expand-btn:active {
|
||||
background: $activecolor;
|
||||
background: $layer2Active;
|
||||
}
|
||||
|
||||
.notif-listaction-btn {
|
||||
@@ -143,11 +143,11 @@
|
||||
|
||||
.notif-listaction-btn:hover,
|
||||
.notif-listaction-btn:focus {
|
||||
background-color: $hovercolor;
|
||||
background-color: $layer2Hover;
|
||||
}
|
||||
|
||||
.notif-listaction-btn:active {
|
||||
background-color: $activecolor;
|
||||
background-color: $layer2Active;
|
||||
}
|
||||
|
||||
.notif-listaction-btn-enabled {
|
||||
@@ -166,7 +166,7 @@
|
||||
|
||||
.osd-notif {
|
||||
@include notif-rounding;
|
||||
background-color: $background;
|
||||
background-color: $layer0;
|
||||
min-width: 30.682rem;
|
||||
}
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
|
||||
.notif-action-low {
|
||||
background-color: $surfaceContainerHighest;
|
||||
color: $onSurfaceVariant;
|
||||
color: $onLayer2;
|
||||
}
|
||||
|
||||
.notif-action-low:focus,
|
||||
@@ -218,7 +218,7 @@
|
||||
|
||||
.notif-action-normal {
|
||||
background-color: $surfaceContainerHighest;
|
||||
color: $onSurfaceVariant;
|
||||
color: $onSurface;
|
||||
}
|
||||
|
||||
.notif-action-normal:focus,
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
}
|
||||
|
||||
.osd-colorscheme-settings {
|
||||
background-color: $background;
|
||||
background-color: $layer0;
|
||||
padding: 0.313rem 0.626rem;
|
||||
@include small-rounding;
|
||||
}
|
||||
|
||||
@@ -116,24 +116,22 @@
|
||||
.overview-tasks-window {
|
||||
@include normal-rounding;
|
||||
@include menu_decel;
|
||||
background-color: $layer2;
|
||||
background-color: transparentize($layer3, 0.2);
|
||||
color: $onSurface;
|
||||
border: 0.068rem solid $surfaceContainerHighest;
|
||||
}
|
||||
|
||||
.overview-tasks-window:hover,
|
||||
.overview-tasks-window:focus {
|
||||
background-color: $secondaryContainer;
|
||||
background-color: transparentize($secondaryContainer, 0.3);
|
||||
}
|
||||
|
||||
.overview-tasks-window:active {
|
||||
background-color: $tertiaryContainer;
|
||||
background-color: mix($secondaryContainer, $hovercolor, 70%);
|
||||
background-color: transparentize($secondaryContainer, 0.3);
|
||||
}
|
||||
|
||||
.overview-tasks-window-selected {
|
||||
background-color: $tertiaryContainer;
|
||||
background-color: mix($secondaryContainer, $hovercolor, 70%);
|
||||
background-color: transparentize($secondaryContainer, 0.3);
|
||||
}
|
||||
|
||||
.overview-tasks-window-dragging {
|
||||
|
||||
@@ -498,20 +498,6 @@ $colorpicker_rounding: 0.341rem;
|
||||
background-color: $layer1;
|
||||
}
|
||||
|
||||
.sidebar-chat-apiswitcher-icon {
|
||||
@include element_decel;
|
||||
@include full-rounding;
|
||||
min-width: 2.182rem;
|
||||
min-height: 2.182rem;
|
||||
font-size: 1.406rem;
|
||||
color: $onSurface;
|
||||
}
|
||||
|
||||
.sidebar-chat-apiswitcher-icon-enabled {
|
||||
background-color: $secondaryContainer;
|
||||
color: $onSecondaryContainer;
|
||||
}
|
||||
|
||||
.sidebar-chat-providerswitcher {
|
||||
@include small-rounding;
|
||||
padding: 0.477rem 0.682rem;
|
||||
@@ -800,7 +786,7 @@ $colorpicker_rounding: 0.341rem;
|
||||
}
|
||||
|
||||
.sidebar-waifu-txt {
|
||||
@include readingfont;
|
||||
@include mainfont;
|
||||
}
|
||||
|
||||
.sidebar-waifu-image {
|
||||
|
||||
@@ -192,6 +192,9 @@ class GeminiService extends Service {
|
||||
this._usingHistory = value;
|
||||
}
|
||||
|
||||
get safe() { return this._safe }
|
||||
set safe(value) { this._safe = value; }
|
||||
|
||||
get temperature() { return this._temperature }
|
||||
set temperature(value) { this._temperature = value; }
|
||||
|
||||
@@ -282,13 +285,13 @@ class GeminiService extends Service {
|
||||
const body =
|
||||
{
|
||||
"contents": this._messages.map(msg => { let m = { role: msg.role, parts: msg.parts }; return m; }),
|
||||
// "safetySettings": [
|
||||
// { category: "HARM_CATEGORY_DEROGATORY", threshold: "BLOCK_NONE", },
|
||||
// { category: "HARM_CATEGORY_HARASSMENT", threshold: "BLOCK_NONE", },
|
||||
// { category: "HARM_CATEGORY_HATE_SPEECH", threshold: "BLOCK_NONE", },
|
||||
// { category: "HARM_CATEGORY_SEXUALLY_EXPLICIT", threshold: "BLOCK_NONE", },
|
||||
// { category: "HARM_CATEGORY_UNSPECIFIED", threshold: "BLOCK_NONE", },
|
||||
// ],
|
||||
"safetySettings": this._safe ? [] : [
|
||||
// { category: "HARM_CATEGORY_DEROGATORY", threshold: "BLOCK_NONE", },
|
||||
{ category: "HARM_CATEGORY_HARASSMENT", threshold: "BLOCK_NONE", },
|
||||
{ category: "HARM_CATEGORY_HATE_SPEECH", threshold: "BLOCK_NONE", },
|
||||
{ category: "HARM_CATEGORY_SEXUALLY_EXPLICIT", threshold: "BLOCK_NONE", },
|
||||
// { category: "HARM_CATEGORY_UNSPECIFIED", threshold: "BLOCK_NONE", },
|
||||
],
|
||||
"generationConfig": {
|
||||
"temperature": this._temperature,
|
||||
},
|
||||
|
||||
@@ -19,7 +19,6 @@ input {
|
||||
clickfinger_behavior = true
|
||||
scroll_factor = 0.5
|
||||
}
|
||||
|
||||
special_fallthrough = true
|
||||
follow_mouse = 1
|
||||
}
|
||||
@@ -74,7 +73,7 @@ decoration {
|
||||
xray = true
|
||||
special = false
|
||||
new_optimizations = true
|
||||
size = 5
|
||||
size = 7
|
||||
passes = 4
|
||||
brightness = 1
|
||||
noise = 0.01
|
||||
|
||||
@@ -58,6 +58,8 @@ bind = Super+Shift,J,exec,grim -g "$(slurp $SLURP_ARGS)" "tmp.png" && tesseract
|
||||
# Media
|
||||
bindl= Super+Shift, N, exec, playerctl next || playerctl position `bc <<< "100 * $(playerctl metadata mpris:length) / 1000000 / 100"`
|
||||
bindl= ,XF86AudioNext, exec, playerctl next || playerctl position `bc <<< "100 * $(playerctl metadata mpris:length) / 1000000 / 100"`
|
||||
bind = Super+Shift+Alt, mouse:275, exec, playerctl previous
|
||||
bind = Super+Shift+Alt, mouse:276, exec, playerctl next || playerctl position `bc <<< "100 * $(playerctl metadata mpris:length) / 1000000 / 100"`
|
||||
bindl= Super+Shift, B, exec, playerctl previous
|
||||
bindl= Super+Shift, P, exec, playerctl play-pause
|
||||
bindl= ,XF86AudioPlay, exec, playerctl play-pause
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
# ######## Window rules ########
|
||||
windowrule = noblur,.* # Disables blur for windows. Substantially improves performance.
|
||||
|
||||
windowrule = noblur,.*
|
||||
# windowrule = opacity 0.89 override 0.89 override, .* # Applies transparency to EVERY WINDOW
|
||||
windowrule = float, ^(blueberry.py)$
|
||||
windowrule = float, ^(steam)$
|
||||
@@ -8,7 +7,6 @@ windowrule = float, ^(guifetch)$ # FlafyDev/guifetch
|
||||
windowrulev2 = tile,class:(wps)
|
||||
windowrulev2 = tile,class:(dev.warp.Warp)
|
||||
|
||||
|
||||
# Dialogs
|
||||
windowrule=float,title:^(Open File)(.*)$
|
||||
windowrule=float,title:^(Select a File)(.*)$
|
||||
@@ -18,7 +16,7 @@ windowrule=float,title:^(Save As)(.*)$
|
||||
windowrule=float,title:^(Library)(.*)$
|
||||
|
||||
# ######## Layer rules ########
|
||||
layerrule = xray 0, .*
|
||||
layerrule = xray 1, .*
|
||||
# layerrule = noanim, .*
|
||||
layerrule = noanim, selection
|
||||
layerrule = noanim, overview
|
||||
@@ -27,10 +25,7 @@ layerrule = noanim, sideleft
|
||||
layerrule = noanim, sideright
|
||||
layerrule = noanim, osk
|
||||
|
||||
layerrule = blur, eww
|
||||
layerrule = ignorealpha 0.8, eww
|
||||
layerrule = noanim, noanim
|
||||
layerrule = blur, noanim
|
||||
layerrule = blur, gtk-layer-shell
|
||||
layerrule = ignorezero, gtk-layer-shell
|
||||
layerrule = blur, launcher
|
||||
@@ -44,22 +39,23 @@ layerrule = noanim, sideright
|
||||
layerrule = noanim, sideleft
|
||||
|
||||
layerrule = blur, bar
|
||||
layerrule = ignorealpha 0.20, bar
|
||||
layerrule = ignorealpha 0.6, bar
|
||||
layerrule = blur, corner.*
|
||||
layerrule = ignorealpha 0.20, corner.*
|
||||
layerrule = ignorealpha 0.6, corner.*
|
||||
layerrule = blur, dock
|
||||
layerrule = ignorealpha 0.20, dock
|
||||
layerrule = ignorealpha 0.6, dock
|
||||
layerrule = blur, indicator.*
|
||||
layerrule = ignorealpha 0.20, indicator.*
|
||||
layerrule = ignorealpha 0.6, indicator.*
|
||||
layerrule = blur, overview
|
||||
layerrule = ignorealpha 0.20, overview
|
||||
layerrule = ignorealpha 0.6, overview
|
||||
layerrule = blur, cheatsheet
|
||||
layerrule = ignorealpha 0.20, cheatsheet
|
||||
layerrule = ignorealpha 0.6, cheatsheet
|
||||
layerrule = blur, sideright
|
||||
layerrule = ignorealpha 0.20, sideright
|
||||
layerrule = ignorealpha 0.6, sideright
|
||||
layerrule = blur, sideleft
|
||||
layerrule = ignorealpha 0.20, sideleft
|
||||
layerrule = ignorealpha 0.6, sideleft
|
||||
layerrule = blur, indicator*
|
||||
layerrule = ignorealpha 0.20, indicator*
|
||||
layerrule = ignorealpha 0.6, indicator*
|
||||
layerrule = blur, osk
|
||||
layerrule = ignorealpha 0.20, osk
|
||||
layerrule = ignorealpha 0.6, osk
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
$text_color = rgba(ede0deFF)
|
||||
$entry_background_color = rgba(130F0F11)
|
||||
$entry_border_color = rgba(a08c8955)
|
||||
$entry_color = rgba(d8c2bfFF)
|
||||
$text_color = rgba(E2E2E2FF)
|
||||
$entry_background_color = rgba(13131311)
|
||||
$entry_border_color = rgba(91919155)
|
||||
$entry_color = rgba(C6C6C6FF)
|
||||
$font_family = Gabarito
|
||||
$font_family_clock = Gabarito
|
||||
$font_material_symbols = Material Symbols Rounded
|
||||
|
||||
background {
|
||||
color = rgba(130F0F77)
|
||||
color = rgba(13131377)
|
||||
# path = {{ SWWW_WALL }}
|
||||
path = screenshot
|
||||
blur_size = 5
|
||||
@@ -32,6 +32,8 @@ input-field {
|
||||
label { # Clock
|
||||
monitor =
|
||||
text = $TIME
|
||||
shadow_passes = 1
|
||||
shadow_boost = 0.5
|
||||
color = $text_color
|
||||
font_size = 65
|
||||
font_family = $font_family_clock
|
||||
@@ -43,6 +45,8 @@ label { # Clock
|
||||
label { # Greeting
|
||||
monitor =
|
||||
text = hi $USER !!!
|
||||
shadow_passes = 1
|
||||
shadow_boost = 0.5
|
||||
color = $text_color
|
||||
font_size = 20
|
||||
font_family = $font_family
|
||||
@@ -54,6 +58,8 @@ label { # Greeting
|
||||
label { # lock icon
|
||||
monitor =
|
||||
text = lock
|
||||
shadow_passes = 1
|
||||
shadow_boost = 0.5
|
||||
color = $text_color
|
||||
font_size = 21
|
||||
font_family = $font_material_symbols
|
||||
@@ -65,6 +71,8 @@ label { # lock icon
|
||||
label { # "locked" text
|
||||
monitor =
|
||||
text = locked
|
||||
shadow_passes = 1
|
||||
shadow_boost = 0.5
|
||||
color = $text_color
|
||||
font_size = 14
|
||||
font_family = $font_family
|
||||
@@ -77,6 +85,8 @@ label { # "locked" text
|
||||
label { # Status
|
||||
monitor =
|
||||
text = cmd[update:5000] ~/.config/hypr/hyprlock/status.sh
|
||||
shadow_passes = 1
|
||||
shadow_boost = 0.5
|
||||
color = $text_color
|
||||
font_size = 14
|
||||
font_family = $font_family
|
||||
|
||||
@@ -41,10 +41,21 @@
|
||||
</details>
|
||||
|
||||
### [illogical_impulse](https://github.com/end-4/dots-hyprland/tree/illogical-impulse)
|
||||
|
||||
**AI, on-screen indicators**
|
||||

|
||||
|
||||
**Fancy notifications, music controls, system, calendar**
|
||||

|
||||

|
||||

|
||||

|
||||
<!--  -->
|
||||
|
||||
**Weeb powers**
|
||||
<!--  -->
|
||||

|
||||
|
||||
**Easy window management**
|
||||
<!--!  -->
|
||||

|
||||
|
||||
> [!WARNING]
|
||||
> - Only the above is maintained
|
||||
|
||||
@@ -13,7 +13,7 @@ python-build python-material-color-utilities python-materialyoucolor-git python-
|
||||
|
||||
### Basic graphic env
|
||||
hyprland-git xorg-xrandr
|
||||
# xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-hyprland-git
|
||||
xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-hyprland-git
|
||||
|
||||
### Player and Audio
|
||||
pavucontrol wireplumber libdbusmenu-gtk3 plasma-browser-integration playerctl swww
|
||||
@@ -28,7 +28,7 @@ polkit-gnome gnome-keyring gnome-control-center blueberry networkmanager brightn
|
||||
python-pywayland python-psutil hypridle-git hyprlock-git wlogout wl-clipboard hyprpicker-git anyrun-git
|
||||
|
||||
### Fonts and Themes
|
||||
adw-gtk3-git qt5ct qt5-wayland gradience-git fontconfig lexend-fonts-git ttf-jetbrains-mono-nerd ttf-material-symbols-variable-git ttf-space-mono-nerd fish foot starship
|
||||
adw-gtk3-git qt5ct qt5-wayland gradience-git fontconfig ttf-readex-pro ttf-jetbrains-mono-nerd ttf-material-symbols-variable-git ttf-space-mono-nerd fish foot starship
|
||||
|
||||
### Screenshot and Recoder
|
||||
swappy wf-recorder grim tesseract tesseract-data-eng slurp
|
||||
|
||||
Reference in New Issue
Block a user