Files
illogical-impulse/novelknock/.config/eww/windows/supercontext.yuck
T
2024-02-22 15:35:06 +07:00

179 lines
9.0 KiB
Plaintext
Executable File

(defwidget supercontext_widget []
(eventbox
:onclick "scripts/toggle-supercontext.sh --close &"
(box
:width RES_WIDTH
:height RES_HEIGHT
:space-evenly false
(box
:halign "start" :valign "start"
:style "
transition: 0ms;
margin-left: ${supercontext_pos_x - (SUPERCONTEXT_DIAMETER / 2)}px;
margin-top: ${supercontext_pos_y - (SUPERCONTEXT_DIAMETER / 2)}px;
min-width: ${SUPERCONTEXT_DIAMETER}px;
min-height: ${SUPERCONTEXT_DIAMETER}px;
"
(overlay
(overlay
; (box
; :width SUPERCONTEXT_DIAMETER :height SUPERCONTEXT_DIAMETER
; )
; Button backgrounds (SVGs)
(revealer
:reveal {open_supercontext >= 1}
:duration "75ms"
:transition "crossfade"
(image
:class "supercontext-bg"
:path "images/menus/btn0.svg"
:image-width SUPERCONTEXT_DIAMETER :image-height SUPERCONTEXT_DIAMETER
)
)
(revealer
:reveal {open_supercontext >= 2}
:duration "75ms"
:transition "crossfade"
(image
:class "supercontext-bg"
:path "images/menus/btn1.svg"
:image-width SUPERCONTEXT_DIAMETER :image-height SUPERCONTEXT_DIAMETER
)
)
(revealer
:reveal {open_supercontext >= 3}
:duration "75ms"
:transition "crossfade"
(image
:class "supercontext-bg"
:path "images/menus/btn2.svg"
:image-width SUPERCONTEXT_DIAMETER :image-height SUPERCONTEXT_DIAMETER
)
)
(revealer
:reveal {open_supercontext >= 4}
:duration "75ms"
:transition "crossfade"
(image
:class "supercontext-bg"
:path "images/menus/btn3.svg"
:image-width SUPERCONTEXT_DIAMETER :image-height SUPERCONTEXT_DIAMETER
)
)
(revealer
:reveal {open_supercontext >= 5}
:duration "75ms"
:transition "crossfade"
(image
:class "supercontext-bg"
:path "images/menus/btn4.svg"
:image-width SUPERCONTEXT_DIAMETER :image-height SUPERCONTEXT_DIAMETER
)
)
)
(overlay ; Real button hitboxes
(box ; Button 0: Kill processes with the same process name as the focused window
:class "supercontext-btn"
:style "
opacity: ${open_supercontext >= 1 ? 1 : 0};
margin-left: ${SUPERCONTEXT_RADIUS + (sin(degtorad(SUPERCONTEXT_ROTATIONS[0])) * SUPERCONTEXT_DIST_FROM_CENTER) - SUPERCONTEXT_BUTTON_RADIUS}px;
margin-right: ${SUPERCONTEXT_DIAMETER - (SUPERCONTEXT_RADIUS + (round(sin(degtorad(SUPERCONTEXT_ROTATIONS[0])), 5) * SUPERCONTEXT_DIST_FROM_CENTER) + SUPERCONTEXT_BUTTON_RADIUS)}px;
margin-top: ${SUPERCONTEXT_RADIUS - (cos(degtorad(SUPERCONTEXT_ROTATIONS[0])) * SUPERCONTEXT_DIST_FROM_CENTER) - SUPERCONTEXT_BUTTON_RADIUS}px;
margin-bottom: ${SUPERCONTEXT_DIAMETER - (SUPERCONTEXT_RADIUS - (cos(degtorad(SUPERCONTEXT_ROTATIONS[0])) * SUPERCONTEXT_DIST_FROM_CENTER) + SUPERCONTEXT_BUTTON_RADIUS)}px;
"
(eventbox
:onclick "pkill $(ps -p $(hyprctl activewindow -j | gojq -r '.pid') -o comm=) &"
:tooltip "Brutally kill this window"
:cursor "pointer"
(label :class "supercontext-btn-icon bar-txt-norm" :text "Dangerous")
)
)
(box ; Button 1
:class "supercontext-btn"
:style "
opacity: ${open_supercontext >= 2 ? 1 : 0};
margin-left: ${SUPERCONTEXT_RADIUS + (sin(degtorad(SUPERCONTEXT_ROTATIONS[1])) * SUPERCONTEXT_DIST_FROM_CENTER) - SUPERCONTEXT_BUTTON_RADIUS}px;
margin-right: ${SUPERCONTEXT_DIAMETER - (SUPERCONTEXT_RADIUS + (round(sin(degtorad(SUPERCONTEXT_ROTATIONS[1])), 5) * SUPERCONTEXT_DIST_FROM_CENTER) + SUPERCONTEXT_BUTTON_RADIUS)}px;
margin-top: ${SUPERCONTEXT_RADIUS - (cos(degtorad(SUPERCONTEXT_ROTATIONS[1])) * SUPERCONTEXT_DIST_FROM_CENTER) - SUPERCONTEXT_BUTTON_RADIUS}px;
margin-bottom: ${SUPERCONTEXT_DIAMETER - (SUPERCONTEXT_RADIUS - (cos(degtorad(SUPERCONTEXT_ROTATIONS[1])) * SUPERCONTEXT_DIST_FROM_CENTER) + SUPERCONTEXT_BUTTON_RADIUS)}px;
"
(eventbox
:class "supercontext-btn-num"
:tooltip "Swap workspace windows with workspace..."
:onscroll "eww update ws_to_swap=$(( ${ws_to_swap == 0 ? activews : ws_to_swap} + $(echo {} | sed -e 's/down/-1/g' -e 's/up/+1/g') )) &"
:onclick "scripts/swapws ${activews} ${ws_to_swap} &"
:cursor "col-resize"
(label :class "bar-txt-norm" :text {ws_to_swap == 0 ? '' : ws_to_swap})
)
)
(box
:class "supercontext-btn"
:style "
opacity: ${open_supercontext >= 3 ? 1 : 0};
margin-left: ${SUPERCONTEXT_RADIUS + (sin(degtorad(SUPERCONTEXT_ROTATIONS[2])) * SUPERCONTEXT_DIST_FROM_CENTER) - SUPERCONTEXT_BUTTON_RADIUS}px;
margin-right: ${SUPERCONTEXT_DIAMETER - (SUPERCONTEXT_RADIUS + (round(sin(degtorad(SUPERCONTEXT_ROTATIONS[2])), 5) * SUPERCONTEXT_DIST_FROM_CENTER) + SUPERCONTEXT_BUTTON_RADIUS)}px;
margin-top: ${SUPERCONTEXT_RADIUS - (cos(degtorad(SUPERCONTEXT_ROTATIONS[2])) * SUPERCONTEXT_DIST_FROM_CENTER) - SUPERCONTEXT_BUTTON_RADIUS}px;
margin-bottom: ${SUPERCONTEXT_DIAMETER - (SUPERCONTEXT_RADIUS - (cos(degtorad(SUPERCONTEXT_ROTATIONS[2])) * SUPERCONTEXT_DIST_FROM_CENTER) + SUPERCONTEXT_BUTTON_RADIUS)}px;
"
(eventbox
:class "supercontext-btn-num"
:tooltip "Dump windows of this workspace to workspace..."
:onscroll "eww update ws_to_dump=$(( ${ws_to_dump == 0 ? activews : ws_to_dump} + $(echo {} | sed -e 's/down/-1/g' -e 's/up/+1/g') )) &"
:onclick "scripts/dumptows ${activews} ${ws_to_dump} &"
:cursor "col-resize"
(label :class "bar-txt-norm" :style {ws_to_dump == 0 ? 'font-family: Material Symbols Rounded' : ''} :text {ws_to_dump == 0 ? 'publish' : ws_to_dump})
)
)
(box
:class "supercontext-btn"
:style "
opacity: ${open_supercontext >= 4 ? 1 : 0};
margin-left: ${SUPERCONTEXT_RADIUS + (sin(degtorad(SUPERCONTEXT_ROTATIONS[3])) * SUPERCONTEXT_DIST_FROM_CENTER) - SUPERCONTEXT_BUTTON_RADIUS}px;
margin-right: ${SUPERCONTEXT_DIAMETER - (SUPERCONTEXT_RADIUS + (round(sin(degtorad(SUPERCONTEXT_ROTATIONS[3])), 5) * SUPERCONTEXT_DIST_FROM_CENTER) + SUPERCONTEXT_BUTTON_RADIUS)}px;
margin-top: ${SUPERCONTEXT_RADIUS - (cos(degtorad(SUPERCONTEXT_ROTATIONS[3])) * SUPERCONTEXT_DIST_FROM_CENTER) - SUPERCONTEXT_BUTTON_RADIUS}px;
margin-bottom: ${SUPERCONTEXT_DIAMETER - (SUPERCONTEXT_RADIUS - (cos(degtorad(SUPERCONTEXT_ROTATIONS[3])) * SUPERCONTEXT_DIST_FROM_CENTER) + SUPERCONTEXT_BUTTON_RADIUS)}px;
"
(eventbox
:onclick "~/.local/bin/record-script-fullscreen.sh &"
:tooltip "Record"
:cursor "pointer"
(label :class "supercontext-btn-icon bar-txt-norm" :text "radio_button_checked")
)
)
(box
:class "supercontext-btn"
:style "
opacity: ${open_supercontext >= 5 ? 1 : 0};
margin-left: ${SUPERCONTEXT_RADIUS + (sin(degtorad(SUPERCONTEXT_ROTATIONS[4])) * SUPERCONTEXT_DIST_FROM_CENTER) - SUPERCONTEXT_BUTTON_RADIUS}px;
margin-right: ${SUPERCONTEXT_DIAMETER - (SUPERCONTEXT_RADIUS + (round(sin(degtorad(SUPERCONTEXT_ROTATIONS[4])), 5) * SUPERCONTEXT_DIST_FROM_CENTER) + SUPERCONTEXT_BUTTON_RADIUS)}px;
margin-top: ${SUPERCONTEXT_RADIUS - (cos(degtorad(SUPERCONTEXT_ROTATIONS[4])) * SUPERCONTEXT_DIST_FROM_CENTER) - SUPERCONTEXT_BUTTON_RADIUS}px;
margin-bottom: ${SUPERCONTEXT_DIAMETER - (SUPERCONTEXT_RADIUS - (cos(degtorad(SUPERCONTEXT_ROTATIONS[4])) * SUPERCONTEXT_DIST_FROM_CENTER) + SUPERCONTEXT_BUTTON_RADIUS)}px;
"
(eventbox
:onclick "notify-send 'an extra button ;)'"
:tooltip "does nothing lol"
:cursor "pointer"
(label :class "supercontext-btn-icon bar-txt-norm" :text "-")
)
)
)
)
)
)
)
)
(defwindow supercontext
:stacking "overlay"
:focusable true
:monitor 0
:namespace "supercontext"
:geometry (geometry
:anchor "center center"
:height "100%"
:width "100%"
)
(supercontext_widget)
)