diff --git a/user_config/bin/newton b/user_config/bin/newton
new file mode 100755
index 0000000..5eed8c6
--- /dev/null
+++ b/user_config/bin/newton
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+# . CONFIG.sh
+
+# set -o xtrace ## To debug scripts
+# set -o errexit ## To exit on error
+# set -o errunset ## To exit if a variable is referenced but not set
+
+
+function main() {
+ call_path=`pwd`
+
+ files=()
+ for f in "$@"; do
+ target=$(readlink -f "${f}")
+ i="${#files[@]}"
+ size=$(($i + 1))
+ files[$size]="${target}"
+ done
+
+ cd "/opt/"
+ python /opt/newton.zip "${files[@]}"
+}
+main "$@";
diff --git a/user_config/local/share/gtksourceview-4/language-specs/c.lang b/user_config/local/share/gtksourceview-4/language-specs/c.lang
new file mode 100644
index 0000000..8dcf2dd
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/c.lang
@@ -0,0 +1,388 @@
+
+
+
+
+ text/x-c;text/x-csrc;image/x-xpixmap
+ *.c
+ //
+ /*
+ */
+ .c
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+ ^\s*#\s*
+
+ \\( # leading backslash
+ [\\\"\'nrbtfav\?] | # escaped character
+ [0-7]{1,3} | # one, two, or three octal digits
+ x[0-9A-Fa-f]+ | # 'x' followed by hex digits
+ u[0-9A-Fa-f]{4} | # 'u' followed by 4 hex digits
+ U[0-9A-Fa-f]{8} # 'U' followed by 8 hex digits
+ )
+
+
+
+
+
+
+
+ \%\%|\%
+ (?:[1-9][0-9]*\$)? # argument
+ [#0\-\ \+\'I]* # flags
+ (?:[1-9][0-9]*|\*)? # width
+ (?:\.\-?(?:[0-9]+|\*))? # precision
+ (?:hh|ll|[hlLqjzt])? # length modifier
+ [diouxXeEfFgGaAcsCSpnm] # conversion specifier
+
+
+
+
+
+
+
+
+
+ \%{preproc-start}
+ (include|import)\s*
+ (<.*?>)
+
+
+
+
+
+
+
+
+ \%{preproc-start}
+ (include|import)\s*
+ (".*?")
+
+
+
+
+
+
+
+
+ \%{preproc-start}
+ (define|undef|error|pragma|ident|if(n?def)?|else|elif(n?def)?|endif|line|warning|embed)
+ \b
+
+
+
+
+
+
+
+
+
+
+ (L|u8|u|U)?"
+ "
+
+
+
+ \%{escaped-character}
+
+
+
+
+
+
+ (L|u8|u|U)?'(\%{escaped-character}|.)'
+
+
+
+
+
+ (?<![\w\.])
+ ((\.[0-9]+ | [0-9]+\.[0-9]*) ([Ee][+-]?[0-9]+)? |
+ ([0-9]+[Ee][+-]?[0-9]+) |
+ (0[xX][a-fA-F0-9]*\.?[a-fA-F0-9]*[pP][+-]?[0-9]+))
+ [fFlL]?
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[xX][a-fA-F0-9]+[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[xX][a-fA-F0-9]*[g-zG-Z][a-zA-Z0-9]*[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[0-7]+[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[0-7]*[89][0-9]*[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[bB][01]+[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[bB][01]*[2-9][a-zA-Z0-9]*[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ (0|[1-9][0-9]*)[uUlL]*
+ (?![\w\.])
+
+
+
+
+ asm
+ break
+ case
+ constexpr
+ continue
+ default
+ do
+ else
+ for
+ fortran
+ goto
+ if
+ return
+ switch
+ while
+
+
+
+ enum
+ struct
+ typedef
+ union
+
+
+
+ (_A|a)lignof
+ _Generic
+ offsetof
+ (_S|s)tatic_assert
+ sizeof
+ typeof
+
+
+
+ (_B|b)ool
+ _Complex
+ _Imaginary
+ char
+ double
+ float
+ int
+ long
+ short
+ signed
+ unsigned
+ void
+ [a-z_][0-9a-z_]+(_t|_T)
+
+
+
+ (_A|a)lignas
+ _Atomic
+ (_N|n)oreturn
+ (_T|t)hread_local
+ auto
+ const
+ extern
+ inline
+ register
+ restrict
+ static
+ volatile
+
+
+
+
+ true
+ false
+
+
+
+ nullptr
+
+
+
+ NULL
+ MAX
+ MIN
+ TRUE
+ FALSE
+ __LINE__
+ __DATE__
+ __FILE__
+ __func__
+ __TIME__
+ __STDC__
+
+
+
+ stdin
+ stdout
+ stderr
+
+
+
+ SIGABRT
+ SIGALRM
+ SIGCHLD
+ SIGCONT
+ SIGFPE
+ SIGHUP
+ SIGILL
+ SIGINT
+ SIGKILL
+ SIGPIPE
+ SIGQUIT
+ SIGSEGV
+ SIGSTOP
+ SIGTERM
+ SIGTRAP
+ SIGTSTP
+ SIGTTIN
+ SIGTTOU
+ SIGUSR1
+ SIGUSR2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/cpp.lang b/user_config/local/share/gtksourceview-4/language-specs/cpp.lang
new file mode 100644
index 0000000..0265b37
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/cpp.lang
@@ -0,0 +1,132 @@
+
+
+
+
+ text/x-c++;text/x-cpp;text/x-c++src
+ *.cpp;*.cxx;*.cc;*.C;*.c++;*.tpp
+ //
+ /*
+ */
+ .cc
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+
+
+
+
+
+ R"([^\(\)\\ ]*)\(
+ \)\%{1@start}"
+
+
+
+ and
+ and_eq
+ bitand
+ bitor
+ catch
+ compl
+ concept
+ consteval
+ constinit
+ const_cast
+ co_await
+ co_return
+ co_yield
+ decltype
+ delete
+ dynamic_cast
+ export
+ final
+ friend
+ import
+ module
+ new
+ noexcept
+ not
+ not_eq
+ operator
+ or
+ or_eq
+ override
+ private
+ protected
+ public
+ reinterpret_cast
+ requires
+ static_cast
+ this
+ thread_local
+ throw
+ try
+ typeid
+ using
+ xor
+ xor_eq
+
+ class
+ namespace
+ typename
+ template
+ virtual
+
+
+
+ explicit
+ mutable
+
+
+
+ __STDC__
+ __cplusplus
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/csharp.lang b/user_config/local/share/gtksourceview-4/language-specs/csharp.lang
new file mode 100644
index 0000000..07cb003
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/csharp.lang
@@ -0,0 +1,297 @@
+
+
+
+
+ text/x-csharpsrc;text/x-csharp
+ *.cs
+ //
+ /*
+ */
+ .cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+
+
+
+
+
+ ^\s*#\s*
+
+
+
+
+
+ \%{preproc-start}
+ (define|undef|if(n?def)?|else|elif|endif|line|error|warning|region|endregion)
+ \b
+
+
+
+
+
+
+
+
+ @"
+ "
+
+
+
+ async
+ await
+ class
+ delegate
+ enum
+ event
+ interface
+ namespace
+ struct
+ using
+ abstract
+ const
+ explicit
+ extern
+ fixed
+ implicit
+ internal
+ lock
+ out
+ override
+ params
+ partial
+ private
+ protected
+ public
+ record
+ ref
+ sealed
+ static
+ readonly
+ unsafe
+ virtual
+ volatile
+ add
+ as
+ assembly
+ base
+ break
+ case
+ catch
+ checked
+ continue
+ default
+ do
+ else
+ finally
+ for
+ foreach
+ get
+ goto
+ if
+ in
+ init
+ is
+ nameof
+ new
+ remove
+ return
+ set
+ sizeof
+ stackalloc
+ super
+ switch
+ this
+ throw
+ try
+ typeof
+ unchecked
+ value
+ var
+ void
+ while
+ yield
+
+
+
+ bool
+ byte
+ char
+ decimal
+ double
+ dynamic
+ float
+ int
+ long
+ object
+ operator
+ sbyte
+ short
+ string
+ uint
+ ulong
+ ushort
+
+
+
+ null
+
+
+
+ false
+ true
+
+
+
+
+ (?<![\w\.])
+ [0-9]+[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[xX][a-fA-F0-9]+[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ ((\.[0-9]+|[0-9]+\.[0-9]*)([Ee][+-]?[0-9]*)?[FfDdMm]?|
+ ([0-9]+[Ee][+-]?[0-9]*)[FfDdMm]? |
+ ([0-9]+)[FfDdMm])
+ (?![\w\.])
+
+
+
+
+
+ \\( # leading backslash
+ [\\\"\'nrbtfav\?] | # escaped character
+ [0-7]{1,3} | # one, two, or three octal digits
+ x[0-9A-Fa-f]+ # 'x' followed by hex digits
+ )
+
+
+
+ "
+ "
+
+
+ {[0-9][0-9:\#\%,./cdefgnrxtsuDTFGMY]*}
+
+
+ \%{escaped-character}
+
+
+
+
+
+
+
+ '(\%{escaped-character}|.)'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/def.lang b/user_config/local/share/gtksourceview-4/language-specs/def.lang
new file mode 100644
index 0000000..c127a30
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/def.lang
@@ -0,0 +1,315 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $^
+
+
+
+ (?!\x{2E2F}) [\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}]
+
+
+ (?!\x{2E2F}) [\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}]
+
+
+ (?![\x{037A}\x{0E33}\x{0EB3}\x{309B}-\x{309C}\x{FC5E}-\x{FC63}\x{FDFA}-\x{FDFB}\x{FE70}\x{FE72}\x{FE74}\x{FE76}\x{FE78}\x{FE7A}\x{FE7C}\x{FE7E}\x{FF9E}-\x{FF9F}])
+ \%{unicode-id-start}
+
+
+ (?![\x{037A}\x{309B}-\x{309C}\x{FC5E}-\x{FC63}\x{FDFA}-\x{FDFB}\x{FE70}\x{FE72}\x{FE74}\x{FE76}\x{FE78}\x{FE7A}\x{FE7C}\x{FE7E}])
+ \%{unicode-id-continue}
+
+
+
+ (?<![\w\.]) ([1-9][0-9]* | 0) (?![\w\.])
+
+
+ (?<![\w\.]) 0 [0-7]+ (?![\w\.])
+
+
+ (?<![\w\.]) 0 [xX] [0-9a-fA-F]+ (?![\w\.])
+
+
+ \b
+ ([0-9]+ e [-+]? [0-9]+ |
+ ([0-9]* \. [0-9]+ | [0-9]+ \.)
+ (e [-+]? [0-9]+)?) [fl]?
+ \b
+
+
+
+ \%{decimal}
+
+
+ \%{octal}
+
+
+ \%{hexadecimal}
+
+
+ \%{float}
+
+
+
+
+ \%[ # separator
+ (https?|ftp|nntp|news|javascript|about): # protocol
+ [^\ \\]* [^\ \\.:;,?><)] # address
+ (?![a-z0-9_.-]) # separator
+
+
+
+ \%[ # separator
+ (mailto:)? # optional "mailto:"
+ [a-z0-9_.+-]+ # user name
+ @ # at
+ [a-z0-9_.+-]+ # domain
+ \%] # separator
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \\$
+ ^
+
+
+
+
+
+
+ ^#!
+ $
+
+
+
+ \\.
+
+
+
+
+ "
+ "
+
+
+
+
+
+
+
+
+ '
+ '
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/gdscript.lang b/user_config/local/share/gtksourceview-4/language-specs/gdscript.lang
new file mode 100644
index 0000000..ae625bf
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/gdscript.lang
@@ -0,0 +1,277 @@
+
+
+
+
+
+ text/x-gdscript
+ *.gd
+ #
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+ [_a-zA-Z][_a-zA-Z0-9]*
+ [1-9][0-9]*
+
+
+
+ % # leading % sign
+ \(\%{identifier}\)? # mapping key
+ [#0\-\ \+]* # conversion flags
+ (\-?\%{number}|\*)? # minimum field width
+ (\.(\-?\%{number}|\*))? # precision
+ (hlL)? # length modifier
+ [diouxXeEfFgGcrs%] # conversion type
+
+
+
+
+
+
+ \\( # leading backslash
+ [\\\"\'nrbtfav\?] | # escaped character
+ [0-7]{1,3} | # one, two, or three octal digits
+ x[0-9A-Fa-f]+ # 'x' followed by hex digits
+ )
+
+
+
+
+ "
+ "
+
+
+
+
+
+
+
+
+ '
+ '
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (?<![\w\.])
+ _init
+ _ready
+
+
+
+ (?<![\w\.])
+ false
+ true
+
+
+
+ ( (\d+)?\.\d+ | \d+\. ) |
+ ( (\d+|(\d+)?\.\d+|\d+\.)[eE][+-]?\d+ )
+
+
+
+ (?<![\w\.])(\%{float}|\d+)[jJ]\b
+
+
+
+ (?<![\w\.])\%{float}(?![\w\.])
+
+
+
+ (?<![\w\.])([1-9][0-9]*|0)[lL]?(?![\w\.])
+
+
+
+ (?<![\w\.])0[0-7]+[lL]?(?![\w\.])
+
+
+
+ (?<![\w\.])0[xX][0-9A-Fa-f]+[lL]?(?![\w\.])
+
+
+
+ extends
+ preload
+
+
+
+ (?<![\w\.])
+ null
+
+
+
+ and
+ assert
+ break
+ breakpoint
+ class
+ const
+ continue
+ elif
+ else
+ enum
+ export
+ extends
+ false
+ float
+ for
+ func
+ if
+ in
+ int
+ not
+ null
+ onready
+ or
+ pass
+ return
+ self
+ setget
+ signal
+ static
+ tool
+ true
+ var
+ while
+ yield
+
+
+
+ (?<![\w\.])
+ Vector2
+ Size2
+ Rect2
+ Vector3
+ Matrix32
+ Plane
+ Quat
+ AABB
+ Box3
+ Matrix3
+ Transform
+ Color
+ Image
+ NodePath
+ RID
+ Object
+ InputEvent
+
+
+
+ (?<![\w\.])
+ print
+ sin
+ cos
+ tan
+ sinh
+ cosh
+ tanh
+ asin
+ acos
+ atan
+ atan2
+ sqrt
+ fmod
+ fposmod
+ floor
+ ceil
+ round
+ abs
+ sign
+ pow
+ log
+ exp
+ isnan
+ isinf
+ ease
+ decimals
+ stepify
+ lerp
+ dectime
+ randomize
+ rand
+ randi
+ randf
+ rand_range
+ rand_seed
+ deg2rad
+ rad2deg
+ linear2db
+ db2linear
+ max
+ min
+ clamp
+ nearest_po2
+ weakref
+ convert
+ str
+ print
+ printt
+ printerr
+ printraw
+ range
+ load
+ inst2dict
+ dict2inst
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/java.lang b/user_config/local/share/gtksourceview-4/language-specs/java.lang
new file mode 100644
index 0000000..af7c6c8
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/java.lang
@@ -0,0 +1,259 @@
+
+
+
+
+ text/x-java
+ *.java
+ //
+ /*
+ */
+ .java
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+ \\( # leading backslash
+ [\\\"\'nrbtf] | # escaped character
+ [0-7]{1,3} | # latin encoded char
+ u[0-9a-fA-F]{4} # unicode char
+ )
+
+
+
+
+
+ "
+ "
+
+
+ \%{escaped-character}
+
+
+
+
+
+ """\s*$
+ """
+
+
+ \%{escaped-character}
+
+
+
+
+
+ '((\%{escaped-character})|.)'
+
+
+
+
+
+
+ \B@\w*
+
+
+
+ exports
+ import
+ module
+ open
+ opens
+ package
+ provides
+ requires
+ to
+ transitive
+ uses
+ with
+
+
+
+ class
+ enum
+ extends
+ implements
+ instanceof
+ interface
+ native
+ non-sealed
+ permits
+ record
+ sealed
+ throws
+
+
+
+ boolean
+ byte
+ char
+ double
+ float
+ int
+ long
+ short
+ var
+ void
+
+
+
+ abstract
+ final
+ static
+ strictfp
+ synchronized
+ transient
+ volatile
+
+
+
+ private
+ protected
+ public
+
+
+
+ assert
+ break
+ case
+ catch
+ continue
+ default
+ do
+ else
+ finally
+ for
+ if
+ return
+ throw
+ switch
+ try
+ while
+ yield
+
+
+
+ new
+ super
+ this
+
+
+
+ const
+ goto
+ _
+
+
+
+ null
+
+
+
+ false
+ true
+
+
+
+
+ \b(
+ \d+[fd] |
+ ((\d*\.\d+|\d+\.)(e[-+]?\d+)? |
+ \d+e[-+]?\d+)[fd]?
+ )
+
+
+
+ \b(0x[\da-f]+|0[0-7]+)l?
+
+
+ \b([1-9]\d*|0)l?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/javascript.lang b/user_config/local/share/gtksourceview-4/language-specs/javascript.lang
new file mode 100644
index 0000000..4b3223a
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/javascript.lang
@@ -0,0 +1,1060 @@
+
+
+
+
+ application/javascript;application/x-javascript;text/x-javascript;text/javascript;text/x-js
+ *.js;*.mjs
+ //
+ /*
+ */
+ .js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (?!\N{U+2E2F})[\p{L}\p{Nl}\N{U+1885}-\N{U+1886}\N{U+2118}\N{U+212E}\N{U+309B}-\N{U+309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\N{U+00B7}\N{U+0387}\N{U+1369}-\N{U+1371}\N{U+19DA}$\N{U+200C}\N{U+200D}]
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+
+
+
+
+
+
+ \\u (?: [0-9a-fA-F]{4} | { [0-9a-fA-F]{1,} } )
+
+
+
+
+ \%{def:unicode-id-start} | [$_] | \%{unicode-escape}
+
+
+
+
+ \%{def:unicode-id-continue} | [$\N{U+200C}\N{U+200D}]
+
+
+
+
+ \%{identifier-char} | \%{unicode-escape}
+
+
+
+
+ \%{identifier-start} \%{identifier-part}*
+
+
+
+ (?<! \%{identifier-char} ) (?= \%{identifier-start} )
+
+
+
+ (?<! \%{identifier-char} )
+
+
+
+ (?! \%{identifier-char} )
+
+
+
+
+
+ [\t\N{U+000B}\f \N{U+00A0}\N{U+FEFF}\p{Zs}]
+
+
+
+
+ [^\t\N{U+000B}\f \N{U+00A0}\N{U+FEFF}\p{Zs}\n\r\N{U+2028}\N{U+2029}]
+
+
+
+ (?= \%{not-whitespace} )
+
+
+
+ ; | \%{before-next-token}
+
+
+
+ \%{statement-end} | $
+
+
+
+
+
+\*
+
+\.\.\.
+
+\.\.\.
+
+
+
+
+ (?<! \%{identifier-char} | \. )
+
+
+
+ (?! \%{identifier-part} | \. )
+
+
+
+
+
+ \%{keyword-start} as \%{keyword-end}
+
+
+
+ \%{keyword-start} async \%{keyword-end}
+
+
+
+ \%{keyword-start} await \%{keyword-end}
+
+
+
+ \%{keyword-start} break \%{keyword-end}
+
+
+
+ \%{keyword-start} case \%{keyword-end}
+
+
+
+ \%{keyword-start} catch \%{keyword-end}
+
+
+
+ \%{keyword-start} class \%{keyword-end}
+
+
+
+ \%{keyword-start} const \%{keyword-end}
+
+
+
+ \%{keyword-start} continue \%{keyword-end}
+
+
+
+ \%{keyword-start} debugger \%{keyword-end}
+
+
+
+ \%{keyword-start} default \%{keyword-end}
+
+
+
+ \%{keyword-start} delete \%{keyword-end}
+
+
+
+ \%{keyword-start} do \%{keyword-end}
+
+
+
+ \%{keyword-start} else \%{keyword-end}
+
+
+
+ \%{keyword-start} export \%{keyword-end}
+
+
+
+ \%{keyword-start} extends \%{keyword-end}
+
+
+
+ \%{keyword-start} false \%{keyword-end}
+
+
+
+ \%{keyword-start} finally \%{keyword-end}
+
+
+
+ \%{keyword-start} for \%{keyword-end}
+
+
+
+ \%{keyword-start} from \%{keyword-end}
+
+
+
+ \%{keyword-start} function \%{keyword-end}
+
+
+
+ \%{keyword-start} get \%{keyword-end}
+
+
+
+ \%{keyword-start} if \%{keyword-end}
+
+
+
+ \%{keyword-start} import \%{keyword-end}
+
+
+
+ \%{keyword-start} in \%{keyword-end}
+
+
+
+ \%{keyword-start} instanceof \%{keyword-end}
+
+
+
+ \%{keyword-start} let \%{keyword-end}
+
+
+
+ \%{keyword-start} meta \%{keyword-end}
+
+
+
+ \%{keyword-start} new \%{keyword-end}
+
+
+
+ \%{keyword-start} null \%{keyword-end}
+
+
+
+ \%{keyword-start} of \%{keyword-end}
+
+
+
+ \%{keyword-start} return \%{keyword-end}
+
+
+
+ \%{keyword-start} set \%{keyword-end}
+
+
+
+ \%{keyword-start} static \%{keyword-end}
+
+
+
+ \%{keyword-start} super \%{keyword-end}
+
+
+
+ \%{keyword-start} switch \%{keyword-end}
+
+
+
+ \%{keyword-start} target \%{keyword-end}
+
+
+
+ \%{keyword-start} this \%{keyword-end}
+
+
+
+ \%{keyword-start} throw \%{keyword-end}
+
+
+
+ \%{keyword-start} true \%{keyword-end}
+
+
+
+ \%{keyword-start} try \%{keyword-end}
+
+
+
+ \%{keyword-start} typeof \%{keyword-end}
+
+
+
+ \%{keyword-start} var \%{keyword-end}
+
+
+
+ \%{keyword-start} void \%{keyword-end}
+
+
+
+ \%{keyword-start} while \%{keyword-end}
+
+
+
+ \%{keyword-start} with \%{keyword-end}
+
+
+
+ \%{keyword-start} yield \%{keyword-end}
+
+
+
+
+ (?: \%{async-keyword} \%{optional-whitespace-or-comments} )?
+ \%{function-keyword}
+
+
+
+
+ # get property() / set property()
+ (?: \%{js:get-keyword} | \%{js:set-keyword} )
+ (?=
+ \%{js:optional-whitespace-or-comments}
+ \%{js:identifier-start}
+ ) |
+
+ # async method() / async * generator()
+ \%{js:async-keyword}
+ (?=
+ \%{js:optional-whitespace-or-comments}
+ (?: \%{js:identifier-start} | \%{js:generator-modifier} )
+ ) |
+
+ # * generator()
+ (?= \%{js:generator-modifier} )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (?=\*/)
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{keyword-start}
+ \%{keyword-end}
+ await
+ break
+ case
+ catch
+ class
+ const
+ continue
+ debugger
+ default
+ delete
+ do
+ else
+ export
+ extends
+ finally
+ for
+ function
+ if
+ import
+ instanceof
+ in
+ new
+ return
+ super
+ switch
+ this
+ throw
+ try
+ typeof
+ var
+ void
+ while
+ with
+ yield
+
+
+
+
+ \%{keyword-start}
+ \%{keyword-end}
+ let
+ static
+
+
+
+
+ \%{keyword-start}
+ \%{keyword-end}
+ enum
+
+
+
+
+ \%{keyword-start}
+ \%{keyword-end}
+ implements
+ interface
+ package
+ private
+ protected
+ public
+
+
+
+
+
+
+
+
+ \%{identifier}
+
+
+
+
+
+
+
+
+
+ \%{identifier-container-start}
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+ \%{identifier-container-start}
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{identifier-container-start}
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+ \%{identifier-container-start}
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+ =
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+ \%{rest-syntax}
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+ \%{spread-syntax}
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+ \%{generator-modifier}
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \[
+ ]
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+ ,
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ }
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+ ,
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/kotlin.lang b/user_config/local/share/gtksourceview-4/language-specs/kotlin.lang
new file mode 100644
index 0000000..fa829db
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/kotlin.lang
@@ -0,0 +1,398 @@
+
+
+
+
+
+
+ text/x-kotlin
+ *.kt;*.kts
+ //
+ /*
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+ [a-zA-Z_$][a-zA-Z_$0-9]*
+
+ \%{simple-name}(\.\%{simple-name})*
+
+
+ field|file|property|get|set|receiver|param|setparam|delegate
+
+
+
+
+ @(\%{annotation-target}:)?
+ ( \%{compound-name} | \[ (\%{compound-name} \s*)+ \] )
+
+
+
+
+
+
+ it
+ super
+ this@?
+
+
+
+ \\( # leading backslash
+ [\\\"\'nrbt$] | # escaped character
+ u[0-9a-fA-F]{4} # unicode char
+ )
+
+
+
+ '(\%{escaped-character}|.)'
+
+
+
+ '(\%{escaped-character}|.)[^\s]+'
+
+
+
+ class
+ constructor
+ fun
+ get
+ init
+ interface
+ object
+ set
+ typealias
+ val
+ var
+
+
+
+ (<|,) *(in|out)
+
+
+
+
+
+
+
+ as
+ break@?
+ catch
+ continue@?
+ do
+ else
+ finally
+ for
+ if
+ in
+ is
+ return@?
+ throw
+ to
+ try
+ when
+ while
+
+
+
+ import
+ package
+
+
+
+ `
+ `
+
+
+
+ abstract
+ annotation
+ by
+ companion
+ const
+ crossinline
+ data
+ enum
+ external
+ final
+ infix
+ inline
+ inner
+ internal
+ lateinit
+ noinline
+ open
+ operator
+ override
+ private
+ protected
+ public
+ reified
+ sealed
+ suspend
+ tailrec
+ vararg
+ where
+
+
+
+
+ \b ( 0x [0-9A-Fa-f][0-9A-Fa-f_]* # hex literal
+ | 0b [01][01_]* # binary literal
+ | ([0-9]+[Ee][-]?[0-9]+|
+ ([0-9]*\.[0-9]+|[0-9]+\.)([Ee][-]?[0-9]+)?)[fFdD]?|
+ [0-9]+[FfDd] # floating-point literal
+ | [0-9][0-9_]*L? # integer literal
+ )
+
+
+
+
+ [-+*/%=.!|?@:;,_&<>()\[\]]
+
+
+
+ false
+ true
+ null
+
+
+
+ \$[a-zA-Z]+
+
+
+
+ \${
+ }
+
+
+
+
+
+
+ "
+ "
+
+
+ \%{escaped-character}
+
+
+
+
+
+
+
+ """
+ """
+
+
+
+
+
+
+
+ dynamic
+
+
+ Annotation
+ Any
+ Array
+ AssertionError
+ Boolean
+ BooleanArray
+ Byte
+ ByteArray
+ Char
+ CharArray
+ CharSequence
+ ClassCastException
+ Comparable
+ Comparator
+ ConcurrentModificationException
+ DeprecationLevel
+ Double
+ DoubleArray
+ Enum
+ Error
+ Exception
+ Float
+ FloatArray
+ Function
+ IllegalArgumentException
+ IllegalStateException
+ IndexOutOfBoundsException
+ Int
+ IntArray
+ KotlinVersion
+ Lazy
+ LazyThreadSafetyMode
+ Long
+ LongArray
+ NoSuchElementException
+ NoWhenBranchMatchedException
+ Nothing
+ NullPointerException
+ Number
+ NumberFormatException
+ Pair
+ RuntimeException
+ Short
+ ShortArray
+ String
+ Throwable
+ Triple
+ Unit
+ UnsupportedOperationException
+ NotImplementedError
+
+
+ AbstractCollection
+ AbstractIterator
+ AbstractList
+ AbstractMap
+ AbstractMutableCollection
+ AbstractMutableList
+ AbstractMutableMap
+ AbstractMutableSet
+ AbstractSet
+ ArrayList
+ BooleanIterator
+ ByteIterator
+ CharIterator
+ Collection
+ DoubleIterator
+ FloatIterator
+ Grouping
+ HashMap
+ HashSet
+ IndexedValue
+ IntIterator
+ Iterable
+ Iterator
+ LinkedHashMap
+ LinkedHashSet
+ List
+ ListIterator
+ LongIterator
+ Map
+ MutableCollection
+ MutableIterable
+ MutableIterator
+ MutableList
+ MutableListIterator
+ MutableMap
+ MutableSet
+ RandomAccess
+ Set
+ ShortIterator
+
+
+ CharProgression
+ CharRange
+ ClosedFloatingPointRange
+ ClosedRange
+ IntProgression
+ IntRange
+ LongProgression
+ LongRange
+
+
+ Sequence
+
+
+ Appendable
+ CharCategory
+ CharDirectionality
+ Charsets
+ MatchGroup
+ MatchGroupCollection
+ MatchNamedGroupCollection
+ MatchResult
+ Regex
+ RegexOption
+ StringBuilder
+ Typography
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/python.lang b/user_config/local/share/gtksourceview-4/language-specs/python.lang
new file mode 100644
index 0000000..f4c8187
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/python.lang
@@ -0,0 +1,484 @@
+
+
+
+
+ text/x-python;application/x-python
+ *.py;*.py2
+ #
+ .py2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+ [_a-zA-Z][_a-zA-Z0-9]*
+ [1-9][0-9]*
+
+
+ (\%{identifier}\.)*\%{identifier}
+
+
+ (\.*\%{identifier-path}|\.+)
+
+
+
+
+
+ % # leading % sign
+ \(\%{identifier}\)? # mapping key
+ [#0\-\ \+]* # conversion flags
+ (\-?\%{number}|\*)? # minimum field width
+ (\.(\-?\%{number}|\*))? # precision
+ (hlL)? # length modifier
+ [diouxXeEfFgGcrs%] # conversion type
+
+
+
+
+
+
+ \\( # leading backslash
+ [\\'"abfnrtv] | # single escaped char
+ N\{[0-9A-Z\ -]+\} | # named unicode character
+ u[0-9A-Fa-f]{4} | # xxxx - character with 16-bit hex value xxxx
+ U[0-9A-Fa-f]{8} | # xxxxxxxx - character with 32-bit hex value xxxxxxxx
+ x[0-9A-Fa-f]{1,2} | # \xhh - character with hex value hh
+ [0-7]{1,3} # \ooo - character with octal value ooo
+ )
+
+
+
+ (u|U)?
+ (r|ur|R|UR|Ur|uR)
+
+
+ \%{string-prefix}"""
+ """
+
+
+
+
+
+
+
+ \%{string-prefix}'''
+ '''
+
+
+
+
+
+
+
+ \%{string-prefix}"
+ "
+
+
+
+
+
+
+
+
+ \%{string-prefix}'
+ '
+
+
+
+
+
+
+
+
+ \%{raw-string-prefix}"""
+ """
+
+
+
+
+
+
+
+ \%{raw-string-prefix}'''
+ '''
+
+
+
+
+
+
+
+ \%{raw-string-prefix}"
+ "
+
+
+
+
+
+
+
+
+ \%{raw-string-prefix}'
+ '
+
+
+
+
+
+
+
+
+ `
+ `
+
+
+
+
+
+
+ (?<![\w\.])
+ self
+ __name__
+ __debug__
+
+
+
+ (?<![\w\.])
+ False
+ True
+
+
+
+ ( (\d+)?\.\d+ | \d+\. ) |
+ ( (\d+|(\d+)?\.\d+|\d+\.)[eE][+-]?\d+ )
+
+
+
+ (?<![\w\.])(\%{float}|\d+)[jJ]\b
+
+
+
+ (?<![\w\.])\%{float}(?![\w\.])
+
+
+
+ (?<![\w\.])([1-9][0-9]*|0)[lL]?(?![\w\.])
+
+
+
+ (?<![\w\.])0[0-7]+[lL]?(?![\w\.])
+
+
+
+ (?<![\w\.])0[xX][0-9A-Fa-f]+[lL]?(?![\w\.])
+
+
+
+
+ (from)
+ \s+
+ (\%{relative-path})
+
+
+
+
+
+
+
+
+ import
+ from
+ as
+
+
+
+
+
+ (def)
+ \s+
+ (\%{identifier})
+
+
+
+
+
+
+
+
+
+
+ (class)
+ \s+
+ (\%{identifier})
+
+
+
+
+
+
+
+
+ @\%{identifier-path}
+
+
+
+ and
+ assert
+ break
+ class
+ continue
+ def
+ del
+ elif
+ else
+ except
+ finally
+ for
+ global
+ if
+ in
+ is
+ lambda
+ not
+ or
+ pass
+ raise
+ return
+ try
+ while
+ with
+ yield
+
+
+
+ exec
+ print
+
+
+
+ (?<![\w\.])
+ Ellipsis
+ None
+ NotImplemented
+
+
+
+ (?<![\w\.])
+ ArithmeticError
+ AssertionError
+ AttributeError
+ EnvironmentError
+ EOFError
+ Exception
+ FloatingPointError
+ ImportError
+ IndentationError
+ IndexError
+ IOError
+ KeyboardInterrupt
+ KeyError
+ LookupError
+ MemoryError
+ NameError
+ NotImplementedError
+ OSError
+ OverflowError
+ ReferenceError
+ RuntimeError
+ StandardError
+ StopIteration
+ SyntaxError
+ SystemError
+ SystemExit
+ TabError
+ TypeError
+ UnboundLocalError
+ UnicodeDecodeError
+ UnicodeEncodeError
+ UnicodeError
+ UnicodeTranslateError
+ ValueError
+ WindowsError
+ ZeroDivisionError
+ Warning
+ UserWarning
+ DeprecationWarning
+ PendingDeprecationWarning
+ SyntaxWarning
+ OverflowWarning
+ RuntimeWarning
+ FutureWarning
+
+
+
+ (?<![\w\.])
+ __import__
+ abs
+ all
+ any
+ bin
+ bool
+ callable
+ chr
+ classmethod
+ compile
+ complex
+ delattr
+ dict
+ dir
+ divmod
+ enumerate
+ eval
+ filter
+ float
+ format
+ frozenset
+ getattr
+ globals
+ hasattr
+ hash
+ hex
+ id
+ input
+ int
+ isinstance
+ issubclass
+ iter
+ len
+ list
+ locals
+ map
+ max
+ min
+ object
+ oct
+ open
+ ord
+ pow
+ property
+ range
+ repr
+ reversed
+ round
+ setattr
+ set
+ slice
+ sorted
+ staticmethod
+ str
+ sum
+ super
+ tuple
+ type
+ vars
+ zip
+
+
+
+ (?<![\w\.])
+ apply
+ basestring
+ buffer
+ cmp
+ coerce
+ execfile
+ file
+ intern
+ long
+ raw_input
+ reduce
+ reload
+ unichr
+ unicode
+ xrange
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/python3.lang b/user_config/local/share/gtksourceview-4/language-specs/python3.lang
new file mode 100644
index 0000000..e79d4e0
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/python3.lang
@@ -0,0 +1,385 @@
+
+
+
+
+ text/x-python;application/x-python;text/x-python3
+ *.py;*.py3;*.pyi
+ #
+ .py
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+
+ (?> (?: _ | \%{def:unicode-xid-start} ) \%{def:unicode-xid-continue}* )
+
+ [1-9][0-9]*
+
+
+ (\%{identifier}\.)*\%{identifier}
+
+
+ (\.*\%{identifier-path}|\.+)
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+
+ % # leading % sign
+ \(\%{identifier}\)? # mapping key
+ [#0\-\ \+]* # conversion flags
+ (\-?\%{number}|\*)? # minimum field width
+ (\.(\-?\%{number}|\*))? # precision
+ (hlL)? # length modifier
+ [diouxXeEfFgGcrs%] # conversion type
+
+
+
+
+ \{
+ \}
+
+
+
+
+
+
+
+ (\{)
+ (\})
+
+
+
+
+
+
+
+
+
+ \{\{
+
+
+ (b|B)?
+ (r|R|rb|RB|rB|Rb|br|BR|bR|Br)
+ (f|F)
+
+
+ \%{string-prefix}"""
+ """
+
+
+
+
+
+
+
+ \%{string-prefix}'''
+ '''
+
+
+
+
+
+
+
+ \%{string-prefix}"
+ "
+
+
+
+
+
+
+
+
+ \%{string-prefix}'
+ '
+
+
+
+
+
+
+
+ (\%{f-string-prefix}""")
+ (""")
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+ (\%{f-string-prefix}''')
+ (''')
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+ (\%{f-string-prefix}")
+ (")
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+ (\%{f-string-prefix}')
+ (')
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+ \%{raw-string-prefix}"""
+ """
+
+
+
+
+
+
+ \%{raw-string-prefix}'''
+ '''
+
+
+
+
+
+
+ \%{raw-string-prefix}"
+ "
+
+
+
+
+
+
+
+ \%{raw-string-prefix}'
+ '
+
+
+
+
+
+
+
+
+ (from)
+ \s+
+ (\%{relative-path})
+
+
+
+
+
+
+
+
+
+
+ (def)
+ \s+
+ (\%{identifier})
+
+
+
+
+
+
+
+
+
+
+ (class)
+ \s+
+ (\%{identifier})
+
+
+
+
+
+
+
+
+ @\%{identifier-path}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (?<![\w\.])([1-9](_?[0-9])*|0)(?![\w\.])
+
+
+
+ (?<![\w\.])0[bB](_?[0-1])+(?![\w\.])
+
+
+
+ (?<![\w\.])0[oO](_?[0-7])+(?![\w\.])
+
+
+
+ (?<![\w\.])0[xX](_?[0-9A-Fa-f])+(?![\w\.])
+
+
+
+
+
+
+
+
+
+
+ async
+ await
+ nonlocal
+ match
+ case
+
+
+
+
+
+ (?<![\w\.])
+ ResourceWarning
+
+
+
+
+ (?<![\w\.])
+ ascii
+ bin
+ breakpoint
+ bytearray
+ bytes
+ exec
+ format
+ memoryview
+ next
+ print
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/typescript.lang b/user_config/local/share/gtksourceview-4/language-specs/typescript.lang
new file mode 100644
index 0000000..948b90e
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/typescript.lang
@@ -0,0 +1,1046 @@
+
+
+
+
+ application/typescript;application/x-typescript;text/x-typescript;text/typescript
+ *.ts
+ //
+ /*
+ */
+ .ts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (?!\N{U+2E2F})[\p{L}\p{Nl}\N{U+1885}-\N{U+1886}\N{U+2118}\N{U+212E}\N{U+309B}-\N{U+309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\N{U+00B7}\N{U+0387}\N{U+1369}-\N{U+1371}\N{U+19DA}$\N{U+200C}\N{U+200D}]
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+
+
+
+
+
+ \%{js:keyword-start} abstract \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} any \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} asserts \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} bigint \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} boolean \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} declare \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} enum \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} global \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} implements \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} infer \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} interface \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} is \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} keyof \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} module \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} namespace \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} never \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} number \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} object \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} private \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} protected \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} public \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} readonly \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} require \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} string \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} symbol \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} type \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} undefined \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} unique \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} unknown \%{js:keyword-end}
+
+
+
+
+ (?: \%{abstract-keyword} \%{js:optional-whitespace-or-comments} )?
+ \%{js:class-keyword}
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <
+ (?: amd-module | amd-dependency | reference )
+ (?>
+ (?:
+ \s+ |
+ (?<= \s ) [\w-]+ \s* = \s* (?: '[^']*' | "[^"]*" )
+ )*
+ )
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:identifier-container-start}
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+ \.(?=\%{js:identifier-start})
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+ (?=\.)
+ \.
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+ #(?=\%{js:identifier-start})
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+ \%{js:new-keyword}
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+ \?
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+ !
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+ \%{js:this-keyword}
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+ \(
+ \)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+ \.
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:keyword-start}
+ \%{js:keyword-end}
+ Exclude
+ Extract
+ InstanceType
+ NonNullable
+ Omit
+ Partial
+ Pick
+ ReadonlyArray
+ Readonly
+ Record
+ Required
+ ReturnType
+ ThisType
+
+
+
+
+ (?<! \%{js:identifier-char} )
+ (?= (?> \%{js:identifier} ) (?! \. ) )
+
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:identifier-container-start}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+ \(
+ \)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+ \.
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+ \%{js:import-keyword}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+ \%{js:identifier-container-start}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+ ,
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/xml.lang b/user_config/local/share/gtksourceview-4/language-specs/xml.lang
new file mode 100644
index 0000000..6f16cb1
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/xml.lang
@@ -0,0 +1,219 @@
+
+
+
+
+ application/xml;text/xml;text/sgml
+ *.xml;*.xspf;*.siv;*.smil;*.smi;*.sml;*.kino;*.xul;*.xbel;*.abw;*.zabw;*.glade;*.jnlp;*.xhtml;*.svg;*.mml;*.rdf;*.rss;*.wml;*.xmi;*.fo;*.xslfo;*.sgml;*.lang
+ <!--
+ -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [[:alpha:]_][[:alnum:]._-]*
+
+ [[:alpha:]_][[:alnum:].:_-]*
+
+
+ &\%{name};
+
+
+
+ &#([0-9]+|x[a-fA-F0-9]+);
+
+
+
+ [&<]
+
+
+
+
+
+ (<!DOCTYPE)\s+(\%{name})
+ >
+
+
+
+
+
+ (SYSTEM)\s+(\"[^\"]*\")
+
+
+
+
+
+
+ (PUBLIC)\s+(\"[^\"]*\")\s+(\"[^\"]*\")
+
+
+
+
+
+
+
+ \[
+ \]
+
+
+
+
+
+
+
+
+
+ <!\[CDATA\[
+ \]\]>
+
+
+
+
+
+
+
+ <\?
+ \?>
+
+
+
+
+
+ (?<!:)\%{prefix}:
+
+
+
+
+ \b\%{name}\s*=
+
+
+
+ ["']
+ \%{0@start}
+
+
+
+
+
+
+
+
+ \b\%{name}\b(?!\s*=)
+
+
+
+ <\?xml
+ \?>
+
+
+
+
+
+
+
+
+
+ <(?!/)
+ /?>
+
+
+
+
+
+
+
+
+
+
+
+ \S
+
+
+
+
+
+ </
+ >
+
+
+
+
+
+
+
+
+
+ \S
+
+
+
+
+
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/styles/peacocks-in-space.xml b/user_config/local/share/gtksourceview-4/styles/peacocks-in-space.xml
new file mode 100644
index 0000000..7128c59
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/styles/peacocks-in-space.xml
@@ -0,0 +1,123 @@
+
+ ITDominator
+ An attempted clone of Dayle Rees' Peacocks In Space theme.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/styles/penguins-in-space.xml b/user_config/local/share/gtksourceview-4/styles/penguins-in-space.xml
new file mode 100644
index 0000000..6893435
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/styles/penguins-in-space.xml
@@ -0,0 +1,119 @@
+
+ ITDominator
+ An homage to Dayle Rees' Peacocks In Space theme.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/usr/applications/newton.desktop b/user_config/usr/applications/newton.desktop
new file mode 100755
index 0000000..00f8ede
--- /dev/null
+++ b/user_config/usr/applications/newton.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=Newton
+GenericName=Text editor and mini IDE
+Comment=General purpose text editor and IDE
+Exec=/bin/newton %F
+Icon=/usr/share/newton/icons/newton.png
+Type=Application
+StartupNotify=true
+Categories=GNOME;GTK;Utility;TextEditor;Development;
+MimeType=text/plain;text/py;text/js;text/java;text/cpp;text/sh;text/html;text/json;
+Terminal=false
diff --git a/user_config/usr/share/newton/Main_Window.glade b/user_config/usr/share/newton/Main_Window.glade
new file mode 100644
index 0000000..c1a1964
--- /dev/null
+++ b/user_config/usr/share/newton/Main_Window.glade
@@ -0,0 +1,28 @@
+
+
+
+
+
+
diff --git a/user_config/usr/share/newton/contexct_menu.json b/user_config/usr/share/newton/contexct_menu.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/user_config/usr/share/newton/contexct_menu.json
@@ -0,0 +1 @@
+{}
diff --git a/user_config/usr/share/newton/icons/archive.png b/user_config/usr/share/newton/icons/archive.png
new file mode 100644
index 0000000..7943e4e
Binary files /dev/null and b/user_config/usr/share/newton/icons/archive.png differ
diff --git a/user_config/usr/share/newton/icons/audio.png b/user_config/usr/share/newton/icons/audio.png
new file mode 100644
index 0000000..c010134
Binary files /dev/null and b/user_config/usr/share/newton/icons/audio.png differ
diff --git a/user_config/usr/share/newton/icons/bin.png b/user_config/usr/share/newton/icons/bin.png
new file mode 100644
index 0000000..d6954e3
Binary files /dev/null and b/user_config/usr/share/newton/icons/bin.png differ
diff --git a/user_config/usr/share/newton/icons/brain.png b/user_config/usr/share/newton/icons/brain.png
new file mode 100644
index 0000000..cef2ba1
Binary files /dev/null and b/user_config/usr/share/newton/icons/brain.png differ
diff --git a/user_config/usr/share/newton/icons/dir.png b/user_config/usr/share/newton/icons/dir.png
new file mode 100644
index 0000000..a9b5e9f
Binary files /dev/null and b/user_config/usr/share/newton/icons/dir.png differ
diff --git a/user_config/usr/share/newton/icons/doc.png b/user_config/usr/share/newton/icons/doc.png
new file mode 100644
index 0000000..f838826
Binary files /dev/null and b/user_config/usr/share/newton/icons/doc.png differ
diff --git a/user_config/usr/share/newton/icons/image.png b/user_config/usr/share/newton/icons/image.png
new file mode 100644
index 0000000..46f1ae6
Binary files /dev/null and b/user_config/usr/share/newton/icons/image.png differ
diff --git a/user_config/usr/share/newton/icons/newton-64x64.png b/user_config/usr/share/newton/icons/newton-64x64.png
new file mode 100644
index 0000000..acde84d
Binary files /dev/null and b/user_config/usr/share/newton/icons/newton-64x64.png differ
diff --git a/user_config/usr/share/newton/icons/newton.png b/user_config/usr/share/newton/icons/newton.png
new file mode 100644
index 0000000..30ad12a
Binary files /dev/null and b/user_config/usr/share/newton/icons/newton.png differ
diff --git a/user_config/usr/share/newton/icons/only-in-selection.png b/user_config/usr/share/newton/icons/only-in-selection.png
new file mode 100644
index 0000000..3c35fc3
Binary files /dev/null and b/user_config/usr/share/newton/icons/only-in-selection.png differ
diff --git a/user_config/usr/share/newton/icons/pdf.png b/user_config/usr/share/newton/icons/pdf.png
new file mode 100644
index 0000000..9f40122
Binary files /dev/null and b/user_config/usr/share/newton/icons/pdf.png differ
diff --git a/user_config/usr/share/newton/icons/presentation.png b/user_config/usr/share/newton/icons/presentation.png
new file mode 100644
index 0000000..3a339af
Binary files /dev/null and b/user_config/usr/share/newton/icons/presentation.png differ
diff --git a/user_config/usr/share/newton/icons/spreadsheet.png b/user_config/usr/share/newton/icons/spreadsheet.png
new file mode 100644
index 0000000..710efa6
Binary files /dev/null and b/user_config/usr/share/newton/icons/spreadsheet.png differ
diff --git a/user_config/usr/share/newton/icons/text.png b/user_config/usr/share/newton/icons/text.png
new file mode 100644
index 0000000..2546fcd
Binary files /dev/null and b/user_config/usr/share/newton/icons/text.png differ
diff --git a/user_config/usr/share/newton/icons/trash.png b/user_config/usr/share/newton/icons/trash.png
new file mode 100644
index 0000000..c6514b9
Binary files /dev/null and b/user_config/usr/share/newton/icons/trash.png differ
diff --git a/user_config/usr/share/newton/icons/video.png b/user_config/usr/share/newton/icons/video.png
new file mode 100644
index 0000000..55afa98
Binary files /dev/null and b/user_config/usr/share/newton/icons/video.png differ
diff --git a/user_config/usr/share/newton/icons/web.png b/user_config/usr/share/newton/icons/web.png
new file mode 100644
index 0000000..17017ce
Binary files /dev/null and b/user_config/usr/share/newton/icons/web.png differ
diff --git a/user_config/usr/share/newton/icons/whole-word.png b/user_config/usr/share/newton/icons/whole-word.png
new file mode 100644
index 0000000..d147682
Binary files /dev/null and b/user_config/usr/share/newton/icons/whole-word.png differ
diff --git a/user_config/usr/share/newton/key-bindings.json b/user_config/usr/share/newton/key-bindings.json
new file mode 100644
index 0000000..15ad83a
--- /dev/null
+++ b/user_config/usr/share/newton/key-bindings.json
@@ -0,0 +1,10 @@
+{
+ "keybindings": {
+ "help" : "F1",
+ "tggl_top_main_menubar" : "0",
+ "keyboard_focus_1st_pane" : "8",
+ "keyboard_focus_2nd_pane" : "9",
+ "open_terminal" : "F4",
+ "tear_down" : "q"
+ }
+}
\ No newline at end of file
diff --git a/user_config/usr/share/newton/lsp_servers_config.json b/user_config/usr/share/newton/lsp_servers_config.json
new file mode 100644
index 0000000..7badb9a
--- /dev/null
+++ b/user_config/usr/share/newton/lsp_servers_config.json
@@ -0,0 +1,52 @@
+{
+ "sh": {
+ "info": "",
+ "command": [],
+ "initialization_options": {}
+ },
+ "python": {
+ "info": "https://github.com/python-lsp/python-lsp-server",
+ "command": ["pylsp"],
+ "initialization_options": {}
+ },
+ "python3": {
+ "info": "https://pypi.org/project/jedi-language-server/",
+ "command": ["jedi-language-server"],
+ "initialization_options": {
+ "jediSettings": {
+ "autoImportModules": [],
+ "caseInsensitiveCompletion": true,
+ "debug": false
+ },
+ "completion": {
+ "disableSnippets": false,
+ "resolveEagerly": false,
+ "ignorePatterns": []
+ },
+ "markupKindPreferred": "markdown",
+ "workspace": {
+ "extraPaths": [],
+ "environmentPath": "/path/to/venv/bin/python",
+ "symbols": {
+ "ignoreFolders": [".nox", ".tox", ".venv", "__pycache__", "venv"],
+ "maxSymbols": 20
+ }
+ }
+ }
+ },
+ "c": {
+ "info": "https://clangd.llvm.org/",
+ "command": ["/usr/bin/clangd"],
+ "initialization_options": {}
+ },
+ "cpp": {
+ "info": "https://clangd.llvm.org/",
+ "command": ["/usr/bin/clangd"],
+ "initialization_options": {}
+ },
+ "java": {
+ "info": "https://download.eclipse.org/jdtls/",
+ "command": ["java-language-server"],
+ "initialization_options": {}
+ }
+}
\ No newline at end of file
diff --git a/user_config/usr/share/newton/settings.json b/user_config/usr/share/newton/settings.json
new file mode 100644
index 0000000..27b0c98
--- /dev/null
+++ b/user_config/usr/share/newton/settings.json
@@ -0,0 +1,124 @@
+{
+ "load_defaults":false,
+ "config":{
+ "base_of_home":"",
+ "hide_hidden_files":"true",
+ "thumbnailer_path":"ffmpegthumbnailer",
+ "blender_thumbnailer_path":"",
+ "go_past_home":"true",
+ "lock_folder":"false",
+ "locked_folders":"venv::::flasks",
+ "mplayer_options":"-quiet -really-quiet -xy 1600 -geometry 50%:50%",
+ "music_app":"/opt/deadbeef/bin/deadbeef",
+ "media_app":"mpv",
+ "image_app":"mirage",
+ "office_app":"libreoffice",
+ "pdf_app":"evince",
+ "code_app":"atom",
+ "text_app":"leafpad",
+ "file_manager_app":"solarfm",
+ "terminal_app":"terminator",
+ "remux_folder_max_disk_usage":"8589934592",
+ "make_transparent":0,
+ "main_window_x":800,
+ "main_window_y":600,
+ "main_window_min_width":720,
+ "main_window_min_height":480,
+ "main_window_width":800,
+ "main_window_height":600
+ },
+ "filters":{
+ "meshs":[
+ ".blend",
+ ".dae",
+ ".fbx",
+ ".gltf",
+ ".obj",
+ ".stl"
+ ],
+ "code":[
+ ".txt",
+ ".py",
+ ".c",
+ ".h",
+ ".cpp",
+ ".csv",
+ ".m3*",
+ ".lua",
+ ".js",
+ ".toml",
+ ".xml",
+ ".pom",
+ ".htm",
+ ".md",
+ ".vala",
+ ".tsv",
+ ".css",
+ ".html",
+ ".json",
+ ".java",
+ ".go",
+ ".php",
+ ".ts",
+ ".rs"
+ ],
+ "videos":[
+ ".mkv",
+ ".mp4",
+ ".webm",
+ ".avi",
+ ".mov",
+ ".m4v",
+ ".mpg",
+ ".mpeg",
+ ".wmv",
+ ".flv"
+ ],
+ "office":[
+ ".doc",
+ ".docx",
+ ".xls",
+ ".xlsx",
+ ".xlt",
+ ".xltx",
+ ".xlm",
+ ".ppt",
+ ".pptx",
+ ".pps",
+ ".ppsx",
+ ".odt",
+ ".rtf"
+ ],
+ "images":[
+ ".png",
+ ".jpg",
+ ".jpeg",
+ ".gif",
+ ".ico",
+ ".tga",
+ ".webp"
+ ],
+ "music":[
+ ".psf",
+ ".mp3",
+ ".ogg",
+ ".flac",
+ ".m4a"
+ ],
+ "pdf":[
+ ".pdf"
+ ]
+ },
+ "theming":{
+ "transparency":62,
+ "default_zoom":12,
+ "syntax_theme":"solarized-dark",
+ "success_color":"#88cc27",
+ "warning_color":"#ffa800",
+ "error_color":"#ff0000"
+ },
+ "debugging":{
+ "ch_log_lvl":20,
+ "fh_log_lvl":20
+ }
+}
diff --git a/user_config/usr/share/newton/stylesheet.css b/user_config/usr/share/newton/stylesheet.css
new file mode 100644
index 0000000..b63bcfc
--- /dev/null
+++ b/user_config/usr/share/newton/stylesheet.css
@@ -0,0 +1,371 @@
+/* ---- make most desired things base transparent ---- */
+popover,
+popover > box
+.main-window > box,
+.main-window > box > box,
+.main-window > box > box > paned,
+.main-window > box > box > paned > notebook,
+.main-window > box > box > paned > notebook > stack,
+.main-window > box > box > paned > notebook > stack > scrolledwindow > textview > * {
+ background: rgba(0, 0, 0, 0.0);
+ color: rgba(255, 255, 255, 1);
+}
+
+
+/* ---- top controls ---- */
+.main-window > box > box > button,
+.main-window > box > box > buttonbox > button {
+ background: rgba(39, 43, 52, 0.64);
+ margin-left: 12px;
+ margin-right: 12px;
+}
+
+
+/* status bar */
+.main-window > box > statusbar {
+ background: rgba(39, 43, 52, 0.64);
+ padding-left: 96px;
+ padding-right: 96px;
+}
+
+
+/* ---- notebook headers ---- */
+notebook > header {
+ background: rgba(39, 43, 52, 0.72);
+}
+
+notebook > header > tabs > tab {
+ color: rgba(255, 255, 255, 1);
+}
+
+notebook > header > tabs > tab:active {
+ background: rgba(0, 0, 0, 0.0);
+}
+
+
+/* ---- notebook tab buttons ---- */
+tab > box > button {
+ background: rgba(116, 0, 0, 0.64);
+}
+
+tab > box > button:hover {
+ background: rgba(256, 0, 0, 0.64);
+}
+
+notebook > header > tabs > tab:checked {
+ /* Neon Blue 00e8ff */
+ /* background-color: rgba(0, 232, 255, 0.2); */
+
+ background-color: rgba(255, 255, 255, 0.46);
+
+ /* Dark Bergundy */
+ /* background-color: rgba(116, 0, 0, 0.25); */
+
+ color: rgba(255, 255, 255, 0.8);
+}
+
+.notebook-selected-focus {
+ /* Neon Blue 00e8ff border */
+ /* border: 2px solid rgba(0, 232, 255, 0.34); */
+
+ border: 2px solid rgba(255, 255, 255, 0.46);
+
+ /* Dark Bergundy */
+ /* border: 2px solid rgba(116, 0, 0, 0.64); */
+}
+
+
+/* ---- source code notebooks ---- */
+notebook > stack > scrolledwindow > textview {
+ background: rgba(39, 43, 52, 0.64);
+ color: rgba(255, 255, 255, 1);
+}
+
+/* any popover */
+popover {
+ background: rgba(39, 43, 52, 0.86);
+ color: rgba(255, 255, 255, 1);
+}
+
+/* ---- make text selection slightly transparent ---- */
+* selection {
+ background-color: rgba(0, 115, 115, 0.34);
+ /* Bergundy */
+ /* background-color: rgba(116, 0, 0, 0.64); */
+ color: rgba(255, 255, 255, 0.5);
+}
+
+
+/* ---- miniview properties ---- */
+.source-view,
+.mini-view {
+ font-family: Monospace;
+}
+
+/* the mini view container of text */
+.mini-view > text {
+ background: rgba(39, 43, 52, 0.64);
+}
+
+/* draggable overlay of the miniview */
+.mini-view > * {
+ background: rgba(64, 64, 64, 0.32);
+ color: rgba(255, 255, 255, 1);
+ font-size: 1px;
+}
+
+.mini-view > text {
+ background: rgba(39, 43, 52, 0.64);
+}
+
+
+/* other properties */
+.buffer_changed {
+ color: rgba(255, 168, 0, 1.0);
+ /* color: rgba(0, 232, 255, 0.64); */
+}
+
+
+
+
+.searching,
+.search_success,
+.search_fail {
+ border-style: solid;
+}
+
+.searching {
+ border-color: rgba(0, 225, 225, 0.64);
+}
+.search_success {
+ background: rgba(136, 204, 39, 0.12);
+ border-color: rgba(136, 204, 39, 1);
+}
+.search_fail {
+ background: rgba(170, 18, 18, 0.12);
+ border-color: rgba(200, 18, 18, 1);
+}
+
+
+.error_txt { color: rgb(170, 18, 18); }
+.warning_txt { color: rgb(255, 168, 0); }
+.success_txt { color: rgb(136, 204, 39); }
+
+
+
+
+/*
+ Need these because updating buffer with get_tag_table and tags updates minimap to the same size due to its mapping structure...
+ I've tried initial looks at:
+ https://github.com/johnfactotum/gedit-restore-minimap
+ which is re-adding minimap to gedit and they just used the below code snippit which still didn't work for me.
+
+ desc = Pango.FontDescription(default_font)
+ desc.set_size(Pango.SCALE) # set size to 1pt
+ desc.set_family('BuilderBlocks,' + desc.get_family())
+ self.source_map.set_property('font-desc', desc)
+
+ So now we do this monstrocity until I can figure out what is needed to make something better work.
+
+*/
+.px1 { font-size: 1px; }
+.px2 { font-size: 2px; }
+.px3 { font-size: 3px; }
+.px4 { font-size: 4px; }
+.px5 { font-size: 5px; }
+.px6 { font-size: 6px; }
+.px7 { font-size: 7px; }
+.px8 { font-size: 8px; }
+.px9 { font-size: 9px; }
+.px10 { font-size: 10px; }
+.px11 { font-size: 11px; }
+.px12 { font-size: 12px; }
+.px13 { font-size: 13px; }
+.px14 { font-size: 14px; }
+.px15 { font-size: 15px; }
+.px16 { font-size: 16px; }
+.px17 { font-size: 17px; }
+.px18 { font-size: 18px; }
+.px19 { font-size: 19px; }
+.px20 { font-size: 20px; }
+.px21 { font-size: 21px; }
+.px22 { font-size: 22px; }
+.px23 { font-size: 23px; }
+.px24 { font-size: 24px; }
+.px25 { font-size: 25px; }
+.px26 { font-size: 26px; }
+.px27 { font-size: 27px; }
+.px28 { font-size: 28px; }
+.px29 { font-size: 29px; }
+.px30 { font-size: 30px; }
+.px31 { font-size: 31px; }
+.px32 { font-size: 32px; }
+.px33 { font-size: 33px; }
+.px34 { font-size: 34px; }
+.px35 { font-size: 35px; }
+.px36 { font-size: 36px; }
+.px37 { font-size: 37px; }
+.px38 { font-size: 38px; }
+.px39 { font-size: 39px; }
+.px40 { font-size: 40px; }
+.px41 { font-size: 41px; }
+.px42 { font-size: 42px; }
+.px43 { font-size: 43px; }
+.px44 { font-size: 44px; }
+.px45 { font-size: 45px; }
+.px46 { font-size: 46px; }
+.px47 { font-size: 47px; }
+.px48 { font-size: 48px; }
+.px49 { font-size: 49px; }
+.px50 { font-size: 50px; }
+.px51 { font-size: 51px; }
+.px52 { font-size: 52px; }
+.px53 { font-size: 53px; }
+.px54 { font-size: 54px; }
+.px55 { font-size: 55px; }
+.px56 { font-size: 56px; }
+.px57 { font-size: 57px; }
+.px58 { font-size: 58px; }
+.px59 { font-size: 59px; }
+.px60 { font-size: 60px; }
+.px61 { font-size: 61px; }
+.px62 { font-size: 62px; }
+.px63 { font-size: 63px; }
+.px64 { font-size: 64px; }
+.px65 { font-size: 65px; }
+.px66 { font-size: 66px; }
+.px67 { font-size: 67px; }
+.px68 { font-size: 68px; }
+.px69 { font-size: 69px; }
+.px70 { font-size: 70px; }
+.px71 { font-size: 71px; }
+.px72 { font-size: 72px; }
+.px73 { font-size: 73px; }
+.px74 { font-size: 74px; }
+.px75 { font-size: 75px; }
+.px76 { font-size: 76px; }
+.px77 { font-size: 77px; }
+.px78 { font-size: 78px; }
+.px79 { font-size: 79px; }
+.px80 { font-size: 80px; }
+.px81 { font-size: 81px; }
+.px82 { font-size: 82px; }
+.px83 { font-size: 83px; }
+.px84 { font-size: 84px; }
+.px85 { font-size: 85px; }
+.px86 { font-size: 86px; }
+.px87 { font-size: 87px; }
+.px88 { font-size: 88px; }
+.px89 { font-size: 89px; }
+.px90 { font-size: 90px; }
+.px91 { font-size: 91px; }
+.px92 { font-size: 92px; }
+.px93 { font-size: 93px; }
+.px94 { font-size: 94px; }
+.px95 { font-size: 95px; }
+.px96 { font-size: 96px; }
+.px97 { font-size: 97px; }
+.px98 { font-size: 98px; }
+.px99 { font-size: 99px; }
+
+
+
+.mw_transparency_1 { background: rgba(39, 43, 52, 0.1); }
+.mw_transparency_2 { background: rgba(39, 43, 52, 0.2); }
+.mw_transparency_3 { background: rgba(39, 43, 52, 0.3); }
+.mw_transparency_4 { background: rgba(39, 43, 52, 0.4); }
+.mw_transparency_5 { background: rgba(39, 43, 52, 0.5); }
+.mw_transparency_6 { background: rgba(39, 43, 52, 0.6); }
+.mw_transparency_7 { background: rgba(39, 43, 52, 0.7); }
+.mw_transparency_8 { background: rgba(39, 43, 52, 0.8); }
+.mw_transparency_9 { background: rgba(39, 43, 52, 0.9); }
+.mw_transparency_10 { background: rgba(39, 43, 52, 0.10); }
+.mw_transparency_11 { background: rgba(39, 43, 52, 0.11); }
+.mw_transparency_12 { background: rgba(39, 43, 52, 0.12); }
+.mw_transparency_13 { background: rgba(39, 43, 52, 0.13); }
+.mw_transparency_14 { background: rgba(39, 43, 52, 0.14); }
+.mw_transparency_15 { background: rgba(39, 43, 52, 0.15); }
+.mw_transparency_16 { background: rgba(39, 43, 52, 0.16); }
+.mw_transparency_17 { background: rgba(39, 43, 52, 0.17); }
+.mw_transparency_18 { background: rgba(39, 43, 52, 0.18); }
+.mw_transparency_19 { background: rgba(39, 43, 52, 0.19); }
+.mw_transparency_20 { background: rgba(39, 43, 52, 0.20); }
+.mw_transparency_21 { background: rgba(39, 43, 52, 0.21); }
+.mw_transparency_22 { background: rgba(39, 43, 52, 0.22); }
+.mw_transparency_23 { background: rgba(39, 43, 52, 0.23); }
+.mw_transparency_24 { background: rgba(39, 43, 52, 0.24); }
+.mw_transparency_25 { background: rgba(39, 43, 52, 0.25); }
+.mw_transparency_26 { background: rgba(39, 43, 52, 0.26); }
+.mw_transparency_27 { background: rgba(39, 43, 52, 0.27); }
+.mw_transparency_28 { background: rgba(39, 43, 52, 0.28); }
+.mw_transparency_29 { background: rgba(39, 43, 52, 0.29); }
+.mw_transparency_30 { background: rgba(39, 43, 52, 0.30); }
+.mw_transparency_31 { background: rgba(39, 43, 52, 0.31); }
+.mw_transparency_32 { background: rgba(39, 43, 52, 0.32); }
+.mw_transparency_33 { background: rgba(39, 43, 52, 0.33); }
+.mw_transparency_34 { background: rgba(39, 43, 52, 0.34); }
+.mw_transparency_35 { background: rgba(39, 43, 52, 0.35); }
+.mw_transparency_36 { background: rgba(39, 43, 52, 0.36); }
+.mw_transparency_37 { background: rgba(39, 43, 52, 0.37); }
+.mw_transparency_38 { background: rgba(39, 43, 52, 0.38); }
+.mw_transparency_39 { background: rgba(39, 43, 52, 0.39); }
+.mw_transparency_40 { background: rgba(39, 43, 52, 0.40); }
+.mw_transparency_41 { background: rgba(39, 43, 52, 0.41); }
+.mw_transparency_42 { background: rgba(39, 43, 52, 0.42); }
+.mw_transparency_43 { background: rgba(39, 43, 52, 0.43); }
+.mw_transparency_44 { background: rgba(39, 43, 52, 0.44); }
+.mw_transparency_45 { background: rgba(39, 43, 52, 0.45); }
+.mw_transparency_46 { background: rgba(39, 43, 52, 0.46); }
+.mw_transparency_47 { background: rgba(39, 43, 52, 0.47); }
+.mw_transparency_48 { background: rgba(39, 43, 52, 0.48); }
+.mw_transparency_49 { background: rgba(39, 43, 52, 0.49); }
+.mw_transparency_50 { background: rgba(39, 43, 52, 0.50); }
+.mw_transparency_51 { background: rgba(39, 43, 52, 0.51); }
+.mw_transparency_52 { background: rgba(39, 43, 52, 0.52); }
+.mw_transparency_53 { background: rgba(39, 43, 52, 0.53); }
+.mw_transparency_54 { background: rgba(39, 43, 52, 0.54); }
+.mw_transparency_55 { background: rgba(39, 43, 52, 0.55); }
+.mw_transparency_56 { background: rgba(39, 43, 52, 0.56); }
+.mw_transparency_57 { background: rgba(39, 43, 52, 0.57); }
+.mw_transparency_58 { background: rgba(39, 43, 52, 0.58); }
+.mw_transparency_59 { background: rgba(39, 43, 52, 0.59); }
+.mw_transparency_60 { background: rgba(39, 43, 52, 0.60); }
+.mw_transparency_61 { background: rgba(39, 43, 52, 0.61); }
+.mw_transparency_62 { background: rgba(39, 43, 52, 0.62); }
+.mw_transparency_63 { background: rgba(39, 43, 52, 0.63); }
+.mw_transparency_64 { background: rgba(39, 43, 52, 0.64); }
+.mw_transparency_65 { background: rgba(39, 43, 52, 0.65); }
+.mw_transparency_66 { background: rgba(39, 43, 52, 0.66); }
+.mw_transparency_67 { background: rgba(39, 43, 52, 0.67); }
+.mw_transparency_68 { background: rgba(39, 43, 52, 0.68); }
+.mw_transparency_69 { background: rgba(39, 43, 52, 0.69); }
+.mw_transparency_70 { background: rgba(39, 43, 52, 0.70); }
+.mw_transparency_71 { background: rgba(39, 43, 52, 0.71); }
+.mw_transparency_72 { background: rgba(39, 43, 52, 0.72); }
+.mw_transparency_73 { background: rgba(39, 43, 52, 0.73); }
+.mw_transparency_74 { background: rgba(39, 43, 52, 0.74); }
+.mw_transparency_75 { background: rgba(39, 43, 52, 0.75); }
+.mw_transparency_76 { background: rgba(39, 43, 52, 0.76); }
+.mw_transparency_77 { background: rgba(39, 43, 52, 0.77); }
+.mw_transparency_78 { background: rgba(39, 43, 52, 0.78); }
+.mw_transparency_79 { background: rgba(39, 43, 52, 0.79); }
+.mw_transparency_80 { background: rgba(39, 43, 52, 0.80); }
+.mw_transparency_81 { background: rgba(39, 43, 52, 0.81); }
+.mw_transparency_82 { background: rgba(39, 43, 52, 0.82); }
+.mw_transparency_83 { background: rgba(39, 43, 52, 0.83); }
+.mw_transparency_84 { background: rgba(39, 43, 52, 0.84); }
+.mw_transparency_85 { background: rgba(39, 43, 52, 0.85); }
+.mw_transparency_86 { background: rgba(39, 43, 52, 0.86); }
+.mw_transparency_87 { background: rgba(39, 43, 52, 0.87); }
+.mw_transparency_88 { background: rgba(39, 43, 52, 0.88); }
+.mw_transparency_89 { background: rgba(39, 43, 52, 0.89); }
+.mw_transparency_90 { background: rgba(39, 43, 52, 0.90); }
+.mw_transparency_91 { background: rgba(39, 43, 52, 0.91); }
+.mw_transparency_92 { background: rgba(39, 43, 52, 0.92); }
+.mw_transparency_93 { background: rgba(39, 43, 52, 0.93); }
+.mw_transparency_94 { background: rgba(39, 43, 52, 0.94); }
+.mw_transparency_95 { background: rgba(39, 43, 52, 0.95); }
+.mw_transparency_96 { background: rgba(39, 43, 52, 0.96); }
+.mw_transparency_97 { background: rgba(39, 43, 52, 0.97); }
+.mw_transparency_98 { background: rgba(39, 43, 52, 0.98); }
+.mw_transparency_99 { background: rgba(39, 43, 52, 0.99); }
\ No newline at end of file
diff --git a/user_config/usr/share/newton/ui_widgets/about_ui.glade b/user_config/usr/share/newton/ui_widgets/about_ui.glade
new file mode 100644
index 0000000..f559f6c
--- /dev/null
+++ b/user_config/usr/share/newton/ui_widgets/about_ui.glade
@@ -0,0 +1,390 @@
+
+
+
+
+
+ 320
+ 480
+ False
+ 5
+ center-on-parent
+ ../icons/solarfm.png
+ dialog
+ True
+ True
+ False
+ center
+ SolarFM
+ 0.0.1
+ Copyright (C) 2021 GPL2
+ by ITDominator
+ https://code.itdominator.com/itdominator/SolarFM
+ SolarFM - Copyright (C) 2021 ITDominator GPL2
+
+
+ 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.
+
+ Lead Developer:
+ ITDominator <1itdominator@gmail.com>
+
+
+SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspection.
+ translator-credits
+ ../icons/solarfm-64x64.png
+ True
+ custom
+
+
+ False
+
+
+ False
+
+
+ False
+ False
+ 0
+
+
+
+
+
+
diff --git a/user_config/usr/share/newton/ui_widgets/general_info_ui.glade b/user_config/usr/share/newton/ui_widgets/general_info_ui.glade
new file mode 100644
index 0000000..a1e394c
--- /dev/null
+++ b/user_config/usr/share/newton/ui_widgets/general_info_ui.glade
@@ -0,0 +1,67 @@
+
+
+
+
+
+ True
+ False
+ 10
+ 10
+ 10
+ 10
+ 5
+ 15
+ top
+
+
+ True
+ False
+ True
+ 10
+
+
+ False
+ True
+ 4
+
+
+
+
+ True
+ False
+ start
+ True
+ 320
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ end
+ 1
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ end
+ 2
+
+
+
+
diff --git a/user_config/usr/share/newton/ui_widgets/save_load_ui.glade b/user_config/usr/share/newton/ui_widgets/save_load_ui.glade
new file mode 100644
index 0000000..ba42cba
--- /dev/null
+++ b/user_config/usr/share/newton/ui_widgets/save_load_ui.glade
@@ -0,0 +1,65 @@
+
+
+
+
+
+ False
+ dialog
+ True
+
+
+ False
+ vertical
+ 2
+
+
+ False
+ end
+
+
+ gtk-cancel
+ True
+ True
+ True
+ True
+ True
+
+
+ True
+ True
+ 0
+
+
+
+
+ gtk-ok
+ True
+ True
+ True
+ True
+ True
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ False
+ 0
+
+
+
+
+
+
+
+
+ button11
+ button12
+
+
+