forked from Shinonome/dots-hyprland
179 lines
9.0 KiB
Plaintext
Executable File
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)
|
|
)
|
|
|