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>
|
<author>end_4</author>
|
||||||
<_description>Catppuccin port but very random</_description>
|
<_description>Catppuccin port but very random</_description>
|
||||||
|
|
||||||
<!-- The scheme tries to look like the default GVim scheme,
|
<style name="bracket-match" background="#E3E6EB" bold="true"/>
|
||||||
since it is also what the hardwired GtkSourceView 1 color
|
<style name="bracket-mismatch" background="#E3E6EB" underline="true"/>
|
||||||
scheme did -->
|
<style name="c:preprocessor" foreground="#DF8E1D"/>
|
||||||
|
<style name="css:at-rules" foreground="#8839EF"/>
|
||||||
<!-- Palette -->
|
<style name="css:color" foreground="#DF8E1D"/>
|
||||||
<color name="white" value="#F8F8F2"/>
|
<style name="css:keyword" foreground="#256BF5"/>
|
||||||
<color name="white" value="#53566F"/>
|
<style name="current-line" background="#E3E6EB"/>
|
||||||
<color name="blue" value="#2E70F5"/>
|
<style name="cursor" foreground="#DC8A78"/>
|
||||||
<color name="magenta" value="#DA70D6"/>
|
<style name="def:base-n-integer" foreground="#DF8E1D"/>
|
||||||
<color name="violet" value="#934CF0"/>
|
<style name="def:boolean" foreground="#DF8E1D"/>
|
||||||
<color name="cyan" value="#66D9EF"/>
|
<style name="def:builtin" foreground="#DF8E1D"/>
|
||||||
<color name="grey" value="#817D69"/>
|
<style name="def:character" foreground="#DF8E1D"/>
|
||||||
<color name="green" value="#44A230"/>
|
<style name="def:comment" foreground="#9DA1B1"/>
|
||||||
<color name="bordeaux" value="#B22757"/>
|
<style name="def:complex" foreground="#DF8E1D"/>
|
||||||
<color name="red" value="#E64856"/>
|
<style name="def:decimal" foreground="#DF8E1D"/>
|
||||||
<color name="yellow" value="#E4D973"/>
|
<style name="def:doc-comment" foreground="#9DA1B1"/>
|
||||||
<color name="purple" value="#934CF0"/>
|
<style name="def:doc-comment-element" foreground="#9DA1B1"/>
|
||||||
|
<style name="def:error" foreground="#D53055" background="#EAEDF2"/>
|
||||||
<color name="onSuccess" value="#D1E8D5"/>
|
<style name="def:floating-point" foreground="#DF8E1D"/>
|
||||||
<color name="success" value="#213528"/>
|
<style name="def:function" foreground="#256BF5"/>
|
||||||
<color name="onError" value="#ffb4a9"/>
|
<style name="def:identifier" foreground="#000000"/>
|
||||||
<color name="error" value="#680003"/>
|
<style name="def:keyword" foreground="#8839EF"/>
|
||||||
|
<style name="def:note" foreground="#9DA1B1"/>
|
||||||
<!-- Global Settings -->
|
<style name="def:number" foreground="#FE640B"/>
|
||||||
<style name="current-line" background="#EFF1F5"/>
|
<style name="def:operator" foreground="#8839EF"/>
|
||||||
<style name="current-line-number" background="#eeeeec"/>
|
<style name="def:preprocessor" foreground="#256BF5"/>
|
||||||
<style name="draw-spaces" foreground="#babdb6"/>
|
<style name="def:reserved" foreground="#8839EF"/>
|
||||||
<style name="background-pattern" background="#EFF1F5"/>
|
<style name="def:shebang" foreground="#9DA1B1"/>
|
||||||
|
<style name="def:special-char" foreground="#256BF5"/>
|
||||||
<!-- Bracket Matching -->
|
<style name="def:special-constant" foreground="#DF8E1D"/>
|
||||||
<!-- <style name="bracket-match" foreground="white" background="grey"/> -->
|
<style name="def:statement" foreground="#8839EF"/>
|
||||||
<!-- <style name="bracket-mismatch" foreground="white" background="red"/> -->
|
<style name="def:string" foreground="#4AA537"/>
|
||||||
|
<style name="def:type" foreground="#256BF5" italic="true"/>
|
||||||
<!-- Right Margin -->
|
<style name="diff:added-line" foreground="#282D32" background="#ACF2BD"/>
|
||||||
<style name="right-margin" foreground="#EFF1F5" background="#EFF1F5"/>
|
<style name="diff:changed-line" foreground="#282D32" background="#F1F2C3"/>
|
||||||
|
<style name="diff:location" foreground="#9DA1B1"/>
|
||||||
<!-- Search Matching -->
|
<style name="diff:removed-line" foreground="#282D32" background="#FFEEF0"/>
|
||||||
<style name="search-match" background="yellow"/>
|
<style name="draw-spaces" foreground="#3b3a32"/>
|
||||||
|
<style name="html:dtd" foreground="#4AA537"/>
|
||||||
<!-- Comments -->
|
<style name="html:tag" foreground="#8839EF"/>
|
||||||
<style name="def:comment" foreground="grey" italic="true"/>
|
<style name="js:function" foreground="#256BF5"/>
|
||||||
<style name="def:shebang" foreground="grey" bold="true"/>
|
<style name="line-numbers" foreground="#9699AA" background="#EAEDF2"/>
|
||||||
<style name="def:doc-comment-element" italic="true"/>
|
<style name="perl:builtin" foreground="#256BF5"/>
|
||||||
|
<style name="perl:include-statement" foreground="#8839EF"/>
|
||||||
<!-- Constants -->
|
<style name="perl:special-variable" foreground="#DF8E1D"/>
|
||||||
<style name="def:constant" foreground="black"/>
|
<style name="perl:variable" foreground="#000000"/>
|
||||||
<style name="def:special-char" foreground="yellow"/>
|
<style name="php:string" foreground="#4AA537"/>
|
||||||
|
<style name="python:builtin-constant" foreground="#8839EF"/>
|
||||||
<!-- Identifiers -->
|
<style name="python:builtin-function" foreground="#256BF5"/>
|
||||||
<style name="def:identifier" foreground="green"/>
|
<style name="python:module-handler" foreground="#8839EF"/>
|
||||||
|
<style name="python:special-variable" foreground="#8839EF"/>
|
||||||
<!-- Statements -->
|
<style name="ruby:attribute-definition" foreground="#8839EF"/>
|
||||||
<style name="def:statement" foreground="cyan" bold="true"/>
|
<style name="ruby:builtin" foreground="#000000"/>
|
||||||
|
<style name="ruby:class-variable" foreground="#000000"/>
|
||||||
<!-- Types -->
|
<style name="ruby:constant" foreground="#000000"/>
|
||||||
<style name="def:type" foreground="cyan" bold="true"/>
|
<style name="ruby:global-variable" foreground="#256BF5"/>
|
||||||
|
<style name="ruby:instance-variable" foreground="#000000"/>
|
||||||
<!-- Others -->
|
<style name="ruby:module-handler" foreground="#8839EF"/>
|
||||||
<style name="def:preprocessor" foreground="purple"/>
|
<style name="ruby:predefined-variable" foreground="#DF8E1D"/>
|
||||||
<style name="def:error" background="red" bold="true"/>
|
<style name="ruby:regex" foreground="#f6aa11"/>
|
||||||
<style name="def:warning" background="yellow"/>
|
<style name="ruby:special-variable" foreground="#8839EF"/>
|
||||||
<style name="def:note" foreground="bordeaux" bold="true"/>
|
<style name="ruby:symbol" foreground="#DF8E1D"/>
|
||||||
<style name="def:underlined" italic="true" underline="single"/>
|
<style name="rubyonrails:attribute-definition" foreground="#8839EF"/>
|
||||||
|
<style name="rubyonrails:block-parameter" foreground="#fd971f" italic="true"/>
|
||||||
<!-- Heading styles, uncomment to enable -->
|
<style name="rubyonrails:builtin" foreground="#000000"/>
|
||||||
<!--
|
<style name="rubyonrails:class-inherit" foreground="#256BF5" underline="true" italic="true"/>
|
||||||
<style name="def:heading0" scale="5.0"/>
|
<style name="rubyonrails:class-name" foreground="#256BF5"/>
|
||||||
<style name="def:heading1" scale="2.5"/>
|
<style name="rubyonrails:class-variable" foreground="#000000"/>
|
||||||
<style name="def:heading2" scale="2.0"/>
|
<style name="rubyonrails:complex-interpolation" foreground="#DF8E1D"/>
|
||||||
<style name="def:heading3" scale="1.7"/>
|
<style name="rubyonrails:constant" foreground="#000000"/>
|
||||||
<style name="def:heading4" scale="1.5"/>
|
<style name="rubyonrails:global-variable" foreground="#256BF5"/>
|
||||||
<style name="def:heading5" scale="1.3"/>
|
<style name="rubyonrails:instance-variable" foreground="#000000"/>
|
||||||
<style name="def:heading6" scale="1.2"/>
|
<style name="rubyonrails:module-handler" foreground="#8839EF"/>
|
||||||
-->
|
<style name="rubyonrails:module-name" foreground="#256BF5"/>
|
||||||
|
<style name="rubyonrails:predefined-variable" foreground="#DF8E1D"/>
|
||||||
<!-- Language specific styles -->
|
<style name="rubyonrails:rails" foreground="#000000"/>
|
||||||
<style name="diff:added-line" background="success" foreground="onSuccess"/>
|
<style name="rubyonrails:regex" foreground="#f6aa11"/>
|
||||||
<style name="diff:removed-line" background="error" foreground="onError"/>
|
<style name="rubyonrails:simple-interpolation" foreground="#DF8E1D"/>
|
||||||
<style name="diff:changed-line" use-style="def:preprocessor"/>
|
<style name="rubyonrails:special-variable" foreground="#8839EF"/>
|
||||||
<style name="diff:special-case" use-style="def:constant"/>
|
<style name="rubyonrails:symbol" foreground="#DF8E1D"/>
|
||||||
<style name="diff:location" use-style="def:statement"/>
|
<style name="search-match" background="#E3E6EB" bold="true" underline="true"/>
|
||||||
<style name="diff:diff-file" use-style="def:type"/>
|
<style name="selection" foreground="#f8f8f2" background="#444444"/>
|
||||||
|
<style name="text" foreground="#f8f8f2" background="#222222"/>
|
||||||
<style name="xml:tags" foreground="red"/>
|
<style name="xml:attribute-name" foreground="#256BF5"/>
|
||||||
<style name="xml:attribute-name" foreground="green"/>
|
<style name="xml:element-name" foreground="#8839EF"/>
|
||||||
<style name="xml:namespace" foreground="cyan" bold="true"/>
|
<style name="xml:entity" foreground="#c8cecc"/>
|
||||||
|
<style name="xml:namespace" foreground="#8839EF"/>
|
||||||
<style name="js:object" foreground="cyan" bold="true"/>
|
<style name="xml:tag" foreground="#8839EF"/>
|
||||||
<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>
|
</style-scheme>
|
||||||
|
|||||||
@@ -1,106 +1,121 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<style-scheme id="custom" _name="Custom" version="1.0">
|
||||||
<author>end_4</author>
|
<author>Leo Iannacone</author>
|
||||||
<_description>Monokai port but very random</_description>
|
<_description>Based on SublimeText Monokai Extended - Generated with tm2gtksw2</_description>
|
||||||
|
|
||||||
<!-- The scheme tries to look like the default GVim scheme,
|
<style name="bracket-match" background="#333333" bold="true"/>
|
||||||
since it is also what the hardwired GtkSourceView 1 color
|
<style name="bracket-mismatch" background="#333333" underline="true"/>
|
||||||
scheme did -->
|
<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>
|
</style-scheme>
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
// This file is for the actual widget for each single notification
|
// This file is for the actual widget for each single notification
|
||||||
|
|
||||||
const { GLib, Gdk, Gtk } = imports.gi;
|
const { GLib, Gdk, Gtk } = imports.gi;
|
||||||
import Widget from 'resource:///com/github/Aylur/ags/widget.js'
|
import Widget from 'resource:///com/github/Aylur/ags/widget.js'
|
||||||
import * as Utils from 'resource:///com/github/Aylur/ags/utils.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";
|
import { AnimatedCircProg } from "./cairo_circularprogress.js";
|
||||||
|
|
||||||
function guessMessageType(summary) {
|
function guessMessageType(summary) {
|
||||||
if (summary.includes('recording')) return 'screen_record';
|
const str = summary.toLowerCase();
|
||||||
if (summary.includes('battery') || summary.includes('power')) return 'power';
|
if (str.includes('reboot')) return 'restart_alt';
|
||||||
if (summary.includes('screenshot')) return 'screenshot_monitor';
|
if (str.includes('recording')) return 'screen_record';
|
||||||
if (summary.includes('welcome')) return 'waving_hand';
|
if (str.includes('battery') || summary.includes('power')) return 'power';
|
||||||
if (summary.includes('time')) return 'scheduleb';
|
if (str.includes('screenshot')) return 'screenshot_monitor';
|
||||||
if (summary.includes('installed')) return 'download';
|
if (str.includes('welcome')) return 'waving_hand';
|
||||||
if (summary.includes('update')) return 'update';
|
if (str.includes('time')) return 'scheduleb';
|
||||||
if (summary.startsWith('file')) return 'folder_copy';
|
if (str.includes('installed')) return 'download';
|
||||||
|
if (str.includes('update')) return 'update';
|
||||||
|
if (str.startsWith('file')) return 'folder_copy';
|
||||||
return 'chat';
|
return 'chat';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -92,3 +92,78 @@ export const TabContainer = ({ icons, names, children, className = '', setup = (
|
|||||||
|
|
||||||
return mainBox;
|
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');
|
return output.join('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
export const markdownTest = `# Heading 1
|
export const markdownTest = `## Inline formatting
|
||||||
## Heading 2
|
- **Bold** *Italics* __Underline__
|
||||||
### Heading 3
|
- \`Monospace text\` 🤓
|
||||||
#### Heading 4
|
- Colors
|
||||||
##### Heading 5
|
- Nvidia green #7ABB08
|
||||||
1. yes
|
- Soundcloud orange #FF5500
|
||||||
2. no
|
## Code block
|
||||||
127. well
|
\`\`\`cpp
|
||||||
- Bulletpoint starting with minus
|
#include <bits/stdc++.h>
|
||||||
* Bulletpoint starting with asterisk
|
const std::string GREETING="UwU";
|
||||||
---
|
int main() { std::cout << GREETING; }
|
||||||
- __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');
|
|
||||||
\`\`\`
|
\`\`\`
|
||||||
- Random instruction thing
|
## LaTeX
|
||||||
- To update arch lincox, run \`sudo pacman -Syu\`
|
\`\`\`latex
|
||||||
\`\`\`tex
|
\\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)
|
||||||
\\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}
|
|
||||||
\`\`\`
|
\`\`\`
|
||||||
`;
|
`;
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
const { GLib } = imports.gi;
|
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';
|
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
|
||||||
const { execAsync, exec } = Utils;
|
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 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"');
|
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 hasPlasmaIntegration = !!Utils.exec('bash -c "command -v plasma-browser-integration-host"');
|
||||||
|
|
||||||
export const getDistroIcon = () => {
|
export const getDistroIcon = () => {
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ const CoverArt = ({ player, ...rest }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const coverPath = player.coverPath;
|
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
|
if (player.coverPath == lastCoverPath) { // Since 'notify::cover-path' emits on cover download complete
|
||||||
Utils.timeout(200, () => {
|
Utils.timeout(200, () => {
|
||||||
// self.attribute.showImage(self, coverPath);
|
// self.attribute.showImage(self, coverPath);
|
||||||
@@ -206,9 +206,9 @@ const CoverArt = ({ player, ...rest }) => {
|
|||||||
|
|
||||||
// Generate colors
|
// Generate colors
|
||||||
execAsync(['bash', '-c',
|
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(() => {
|
.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(`cp ${GLib.get_user_cache_dir()}/wal/colors.scss ${App.configDir}/scss/_musicwal.scss`);
|
||||||
exec(`sass ${App.configDir}/scss/_music.scss ${stylePath}`);
|
exec(`sass ${App.configDir}/scss/_music.scss ${stylePath}`);
|
||||||
Utils.timeout(200, () => {
|
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';
|
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
|
||||||
const { execAsync, exec } = Utils;
|
const { execAsync, exec } = Utils;
|
||||||
import Todo from "../../services/todo.js";
|
import Todo from "../../services/todo.js";
|
||||||
|
import { darkMode } from '../.miscutils/system.js';
|
||||||
|
|
||||||
export function hasUnterminatedBackslash(inputString) {
|
export function hasUnterminatedBackslash(inputString) {
|
||||||
// Use a regular expression to match a trailing odd number of backslashes
|
// Use a regular expression to match a trailing odd number of backslashes
|
||||||
@@ -11,7 +12,7 @@ export function hasUnterminatedBackslash(inputString) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function launchCustomCommand(command) {
|
export function launchCustomCommand(command) {
|
||||||
const args = command.split(' ');
|
const args = command.toLowerCase().split(' ');
|
||||||
if (args[0] == '>raw') { // Mouse raw input
|
if (args[0] == '>raw') { // Mouse raw input
|
||||||
Utils.execAsync('hyprctl -j getoption input:accel_profile')
|
Utils.execAsync('hyprctl -j getoption input:accel_profile')
|
||||||
.then((output) => {
|
.then((output) => {
|
||||||
@@ -31,17 +32,21 @@ export function launchCustomCommand(command) {
|
|||||||
execAsync([`bash`, `-c`, `${App.configDir}/scripts/color_generation/switchcolor.sh --pick`, `&`]).catch(print);
|
execAsync([`bash`, `-c`, `${App.configDir}/scripts/color_generation/switchcolor.sh --pick`, `&`]).catch(print);
|
||||||
}
|
}
|
||||||
else if (args[0] == '>light') { // Light mode
|
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`])
|
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`]))
|
.then(execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/switchcolor.sh`]))
|
||||||
.catch(print);
|
.catch(print);
|
||||||
}
|
}
|
||||||
else if (args[0] == '>dark') { // Dark mode
|
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`])
|
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`]))
|
.then(execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/switchcolor.sh`]))
|
||||||
.catch(print);
|
.catch(print);
|
||||||
}
|
}
|
||||||
else if (args[0] == '>badapple') { // Black and white
|
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
|
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)
|
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";
|
import { darkMode } from "../../.miscutils/system.js";
|
||||||
|
|
||||||
const LATEX_DIR = `${GLib.get_user_cache_dir()}/ags/media/latex`;
|
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_SOURCEVIEW_SCHEME_PATH = `${App.configDir}/assets/themes/sourceviewtheme${darkMode.value ? '' : '-light'}.xml`;
|
||||||
const CUSTOM_SCHEME_ID = `custom${darkMode ? '' : '-light'}`;
|
const CUSTOM_SCHEME_ID = `custom${darkMode.value ? '' : '-light'}`;
|
||||||
const USERNAME = GLib.get_user_name();
|
const USERNAME = GLib.get_user_name();
|
||||||
|
|
||||||
/////////////////////// Custom source view colorscheme /////////////////////////
|
/////////////////////// Custom source view colorscheme /////////////////////////
|
||||||
@@ -82,7 +82,7 @@ const Latex = (content = '') => {
|
|||||||
const latexViewArea = Box({
|
const latexViewArea = Box({
|
||||||
// vscroll: 'never',
|
// vscroll: 'never',
|
||||||
// hscroll: 'automatic',
|
// hscroll: 'automatic',
|
||||||
homogeneous: true,
|
// homogeneous: true,
|
||||||
attribute: {
|
attribute: {
|
||||||
render: async (self, text) => {
|
render: async (self, text) => {
|
||||||
if (text.length == 0) return;
|
if (text.length == 0) return;
|
||||||
@@ -107,7 +107,7 @@ const Latex = (content = '') => {
|
|||||||
text=$(cat ${filePath} | sed 's/$/ \\\\\\\\/g' | sed 's/&=/=/g')
|
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}
|
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/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.writeFile(renderScript, scriptFilePath).catch(print);
|
||||||
Utils.exec(`chmod a+x ${scriptFilePath}`)
|
Utils.exec(`chmod a+x ${scriptFilePath}`)
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ const CommandButton = (command) => Button({
|
|||||||
|
|
||||||
export const booruTabIcon = Box({
|
export const booruTabIcon = Box({
|
||||||
hpack: 'center',
|
hpack: 'center',
|
||||||
className: 'sidebar-chat-apiswitcher-icon',
|
|
||||||
homogeneous: true,
|
homogeneous: true,
|
||||||
children: [
|
children: [
|
||||||
MaterialIcon('gallery_thumbnail', 'norm'),
|
MaterialIcon('gallery_thumbnail', 'norm'),
|
||||||
@@ -349,7 +348,7 @@ export const booruView = Scrollable({
|
|||||||
// Always scroll to bottom with new content
|
// Always scroll to bottom with new content
|
||||||
const adjustment = scrolledWindow.get_vadjustment();
|
const adjustment = scrolledWindow.get_vadjustment();
|
||||||
adjustment.connect("changed", () => {
|
adjustment.connect("changed", () => {
|
||||||
if(!chatEntry.hasFocus) return;
|
if (!chatEntry.hasFocus) return;
|
||||||
adjustment.set_value(adjustment.get_upper() - adjustment.get_page_size());
|
adjustment.set_value(adjustment.get_upper() - adjustment.get_page_size());
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import { chatEntry } from '../apiwidgets.js';
|
|||||||
|
|
||||||
export const chatGPTTabIcon = Icon({
|
export const chatGPTTabIcon = Icon({
|
||||||
hpack: 'center',
|
hpack: 'center',
|
||||||
className: 'sidebar-chat-apiswitcher-icon',
|
|
||||||
icon: `openai-symbolic`,
|
icon: `openai-symbolic`,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ const MODEL_NAME = `Gemini`;
|
|||||||
|
|
||||||
export const geminiTabIcon = Icon({
|
export const geminiTabIcon = Icon({
|
||||||
hpack: 'center',
|
hpack: 'center',
|
||||||
className: 'sidebar-chat-apiswitcher-icon',
|
|
||||||
icon: `google-gemini-symbolic`,
|
icon: `google-gemini-symbolic`,
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -104,6 +103,15 @@ export const GeminiSettings = () => MarginRevealer({
|
|||||||
GeminiService.assistantPrompt = newValue;
|
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({
|
ConfigToggle({
|
||||||
icon: 'history',
|
icon: 'history',
|
||||||
name: 'History',
|
name: 'History',
|
||||||
|
|||||||
@@ -39,8 +39,6 @@ const CommandButton = (command) => Button({
|
|||||||
|
|
||||||
export const waifuTabIcon = Box({
|
export const waifuTabIcon = Box({
|
||||||
hpack: 'center',
|
hpack: 'center',
|
||||||
className: 'sidebar-chat-apiswitcher-icon',
|
|
||||||
homogeneous: true,
|
|
||||||
children: [
|
children: [
|
||||||
MaterialIcon('photo', 'norm'),
|
MaterialIcon('photo', 'norm'),
|
||||||
]
|
]
|
||||||
@@ -251,7 +249,7 @@ const WaifuImage = (taglist) => {
|
|||||||
else Utils.execAsync(['bash', '-c', `wget -O '${thisBlock.attribute.imagePath}' '${url}'`])
|
else Utils.execAsync(['bash', '-c', `wget -O '${thisBlock.attribute.imagePath}' '${url}'`])
|
||||||
.then(showImage)
|
.then(showImage)
|
||||||
.catch(print);
|
.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: [
|
children: [
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import { checkKeybind } from '../.widgetutils/keybind.js';
|
|||||||
const TextView = Widget.subclass(Gtk.TextView, "AgsTextView");
|
const TextView = Widget.subclass(Gtk.TextView, "AgsTextView");
|
||||||
|
|
||||||
import { widgetContent } from './sideleft.js';
|
import { widgetContent } from './sideleft.js';
|
||||||
|
import { IconTabContainer } from '../.commonwidgets/tabcontainer.js';
|
||||||
|
|
||||||
const EXPAND_INPUT_THRESHOLD = 30;
|
const EXPAND_INPUT_THRESHOLD = 30;
|
||||||
const APIS = [
|
const APIS = [
|
||||||
@@ -53,7 +54,6 @@ const APIS = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
let currentApiId = 0;
|
let currentApiId = 0;
|
||||||
APIS[currentApiId].tabIcon.toggleClassName('sidebar-chat-apiswitcher-icon-enabled', true);
|
|
||||||
|
|
||||||
function apiSendMessage(textView) {
|
function apiSendMessage(textView) {
|
||||||
// Get text
|
// Get text
|
||||||
@@ -75,6 +75,11 @@ export const chatEntry = TextView({
|
|||||||
acceptsTab: false,
|
acceptsTab: false,
|
||||||
className: 'sidebar-chat-entry txt txt-smallie',
|
className: 'sidebar-chat-entry txt txt-smallie',
|
||||||
setup: (self) => self
|
setup: (self) => self
|
||||||
|
.hook(App, (self, currentName, visible) => {
|
||||||
|
if (visible && currentName === 'sideleft') {
|
||||||
|
self.grab_focus();
|
||||||
|
}
|
||||||
|
})
|
||||||
.hook(GPTService, (self) => {
|
.hook(GPTService, (self) => {
|
||||||
if (APIS[currentApiId].name != 'Assistant (GPTs)') return;
|
if (APIS[currentApiId].name != 'Assistant (GPTs)') return;
|
||||||
self.placeholderText = (GPTService.key.length > 0 ? 'Message the model...' : 'Enter API Key...');
|
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({
|
const apiCommandStack = Stack({
|
||||||
transition: 'slide_up_down',
|
transition: 'slide_up_down',
|
||||||
transitionDuration: userOptions.animations.durationLarge,
|
transitionDuration: userOptions.animations.durationLarge,
|
||||||
@@ -189,41 +184,23 @@ const apiCommandStack = Stack({
|
|||||||
}, {}),
|
}, {}),
|
||||||
})
|
})
|
||||||
|
|
||||||
function switchToTab(id) {
|
export const apiContentStack = IconTabContainer({
|
||||||
APIS[currentApiId].tabIcon.toggleClassName('sidebar-chat-apiswitcher-icon-enabled', false);
|
tabSwitcherClassName: 'sidebar-chat-apiswitcher',
|
||||||
APIS[id].tabIcon.toggleClassName('sidebar-chat-apiswitcher-icon-enabled', true);
|
className: 'margin-top-5',
|
||||||
apiContentStack.shown = APIS[id].name;
|
iconWidgets: APIS.map((api) => api.tabIcon),
|
||||||
apiCommandStack.shown = APIS[id].name;
|
names: APIS.map((api) => api.name),
|
||||||
chatPlaceholder.label = APIS[id].placeholderText;
|
children: APIS.map((api) => api.contentWidget),
|
||||||
currentApiId = id;
|
onChange: (self, id) => {
|
||||||
}
|
apiCommandStack.shown = APIS[id].name;
|
||||||
|
chatPlaceholder.label = APIS[id].placeholderText;
|
||||||
const apiSwitcher = EventBox({
|
currentApiId = id;
|
||||||
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,
|
|
||||||
}),
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function switchToTab(id) {
|
||||||
|
apiContentStack.shown.value = id;
|
||||||
|
}
|
||||||
|
|
||||||
const apiWidgets = Widget.Box({
|
const apiWidgets = Widget.Box({
|
||||||
attribute: {
|
attribute: {
|
||||||
'nextTab': () => switchToTab(Math.min(currentApiId + 1, APIS.length - 1)),
|
'nextTab': () => switchToTab(Math.min(currentApiId + 1, APIS.length - 1)),
|
||||||
@@ -233,7 +210,6 @@ const apiWidgets = Widget.Box({
|
|||||||
className: 'spacing-v-10',
|
className: 'spacing-v-10',
|
||||||
homogeneous: false,
|
homogeneous: false,
|
||||||
children: [
|
children: [
|
||||||
apiSwitcher,
|
|
||||||
apiContentStack,
|
apiContentStack,
|
||||||
apiCommandStack,
|
apiCommandStack,
|
||||||
textboxArea,
|
textboxArea,
|
||||||
|
|||||||
@@ -41,8 +41,12 @@ if [[ "$1" = "#"* ]]; then # this is a color
|
|||||||
color_generation/applycolor.sh
|
color_generation/applycolor.sh
|
||||||
fi
|
fi
|
||||||
elif [ "$backend" = "material" ]; then
|
elif [ "$backend" = "material" ]; then
|
||||||
|
smartflag=''
|
||||||
|
if [ "$3" = "--smart" ]; then
|
||||||
|
smartflag='--smart True'
|
||||||
|
fi
|
||||||
color_generation/generate_colors_material.py --path "$1" \
|
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
|
> "$HOME"/.cache/ags/user/generated/material_colors.scss
|
||||||
if [ "$2" = "--apply" ]; then
|
if [ "$2" = "--apply" ]; then
|
||||||
cp "$HOME"/.cache/ags/user/generated/material_colors.scss "$HOME/.config/ags/scss/_material.scss"
|
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('--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('--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('--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('--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('--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')
|
parser.add_argument('--debug', action='store_true', default=False, help='debug mode')
|
||||||
args = parser.parse_args()
|
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):
|
def hex_to_argb(hex_color):
|
||||||
color = hex_color.lstrip('#')
|
color = hex_color.lstrip('#')
|
||||||
if len(color) != 6:
|
if len(color) != 6:
|
||||||
@@ -70,16 +51,44 @@ if args.path is not None:
|
|||||||
basewidth = 64
|
basewidth = 64
|
||||||
wpercent = (basewidth/float(img.size[0]))
|
wpercent = (basewidth/float(img.size[0]))
|
||||||
hsize = int((float(img.size[1])*float(wpercent)))
|
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)
|
argb = sourceColorFromImage(img)
|
||||||
if args.cache is not None:
|
if args.cache is not None:
|
||||||
export_color_file=os.environ['HOME'] + "/" + args.cache
|
export_color_file=os.environ['HOME'] + "/" + args.cache
|
||||||
with open(export_color_file, 'w') as file:
|
with open(export_color_file, 'w') as file:
|
||||||
file.write(argb_to_hex(argb))
|
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:
|
elif args.color is not None:
|
||||||
argb = hex_to_argb(args.color)
|
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():
|
for color in vars(MaterialDynamicColors).keys():
|
||||||
color_name = getattr(MaterialDynamicColors, color)
|
color_name = getattr(MaterialDynamicColors, color)
|
||||||
@@ -90,6 +99,13 @@ for color in vars(MaterialDynamicColors).keys():
|
|||||||
print('$' + color + ': ' + hex_color + ';')
|
print('$' + color + ': ' + hex_color + ';')
|
||||||
|
|
||||||
if args.debug == True:
|
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():
|
for color in vars(MaterialDynamicColors).keys():
|
||||||
color_name = getattr(MaterialDynamicColors, color)
|
color_name = getattr(MaterialDynamicColors, color)
|
||||||
if hasattr(color_name, "get_hct"):
|
if hasattr(color_name, "get_hct"):
|
||||||
|
|||||||
@@ -26,4 +26,4 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Generate colors for ags n stuff
|
# 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() {
|
getaudiooutput() {
|
||||||
pactl list sources | grep 'Name' | grep 'monitor' | cut -d ' ' -f2
|
pactl list sources | grep 'Name' | grep 'monitor' | cut -d ' ' -f2
|
||||||
}
|
}
|
||||||
|
getactivemonitor() {
|
||||||
|
hyprctl monitors -j | gojq -r '.[] | select(.focused == true) | .name'
|
||||||
|
}
|
||||||
|
|
||||||
cd ~/Videos || exit
|
cd ~/Videos || exit
|
||||||
if pgrep wf-recorder > /dev/null; then
|
if pgrep wf-recorder > /dev/null; then
|
||||||
@@ -16,11 +19,10 @@ else
|
|||||||
if [[ "$1" == "--sound" ]]; then
|
if [[ "$1" == "--sound" ]]; then
|
||||||
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t --geometry "$(slurp)" --audio="$(getaudiooutput)" & disown
|
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t --geometry "$(slurp)" --audio="$(getaudiooutput)" & disown
|
||||||
elif [[ "$1" == "--fullscreen-sound" ]]; then
|
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
|
elif [[ "$1" == "--fullscreen" ]]; then
|
||||||
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t & disown
|
wf-recorder -o $(getactivemonitor) --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t & disown
|
||||||
else
|
else
|
||||||
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t --geometry "$(slurp)" & disown
|
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t --geometry "$(slurp)" & disown
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ input-field {
|
|||||||
label { # Clock
|
label { # Clock
|
||||||
monitor =
|
monitor =
|
||||||
text = $TIME
|
text = $TIME
|
||||||
|
shadow_passes = 1
|
||||||
|
shadow_boost = 0.5
|
||||||
color = $text_color
|
color = $text_color
|
||||||
font_size = 65
|
font_size = 65
|
||||||
font_family = $font_family_clock
|
font_family = $font_family_clock
|
||||||
@@ -43,6 +45,8 @@ label { # Clock
|
|||||||
label { # Greeting
|
label { # Greeting
|
||||||
monitor =
|
monitor =
|
||||||
text = hi $USER !!!
|
text = hi $USER !!!
|
||||||
|
shadow_passes = 1
|
||||||
|
shadow_boost = 0.5
|
||||||
color = $text_color
|
color = $text_color
|
||||||
font_size = 20
|
font_size = 20
|
||||||
font_family = $font_family
|
font_family = $font_family
|
||||||
@@ -54,6 +58,8 @@ label { # Greeting
|
|||||||
label { # lock icon
|
label { # lock icon
|
||||||
monitor =
|
monitor =
|
||||||
text = lock
|
text = lock
|
||||||
|
shadow_passes = 1
|
||||||
|
shadow_boost = 0.5
|
||||||
color = $text_color
|
color = $text_color
|
||||||
font_size = 21
|
font_size = 21
|
||||||
font_family = $font_material_symbols
|
font_family = $font_material_symbols
|
||||||
@@ -65,6 +71,8 @@ label { # lock icon
|
|||||||
label { # "locked" text
|
label { # "locked" text
|
||||||
monitor =
|
monitor =
|
||||||
text = locked
|
text = locked
|
||||||
|
shadow_passes = 1
|
||||||
|
shadow_boost = 0.5
|
||||||
color = $text_color
|
color = $text_color
|
||||||
font_size = 14
|
font_size = 14
|
||||||
font_family = $font_family
|
font_family = $font_family
|
||||||
@@ -77,6 +85,8 @@ label { # "locked" text
|
|||||||
label { # Status
|
label { # Status
|
||||||
monitor =
|
monitor =
|
||||||
text = cmd[update:5000] ~/.config/hypr/hyprlock/status.sh
|
text = cmd[update:5000] ~/.config/hypr/hyprlock/status.sh
|
||||||
|
shadow_passes = 1
|
||||||
|
shadow_boost = 0.5
|
||||||
color = $text_color
|
color = $text_color
|
||||||
font_size = 14
|
font_size = 14
|
||||||
font_family = $font_family
|
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!
|
// Focus is the bar mode name, not the workspace state!
|
||||||
|
|
||||||
.bar-ws-focus {
|
.bar-ws-focus {
|
||||||
background-color: $layer2;
|
background-color: $surfaceVariant;
|
||||||
min-width: $bar_ws_width_focus;
|
min-width: $bar_ws_width_focus;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bar-ws-focus-active {
|
.bar-ws-focus-active {
|
||||||
min-width: $bar_ws_width_focus_active;
|
min-width: $bar_ws_width_focus_active;
|
||||||
background-color: $layer2;
|
background-color: $onLayer0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bar-ws-focus-occupied {
|
.bar-ws-focus-occupied {
|
||||||
background-color: $layer2;
|
background-color: $secondaryContainer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bar-clock-box {
|
.bar-clock-box {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
$transparency: 0.5;
|
$rootTransparency: 0.31; // Transparency = 1 - opacity
|
||||||
$transparentize_amount: 0.3;
|
$transparency: 0.8;
|
||||||
$transparentize_surface_amount: 0.7;
|
|
||||||
|
|
||||||
// Extended material
|
// Extended material
|
||||||
$success: #4f6354;
|
$success: #4f6354;
|
||||||
@@ -17,10 +16,8 @@ $onSuccessContainer: #0c1f13;
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Transparent versions
|
// Transparent versions
|
||||||
$t_surface: transparentize($surface, $transparentize_surface_amount);
|
|
||||||
|
|
||||||
@if $transparent == True {
|
@if $transparent == True {
|
||||||
$background: transparentize($background, $transparency);
|
$background: transparentize($background, $rootTransparency);
|
||||||
$surface: transparentize($surface, $transparency);
|
$surface: transparentize($surface, $transparency);
|
||||||
$surfaceDim: transparentize($surfaceDim, $transparency);
|
$surfaceDim: transparentize($surfaceDim, $transparency);
|
||||||
$surfaceBright: transparentize($surfaceBright, $transparency);
|
$surfaceBright: transparentize($surfaceBright, $transparency);
|
||||||
|
|||||||
@@ -2,11 +2,6 @@
|
|||||||
// border: 1px solid $onSurfaceVariant; // Debugging
|
// border: 1px solid $onSurfaceVariant; // Debugging
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// *:focus {
|
|
||||||
// outline: 1px solid mix($onSurface, $surface, 40%);
|
|
||||||
// -gtk-outline-radius: $rounding_small;
|
|
||||||
// }
|
|
||||||
|
|
||||||
* {
|
* {
|
||||||
selection {
|
selection {
|
||||||
background-color: $secondary;
|
background-color: $secondary;
|
||||||
@@ -27,11 +22,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
menu {
|
menu {
|
||||||
@include elevation-border-softer;
|
@include small-rounding;
|
||||||
|
border: 1px solid mix($surfaceContainer, $onBackground, 80%); // I hate this
|
||||||
padding: 0.681rem;
|
padding: 0.681rem;
|
||||||
background: $layer2;
|
background: opacify($surfaceContainer, 1);
|
||||||
color: $onLayer2;
|
color: $onSurface;
|
||||||
border-radius: 1.159rem;
|
|
||||||
-gtk-outline-radius: 1.159rem;
|
-gtk-outline-radius: 1.159rem;
|
||||||
|
|
||||||
animation-name: appear;
|
animation-name: appear;
|
||||||
@@ -89,9 +84,8 @@ tooltip {
|
|||||||
animation-timing-function: ease-out;
|
animation-timing-function: ease-out;
|
||||||
animation-iteration-count: 1;
|
animation-iteration-count: 1;
|
||||||
@include normal-rounding;
|
@include normal-rounding;
|
||||||
background-color: $surfaceVariant;
|
background-color: opacify($color: $inverseSurface, $amount: 1);
|
||||||
color: $onSurfaceVariant;
|
color: $inverseOnSurface;
|
||||||
border: 1px solid $onSurfaceVariant;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////
|
/////////////////////////////////////////
|
||||||
@@ -107,8 +101,8 @@ tooltip {
|
|||||||
popover {
|
popover {
|
||||||
@include elevation-border-softer;
|
@include elevation-border-softer;
|
||||||
padding: 0.681rem;
|
padding: 0.681rem;
|
||||||
background: $surfaceVariant;
|
background: $surfaceContainerHigh;
|
||||||
color: $onSurfaceVariant;
|
color: $onSurface;
|
||||||
border-radius: 1.159rem;
|
border-radius: 1.159rem;
|
||||||
-gtk-outline-radius: 1.159rem;
|
-gtk-outline-radius: 1.159rem;
|
||||||
|
|
||||||
@@ -123,17 +117,11 @@ popover {
|
|||||||
|
|
||||||
.configtoggle-box {
|
.configtoggle-box {
|
||||||
padding: 0.205rem 0.341rem;
|
padding: 0.205rem 0.341rem;
|
||||||
border: 0.136rem solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.configtoggle-box:focus {
|
|
||||||
border: 0.136rem solid mix($onSurface, $surface, 40%);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.switch-bg {
|
.switch-bg {
|
||||||
@include element_decel;
|
@include element_decel;
|
||||||
@include full-rounding;
|
@include full-rounding;
|
||||||
background-color: mix($surface, $background, 50%);
|
|
||||||
border: 0.136rem solid $onSurface;
|
border: 0.136rem solid $onSurface;
|
||||||
min-width: 2.864rem;
|
min-width: 2.864rem;
|
||||||
min-height: 1.637rem;
|
min-height: 1.637rem;
|
||||||
@@ -148,7 +136,7 @@ popover {
|
|||||||
@include full-rounding;
|
@include full-rounding;
|
||||||
@include menu_decel;
|
@include menu_decel;
|
||||||
background-color: $onSurface;
|
background-color: $onSurface;
|
||||||
color: $surface;
|
color: $layer1;
|
||||||
min-width: 0.819rem;
|
min-width: 0.819rem;
|
||||||
min-height: 0.819rem;
|
min-height: 0.819rem;
|
||||||
margin-left: 0.477rem;
|
margin-left: 0.477rem;
|
||||||
@@ -195,7 +183,7 @@ popover {
|
|||||||
|
|
||||||
.segment-btn:focus,
|
.segment-btn:focus,
|
||||||
.segment-btn:hover {
|
.segment-btn:hover {
|
||||||
background-color: $hovercolor;
|
background-color: $layer0Hover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.segment-btn-enabled {
|
.segment-btn-enabled {
|
||||||
@@ -215,13 +203,13 @@ popover {
|
|||||||
.multipleselection-btn {
|
.multipleselection-btn {
|
||||||
@include small-rounding;
|
@include small-rounding;
|
||||||
padding: 0rem 0.341rem;
|
padding: 0rem 0.341rem;
|
||||||
border: 0.034rem solid $outlineVariant;
|
border: 0.034rem solid $outline;
|
||||||
color: $onSurface;
|
color: $onSurface;
|
||||||
}
|
}
|
||||||
|
|
||||||
.multipleselection-btn:focus,
|
.multipleselection-btn:focus,
|
||||||
.multipleselection-btn:hover {
|
.multipleselection-btn:hover {
|
||||||
background-color: $hovercolor;
|
background-color: $layer0Hover;
|
||||||
color: $onSurface;
|
color: $onSurface;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,12 +252,15 @@ popover {
|
|||||||
@include small-rounding;
|
@include small-rounding;
|
||||||
@include element_decel;
|
@include element_decel;
|
||||||
min-height: 2.5rem;
|
min-height: 2.5rem;
|
||||||
color: $onSurface;
|
color: $onLayer0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-btn:hover {
|
||||||
|
background-color: $layer0Hover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-btn:hover,
|
|
||||||
.tab-btn:focus {
|
.tab-btn:focus {
|
||||||
background-color: $hovercolor;
|
background-color: $surfaceContainerLow;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-btn-active>box>label {
|
.tab-btn-active>box>label {
|
||||||
@@ -283,6 +274,20 @@ popover {
|
|||||||
color: $primary;
|
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 {
|
widget {
|
||||||
@include small-rounding;
|
@include small-rounding;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,14 +17,14 @@
|
|||||||
@include titlefont;
|
@include titlefont;
|
||||||
@include bg-textshadow;
|
@include bg-textshadow;
|
||||||
font-size: 5.795rem;
|
font-size: 5.795rem;
|
||||||
color: $onBackground;
|
color: $onLayer0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-time-date {
|
.bg-time-date {
|
||||||
@include titlefont;
|
@include titlefont;
|
||||||
@include bg-textshadow;
|
@include bg-textshadow;
|
||||||
font-size: 2.591rem;
|
font-size: 2.591rem;
|
||||||
color: $onBackground;
|
color: $onLayer0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-distro-box {
|
.bg-distro-box {
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
@include titlefont;
|
@include titlefont;
|
||||||
@include bg-textshadow;
|
@include bg-textshadow;
|
||||||
font-size: 1.432rem;
|
font-size: 1.432rem;
|
||||||
color: $onBackground;
|
color: $onLayer0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-distro-name {
|
.bg-distro-name {
|
||||||
@@ -61,9 +61,8 @@
|
|||||||
.bg-quicklaunch-btn {
|
.bg-quicklaunch-btn {
|
||||||
@include mainfont;
|
@include mainfont;
|
||||||
@include full-rounding;
|
@include full-rounding;
|
||||||
background-color: $surfaceVariant;
|
background-color: $layer2;
|
||||||
color: $onSurfaceVariant;
|
color: $onLayer2;
|
||||||
border: 0.068rem solid $subtext;
|
|
||||||
min-width: 4.432rem;
|
min-width: 4.432rem;
|
||||||
min-height: 2.045rem;
|
min-height: 2.045rem;
|
||||||
padding: 0.273rem 0.682rem;
|
padding: 0.273rem 0.682rem;
|
||||||
@@ -71,11 +70,11 @@
|
|||||||
|
|
||||||
.bg-quicklaunch-btn:hover,
|
.bg-quicklaunch-btn:hover,
|
||||||
.bg-quicklaunch-btn:focus {
|
.bg-quicklaunch-btn:focus {
|
||||||
background-color: mix($surfaceVariant, $onSurfaceVariant, 95%);
|
background-color: $layer2Hover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-quicklaunch-btn:active {
|
.bg-quicklaunch-btn:active {
|
||||||
background-color: mix($surfaceVariant, $onSurfaceVariant, 90%);
|
background-color: $layer2Active;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-system-bg {
|
.bg-system-bg {
|
||||||
@@ -85,10 +84,9 @@
|
|||||||
|
|
||||||
.bg-system-circprog {
|
.bg-system-circprog {
|
||||||
@include fluent_decel_long;
|
@include fluent_decel_long;
|
||||||
// margin-left: 0.273rem;
|
|
||||||
min-width: 0.205rem; // Trough stroke width
|
min-width: 0.205rem; // Trough stroke width
|
||||||
min-height: 4.091rem; // Diameter
|
min-height: 4.091rem; // Diameter
|
||||||
font-size: 0px;
|
font-size: 0px;
|
||||||
padding: 0rem;
|
padding: 0rem;
|
||||||
background-color: $surfaceVariant;
|
background-color: $layer2;
|
||||||
}
|
}
|
||||||
@@ -12,11 +12,11 @@
|
|||||||
|
|
||||||
.dock-app-btn:hover,
|
.dock-app-btn:hover,
|
||||||
.dock-app-btn:focus {
|
.dock-app-btn:focus {
|
||||||
background-color: mix($surface, $onSurface, 90%);
|
background-color: $layer0Hover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dock-app-btn:active {
|
.dock-app-btn:active {
|
||||||
background-color: mix($surface, $onSurface, 85%);
|
background-color: $layer0Active;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dock-app-icon {
|
.dock-app-icon {
|
||||||
@@ -27,5 +27,5 @@
|
|||||||
|
|
||||||
.dock-separator {
|
.dock-separator {
|
||||||
min-width: 0.068rem;
|
min-width: 0.068rem;
|
||||||
background-color: $surfaceVariant;
|
background-color: $outline;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ $rounding_large: 1.705rem;
|
|||||||
|
|
||||||
@mixin titlefont {
|
@mixin titlefont {
|
||||||
// Geometric sans-serif
|
// Geometric sans-serif
|
||||||
font-family: "Gabarito", "Poppins", "Lexend", sans-serif;
|
font-family: "Gabarito", "Poppins", "Readex Pro", "Lexend", sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin mainfont {
|
@mixin mainfont {
|
||||||
@@ -61,7 +61,7 @@ $rounding_large: 1.705rem;
|
|||||||
@mixin readingfont {
|
@mixin readingfont {
|
||||||
// The most readable fonts, for a comfortable reading experience
|
// The most readable fonts, for a comfortable reading experience
|
||||||
// in stuff like AI chat on sidebar
|
// 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;
|
// font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
@import './musicwal';
|
@import './musicwal';
|
||||||
@import './colors';
|
@import './colors';
|
||||||
@import './lib_mixins';
|
@import './lib_mixins';
|
||||||
|
$music_transparentize_amount: 0.3;
|
||||||
$music_gradient1: mix($color1, $background, 50%);
|
$music_gradient1: mix($color1, $background, 50%);
|
||||||
|
|
||||||
// @if $darkmode == True {
|
// @if $darkmode == True {
|
||||||
@@ -31,10 +32,10 @@ $onSecondaryContainer: mix($color7, $color2, 90%);
|
|||||||
background-color: $layer0;
|
background-color: $layer0;
|
||||||
padding: 0rem 1.023rem;
|
padding: 0rem 1.023rem;
|
||||||
background: // Inspired by Amberol
|
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(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 - $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%),
|
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
|
linear-gradient($background, $background), // We don't want wallpaper tint, so here's a fully opaque surface
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
.notif-low {
|
.notif-low {
|
||||||
@include notif-rounding;
|
@include notif-rounding;
|
||||||
background-color: $layer2;
|
background-color: $layer2;
|
||||||
color: $onSurfaceVariant;
|
color: $onLayer2;
|
||||||
padding: $rounding_small;
|
padding: $rounding_small;
|
||||||
padding-right: $rounding_small + 0.545rem;
|
padding-right: $rounding_small + 0.545rem;
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
.notif-normal {
|
.notif-normal {
|
||||||
@include notif-rounding;
|
@include notif-rounding;
|
||||||
background-color: $layer2;
|
background-color: $layer2;
|
||||||
color: $onSurfaceVariant;
|
color: $onLayer2;
|
||||||
padding: $rounding_small;
|
padding: $rounding_small;
|
||||||
padding-right: $rounding_small + 0.545rem;
|
padding-right: $rounding_small + 0.545rem;
|
||||||
}
|
}
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
min-width: 30.682rem;
|
min-width: 30.682rem;
|
||||||
background-color: $layer2;
|
background-color: $layer2;
|
||||||
border: 0.034rem solid $outlineVariant;
|
border: 0.034rem solid $outlineVariant;
|
||||||
color: $onSurfaceVariant;
|
color: $onLayer2;
|
||||||
padding: $rounding_small;
|
padding: $rounding_small;
|
||||||
padding-right: $rounding_small + 0.545rem;
|
padding-right: $rounding_small + 0.545rem;
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
min-width: 30.682rem;
|
min-width: 30.682rem;
|
||||||
background-color: $layer2;
|
background-color: $layer2;
|
||||||
border: 0.034rem solid $outlineVariant;
|
border: 0.034rem solid $outlineVariant;
|
||||||
color: $onSurfaceVariant;
|
color: $onLayer2;
|
||||||
padding: $rounding_small;
|
padding: $rounding_small;
|
||||||
padding-right: $rounding_small + 0.545rem;
|
padding-right: $rounding_small + 0.545rem;
|
||||||
}
|
}
|
||||||
@@ -129,11 +129,11 @@
|
|||||||
|
|
||||||
.notif-expand-btn:hover,
|
.notif-expand-btn:hover,
|
||||||
.notif-expand-btn:focus {
|
.notif-expand-btn:focus {
|
||||||
background: $hovercolor;
|
background: $layer2Hover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notif-expand-btn:active {
|
.notif-expand-btn:active {
|
||||||
background: $activecolor;
|
background: $layer2Active;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notif-listaction-btn {
|
.notif-listaction-btn {
|
||||||
@@ -143,11 +143,11 @@
|
|||||||
|
|
||||||
.notif-listaction-btn:hover,
|
.notif-listaction-btn:hover,
|
||||||
.notif-listaction-btn:focus {
|
.notif-listaction-btn:focus {
|
||||||
background-color: $hovercolor;
|
background-color: $layer2Hover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notif-listaction-btn:active {
|
.notif-listaction-btn:active {
|
||||||
background-color: $activecolor;
|
background-color: $layer2Active;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notif-listaction-btn-enabled {
|
.notif-listaction-btn-enabled {
|
||||||
@@ -166,7 +166,7 @@
|
|||||||
|
|
||||||
.osd-notif {
|
.osd-notif {
|
||||||
@include notif-rounding;
|
@include notif-rounding;
|
||||||
background-color: $background;
|
background-color: $layer0;
|
||||||
min-width: 30.682rem;
|
min-width: 30.682rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
|
|
||||||
.notif-action-low {
|
.notif-action-low {
|
||||||
background-color: $surfaceContainerHighest;
|
background-color: $surfaceContainerHighest;
|
||||||
color: $onSurfaceVariant;
|
color: $onLayer2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notif-action-low:focus,
|
.notif-action-low:focus,
|
||||||
@@ -218,7 +218,7 @@
|
|||||||
|
|
||||||
.notif-action-normal {
|
.notif-action-normal {
|
||||||
background-color: $surfaceContainerHighest;
|
background-color: $surfaceContainerHighest;
|
||||||
color: $onSurfaceVariant;
|
color: $onSurface;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notif-action-normal:focus,
|
.notif-action-normal:focus,
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.osd-colorscheme-settings {
|
.osd-colorscheme-settings {
|
||||||
background-color: $background;
|
background-color: $layer0;
|
||||||
padding: 0.313rem 0.626rem;
|
padding: 0.313rem 0.626rem;
|
||||||
@include small-rounding;
|
@include small-rounding;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,24 +116,22 @@
|
|||||||
.overview-tasks-window {
|
.overview-tasks-window {
|
||||||
@include normal-rounding;
|
@include normal-rounding;
|
||||||
@include menu_decel;
|
@include menu_decel;
|
||||||
background-color: $layer2;
|
background-color: transparentize($layer3, 0.2);
|
||||||
color: $onSurface;
|
color: $onSurface;
|
||||||
border: 0.068rem solid $surfaceContainerHighest;
|
border: 0.068rem solid $surfaceContainerHighest;
|
||||||
}
|
}
|
||||||
|
|
||||||
.overview-tasks-window:hover,
|
.overview-tasks-window:hover,
|
||||||
.overview-tasks-window:focus {
|
.overview-tasks-window:focus {
|
||||||
background-color: $secondaryContainer;
|
background-color: transparentize($secondaryContainer, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
.overview-tasks-window:active {
|
.overview-tasks-window:active {
|
||||||
background-color: $tertiaryContainer;
|
background-color: transparentize($secondaryContainer, 0.3);
|
||||||
background-color: mix($secondaryContainer, $hovercolor, 70%);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.overview-tasks-window-selected {
|
.overview-tasks-window-selected {
|
||||||
background-color: $tertiaryContainer;
|
background-color: transparentize($secondaryContainer, 0.3);
|
||||||
background-color: mix($secondaryContainer, $hovercolor, 70%);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.overview-tasks-window-dragging {
|
.overview-tasks-window-dragging {
|
||||||
|
|||||||
@@ -498,20 +498,6 @@ $colorpicker_rounding: 0.341rem;
|
|||||||
background-color: $layer1;
|
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 {
|
.sidebar-chat-providerswitcher {
|
||||||
@include small-rounding;
|
@include small-rounding;
|
||||||
padding: 0.477rem 0.682rem;
|
padding: 0.477rem 0.682rem;
|
||||||
@@ -800,7 +786,7 @@ $colorpicker_rounding: 0.341rem;
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-waifu-txt {
|
.sidebar-waifu-txt {
|
||||||
@include readingfont;
|
@include mainfont;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-waifu-image {
|
.sidebar-waifu-image {
|
||||||
|
|||||||
@@ -192,6 +192,9 @@ class GeminiService extends Service {
|
|||||||
this._usingHistory = value;
|
this._usingHistory = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get safe() { return this._safe }
|
||||||
|
set safe(value) { this._safe = value; }
|
||||||
|
|
||||||
get temperature() { return this._temperature }
|
get temperature() { return this._temperature }
|
||||||
set temperature(value) { this._temperature = value; }
|
set temperature(value) { this._temperature = value; }
|
||||||
|
|
||||||
@@ -282,13 +285,13 @@ class GeminiService extends Service {
|
|||||||
const body =
|
const body =
|
||||||
{
|
{
|
||||||
"contents": this._messages.map(msg => { let m = { role: msg.role, parts: msg.parts }; return m; }),
|
"contents": this._messages.map(msg => { let m = { role: msg.role, parts: msg.parts }; return m; }),
|
||||||
// "safetySettings": [
|
"safetySettings": this._safe ? [] : [
|
||||||
// { category: "HARM_CATEGORY_DEROGATORY", threshold: "BLOCK_NONE", },
|
// { category: "HARM_CATEGORY_DEROGATORY", threshold: "BLOCK_NONE", },
|
||||||
// { category: "HARM_CATEGORY_HARASSMENT", threshold: "BLOCK_NONE", },
|
{ category: "HARM_CATEGORY_HARASSMENT", threshold: "BLOCK_NONE", },
|
||||||
// { category: "HARM_CATEGORY_HATE_SPEECH", threshold: "BLOCK_NONE", },
|
{ category: "HARM_CATEGORY_HATE_SPEECH", threshold: "BLOCK_NONE", },
|
||||||
// { category: "HARM_CATEGORY_SEXUALLY_EXPLICIT", threshold: "BLOCK_NONE", },
|
{ category: "HARM_CATEGORY_SEXUALLY_EXPLICIT", threshold: "BLOCK_NONE", },
|
||||||
// { category: "HARM_CATEGORY_UNSPECIFIED", threshold: "BLOCK_NONE", },
|
// { category: "HARM_CATEGORY_UNSPECIFIED", threshold: "BLOCK_NONE", },
|
||||||
// ],
|
],
|
||||||
"generationConfig": {
|
"generationConfig": {
|
||||||
"temperature": this._temperature,
|
"temperature": this._temperature,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ input {
|
|||||||
clickfinger_behavior = true
|
clickfinger_behavior = true
|
||||||
scroll_factor = 0.5
|
scroll_factor = 0.5
|
||||||
}
|
}
|
||||||
|
|
||||||
special_fallthrough = true
|
special_fallthrough = true
|
||||||
follow_mouse = 1
|
follow_mouse = 1
|
||||||
}
|
}
|
||||||
@@ -74,7 +73,7 @@ decoration {
|
|||||||
xray = true
|
xray = true
|
||||||
special = false
|
special = false
|
||||||
new_optimizations = true
|
new_optimizations = true
|
||||||
size = 5
|
size = 7
|
||||||
passes = 4
|
passes = 4
|
||||||
brightness = 1
|
brightness = 1
|
||||||
noise = 0.01
|
noise = 0.01
|
||||||
|
|||||||
@@ -58,6 +58,8 @@ bind = Super+Shift,J,exec,grim -g "$(slurp $SLURP_ARGS)" "tmp.png" && tesseract
|
|||||||
# Media
|
# Media
|
||||||
bindl= Super+Shift, N, exec, playerctl next || playerctl position `bc <<< "100 * $(playerctl metadata mpris:length) / 1000000 / 100"`
|
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"`
|
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, B, exec, playerctl previous
|
||||||
bindl= Super+Shift, P, exec, playerctl play-pause
|
bindl= Super+Shift, P, exec, playerctl play-pause
|
||||||
bindl= ,XF86AudioPlay, exec, playerctl play-pause
|
bindl= ,XF86AudioPlay, exec, playerctl play-pause
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# ######## Window rules ########
|
# ######## 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 = opacity 0.89 override 0.89 override, .* # Applies transparency to EVERY WINDOW
|
||||||
windowrule = float, ^(blueberry.py)$
|
windowrule = float, ^(blueberry.py)$
|
||||||
windowrule = float, ^(steam)$
|
windowrule = float, ^(steam)$
|
||||||
@@ -8,7 +7,6 @@ windowrule = float, ^(guifetch)$ # FlafyDev/guifetch
|
|||||||
windowrulev2 = tile,class:(wps)
|
windowrulev2 = tile,class:(wps)
|
||||||
windowrulev2 = tile,class:(dev.warp.Warp)
|
windowrulev2 = tile,class:(dev.warp.Warp)
|
||||||
|
|
||||||
|
|
||||||
# Dialogs
|
# Dialogs
|
||||||
windowrule=float,title:^(Open File)(.*)$
|
windowrule=float,title:^(Open File)(.*)$
|
||||||
windowrule=float,title:^(Select a File)(.*)$
|
windowrule=float,title:^(Select a File)(.*)$
|
||||||
@@ -18,7 +16,7 @@ windowrule=float,title:^(Save As)(.*)$
|
|||||||
windowrule=float,title:^(Library)(.*)$
|
windowrule=float,title:^(Library)(.*)$
|
||||||
|
|
||||||
# ######## Layer rules ########
|
# ######## Layer rules ########
|
||||||
layerrule = xray 0, .*
|
layerrule = xray 1, .*
|
||||||
# layerrule = noanim, .*
|
# layerrule = noanim, .*
|
||||||
layerrule = noanim, selection
|
layerrule = noanim, selection
|
||||||
layerrule = noanim, overview
|
layerrule = noanim, overview
|
||||||
@@ -27,10 +25,7 @@ layerrule = noanim, sideleft
|
|||||||
layerrule = noanim, sideright
|
layerrule = noanim, sideright
|
||||||
layerrule = noanim, osk
|
layerrule = noanim, osk
|
||||||
|
|
||||||
layerrule = blur, eww
|
|
||||||
layerrule = ignorealpha 0.8, eww
|
|
||||||
layerrule = noanim, noanim
|
layerrule = noanim, noanim
|
||||||
layerrule = blur, noanim
|
|
||||||
layerrule = blur, gtk-layer-shell
|
layerrule = blur, gtk-layer-shell
|
||||||
layerrule = ignorezero, gtk-layer-shell
|
layerrule = ignorezero, gtk-layer-shell
|
||||||
layerrule = blur, launcher
|
layerrule = blur, launcher
|
||||||
@@ -44,22 +39,23 @@ layerrule = noanim, sideright
|
|||||||
layerrule = noanim, sideleft
|
layerrule = noanim, sideleft
|
||||||
|
|
||||||
layerrule = blur, bar
|
layerrule = blur, bar
|
||||||
layerrule = ignorealpha 0.20, bar
|
layerrule = ignorealpha 0.6, bar
|
||||||
layerrule = blur, corner.*
|
layerrule = blur, corner.*
|
||||||
layerrule = ignorealpha 0.20, corner.*
|
layerrule = ignorealpha 0.6, corner.*
|
||||||
layerrule = blur, dock
|
layerrule = blur, dock
|
||||||
layerrule = ignorealpha 0.20, dock
|
layerrule = ignorealpha 0.6, dock
|
||||||
layerrule = blur, indicator.*
|
layerrule = blur, indicator.*
|
||||||
layerrule = ignorealpha 0.20, indicator.*
|
layerrule = ignorealpha 0.6, indicator.*
|
||||||
layerrule = blur, overview
|
layerrule = blur, overview
|
||||||
layerrule = ignorealpha 0.20, overview
|
layerrule = ignorealpha 0.6, overview
|
||||||
layerrule = blur, cheatsheet
|
layerrule = blur, cheatsheet
|
||||||
layerrule = ignorealpha 0.20, cheatsheet
|
layerrule = ignorealpha 0.6, cheatsheet
|
||||||
layerrule = blur, sideright
|
layerrule = blur, sideright
|
||||||
layerrule = ignorealpha 0.20, sideright
|
layerrule = ignorealpha 0.6, sideright
|
||||||
layerrule = blur, sideleft
|
layerrule = blur, sideleft
|
||||||
layerrule = ignorealpha 0.20, sideleft
|
layerrule = ignorealpha 0.6, sideleft
|
||||||
layerrule = blur, indicator*
|
layerrule = blur, indicator*
|
||||||
layerrule = ignorealpha 0.20, indicator*
|
layerrule = ignorealpha 0.6, indicator*
|
||||||
layerrule = blur, osk
|
layerrule = blur, osk
|
||||||
layerrule = ignorealpha 0.20, osk
|
layerrule = ignorealpha 0.6, osk
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
$text_color = rgba(ede0deFF)
|
$text_color = rgba(E2E2E2FF)
|
||||||
$entry_background_color = rgba(130F0F11)
|
$entry_background_color = rgba(13131311)
|
||||||
$entry_border_color = rgba(a08c8955)
|
$entry_border_color = rgba(91919155)
|
||||||
$entry_color = rgba(d8c2bfFF)
|
$entry_color = rgba(C6C6C6FF)
|
||||||
$font_family = Gabarito
|
$font_family = Gabarito
|
||||||
$font_family_clock = Gabarito
|
$font_family_clock = Gabarito
|
||||||
$font_material_symbols = Material Symbols Rounded
|
$font_material_symbols = Material Symbols Rounded
|
||||||
|
|
||||||
background {
|
background {
|
||||||
color = rgba(130F0F77)
|
color = rgba(13131377)
|
||||||
# path = {{ SWWW_WALL }}
|
# path = {{ SWWW_WALL }}
|
||||||
path = screenshot
|
path = screenshot
|
||||||
blur_size = 5
|
blur_size = 5
|
||||||
@@ -32,6 +32,8 @@ input-field {
|
|||||||
label { # Clock
|
label { # Clock
|
||||||
monitor =
|
monitor =
|
||||||
text = $TIME
|
text = $TIME
|
||||||
|
shadow_passes = 1
|
||||||
|
shadow_boost = 0.5
|
||||||
color = $text_color
|
color = $text_color
|
||||||
font_size = 65
|
font_size = 65
|
||||||
font_family = $font_family_clock
|
font_family = $font_family_clock
|
||||||
@@ -43,6 +45,8 @@ label { # Clock
|
|||||||
label { # Greeting
|
label { # Greeting
|
||||||
monitor =
|
monitor =
|
||||||
text = hi $USER !!!
|
text = hi $USER !!!
|
||||||
|
shadow_passes = 1
|
||||||
|
shadow_boost = 0.5
|
||||||
color = $text_color
|
color = $text_color
|
||||||
font_size = 20
|
font_size = 20
|
||||||
font_family = $font_family
|
font_family = $font_family
|
||||||
@@ -54,6 +58,8 @@ label { # Greeting
|
|||||||
label { # lock icon
|
label { # lock icon
|
||||||
monitor =
|
monitor =
|
||||||
text = lock
|
text = lock
|
||||||
|
shadow_passes = 1
|
||||||
|
shadow_boost = 0.5
|
||||||
color = $text_color
|
color = $text_color
|
||||||
font_size = 21
|
font_size = 21
|
||||||
font_family = $font_material_symbols
|
font_family = $font_material_symbols
|
||||||
@@ -65,6 +71,8 @@ label { # lock icon
|
|||||||
label { # "locked" text
|
label { # "locked" text
|
||||||
monitor =
|
monitor =
|
||||||
text = locked
|
text = locked
|
||||||
|
shadow_passes = 1
|
||||||
|
shadow_boost = 0.5
|
||||||
color = $text_color
|
color = $text_color
|
||||||
font_size = 14
|
font_size = 14
|
||||||
font_family = $font_family
|
font_family = $font_family
|
||||||
@@ -77,6 +85,8 @@ label { # "locked" text
|
|||||||
label { # Status
|
label { # Status
|
||||||
monitor =
|
monitor =
|
||||||
text = cmd[update:5000] ~/.config/hypr/hyprlock/status.sh
|
text = cmd[update:5000] ~/.config/hypr/hyprlock/status.sh
|
||||||
|
shadow_passes = 1
|
||||||
|
shadow_boost = 0.5
|
||||||
color = $text_color
|
color = $text_color
|
||||||
font_size = 14
|
font_size = 14
|
||||||
font_family = $font_family
|
font_family = $font_family
|
||||||
|
|||||||
@@ -41,10 +41,21 @@
|
|||||||
</details>
|
</details>
|
||||||
|
|
||||||
### [illogical_impulse](https://github.com/end-4/dots-hyprland/tree/illogical-impulse)
|
### [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]
|
> [!WARNING]
|
||||||
> - Only the above is maintained
|
> - Only the above is maintained
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ python-build python-material-color-utilities python-materialyoucolor-git python-
|
|||||||
|
|
||||||
### Basic graphic env
|
### Basic graphic env
|
||||||
hyprland-git xorg-xrandr
|
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
|
### Player and Audio
|
||||||
pavucontrol wireplumber libdbusmenu-gtk3 plasma-browser-integration playerctl swww
|
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
|
python-pywayland python-psutil hypridle-git hyprlock-git wlogout wl-clipboard hyprpicker-git anyrun-git
|
||||||
|
|
||||||
### Fonts and Themes
|
### 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
|
### Screenshot and Recoder
|
||||||
swappy wf-recorder grim tesseract tesseract-data-eng slurp
|
swappy wf-recorder grim tesseract tesseract-data-eng slurp
|
||||||
|
|||||||
Reference in New Issue
Block a user