diff --git a/arch.os b/arch.os
index a496b89..d3578e1 100755
--- a/arch.os
+++ b/arch.os
@@ -5,8 +5,8 @@ yay -S neovim-git nvm wezterm ranger ripgrep zsh zsh-vi-mode curl exa
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# WM Deps
-yay -S awesome-git i3 ttf-material-design-icons ttf-unifont polybar
-yay -S picom-ftlabs-git
+yay -S awesome-git i3 betterlockscreen polybar-git eww xss-lock ttf-material-design-icons ttf-unifont polybar
+yay -S picom-ftlabs-git dunst
yay -S i3exit arc-icon-theme ttf-twemoji xorg-xbacklight xidlehook sysstat i3blocks mpris-ctl flameshot perl rofi
mkdir -p ~/.local/share/fonts
diff --git a/common/.config/dunst/dunstrc b/common/.config/dunst/dunstrc
index c2d242e..024a052 100644
--- a/common/.config/dunst/dunstrc
+++ b/common/.config/dunst/dunstrc
@@ -1,302 +1,50 @@
[global]
- frame_width = 1
- frame_color = "#788388"
-
- font = Noto Sans 10
-
- # Allow a small subset of html markup:
- # bold
- # italic
- # strikethrough
- # underline
- #
- # For a complete reference see
- # .
- # If markup is not allowed, those tags will be stripped out of the
- # message.
- markup = yes
-
- # The format of the message. Possible variables are:
- # %a appname
- # %s summary
- # %b body
- # %i iconname (including its path)
- # %I iconname (without its path)
- # %p progress value if set ([ 0%] to [100%]) or nothing
- # Markup is allowed
- format = "%s %p\n%b"
-
- # Sort messages by urgency.
+ font = DejaVu Sans Mono 10
+ allow_markup = yes
+ format = "%s\n%b"
sort = yes
-
- # Show how many messages are currently hidden (because of geometry).
indicate_hidden = yes
-
- # Alignment of message text.
- # Possible values are "left", "center" and "right".
- alignment = left
-
- # The frequency with wich text that is longer than the notification
- # window allows bounces back and forth.
- # This option conflicts with "word_wrap".
- # Set to 0 to disable.
- bounce_freq = 5
-
-
- # Show age of message if message is older than show_age_threshold
- # seconds.
- # Set to -1 to disable.
+ alignment = center
+ bounce_freq = 0
show_age_threshold = 60
-
- # Split notifications into multiple lines if they don't fit into
- # geometry.
- word_wrap = no
-
- # Ignore newlines '\n' in notifications.
+ word_wrap = yes
ignore_newline = no
-
-
- # The geometry of the window:
- # [{width}]x{height}[+/-{x}+/-{y}]
- # The geometry of the message window.
- # The height is measured in number of notifications everything else
- # in pixels. If the width is omitted but the height is given
- # ("-geometry x2"), the message window expands over the whole screen
- # (dmenu-like). If width is 0, the window expands to the longest
- # message displayed. A positive x is measured from the left, a
- # negative from the right side of the screen. Y is measured from
- # the top and down respectevly.
- # The width can be negative. In this case the actual width is the
- # screen width minus the width defined in within the geometry option.
- geometry = "0x4-25+25"
-
- # Shrink window if it's smaller than the width. Will be ignored if
- # width is 0.
- shrink = yes
-
- # The transparency of the window. Range: [0; 100].
- # This option will only work if a compositing windowmanager is
- # present (e.g. xcompmgr, compiz, etc.).
- transparency = 15
-
- # Don't remove messages, if the user is idle (no mouse or keyboard input)
- # for longer than idle_threshold seconds.
- # Set to 0 to disable.
- # default 120
- idle_threshold = 120
-
- # Which monitor should the notifications be displayed on.
+ geometry = "200x5-6+30"
+ transparency = 0
+ idle_threshold = 120
monitor = 0
-
- # Display notification on focused monitor. Possible modes are:
- # mouse: follow mouse pointer
- # keyboard: follow window with keyboard focus
- # none: don't follow anything
- #
- # "keyboard" needs a windowmanager that exports the
- # _NET_ACTIVE_WINDOW property.
- # This should be the case for almost all modern windowmanagers.
- #
- # If this option is set to mouse or keyboard, the monitor option
- # will be ignored.
follow = mouse
-
- # Should a notification popped up from history be sticky or timeout
- # as if it would normally do.
sticky_history = yes
-
- # Maximum amount of notifications kept in history
- history_length = 20
-
- # Display indicators for URLs (U) and actions (A).
- show_indicators = yes
-
- # The height of a single line. If the height is smaller than the
- # font height, it will get raised to the font height.
- # This adds empty space above and under the text.
line_height = 0
-
- # Draw a line of "separator_height" pixel height between two
- # notifications.
- # Set to 0 to disable.
- separator_height = 1
-
- # Padding between text and separator.
- # padding = 8
+ separator_height = 2
padding = 8
-
- # Horizontal padding.
- horizontal_padding = 10
-
- # Define a color for the separator.
- # possible values are:
- # * auto: dunst tries to find a color fitting to the background;
- # * foreground: use the same color as the foreground;
- # * frame: use the same color as the frame;
- # * anything else will be interpreted as a X color.
- separator_color = #263238
-
- # Print a notification on startup.
- # This is mainly for error detection, since dbus (re-)starts dunst
- # automatically after a crash.
+ horizontal_padding = 8
+ separator_color = "#58585822"
startup_notification = false
-
- # dmenu path.
- dmenu = /usr/bin/dmenu -p dunst:
-
- # Browser for opening urls in context menu.
- browser = palemoon
-
- # Align icons left/right/off
- icon_position = left
-
- # Paths to default icons.
- icon_path = /usr/share/icons/Adwaita/16x16/status/:/usr/share/icons/Adwaita/16x16/devices/
-
- # Limit icons size.
- max_icon_size=128
+ corner_radius = 6
+ # https://github.com/knopwob/dunst/issues/26#issuecomment-36159395
+ #icon_position = left
+ #icon_folders = /usr/share/icons/elementary/actions/16/
+ frame_width = 1
+ frame_color = "#abb2bf66"
[shortcuts]
-
- # Shortcuts are specified as [modifier+][modifier+]...key
- # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
- # "mod3" and "mod4" (windows-key).
- # Xev might be helpful to find names for keys.
-
- # Close notification.
- close = mod1+space
-
- # Close all notifications.
- # close_all = ctrl+shift+space
- close_all = ctrl+mod1+space
-
- # Redisplay last message(s).
- # On the US keyboard layout "grave" is normally above TAB and left
- # of "1".
- history = ctrl+mod4+h
-
- # Context menu.
- context = ctrl+mod1+c
+ close = ctrl+space
+ close_all = ctrl+shift+space
+ history = ctrl+grave
+ context = ctrl+shift+period
[urgency_low]
- # IMPORTANT: colors have to be defined in quotation marks.
- # Otherwise the "#" and following would be interpreted as a comment.
- background = "#263238"
- foreground = "#556064"
- timeout = 10
+ background = "#24273a"
+ foreground = "#abb2bf"
+ timeout = 5
[urgency_normal]
- background = "#263238"
- foreground = "#F9FAF9"
- timeout = 10
+ background = "#24273a"
+ foreground = "#abb2bf"
+ timeout = 20
[urgency_critical]
- background = "#D62929"
- foreground = "#F9FAF9"
+ background = "#ed8796"
+ foreground = "#abb2bf"
timeout = 0
-
-
-# Every section that isn't one of the above is interpreted as a rules to
-# override settings for certain messages.
-# Messages can be matched by "appname", "summary", "body", "icon", "category",
-# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
-# "background", "new_icon" and "format".
-# Shell-like globbing will get expanded.
-#
-# SCRIPTING
-# You can specify a script that gets run when the rule matches by
-# setting the "script" option.
-# The script will be called as follows:
-# script appname summary body icon urgency
-# where urgency can be "LOW", "NORMAL" or "CRITICAL".
-#
-# NOTE: if you don't want a notification to be displayed, set the format
-# to "".
-# NOTE: It might be helpful to run dunst -print in a terminal in order
-# to find fitting options for rules.
-
-#[espeak]
-# summary = "*"
-# script = dunst_espeak.sh
-
-#[script-test]
-# summary = "*script*"
-# script = dunst_test.sh
-
-#[ignore]
-# # This notification will not be displayed
-# summary = "foobar"
-# format = ""
-
-#[signed_on]
-# appname = Pidgin
-# summary = "*signed on*"
-# urgency = low
-#
-#[signed_off]
-# appname = Pidgin
-# summary = *signed off*
-# urgency = low
-#
-#[says]
-# appname = Pidgin
-# summary = *says*
-# urgency = critical
-#
-#[twitter]
-# appname = Pidgin
-# summary = *twitter.com*
-# urgency = normal
-#
-#[Claws Mail]
-# appname = claws-mail
-# category = email.arrived
-# urgency = normal
-# background = "#2F899E"
-# foreground = "#FFA247"
-#
-#[mute.sh]
-# appname = mute
-# category = mute.sound
-# script = mute.sh
-#
-#[JDownloader]
-# appname = JDownloader
-# category = JD
-# background = "#FFA247"
-# foreground = "#FFFFFF"
-#
-#[newsbeuter]
-# summary = *Feeds*
-# background = "#A8EB41"
-# foreground = "#FFFFFF"
-#
-[irc]
- appname = weechat
- timeout = 0
- background = "#0033bb"
- foreground = "#dddddd"
-#
-[weechat hl]
- appname = weechat
- category = weechat.HL
- background = "#FF5C47"
- foreground = "#FFFFFF"
-#
-[weechat pn]
- appname = weechat
- category = weechat.PM
- background = "#D53B84"
- foreground = "#FFFFFF"
-#
-#[CMUS]
-# appname = CMUS
-# category = cmus
-# background = "#6C4AB7"
-# foreground = "#FFE756"
-#
-#
-# background = "#30AB70"
-# foreground = "#F67245"
-#
-# vim: ft=cfg
diff --git a/common/.config/eww/eww.scss b/common/.config/eww/eww.scss
new file mode 100755
index 0000000..69fd071
--- /dev/null
+++ b/common/.config/eww/eww.scss
@@ -0,0 +1,658 @@
+/** Global *******************************************/
+*{
+ all : unset;
+ font-family : feather;
+ font-family : Iosevka;
+}
+
+/** Vars *********************************************/
+
+$bg-color : #282c34;
+
+/** Background ***************************************/
+.bg {
+ background-image : url("images/bg.png");
+ background-color : #474D59;
+ background-size : 117%;
+ background-position : center;
+ background-repeat : no-repeat;
+ opacity : 1;
+}
+
+/** Generic window ***********************************/
+.genwin, .genwina, .genwinb, .genwinc, .genwind, .genwine, .genwinf, .genwing, .genwinh {
+ background-color : $bg-color; //#252933; #2E3440;
+}
+
+.genwin {
+ border-radius : 16px;
+}
+
+.genwina {
+ border-radius : 16px 16px 0 0;
+}
+
+.genwinb {
+ border-radius : 0 16px 16px 16px;
+}
+
+.genwinh {
+ border-radius : 16px 0 0 16px;
+}
+
+.genwinc {
+ border-radius : 16px 16px 0 16px;
+}
+
+.genwind {
+ border-radius : 46px 16px 16px 16px;
+}
+
+.genwine {
+ border-radius : 16px 46px 16px 16px;
+}
+
+.genwinf {
+ border-radius : 16px 16px 16px 46px;
+}
+
+.genwing {
+ border-radius : 16px 16px 46px 16px;
+}
+
+/** rxyhn's calendar *********************************/
+.cal-holder {
+ padding : 1rem 1rem .2rem;
+ font-size : 1em;
+ font-weight : bold;
+}
+
+.cal_title_right, .cal_title_left {
+ font-size : 32px;
+ color : #EBCB8B;
+}
+
+.cal_title {
+ margin : 16px 72px 4px 72px;
+ font-size : 16px;
+ color : #A3BE8C;
+}
+
+.cal {
+ padding : .8rem .25rem 0rem;
+ margin-left : 10px;
+
+ &.highlight {
+ padding : 10rem;
+ }
+}
+
+calendar:selected {
+ color : #88C0D0;
+}
+
+calendar.header {
+ color : #88C0D0;
+ font-weight : bold;
+}
+
+calendar.button {
+ color : #D46389;
+}
+
+calendar.highlight {
+ color : #D46389;
+ font-weight : bold;
+}
+
+calendar:indeterminate {
+ color : $bg-color;
+}
+
+/** Profile ******************************************/
+.face {
+ background-image : url('images/fox.png');
+ background-size : 175px;
+ background-position : 50% 35%;
+ min-height : 175px;
+ min-width : 175px;
+ margin : 40px 0px 0px 2px;
+ border-radius : 100%;
+}
+
+.fullname {
+ color : #D46389;
+ font-size : 30px;
+ font-weight : bold;
+}
+
+.username {
+ color : #8FBCBB;
+ font-size : 22px;
+ font-weight : bold;
+ margin : -15px 0px 0px 0px;
+}
+
+/** System ********************************************/
+.iconcpu, .iconmem, .iconbright, .iconbat {
+ font-size : 22px;
+ font-weight : normal;
+}
+.iconcpu {
+ color : #BF616A;
+}
+.iconmem {
+ color : #A3BE8C;
+}
+.iconbright {
+ color : #EBCB8B;
+}
+.iconbat {
+ color : #88C0D0;
+}
+
+.cpu_bar, .mem_bar, .bright_bar, .bat_bar, scale trough {
+ all : unset;
+ background-color : #3A404C;
+ border-radius : 16px;
+ min-height : 12px;
+ min-width : 170px;
+}
+
+.cpu_bar, .mem_bar, .bright_bar, .bat_bar, scale trough highlight {
+ all : unset;
+ border-radius : 16px;
+}
+
+.cpu_bar scale trough highlight {
+ background-color : #BF616A;
+}
+.mem_bar scale trough highlight {
+ background-color : #A3BE8C;
+}
+.bright_bar scale trough highlight {
+ background-color : #EBCB8B;
+}
+.bat_bar scale trough highlight {
+ background-color : #88C0D0;
+}
+
+/** Clock ********************************************/
+.time_hour, .time_min {
+ color : #81A1C1;
+ font-size : 45px;
+ font-weight : bold;
+}
+.time_hour {
+ margin : 10px 0px 0px 10px;
+}
+.time_min {
+ margin : 0px 0px 10px 0px;
+}
+
+.time_mer {
+ color : #A3BE8C;
+ font-size : 30px;
+ font-weight : bold;
+ margin : 10px 0px 0px 0px;
+}
+
+.time_day {
+ color : #EBCB8B;
+ font-size : 17px;
+ font-weight : normal;
+ margin : 0px 0px -30px 10px;
+}
+
+/** Uptime ********************************************/
+.icontimer {
+ color : #B48EAD;
+ font-size : 50px;
+ font-weight : normal;
+}
+
+/** Music ***************************************/
+.album_art {
+ background-size : cover;
+ background-position : center;
+ min-height : 184px;
+ min-width : 184px;
+ margin : 20px;
+ border-radius : 14px;
+}
+
+.song {
+ color : #8FBCBB;
+ font-size : 18px;
+ font-weight : bold;
+ margin : 15px 0px 0px 0px;
+}
+
+.artist {
+ color : #EBCB8B;
+ font-size : 14px;
+ font-weight : normal;
+ margin : 0px 0px 0px 0px;
+}
+
+.btn_prev, .btn_play, .btn_next {
+ font-family : Iosevka Nerd Font;
+}
+.btn_prev {
+ color : #EBCB8B;
+ font-size : 32px;
+ font-weight : normal;
+}
+.btn_play {
+ color : #A3BE8C;
+ font-size : 40px;
+ font-weight : bold;
+}
+.btn_next {
+ color : #EBCB8B;
+ font-size : 32px;
+ font-weight : normal;
+}
+
+.music_bar scale trough highlight {
+ all : unset;
+ background-color : #B48EAD;
+ border-radius : 8px;
+}
+.music_bar scale trough {
+ all : unset;
+ background-color : #3A404C;
+ border-radius : 8px;
+ min-height : 10px;
+ min-width : 180px;
+ margin : 0px 10px 0px 0px;
+}
+
+/** Weather ***************************************/
+.iconweather {
+ font-family : Iosevka Nerd Font;
+ font-size : 58px;
+ font-weight : normal;
+ margin : 10px 0px 0px 30px;
+}
+
+.label_temp {
+ color : #A6D1DD;
+ font-size : 54px;
+ font-weight : bold;
+ margin : 15px 25px 0px 0px;
+}
+
+.label_stat {
+ color : #BF616A;
+ font-size : 30px;
+ font-weight : bold;
+ margin : 10px 0px 0px 0px;
+}
+
+.label_quote {
+ color : #E5E5E5;
+ font-size : 18px;
+ font-weight : normal;
+}
+
+/** Applications ***************************************/
+.appbox {
+ margin : 10px 0px 0px 12px;
+}
+
+.app_vivaldi, .app_telegram, .app_discord, .app_terminal, .app_obsidian,
+.app_files, .app_neovim, .app_code, .app_krita, .app_vbox {
+ background-repeat : no-repeat;
+ background-size : 42px;
+ min-height : 42px;
+ min-width : 42px;
+ margin : 0 3px 0 3px;
+}
+
+.app_vivaldi {}
+.app_telegram {}
+.app_discord {}
+.app_terminal {}
+.app_files {}
+.app_obsidian {
+}
+.app_neovim {
+ background-size : 36px;
+ background-position : center;
+}
+.app_code {}
+.app_krita {}
+.app_vbox {}
+
+/** Links ***************************************/
+.iconweb, .iconmail {
+ color : #FFFFFF;
+ font-family : Iosevka Nerd Font;
+ font-size : 60px;
+ font-weight : normal;
+}
+.iconmail {
+ color : #DF584E;
+}
+
+.github {
+ background-color : #24292E;
+ border-radius : 16px;
+}
+.reddit {
+ background-color : #E46231;
+ border-radius : 16px;
+}
+.twitter {
+ background-color : #61AAD6;
+ border-radius : 16px;
+}
+.youtube {
+ background-color : #DF584E;
+ border-radius : 16px;
+}
+.mail {
+ background-color : #FFFFFF;
+ border-radius : 16px;
+}
+
+.mailbox {
+ background-color : #E5E5E5;
+ border-radius : 10px;
+ margin : 24px 0px 24px 0px;
+}
+.label_mails {
+ color : #404040;
+ font-size : 24px;
+ font-weight : bold;
+ margin : 0px 6px 0px 6px;
+}
+
+/** Power buttons ***************************************/
+.btn_logout, .btn_sleep, .btn_reboot, .btn_poweroff {
+ font-size : 48px;
+ font-weight : bold;
+}
+
+.btn_logout {
+ color : #BF616A;
+}
+.btn_sleep {
+ color : #A3BE8C;
+}
+.btn_reboot {
+ color : #EBCB8B;
+}
+.btn_poweroff {
+ color : #88C0D0;
+}
+
+/** Home folders ***************************************/
+.hddbox {
+ background-color : #3A404C;
+ border-radius : 10px;
+ margin : 15px;
+}
+.hddicon {
+ color : #81A1C1;
+ font-family : Iosevka Nerd Font;
+ font-size : 70px;
+ font-weight : normal;
+ margin : 5px 10px 5px 15px;
+}
+.hdd_label {
+ color : #E5E9F0;
+ font-size : 32px;
+ font-weight : bold;
+ margin : 0px 0px 0px 10px;
+}
+.fs_sep {
+ color : #2E3440;
+ font-size : 34px;
+ font-weight : bold;
+}
+
+.iconfolder1, .iconfolder2, .iconfolder3, .iconfolder4, .iconfolder5, .iconfolder6 {
+ font-family : Iosevka Nerd Font;
+ font-size : 24px;
+ font-weight : normal;
+ margin : 0px 0px 0px 25px;
+}
+.iconfolder1 {
+ color : #BF616A;
+}
+.iconfolder2 {
+ color : #A3BE8C;
+}
+.iconfolder3 {
+ color : #EBCB8B;
+}
+.iconfolder4 {
+ color : #81A1C1;
+}
+.iconfolder5 {
+ color : #B48EAD;
+}
+.iconfolder6 {
+ color : #88C0D0;
+}
+
+.label_folder1, .label_folder2, .label_folder3, .label_folder4, .label_folder5, .label_folder6 {
+ font-size : 22px;
+ font-weight : normal;
+ margin : 0px 0px 0px 30px;
+}
+.label_folder1 {
+ color : #BF616A;
+}
+.label_folder2 {
+ color : #A3BE8C;
+}
+.label_folder3 {
+ color : #EBCB8B;
+}
+.label_folder4 {
+ color : #81A1C1;
+}
+.label_folder5 {
+ color : #B48EAD;
+}
+.label_folder6 {
+ color : #88C0D0;
+}
+
+/*--|> NeoMusic <|--*/
+
+.art {
+ background-size : 62%;
+ background-repeat : no-repeat;
+ background-position : 100% 50%;
+ border-radius : 18px 16px 16px 18px;
+}
+
+.music_main, .art {
+ min-width : 396px;
+}
+
+.music_main {
+ border-radius : 16px;
+}
+
+.music_main .song {
+ font-size : 24px;
+}
+
+.music_main .artist {
+ margin : 0 0 32px 0;
+ font-size : 16px;
+}
+
+.music_main .artist {
+ color : #E5C07b;
+}
+
+.music_main .song {
+ color : #61AFEF;
+}
+
+.music_main .btn_next, .music_main .btn_prev {
+ font-size : 30px;
+ color : #E5C07b;
+}
+
+.music_main .btn_play {
+ font-size : 40px;
+ color : #98c379;
+}
+
+.music_main .control, .music_main .song, .music_main .artist {
+ padding : 4px 0 4px 10px;
+ letter-spacing : 2px;
+}
+
+.music_main {
+ background : linear-gradient(120deg, $bg-color /*#282c34*/ 55%, transparent);
+ padding : 4px 10px 4px 10px;
+}
+
+/*--> NeoProfile <--*/
+
+.avatar{
+ border-radius : 18px;
+ background-size : cover;
+ background-position : 50% 100%;
+}
+
+.profile_main {
+ border-radius : 16px;
+}
+
+.profile_main {
+ background : linear-gradient(-5deg, $bg-color 10%, transparent, $bg-color 75%);
+ min-width : 246px;
+}
+
+.fullname {
+ margin : 10px 0 0 0;
+ color : #D46389;
+ font-size : 28px;
+ font-weight : bold;
+}
+
+.username {
+ color : #8FBCBB;
+ font-size : 22px;
+ font-weight : bold;
+ margin : -15px 0px 0px 0px;
+}
+
+/*--|> NeoClock <|--*/
+
+.uptitle {
+ color : #EBCB8B;
+ font-size : 22px;
+}
+
+.updays {
+ color : #81A1C1;
+ font-size : 28px;
+ font-weight : bold;
+}
+
+.uptime {
+ color : #61AFEF;
+ //color : #E5E9F0;
+ font-size : 24px;
+ font-weight : bold;
+}
+
+.nclock {
+ margin : 0px 0px 0px 26px;
+}
+
+.ntime_hour, .ntime_min {
+ color : #81A1C1;
+ font-size : 45px;
+ font-weight : bold;
+}
+.ntime_hour {
+ margin : 0px;
+}
+.ntime_min {
+ margin : 0px 0px 0px 2px;
+}
+
+.ntime_date {
+ margin : 6px 0px -6px 0px;
+ color : #61AFEF;
+ font-size : 17px;
+ font-weight : bold;
+}
+
+.ntime_mers *:nth-child(1) {
+ margin : 8px 0px 0px 0px;
+}
+
+.ntime_mer {
+ color : #A3BE8C;
+ font-size : 16px;
+ font-weight : bold;
+}
+
+.ntime_day {
+ margin : -8px 0px 0px 0px;
+ color : #EBCB8B;
+ font-size : 18px;
+ font-weight : normal;
+}
+
+/*--> Workspaces <--*/
+.ws1, .ws2, .ws3, .ws4, .ws5, .ws6, .ws7, .ws8, .ws9, .ws10 {
+ font-size : 24px;
+}
+.ws1 {
+ color : #52E080;
+}
+
+.ws2 {
+ color : #D70040;
+}
+
+.ws3 {
+ color : #117dca;
+}
+
+.ws4 {
+ color : #32a7d9;
+}
+
+.ws5 {
+ color : #23cf5f;
+}
+
+.ws6 {
+ color : #80461b;
+}
+
+.ws7 {
+ color : #f4c430;
+}
+
+.ws8 {
+ color : #DA70D6;
+}
+
+.ws9 {
+ color : #800020;
+}
+
+.ws10 {
+ color : #F5F5F5;
+}
+
+.ws_holder {
+ margin : 24px 0 0 0;
+}
+
+/** EOF *************************************************/
diff --git a/common/.config/eww/eww.yuck b/common/.config/eww/eww.yuck
new file mode 100755
index 0000000..7ea9948
--- /dev/null
+++ b/common/.config/eww/eww.yuck
@@ -0,0 +1,435 @@
+;; **
+;; ** Widgets config for EWW
+;; ** Created by : @adi1090x
+;; ** Modified by : Dusty
+
+
+
+
+ ;; Profile vars
+ (defvar IMAGE "images/fox.png")
+ (defvar NAME "Dustyn Senior")
+ (defpoll UNAME :interval "5m" "whoami")
+
+ ;; System vars
+ (defpoll HOST :interval "5s" "hostname")
+ (defpoll CPU_USAGE :interval "1s" "~/.config/eww/scripts/sys_info --cpu")
+ (defpoll MEM_USAGE :interval "1s" "~/.config/eww/scripts/sys_info --mem")
+ (defpoll BLIGHT :interval "1s" "~/.config/eww/scripts/sys_info --blight")
+ (defpoll BATTERY :interval "5s" "~/.config/eww/scripts/sys_info --bat")
+
+ ;; Time vars
+ (defpoll HOUR :interval "5s" "date +\"%I\"")
+ (defpoll MIN :interval "5s" "date +\"%M\"")
+ (defpoll MERA :interval "5s" "date +\"%p\" | cut -b 1")
+ (defpoll MERB :interval "5s" "date +\"%p\" | cut -b 2")
+ (defpoll DAY :interval "5s" "date +\"%A\"")
+ (defpoll DATE :interval "5s" "date +\"%d.%m.%Y\"")
+
+ ;; Uptime vars
+ (defpoll UPDAYS :interval "5s" "echo $(($(cat /proc/uptime | cut -d \".\" -f 1) / 60 / 60 / 24))d")
+ (defpoll UPTIME :interval "5s" "printf %02d:%02d $(($(cat /proc/uptime | cut -d \".\" -f 1) / 60 / 60 % 24)) $(($(cat /proc/uptime | cut -d \".\" -f 1) / 60 % 60))")
+ ;; (defpoll UPHOUR :interval "5s" "uptime -p | awk '{print $2 \" \" $3}' | sed 's/,//g'")
+ ;; (defpoll UPMIN :interval "5s" "uptime -p | awk '{print $4 \" \" $5}'")
+
+ ;; Music vars
+ (defpoll SONG :interval "1s" "~/.config/eww/scripts/music_info --song")
+ (defpoll ARTIST :interval "1s" "~/.config/eww/scripts/music_info --artist")
+ (defpoll STATUS :interval "1s" "~/.config/eww/scripts/music_info --status")
+ (defpoll COVER :interval "1s" "~/.config/eww/scripts/music_info --cover")
+
+ ;; Weather vars
+ (defpoll ICON :interval "15m" "~/.config/eww/scripts/weather_info --icon")
+ (defpoll STAT :interval "15m" "~/.config/eww/scripts/weather_info --stat")
+ (defpoll TEMP :interval "15m" "~/.config/eww/scripts/weather_info --temp")
+ (defpoll HEX :interval "15m" "~/.config/eww/scripts/weather_info --hex")
+ (defpoll QUOTE :interval "15m" "~/.config/eww/scripts/weather_info --quote")
+ (defpoll QUOTE2 :interval "15m" "~/.config/eww/scripts/weather_info --quote2")
+
+ ;; Apps vars
+ (defpoll MAILS :interval "5m" "~/.config/eww/scripts/mails")
+
+ ;; Files vars
+ (defpoll FREE :interval "5s" "df -h / | awk '{print $4}' | tail -n 1 | sed 's/G/GB/'")
+
+ ;; Calendar
+ (defpoll CALDAY :interval "10h" "date '+%d'")
+ (defpoll CALMONTH :interval "10h" "$(($(date +%m)-1))")
+ (defpoll CALYEAR :interval "10h" "date '+%Y'")
+
+
+
+
+;; ********************************************************************************
+
+
+
+ ;; background
+ (defwidget bg []
+ (box :class "bg"))
+
+ ;; profile
+ (defwidget user []
+ (box :class "genwin" :orientation "v" :spacing 20 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (box :class "face" :halign "center" :style "background-image: url('${IMAGE}');")
+ (label :class "fullname" :halign "center" :wrap "true" :limit-width 25 :text NAME)
+ (label :class "username" :halign "center" :wrap "true" :limit-width 25 :text UNAME)))
+
+ ;; NeoProfile
+ (defwidget nuser []
+ (box :class "genwina" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (box :class "avatar" :vexpand "false" :hexpand "false" :style "background-image: url('${IMAGE}');"
+ (box :class "profile_main" :orientation "v" :spacing 15 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "fullname" :halign "center" :wrap "true" :limit-width 25 :text NAME)
+ (label :class "username" :halign "center" :wrap "true" :limit-width 25 :text UNAME)))))
+
+ ;; system
+ (defwidget system []
+ (box :class "genwin" :vexpand "false" :hexpand "false"
+ (box :orientation "v" :spacing 25 :halign "center" :valign "center" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (box :class "cpu_bar" :orientation "h" :spacing 20 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "iconcpu" :text "")
+ (scale :min 0 :max 100 :value CPU_USAGE :active "false"))
+ (box :class "mem_bar" :orientation "h" :spacing 20 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "iconmem" :text "")
+ (scale :min 0 :max 100 :value MEM_USAGE :active "false"))
+ (box :class "bright_bar" :orientation "h" :spacing 20 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "iconbright" :text "")
+ (scale :min 0 :max 100 :value BLIGHT :active "false"))
+ (box :class "bat_bar" :orientation "h" :spacing 20 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "iconbat" :text "")
+ (scale :min 0 :max 100 :value BATTERY :active "false")))))
+
+ ;; clock
+ (defwidget clock []
+ (box :class "genwin" :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "time_hour" :valign "start" :wrap "true" :limit-width 25 :text HOUR)
+ (label :class "time_min" :valign "end" :wrap "true" :limit-width 25 :text MIN)
+ (box :orientation "v" :spacing 10 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "time_mer" :halign "end" :wrap "true" :limit-width 25 :text "${MERA}${MERB}")
+ (label :class "time_day" :halign "end" :wrap "true" :limit-width 25 :text DAY))))
+
+ ;; NeoClock
+ (defwidget nclock []
+ (box :class "genwinc" :orientation "h" :spacing 20 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (box :orientation "v" :class "nclock" :valign "center" :spacing 0 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "uptitle" :halign "center" :wrap "true" :limit-width 25 :text "Uptime")
+ (label :class "updays" :halign "center" :wrap "true" :limit-width 25 :text "祥 ${UPDAYS}")
+ (label :class "uptime" :halign "center" :wrap "true" :limit-width 25 :text UPTIME))
+ (box :orientation "v" :valign "center" :spacing 0 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "ntime_date" :halign "center" :wrap "true" :limit-width 25 :text DATE)
+ (box :orientation "h" :halign "center" :spacing 8 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "ntime_hour" :valign "start" :wrap "true" :limit-width 25 :text HOUR)
+ (box :orientation "v" :class "ntime_mers" :spacing 0 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "ntime_mer" :halign "end" :wrap "true" :limit-width 25 :text MERA)
+ (label :class "ntime_mer" :halign "end" :wrap "true" :limit-width 25 :text MERB))
+ (label :class "ntime_min" :valign "end" :wrap "true" :limit-width 25 :text MIN))
+ (label :class "ntime_day" :halign "center" :wrap "true" :limit-width 25 :text DAY))))
+
+ ;; NeoCalendar (rxyhn's calendar)
+ (defwidget cal []
+ (box :class "genwin" :orientation "v" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (box :class "cal_holder" :orientation "v" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (box :class "title_holder" :orientation "h" :space-evenly "false" :halign "center" :vexpand "false" :hexpand "false"
+ (label :class "cal_title_left" :halign "start" :wrap "true" :text "·")
+ (label :class "cal_title" :halign "center" :wrap "true" :text "Calendar")
+ (label :class "cal_title_right" :halign "end" :wrap "true" :text "·"))
+ (calendar :class "cal" :day CALDAY :month CALMONTH :year CALYEAR))))
+
+ ;; uptime
+ (defwidget uptime []
+ (box :class "genwin"
+ (box :orientation "h" :halign "center" :spacing 30 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "icontimer" :valign "center" :text "祥")
+ (box :orientation "v" :valign "center" :spacing 0 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "updays" :halign "center" :wrap "true" :limit-width 25 :text UPDAYS)
+ (label :class "uptime" :halign "center" :wrap "true" :limit-width 25 :text UPTIME)))))
+
+ ;; Music
+ (defwidget music []
+ (box :class "genwin" :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (box :class "album_art" :vexpand "false" :hexpand "false" :style "background-image: url('${COVER}');")
+ (box :orientation "v" :spacing 29 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :halign "center" :class "song" :wrap "true" :limit-width 15 :text SONG)
+ (label :halign "center" :class "artist" :wrap "true" :limit-width 18 :text ARTIST)
+ (box :orientation "h" :spacing 15 :halign "center" :space-evenly "true" :vexpand "false" :hexpand "false"
+ (button :class "btn_prev" :onclick "~/.config/eww/scripts/music_info --prev" "玲")
+ (button :class "btn_play" :onclick "~/.config/eww/scripts/music_info --toggle" STATUS)
+ (button :class "btn_next" :onclick "~/.config/eww/scripts/music_info --next" "怜"))
+ (box :class "music_bar" :halign "center" :vexpand "false" :hexpand "false"
+ ;; (scale :onscroll "mpc -q seek +1" :min 0 :active "true" :max 100 :value CURRENT)
+ ))))
+
+ ;; Spotify
+ (defwidget spotify []
+ (box :class "genwinb" :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (box :class "art" :vexpand "false" :hexpand "false" :style "background-image: url('${COVER}');"
+ (box :class "music_main" :orientation "v" :spacing 15 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :halign "start" :class "song" :wrap "false" :limit-width 15 :text SONG)
+ (label :halign "start" :class "artist" :wrap "false" :limit-width 15 :text ARTIST)
+ (box :orientation "h" :class "control" :spacing 20 :halign "start" :valign "end" :space-evenly "true" :vexpand "false" :hexpand "false"
+ (button :class "btn_prev" :onclick "~/.config/eww/scripts/music_info --prev" "玲")
+ (button :class "btn_play" :onclick "~/.config/eww/scripts/music_info --toggle" STATUS)
+ (button :class "btn_next" :onclick "~/.config/eww/scripts/music_info --next" "怜"))))))
+
+ ;; github
+ (defwidget github []
+ (box :class "github" :vexpand "false" :hexpand "false"
+ (button :class "iconweb" :onclick "~/.config/eww/scripts/open_links --gh" "")))
+
+ ;; reddit
+ (defwidget reddit []
+ (box :class "reddit" :vexpand "false" :hexpand "false"
+ (button :class "iconweb" :onclick "~/.config/eww/scripts/open_links --rd" "樓")))
+
+ ;; twitter
+ (defwidget twitter []
+ (box :class "twitter" :vexpand "false" :hexpand "false"
+ (button :class "iconweb" :onclick "~/.config/eww/scripts/open_links --tw" "")))
+
+ ;; youtube
+ (defwidget youtube []
+ (box :class "youtube" :vexpand "false" :hexpand "false"
+ (button :class "iconweb" :onclick "~/.config/eww/scripts/open_links --yt" "")))
+
+ ;; mail
+ (defwidget mail []
+ (box :class "mail"
+ (box :orientation "h" :halign "center" :spacing 20 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :class "iconmail" :onclick "~/.config/eww/scripts/open_links --mail" "")
+ (box :class "mailbox" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :class "label_mails" :onclick "~/.config/eww/scripts/open_links --mail" MAILS)))))
+
+ ;; weather
+ (defwidget weather_info []
+ (box :orientation "h" :vexpand "false" :hexpand "false"
+ (label :class "iconweather" :halign "start" :style "color: ${HEX};" :text ICON)
+ (label :class "label_stat" :valign "center" :text STAT)
+ (label :class "label_temp" :halign "end" :text TEMP)))
+ (defwidget weather_quotes []
+ (box :orientation "v" :spacing 15 :halign "center" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "label_quote" :text QUOTE)
+ (label :class "label_quote" :text QUOTE2)))
+
+ ;; apps
+ (defwidget apps []
+ (box :class "genwinh" :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (box :class "appbox" :orientation "v" :spacing 18 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :style "background-image: url('images/icons/vivaldi.svg');" :class "app_vivaldi" :onclick "~/.config/eww/scripts/open_apps --vd")
+ (button :style "background-image: url('images/icons/telegram.svg');" :class "app_telegram" :onclick "~/.config/eww/scripts/open_apps --tg")
+ (button :style "background-image: url('images/icons/discord.svg');" :class "app_discord" :onclick "~/.config/eww/scripts/open_apps --dc")
+ (button :style "background-image: url('images/icons/terminal.svg');" :class "app_terminal" :onclick "~/.config/eww/scripts/open_apps --tr")
+ (button :style "background-image: url('images/icons/files.svg');" :class "app_files" :onclick "~/.config/eww/scripts/open_apps --fm"))
+ (box :class "appbox" :orientation "v" :spacing 18 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :style "background-image: url('images/icons/code.svg');" :class "app_code" :onclick "~/.config/eww/scripts/open_apps --cd")
+ (button :style "background-image: url('images/icons/krita.svg');" :class "app_krita" :onclick "~/.config/eww/scripts/open_apps --kr")
+ (button :style "background-image: url('images/icons/virtualbox.svg');" :class "app_vbox" :onclick "~/.config/eww/scripts/open_apps --vb")
+ (button :style "background-image: url('images/icons/obsidian.svg');" :class "app_obsidian" :onclick "~/.config/eww/scripts/open_apps --ob")
+ (button :style "background-image: url('images/icons/neovim.svg');" :class "app_neovim" :onclick "~/.config/eww/scripts/open_apps --nv"))))
+
+ ;; power buttons
+ (defwidget logout []
+ (box :class "genwind" :vexpand "false" :hexpand "false"
+ (button :class "btn_logout" :onclick "openbox --exit" "")))
+ (defwidget sleep []
+ (box :class "genwine" :vexpand "false" :hexpand "false"
+ (button :class "btn_sleep" :onclick "systemctl suspend" "")))
+ (defwidget reboot []
+ (box :class "genwinf" :vexpand "false" :hexpand "false"
+ (button :class "btn_reboot" :onclick "systemctl reboot" "")))
+ (defwidget poweroff []
+ (box :class "genwing" :vexpand "false" :hexpand "false"
+ (button :class "btn_poweroff" :onclick "systemctl poweroff" "")))
+
+ ;; folders
+ (defwidget folders []
+ (box :class "genwinb" :orientation "v" :spacing 4 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (box :class "hddbox" :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (box :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :class "hddicon" :onclick "~/.config/eww/scripts/open_apps --fm" ""))
+ (label :class "fs_sep" :text "|")
+ (box :space-evenly "false" :vexpand "false" :hexpand "false"
+ (label :class "hdd_label" :wrap "true" :limit-width 25 :text FREE)))
+ (box :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :class "iconfolder1" :onclick "~/.config/eww/scripts/open_folders --docs" "")
+ (button :class "label_folder1" :onclick "~/.config/eww/scripts/open_folders --docs" "Documents"))
+ (box :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :class "iconfolder2" :onclick "~/.config/eww/scripts/open_folders --dl" "")
+ (button :class "label_folder2" :onclick "~/.config/eww/scripts/open_folders --dl" "Downloads"))
+ (box :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :class "iconfolder3" :onclick "~/.config/eww/scripts/open_folders --music" "")
+ (button :class "label_folder3" :onclick "~/.config/eww/scripts/open_folders --music" "Music"))
+ (box :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :class "iconfolder4" :onclick "~/.config/eww/scripts/open_folders --pics" "")
+ (button :class "label_folder4" :onclick "~/.config/eww/scripts/open_folders --pics" "Pictures"))
+ (box :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :class "iconfolder5" :onclick "~/.config/eww/scripts/open_folders --cfg" "ﮛ")
+ (button :class "label_folder5" :onclick "~/.config/eww/scripts/open_folders --cfg" "~/.config"))
+ (box :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :class "iconfolder6" :onclick "~/.config/eww/scripts/open_folders --local" "ﮛ")
+ (button :class "label_folder6" :onclick "~/.config/eww/scripts/open_folders --local" "~/.local"))))
+
+ ;; workspaces
+ (defwidget workspaces[]
+ (box :class "genwinb" :orientation "v" :spacing 25 :space-evenly "false" :vexpand "false" :hexpand "false"
+ (box :orientation "h" :class "ws_holder" :spacing 18 :halign "center" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :class "ws1" :halign "center" :wrap "true" :onclick "./launch_eww && i3-msg workspace \"1 : \"" "")
+ (button :class "ws2" :halign "center" :wrap "true" :onclick "./launch_eww && i3-msg workspace \"2 : \"" "")
+ (button :class "ws3" :halign "center" :wrap "true" :onclick "./launch_eww && i3-msg workspace \"3 : \"" "")
+ (button :class "ws4" :halign "center" :wrap "true" :onclick "./launch_eww && i3-msg workspace \"4 : 切\"" "切")
+ (button :class "ws5" :halign "center" :wrap "true" :onclick "./launch_eww && i3-msg workspace \"5 : \"" ""))
+ (box :orientation "h" :spacing 15 :halign "center" :space-evenly "false" :vexpand "false" :hexpand "false"
+ (button :class "ws6" :halign "center" :wrap "true" :onclick "./launch_eww && i3-msg workspace \"6 : \"" "")
+ (button :class "ws7" :halign "center" :wrap "true" :onclick "./launch_eww && i3-msg workspace \"7 : \"" "")
+ (button :class "ws8" :halign "center" :wrap "true" :onclick "./launch_eww && i3-msg workspace \"8 : \"" "")
+ (button :class "ws9" :halign "center" :wrap "true" :onclick "./launch_eww && i3-msg workspace \"9 : \"" "")
+ (button :class "ws10" :halign "center" :wrap "true" :onclick "./launch_eww && i3-msg workspace \"10 : \"" ""))))
+
+
+ ;; outers
+ (defwidget outera[]
+ (box :style "background:transparent;border-radius:20px;box-shadow:16px 16px 0 0 #282c34;"))
+
+ (defwidget outerb[]
+ (box :style "background:transparent;border-radius:20px;box-shadow:-16px 16px 0 0 #282c34;"))
+
+ (defwidget outerc[]
+ (box :style "background:transparent;border-radius:20px;box-shadow:16px -16px 0 0 #282c34;"))
+
+
+;; ********************************************************************************
+
+
+
+ ;; background
+ (defwindow background :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 0 :y 0 :width "1360px" :height "768px")
+ (bg))
+
+ ;; profile
+ (defwindow profile :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 109 :y 109 :width 246 :height 326)
+ (nuser))
+
+ ;; system
+ (defwindow system :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 365 :y 109 :width 246 :height 204)
+ (system))
+
+ ;; clock
+ (defwindow clock :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 365 :y 323 :width 246 :height 102)
+ (nclock))
+
+ ;; uptime
+ (defwindow uptime :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 365 :y 221 :width 206 :height 102)
+ (uptime))
+
+ ;; music
+ (defwindow music :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 109 :y 434 :width 416 :height 224)
+ (spotify))
+
+ ;; github
+ (defwindow github :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 535 :y 567 :width 96 :height 92)
+ (github))
+
+ ;; reddit
+ (defwindow reddit :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 641 :y 567 :width 96 :height 92)
+ (reddit))
+
+ ;; twitter
+ (defwindow twitter :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 747 :y 567 :width 96 :height 92)
+ (twitter))
+
+ ;; youtube
+ (defwindow youtube :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 853 :y 567 :width 96 :height 92)
+ (youtube))
+
+ ;; weather
+ (defwindow weather_info :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 341 :y 10 :width 438 :height 59)
+ (weather_info))
+ (defwindow weather_quotes :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 461 :y 679 :width 438 :height 99)
+ (weather_quotes))
+
+ ;; apps
+ (defwindow apps :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 621 :y 109 :width 126 :height 306)
+ (apps))
+
+ ;; mail
+ (defwindow mail :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 747 :y 465 :width 202 :height 92)
+ (mail))
+
+ ;; logout
+ (defwindow logout :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 1032 :y 109 :width 104 :height 102)
+ (logout))
+
+ ;; sleep
+ (defwindow sleep :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 1147 :y 109 :width 104 :height 102)
+ (sleep))
+
+ ;; reboot
+ (defwindow reboot :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 1032 :y 221 :width 104 :height 102)
+ (reboot))
+
+ ;; poweroff
+ (defwindow poweroff :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 1147 :y 221 :width 104 :height 102)
+ (poweroff))
+
+ ;; folders
+ (defwindow folders :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 747 :y 109 :width 202 :height 346)
+ (folders))
+
+ ;; workspaces
+ (defwindow workspaces :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 535 :y 425 :width 202 :height 132)
+ (workspaces))
+
+ ;; calendar
+ (defwindow calendar :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 530 :y 38 :width 270 :height 60)
+ (cal))
+
+ ;; calendar outer 1
+ (defwindow roundeda :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x "630px" :y "7px" :width "32px" :height "32px")
+ (outera))
+
+ ;; calendar outer 2
+ (defwindow roundedb :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x "662px" :y "7px" :width "32px" :height "32px")
+ (outerb))
+
+ ;; profile outer 1
+ (defwindow roundedc :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x "355px" :y "403px" :width "32px" :height "32px")
+ (outerb))
+
+ ;; clock outer 1
+ (defwindow roundedd :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 611 :y 393 :width 32 :height 32)
+ (outerb))
+
+ ;; clock outer 2
+ (defwindow roundede :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 503 :y 425 :width 32 :height 32)
+ (outerc))
+
+ ;; apps outer 1
+ (defwindow roundedf :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x 715 :y 415 :width 32 :height 32)
+ (outerc))
diff --git a/common/.config/eww/images/bg.png b/common/.config/eww/images/bg.png
new file mode 100755
index 0000000..b706936
Binary files /dev/null and b/common/.config/eww/images/bg.png differ
diff --git a/common/.config/eww/images/fox.png b/common/.config/eww/images/fox.png
new file mode 100755
index 0000000..47c09e3
Binary files /dev/null and b/common/.config/eww/images/fox.png differ
diff --git a/common/.config/eww/images/icons/code.svg b/common/.config/eww/images/icons/code.svg
new file mode 100755
index 0000000..b340b75
--- /dev/null
+++ b/common/.config/eww/images/icons/code.svg
@@ -0,0 +1,8 @@
+
diff --git a/common/.config/eww/images/icons/discord.svg b/common/.config/eww/images/icons/discord.svg
new file mode 100755
index 0000000..a02373d
--- /dev/null
+++ b/common/.config/eww/images/icons/discord.svg
@@ -0,0 +1,6 @@
+
diff --git a/common/.config/eww/images/icons/files.svg b/common/.config/eww/images/icons/files.svg
new file mode 100755
index 0000000..8a2c892
--- /dev/null
+++ b/common/.config/eww/images/icons/files.svg
@@ -0,0 +1,16 @@
+
diff --git a/common/.config/eww/images/icons/firefox.svg b/common/.config/eww/images/icons/firefox.svg
new file mode 100755
index 0000000..e14fafa
--- /dev/null
+++ b/common/.config/eww/images/icons/firefox.svg
@@ -0,0 +1,14 @@
+
diff --git a/common/.config/eww/images/icons/geany.svg b/common/.config/eww/images/icons/geany.svg
new file mode 100755
index 0000000..94029ba
--- /dev/null
+++ b/common/.config/eww/images/icons/geany.svg
@@ -0,0 +1,5 @@
+
diff --git a/common/.config/eww/images/icons/gimp.svg b/common/.config/eww/images/icons/gimp.svg
new file mode 100755
index 0000000..3a96df9
--- /dev/null
+++ b/common/.config/eww/images/icons/gimp.svg
@@ -0,0 +1,22 @@
+
diff --git a/common/.config/eww/images/icons/krita.svg b/common/.config/eww/images/icons/krita.svg
new file mode 100644
index 0000000..ab06e45
--- /dev/null
+++ b/common/.config/eww/images/icons/krita.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/common/.config/eww/images/icons/neovim.svg b/common/.config/eww/images/icons/neovim.svg
new file mode 100644
index 0000000..17106f0
--- /dev/null
+++ b/common/.config/eww/images/icons/neovim.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/common/.config/eww/images/icons/obsidian.svg b/common/.config/eww/images/icons/obsidian.svg
new file mode 100644
index 0000000..7d50e4a
--- /dev/null
+++ b/common/.config/eww/images/icons/obsidian.svg
@@ -0,0 +1,13 @@
+
diff --git a/common/.config/eww/images/icons/telegram.svg b/common/.config/eww/images/icons/telegram.svg
new file mode 100755
index 0000000..37c62cf
--- /dev/null
+++ b/common/.config/eww/images/icons/telegram.svg
@@ -0,0 +1,20 @@
+
diff --git a/common/.config/eww/images/icons/terminal.svg b/common/.config/eww/images/icons/terminal.svg
new file mode 100755
index 0000000..ea2f949
--- /dev/null
+++ b/common/.config/eww/images/icons/terminal.svg
@@ -0,0 +1,14 @@
+
diff --git a/common/.config/eww/images/icons/virtualbox.svg b/common/.config/eww/images/icons/virtualbox.svg
new file mode 100755
index 0000000..3883061
--- /dev/null
+++ b/common/.config/eww/images/icons/virtualbox.svg
@@ -0,0 +1,11 @@
+
diff --git a/common/.config/eww/images/icons/vivaldi.svg b/common/.config/eww/images/icons/vivaldi.svg
new file mode 100755
index 0000000..ba78d92
--- /dev/null
+++ b/common/.config/eww/images/icons/vivaldi.svg
@@ -0,0 +1,174 @@
+
+
diff --git a/common/.config/eww/images/music.png b/common/.config/eww/images/music.png
new file mode 100755
index 0000000..3ded333
Binary files /dev/null and b/common/.config/eww/images/music.png differ
diff --git a/common/.config/eww/images/profile.jpg b/common/.config/eww/images/profile.jpg
new file mode 100755
index 0000000..575528e
Binary files /dev/null and b/common/.config/eww/images/profile.jpg differ
diff --git a/common/.config/eww/images/spotify.jpg b/common/.config/eww/images/spotify.jpg
new file mode 100644
index 0000000..61f88d0
Binary files /dev/null and b/common/.config/eww/images/spotify.jpg differ
diff --git a/common/.config/eww/launch_eww b/common/.config/eww/launch_eww
new file mode 100755
index 0000000..3741070
--- /dev/null
+++ b/common/.config/eww/launch_eww
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+## Files and cmd
+FILE="$HOME/.cache/eww_launch.xyz"
+EWW="/usr/bin/eww"
+
+## Run eww daemon if not running already
+if [[ ! `pidof eww` ]]; then
+ ${EWW} daemon
+ sleep 1
+fi
+
+## Open widgets
+run_eww() {
+ ${EWW} open-many \
+ background \
+ profile \
+ system \
+ clock \
+ music \
+ github \
+ reddit \
+ twitter \
+ youtube \
+ apps \
+ workspaces \
+ logout \
+ mail \
+ sleep \
+ reboot \
+ poweroff \
+ weather_info \
+ weather_quotes \
+ roundedc \
+ roundedd \
+ roundede \
+ roundedf \
+ folders \
+}
+
+## Launch or close widgets accordingly
+if [[ ! -f "$FILE" ]]; then
+ touch "$FILE"
+ run_eww
+else
+ ${EWW} close-all
+ rm "$FILE"
+fi
diff --git a/common/.config/eww/launch_eww_cal b/common/.config/eww/launch_eww_cal
new file mode 100755
index 0000000..c7fa5f2
--- /dev/null
+++ b/common/.config/eww/launch_eww_cal
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+## Files and cmd
+FILE="$HOME/.cache/eww_launch.xyz"
+EWW="/usr/bin/eww"
+
+## Run eww daemon if not running already
+if [[ ! `pidof eww` ]]; then
+ ${EWW} daemon
+ sleep 1
+fi
+
+## Open widgets
+run_eww() {
+ ${EWW} open-many \
+ roundeda \
+ roundedb \
+ calendar
+}
+
+## Launch or close widgets accordingly
+if [[ ! -f "$FILE" ]]; then
+ touch "$FILE"
+ run_eww
+else
+ ${EWW} close-all
+ rm "$FILE"
+fi
diff --git a/common/.config/eww/scripts/mails b/common/.config/eww/scripts/mails
new file mode 100755
index 0000000..83511fd
--- /dev/null
+++ b/common/.config/eww/scripts/mails
@@ -0,0 +1,7 @@
+#!/bin/python
+
+import imaplib
+obj = imaplib.IMAP4_SSL('imap.gmail.com',993)
+obj.login('MAIL','PASSWORD') # write your email and password
+obj.select()
+print(len(obj.search(None, 'UnSeen')[1][0].split()))
diff --git a/common/.config/eww/scripts/music_info b/common/.config/eww/scripts/music_info
new file mode 100755
index 0000000..f567a29
--- /dev/null
+++ b/common/.config/eww/scripts/music_info
@@ -0,0 +1,111 @@
+#!/bin/bash
+
+## Get data
+# STATUS="$(mpc status)"
+# COVER="/tmp/.music_cover.jpg"
+# MUSIC_DIR="$HOME/Music"
+
+# DATA = `dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:org.mpris.MediaPlayer2.Player string:Metadata`
+
+# Playing, Paused or Stopped
+# album = `dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:org.mpris.MediaPlayer2.Player string:Metadata | sed -n '/album/{n;p}' | cut -d '"' -f 2 | head -n 1`
+
+## Get status
+get_status() {
+ status=`dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'PlaybackStatus'|egrep -A 1 "string"|cut -b 26-|cut -d '"' -f 1|egrep -v ^$`
+ if [[ "$(pidof spotify || echo 1)" != "1" ]]; then
+ if [[ "$status" == "Playing" ]]; then
+ echo ""
+ else
+ echo "喇"
+ fi
+ else
+ echo ""
+ fi
+}
+
+## Get song
+get_song() {
+ title=`dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:org.mpris.MediaPlayer2.Player string:Metadata | sed -n '/title/{n;p}' | cut -d '"' -f 2`
+ if [[ "$(pidof spotify || echo 1)" != "1" ]]; then
+ echo "$title"
+ else
+ echo "Offline"
+ fi
+}
+
+## Get artist
+get_artist() {
+ artist=`dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:org.mpris.MediaPlayer2.Player string:Metadata | sed -n '/artist/{n;n;p}' | cut -d '"' -f 2`
+ if [[ "$(pidof spotify || echo 1)" != "1" ]]; then
+ echo "$artist"
+ else
+ echo "Offline"
+ fi
+}
+
+## Get time
+get_time() {
+ time=`mpc status | grep "%)" | awk '{print $4}' | tr -d '(%)'`
+ if [[ -z "$time" ]]; then
+ echo "0"
+ else
+ echo "$time"
+ fi
+}
+get_ctime() {
+ ctime=`mpc status | grep "#" | awk '{print $3}' | sed 's|/.*||g'`
+ if [[ -z "$ctime" ]]; then
+ echo "0:00"
+ else
+ echo "$ctime"
+ fi
+}
+get_ttime() {
+ ttime=`mpc -f %time% current`
+ if [[ -z "$ttime" ]]; then
+ echo "0:00"
+ else
+ echo "$ttime"
+ fi
+}
+
+## Get cover
+get_cover() {
+ art=`dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:org.mpris.MediaPlayer2.Player string:Metadata | sed -n '/artUrl/{n;p}' | cut -d '"' -f 2`
+ if [[ "$(pidof spotify || echo 1)" != "1" ]]; then
+ echo "$art"
+ else
+ echo "images/spotify.jpg"
+ fi
+}
+
+# Toggle
+toggle() {
+ if [[ "$(pidof spotify || echo 1)" != "1" ]]; then
+ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
+ fi
+}
+
+## Execute accordingly
+if [[ "$1" == "--song" ]]; then
+ get_song
+elif [[ "$1" == "--artist" ]]; then
+ get_artist
+elif [[ "$1" == "--status" ]]; then
+ get_status
+elif [[ "$1" == "--time" ]]; then
+ get_time
+elif [[ "$1" == "--ctime" ]]; then
+ get_ctime
+elif [[ "$1" == "--ttime" ]]; then
+ get_ttime
+elif [[ "$1" == "--cover" ]]; then
+ get_cover
+elif [[ "$1" == "--toggle" ]]; then
+ toggle
+elif [[ "$1" == "--next" ]]; then
+ { dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next; get_cover; }
+elif [[ "$1" == "--prev" ]]; then
+ { dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous; get_cover; }
+fi
diff --git a/common/.config/eww/scripts/open_apps b/common/.config/eww/scripts/open_apps
new file mode 100755
index 0000000..6c04f85
--- /dev/null
+++ b/common/.config/eww/scripts/open_apps
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+## Open Applications
+FILE="$HOME/.cache/eww_launch.xyz"
+EWW="/usr/bin/eww"
+
+if [[ "$1" == "--vd" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && vivaldi-stable &
+
+elif [[ "$1" == "--tg" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && telegram-desktop &
+
+elif [[ "$1" == "--dc" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && discord &
+
+elif [[ "$1" == "--tr" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && urxvt &
+
+elif [[ "$1" == "--fm" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && thunar ~ &
+
+elif [[ "$1" == "--nv" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && urxvt -e sh -c "nvim" &
+
+elif [[ "$1" == "--cd" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && code &
+
+elif [[ "$1" == "--kr" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && krita &
+
+elif [[ "$1" == "--vb" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && virtualbox &
+
+fi
diff --git a/common/.config/eww/scripts/open_folders b/common/.config/eww/scripts/open_folders
new file mode 100755
index 0000000..4a4d73e
--- /dev/null
+++ b/common/.config/eww/scripts/open_folders
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+## Open folders in thunar
+FILE="$HOME/.cache/eww_launch.xyz"
+EWW="/usr/bin/eww"
+
+if [[ "$1" == "--dl" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && thunar ~/Downloads &
+
+elif [[ "$1" == "--docs" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && thunar ~/Documents &
+
+elif [[ "$1" == "--music" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && thunar ~/Music &
+
+elif [[ "$1" == "--pics" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && thunar ~/Pictures &
+
+elif [[ "$1" == "--cfg" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && thunar ~/.config &
+
+elif [[ "$1" == "--local" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && thunar ~/.local/share &
+
+fi
diff --git a/common/.config/eww/scripts/open_links b/common/.config/eww/scripts/open_links
new file mode 100755
index 0000000..48085ed
--- /dev/null
+++ b/common/.config/eww/scripts/open_links
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+## Open links in firefox
+FILE="$HOME/.cache/eww_launch.xyz"
+EWW="/usr/bin/eww"
+cmd="xdg-open"
+
+if [[ "$1" == "--mail" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && $cmd "https://mail.google.com"
+
+elif [[ "$1" == "--gh" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && $cmd "https://github.com"
+
+elif [[ "$1" == "--rd" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && $cmd "https://reddit.com"
+
+elif [[ "$1" == "--tw" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && $cmd "https://twitter.com"
+
+elif [[ "$1" == "--yt" ]]; then
+ ${EWW} close-all && rm -rf "$FILE" && $cmd "https://youtube.com"
+
+fi
diff --git a/common/.config/eww/scripts/sys_info b/common/.config/eww/scripts/sys_info
new file mode 100755
index 0000000..fefc7f4
--- /dev/null
+++ b/common/.config/eww/scripts/sys_info
@@ -0,0 +1,78 @@
+#!/bin/bash
+
+## Files and Data
+PREV_TOTAL=0
+PREV_IDLE=0
+cpuFile="/tmp/.cpu_usage"
+
+## Get CPU usage
+get_cpu() {
+ if [[ -f "${cpuFile}" ]]; then
+ fileCont=$(cat "${cpuFile}")
+ PREV_TOTAL=$(echo "${fileCont}" | head -n 1)
+ PREV_IDLE=$(echo "${fileCont}" | tail -n 1)
+ fi
+
+ CPU=(`cat /proc/stat | grep '^cpu '`) # Get the total CPU statistics.
+ unset CPU[0] # Discard the "cpu" prefix.
+ IDLE=${CPU[4]} # Get the idle CPU time.
+
+ # Calculate the total CPU time.
+ TOTAL=0
+
+ for VALUE in "${CPU[@]:0:4}"; do
+ let "TOTAL=$TOTAL+$VALUE"
+ done
+
+ if [[ "${PREV_TOTAL}" != "" ]] && [[ "${PREV_IDLE}" != "" ]]; then
+ # Calculate the CPU usage since we last checked.
+ let "DIFF_IDLE=$IDLE-$PREV_IDLE"
+ let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
+ let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
+ echo "${DIFF_USAGE}"
+ else
+ echo "?"
+ fi
+
+ # Remember the total and idle CPU times for the next check.
+ echo "${TOTAL}" > "${cpuFile}"
+ echo "${IDLE}" >> "${cpuFile}"
+}
+
+## Get Used memory
+get_mem() {
+ printf "%.0f\n" $(free -m | grep Mem | awk '{print ($3/$2)*100}')
+}
+
+## Get Brightness
+get_blight() {
+ CARD=`ls /sys/class/backlight | head -n 1`
+
+ if [[ "$CARD" == *"intel_"* ]]; then
+ BNESS=`xbacklight -get`
+ LIGHT=${BNESS%.*}
+ else
+ BNESS=`blight -d $CARD get brightness`
+ PERC="$(($BNESS*100/255))"
+ LIGHT=${PERC%.*}
+ fi
+
+ echo "$LIGHT"
+}
+
+## Get Battery
+get_battery() {
+ BAT=`ls /sys/class/power_supply | grep BAT | head -n 1`
+ cat /sys/class/power_supply/${BAT}/capacity
+}
+
+## Execute accordingly
+if [[ "$1" == "--cpu" ]]; then
+ get_cpu
+elif [[ "$1" == "--mem" ]]; then
+ get_mem
+elif [[ "$1" == "--blight" ]]; then
+ get_blight
+elif [[ "$1" == "--bat" ]]; then
+ get_battery
+fi
diff --git a/common/.config/eww/scripts/weather_info b/common/.config/eww/scripts/weather_info
new file mode 100755
index 0000000..5cc130a
--- /dev/null
+++ b/common/.config/eww/scripts/weather_info
@@ -0,0 +1,147 @@
+#!/bin/bash
+
+## Collect data
+cache_dir="$HOME/.cache/eww/weather"
+cache_weather_stat=${cache_dir}/weather-stat
+cache_weather_degree=${cache_dir}/weather-degree
+cache_weather_quote=${cache_dir}/weather-quote
+cache_weather_hex=${cache_dir}/weather-hex
+cache_weather_icon=${cache_dir}/weather-icon
+
+## Weather data
+KEY="API_KEY"
+ID="CITY_ID"
+UNIT="metric" # Available options : 'metric' or 'imperial'
+
+## Make cache dir
+if [[ ! -d "$cache_dir" ]]; then
+ mkdir -p ${cache_dir}
+fi
+
+## Get data
+get_weather_data() {
+ weather=`curl -sf "http://api.openweathermap.org/data/2.5/weather?APPID=$KEY&id=$ID&units=$UNIT"`
+ echo ${weather}
+
+ if [ ! -z "$weather" ]; then
+ weather_temp=`echo "$weather" | jq ".main.temp" | cut -d "." -f 1`
+ weather_icon_code=`echo "$weather" | jq -r ".weather[].icon" | head -1`
+ weather_description=`echo "$weather" | jq -r ".weather[].description" | head -1 | sed -e "s/\b\(.\)/\u\1/g"`
+
+ #Big long if statement of doom
+ if [ "$weather_icon_code" == "50d" ]; then
+ weather_icon=" "
+ weather_quote="Forecast says it's misty \nMake sure you don't get lost on your way..."
+ weather_hex="#84afdb"
+ elif [ "$weather_icon_code" == "50n" ]; then
+ weather_icon=" "
+ weather_quote="Forecast says it's a misty night \nDon't go anywhere tonight or you might get lost..."
+ weather_hex="#84afdb"
+ elif [ "$weather_icon_code" == "01d" ]; then
+ weather_icon=" "
+ weather_quote="It's a sunny day, gonna be fun! \nDon't go wandering all by yourself though..."
+ weather_hex="#ffd86b"
+ elif [ "$weather_icon_code" == "01n" ]; then
+ weather_icon=" "
+ weather_quote="It's a clear night \nYou might want to take a evening stroll to relax..."
+ weather_hex="#fcdcf6"
+ elif [ "$weather_icon_code" == "02d" ]; then
+ weather_icon=" "
+ weather_quote="It's cloudy, sort of gloomy \nYou'd better get a book to read..."
+ weather_hex="#adadff"
+ elif [ "$weather_icon_code" == "02n" ]; then
+ weather_icon=" "
+ weather_quote="It's a cloudy night \nHow about some hot chocolate and a warm bed?"
+ weather_hex="#adadff"
+ elif [ "$weather_icon_code" == "03d" ]; then
+ weather_icon=" "
+ weather_quote="It's cloudy, sort of gloomy \nYou'd better get a book to read..."
+ weather_hex="#adadff"
+ elif [ "$weather_icon_code" == "03n" ]; then
+ weather_icon=" "
+ weather_quote="It's a cloudy night \nHow about some hot chocolate and a warm bed?"
+ weather_hex="#adadff"
+ elif [ "$weather_icon_code" == "04d" ]; then
+ weather_icon=" "
+ weather_quote="It's cloudy, sort of gloomy \nYou'd better get a book to read..."
+ weather_hex="#adadff"
+ elif [ "$weather_icon_code" == "04n" ]; then
+ weather_icon=" "
+ weather_quote="It's a cloudy night \nHow about some hot chocolate and a warm bed?"
+ weather_hex="#adadff"
+ elif [ "$weather_icon_code" == "09d" ]; then
+ weather_icon=" "
+ weather_quote="It's rainy, it's a great day! \nGet some ramen and watch as the rain falls..."
+ weather_hex="#6b95ff"
+ elif [ "$weather_icon_code" == "09n" ]; then
+ weather_icon=" "
+ weather_quote=" It's gonna rain tonight it seems \nMake sure your clothes aren't still outside..."
+ weather_hex="#6b95ff"
+ elif [ "$weather_icon_code" == "10d" ]; then
+ weather_icon=" "
+ weather_quote="It's rainy, it's a great day! \nGet some ramen and watch as the rain falls..."
+ weather_hex="#6b95ff"
+ elif [ "$weather_icon_code" == "10n" ]; then
+ weather_icon=" "
+ weather_quote=" It's gonna rain tonight it seems \nMake sure your clothes aren't still outside..."
+ weather_hex="#6b95ff"
+ elif [ "$weather_icon_code" == "11d" ]; then
+ weather_icon=""
+ weather_quote="There's storm for forecast today \nMake sure you don't get blown away..."
+ weather_hex="#ffeb57"
+ elif [ "$weather_icon_code" == "11n" ]; then
+ weather_icon=""
+ weather_quote="There's gonna be storms tonight \nMake sure you're warm in bed and the windows are shut..."
+ weather_hex="#ffeb57"
+ elif [ "$weather_icon_code" == "13d" ]; then
+ weather_icon=" "
+ weather_quote="It's gonna snow today \nYou'd better wear thick clothes and make a snowman as well!"
+ weather_hex="#e3e6fc"
+ elif [ "$weather_icon_code" == "13n" ]; then
+ weather_icon=" "
+ weather_quote="It's gonna snow tonight \nMake sure you get up early tomorrow to see the sights..."
+ weather_hex="#e3e6fc"
+ elif [ "$weather_icon_code" == "40d" ]; then
+ weather_icon=" "
+ weather_quote="Forecast says it's misty \nMake sure you don't get lost on your way..."
+ weather_hex="#84afdb"
+ elif [ "$weather_icon_code" == "40n" ]; then
+ weather_icon=" "
+ weather_quote="Forecast says it's a misty night \nDon't go anywhere tonight or you might get lost..."
+ weather_hex="#84afdb"
+ else
+ weather_icon=" "
+ weather_quote="Sort of odd, I don't know what to forecast \nMake sure you have a good time!"
+ weather_hex="#adadff"
+ fi
+ echo "$weather_icon" > ${cache_weather_icon}
+ echo "$weather_description" > ${cache_weather_stat}
+ echo "$weather_temp""°C" > ${cache_weather_degree}
+ echo -e "$weather_quote" > ${cache_weather_quote}
+ echo "$weather_hex" > ${cache_weather_hex}
+ else
+ echo "Weather Unavailable" > ${cache_weather_stat}
+ echo " " > ${cache_weather_icon}
+ echo -e "Ah well, no weather huh? \nEven if there's no weather, it's gonna be a great day!" > ${cache_weather_quote}
+ echo "-" > ${cache_weather_degree}
+ echo "#adadff" > ${tcache_weather_hex}
+ fi
+}
+
+## Execute
+if [[ "$1" == "--getdata" ]]; then
+ get_weather_data
+elif [[ "$1" == "--icon" ]]; then
+ cat ${cache_weather_icon}
+elif [[ "$1" == "--temp" ]]; then
+ cat ${cache_weather_degree}
+elif [[ "$1" == "--hex" ]]; then
+ cat ${cache_weather_hex}
+elif [[ "$1" == "--stat" ]]; then
+ cat ${cache_weather_stat}
+elif [[ "$1" == "--quote" ]]; then
+ cat ${cache_weather_quote} | head -n1
+elif [[ "$1" == "--quote2" ]]; then
+ cat ${cache_weather_quote} | tail -n1
+fi
+
diff --git a/common/.config/i3/config b/common/.config/i3/config
index e471a77..9da244f 100644
--- a/common/.config/i3/config
+++ b/common/.config/i3/config
@@ -47,9 +47,9 @@ exec --no-startup-id alternating_layouts.py
font xft:DejaVu Sans Mono 12
bindsym $mod+Return exec wezterm
+bindsym $mod+e exec --no-startup-id $HOME/.config/eww/launch_eww
bindsym $mod+Shift+q kill
bindsym $mod+d exec --no-startup-id rofi -show drun
-bindsym $mod+z exec --no-startup-id morc_menu
bindsym $mod+Print --release exec --no-startup-id i3-scrot -w
bindsym $mod+Ctrl+x --release exec --no-startup-id xkill
bindsym Print exec flameshot gui
@@ -70,13 +70,12 @@ focus_follows_mouse yes
# workspace back and forth (with/without active container)
workspace_auto_back_and_forth yes
-bindsym $mod+b workspace back_and_forth
+#bindsym $mod+b workspace back_and_forth
bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth
bindsym $mod+q split toggle
bindsym $mod+f fullscreen toggle
bindsym $mod+w layout tabbed
-bindsym $mod+e layout toggle split
bindsym $mod+Shift+space floating toggle
bindsym $mod+space focus mode_toggle
bindsym $mod+Shift+s sticky toggle
@@ -131,7 +130,7 @@ bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9; workspace $ws9
# resize focused window
-bindsym $mod+Shift+h resize shrink width 5 px or 5 pp9t
+bindsym $mod+Shift+h resize shrink width 5 px or 5 ppt
bindsym $mod+Shift+j resize grow height 5 px or 5 ppt
bindsym $mod+Shift+k resize shrink height 5 px or 5 ppt
bindsym $mod+Shift+l resize grow width 5 px or 5 ppt
@@ -182,16 +181,17 @@ bindsym $mod+Shift+r restart
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
# Set shut down, restart and locking features
+# to set a lock screen run betterlockscreen -u path/to/image
+exec_always --no-startup-id xss-lock -- betterlockscreen -l blur --display 0 | while read line; do echo "[$(date '+%D %H:%m:%S')] MESSAGE: ${line}" >> ~/.cache/lock_logs.log; done
+
bindsym $mod+0 mode "$mode_system"
-set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown
+set $mode_system (l)ock, (e)xit, (s)uspend, (r)eboot, (Shift+s)hutdown
mode "$mode_system" {
- bindsym l exec --no-startup-id i3exit lock, mode "default"
- bindsym s exec --no-startup-id i3exit suspend, mode "default"
- bindsym u exec --no-startup-id i3exit switch_user, mode "default"
- bindsym e exec --no-startup-id i3exit logout, mode "default"
- bindsym h exec --no-startup-id i3exit hibernate, mode "default"
- bindsym r exec --no-startup-id i3exit reboot, mode "default"
- bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default"
+ bindsym l exec --no-startup-id loginctl lock-session, mode "default"
+ bindsym s exec --no-startup-id loginctl lock-session && systemctl suspend, mode "default"
+ bindsym e exec --no-startup-id i3-msg exit, mode "default"
+ bindsym r exec --no-startup-id systemctl reboot, mode "default"
+ bindsym Shift+s exec --no-startup-id systemctl poweroff, mode "default"
# exit system mode: "Enter" or "Escape"
bindsym Return mode "default"
@@ -203,17 +203,19 @@ exec --no-startup-id nitrogen --restore
exec --no-startup-id nm-applet
exec --no-startup-id xfce4-power-manager
exec --no-startup-id clipit
-exec --no-startup-id xidlehook --not-when-fullscreen --not-when-audio --timer 600 'blurlock' ''
+exec --no-startup-id xidlehook --not-when-fullscreen --not-when-audio --timer 600 'loginctl lock-session' ''
exec_always --no-startup-id ff-theme-util
exec_always --no-startup-id fix_xcursor
exec --no-startup-id volumeicon
exec --no-startup-id mpris-proxy
exec --no-startup-id pa-applet
+exec_always killall -q dunst ; dunst -config ~/.config/dunst/dunstrc
exec_always killall -q picom ; picom -b --config $HOME/.config/picom.conf
+exec_always killall -q polybar; $HOME/.config/polybar/launch.sh
# hide/unhide i3status bar
-bindsym $mod+m bar mode toggle
+bindsym $mod+b bar mode toggle
gaps inner 10
gaps outer -1
@@ -230,24 +232,24 @@ for_window [class="^.*"] border pixel 0
bindsym $mod+Shift+n gaps inner all set 0; gaps outer all set 0
bindsym $mod+n gaps inner all set 7; gaps outer all set -1
-bar {
- status_command SCRIPT_DIR=~/.config/i3blocks/scripts i3blocks -c ~/.config/i3blocks/config
- position bottom
- separator_symbol "│"
+#bar {
+ #status_command SCRIPT_DIR=~/.config/i3blocks/scripts i3blocks -c ~/.config/i3blocks/config
+ #position bottom
+ #separator_symbol "│"
- tray_output primary
- tray_padding 4
+ #tray_output primary
+ #tray_padding 4
- font pango:DejaVu Sans Mono Nerd Font 12
+ #font pango:DejaVu Sans Mono Nerd Font 12
- colors {
- background $base
- statusline $text
- separator $rosewater
- # border bg text
- focused_workspace $pink $pink $base
- inactive_workspace $surface0 $surface0 $overlay0
- urgent_workspace $red $red $base
- }
-}
+ #colors {
+ #background $base
+ #statusline $text
+ #separator $rosewater
+ ## border bg text
+ #focused_workspace $pink $pink $base
+ #inactive_workspace $surface0 $surface0 $overlay0
+ #urgent_workspace $red $red $base
+ #}
+#}
diff --git a/common/.config/i3blocks/config b/common/.config/i3blocks/config
index cf1c6e5..941daf4 100644
--- a/common/.config/i3blocks/config
+++ b/common/.config/i3blocks/config
@@ -21,7 +21,7 @@ color=#f4dbd6
[cpu_usage]
label=
command=$SCRIPT_DIR/cpu_usage/cpu_usage
-interval=10
+interval=1
#color=#8bd5ca
#T_WARN=50
#T_CRIT=80
@@ -42,14 +42,14 @@ color=#eed49f
[baterkos]
label=
command=$SCRIPT_DIR/battery/battery
-interval=10
+interval=3
color=#b7bdf8
[volume]
label=
command=$SCRIPT_DIR/volume/volume
#label=VOL
-interval=5
+interval=1
signal=10
markup=pango
color=#f5bde6
diff --git a/common/.config/picom.conf b/common/.config/picom.conf
index 0b7e1eb..5e6180c 100644
--- a/common/.config/picom.conf
+++ b/common/.config/picom.conf
@@ -24,6 +24,7 @@ rounded-corners-exclude = [
"class_g = 'i3-frame'",
"class_g = 'Polybar'",
"class_g = 'i3bar'",
+ "class_g = 'Dunst'",
];
round-borders = 20;
@@ -32,6 +33,7 @@ round-borders-exclude = [
"class_g = 'i3-frame'",
"class_g = 'Polybar'",
"class_g = 'i3bar'",
+ "class_g = 'Dunst'",
];
#################################
diff --git a/common/.config/polybar/colors.ini b/common/.config/polybar/colors.ini
index 1252362..2bbc9ef 100644
--- a/common/.config/polybar/colors.ini
+++ b/common/.config/polybar/colors.ini
@@ -1,24 +1,40 @@
-[colors]
-; background = #1e222a
-background = #1A1826
-; foreground = #c8ccd4
-foreground = #C3BAC6
+;-------------------------
+; Catppuccin Macchiato Palette
+; Maintainer: justTOBBI
+;--------------------------
+
+[colors]
+base = #24273a
+mantle = #1e2030
+crust = #181926
+
+text = #cad3f5
+subtext0 = #a5adcb
+subtext1 = #b8c0e0
+
+surface0 = #363a4f
+surface1 = #494d64
+surface2 = #5b6078
+
+overlay0 = #6e738d
+overlay1 = #8087a2
+overlay2 = #939ab7
+
+
+blue = #8aadf4
+lavender = #b7bdf8
+sapphire = #7dc4e4
+sky = #91d7e3
+teal = #8bd5ca
+green = #a6da95
+yellow = #eed49f
+peach = #f5a97f
+maroon = #ee99a0
+red = #ed8796
+mauve = #c6a0f6
+pink = #f5bde6
+flamingo = #f0c6c6
+rosewater = #f4dbd6
+
+transparent = #FF00000
-color0 = #282c34
-color1 = #e06c75
-color2 = #98c379
-color3 = #e5c07b
-color4 = #61afef
-color5 = #c678dd
-color6 = #56b6c2
-color7 = #abb2bf
-color8 = #545862
-color9 = #e06c75
-color10 = #98c379
-color11 = #e5c07b
-color12 = #61afef
-color13 = #c678dd
-color14 = #56b6c2
-color15 = #c8ccd4
-dark-light = #272A2B
-active-light = #313435
diff --git a/common/.config/polybar/fonts.ini b/common/.config/polybar/fonts.ini
index cbb794f..1cd35bd 100644
--- a/common/.config/polybar/fonts.ini
+++ b/common/.config/polybar/fonts.ini
@@ -1,10 +1,4 @@
-# font-0 = CaskaydiaCove Nerd Font:style=Regular:pixelsize=11:antialias=true;2.5
-font-0 = DejaVu Sans Mono Nerd Font:style=Bold:pixelsize=14;3
-font-1 = DejaVu Sans Mono Nerd Font:size=14;4
-font-2 = Material Design Icons:style=Regular:size=12;3
-font-6 = unifont:fontformat=truetype:size=11;3
-font-4 = DejaVu Sans Mono Nerd Font:size=14
-font-5 = DejaVu Sans Mono:size=11
-font-3 = Weather Icons:size=12;1
-font-7 = Material Icons:size=12;0
-# font-4 = Material Design Icons:style=Regular:pixelsize=11:antialias=true;2.5
+font-0 = "DejaVuSM Nerd Font:style=Regular:size=14;3"
+font-1 = "DejaVuSM Nerd Font:style=Bold:size=14;3"
+font-2 = "DejaVuSM Nerd Font:style=Oblique:size=14;3"
+font-3 = "DejaVuSM Nerd Font:style=Bold Oblique:size=14;5"
diff --git a/common/.config/polybar/main-bar.ini b/common/.config/polybar/main-bar.ini
index 252f0d3..6cadf9a 100644
--- a/common/.config/polybar/main-bar.ini
+++ b/common/.config/polybar/main-bar.ini
@@ -7,8 +7,8 @@ width = 100%
height = 30
bottom = true
-background = ${colors.background}
-foreground = ${colors.foreground}
+background = ${colors.base}
+foreground = ${colors.text}
padding-right = 1
padding-left = 1
@@ -20,9 +20,9 @@ border-top-color = ${colors.background}
border-bottom-color = ${colors.background}
-modules-left = round-left i3 round-right empty-space spotify
-modules-center = round-left time round-right
-modules-right = empty-space round-left network round-right empty-space round-left backlight colored-empty-space audio round-right empty-space round-left cpu temperature colored-empty-space memory round-right empty-space round-left battery round-right
+modules-left = i3 empty-space title
+modules-center = time
+modules-right = empty-space spotify empty-space wired-network network speedtest empty-space backlight colored-empty-space audio empty-space cpu temperature colored-empty-space memory empty-space battery
cursor-click = pointer
cursor-scroll = ns-resize
diff --git a/common/.config/polybar/modules.ini b/common/.config/polybar/modules.ini
index 0152819..b457ae4 100644
--- a/common/.config/polybar/modules.ini
+++ b/common/.config/polybar/modules.ini
@@ -4,10 +4,26 @@ pin-workspaces = true
enable-click = true
show-urgent = true
-format-background = #1E1E2E
+format = " "
-label-active-foreground = ${colors.foreground}
-label-urgent-foreground = ${colors.foreground}
+label-focused-background = ${colors.pink}
+label-focused-foreground = ${colors.base}
+label-mode-background = ${colors.pink}
+label-mode-foreground = ${colors.base}
+
+label-urgent-foreground = ${colors.red}
+
+# =======================================
+
+[module/title]
+type = internal/xwindow
+format =