Configuration files for my GNU/Linux installation.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
dotfiles/eww/.config/eww/eww.yuck

262 lines
7.7 KiB

(defwidget bar-1 [screen]
(box :class "main-cont"
:orientation "h"
(box :class "segment-start"
:halign "start"
:valign "center"
(start-control :screen screen)
)
(box :class "segment-center"
:halign "center"
:valign "center"
:space-evenly true
(mid-control)
)
(box :class "segment-end"
:halign "end"
:valign "center"
(end-control)
)
)
)
(defwidget bar-2 [screen]
(box :class "main-cont"
:orientation "h"
(box :class "segment-start"
:halign "start"
:valign "center"
(start-control :screen screen)
)
(box :class "segment-center"
:halign "center"
:valign "center"
:space-evenly true
(mid-control)
)
(box :class "segment-end"
:halign "end"
:valign "center"
)
)
)
;; Powermenu widget
(defwidget power []
(eventbox ;;:onhover "${EWW_CMD} update power=true"
:onhoverlost "${EWW_CMD} update power=false"
(box :orientation "h"
:space-evenly "false"
:vexpand "false"
:class "powermenu ${power ? 'pm-active' : ''}"
;; Open menu button
(revealer :transition "slideleft"
:reveal power
:duration "450ms"
(box :orientation "h"
:class "pm-inner"
:space-evenly true
:valign "center"
:spacing 8
;; Lock screen
(button :class "icon lock"
:tooltip "Lock screen"
:onclick "betterlockscreen -l" "󰌾")
;; Quit WM (goto login manager)
(button :class "icon logout"
:tooltip "Logout"
:onclick "loginctl kill-session $XDG_SESSION_ID" "󰍃")
;; Reboot
(button :class "icon reboot"
:tooltip "Reboot"
:onclick "reboot" "󰑓")
;; Poweroff
(button :class "icon poweroff"
:tooltip "Poweroff"
:onclick "poweroff" "󰐥")
))
(button :class "icon logo ${power ? 'logo-seperator' : ''}"
:tooltip "Open menu"
:onclick "${EWW_CMD} update power=true" "󰘧")
)))
(defvar power false)
;; Control widget (container)
(defwidget start-control [screen]
(box :class "control" :spacing 16 :space-evenly false :orientation "h"
(workspaces :wsp workspaces-data :screen screen)
)
)
(defwidget mid-control []
(box :class "control" :spacing 16 :space-evenly false :orientation "h"
(time)
)
)
(defwidget end-control []
(box :class "control" :spacing 16 :space-evenly false :orientation "h"
(music)
(bat)
(wifi)
(volume)
(power)
)
)
;; Clock Widget
(defwidget time []
(box :orientation "h"
:class "time"
:space-evenly "false"
:halign "center"
(button :onclick "scripts/popup calendar"
:class "day" full-time)
))
(defpoll full-time :interval "1s" "date +'%d %B (%m), %Y - %A %H:%M:%S'")
;; Volume widget
(defwidget volume []
(eventbox :onhover "${EWW_CMD} update volume=true"
:onhoverlost "${EWW_CMD} update volume=false"
(box :class "" :space-evenly "false" :orientation "h" :spacing "4"
(revealer :transition "slideleft"
:reveal volume
:duration "350ms"
(scale :class "volbar"
:value current-volume
:flipped true
:orientation "h"
:max 100
:min 0
:onchange "amixer -D pulse sset Master {}%" )
)
(button :onclick "amixer -D pulse set Master 1+ toggle"
:tooltip "Volume on/off"
:class "icon vol" {muted-volume != "on" ? "󰝟" : "󰕾"}
)
)
)
)
(defvar volume false)
(defpoll current-volume :interval "180ms" "amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'")
(defpoll muted-volume :interval "180ms" "amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $4 }' | tr -d '%'")
;; Battery Widgets ;;
(defwidget bat []
(box :orientation "v"
:space-evenly "false"
(label :class "icon bat"
:halign "center"
:text battery
:tooltip "Battery: ${battery-cappacity}%")))
(defpoll battery :interval "1s" "scripts/battery icon")
(defpoll battery-cappacity :interval "1s" "scripts/battery percent")
;; Wifi Widgets ;;
(defwidget wifi []
(box :orientation "v"
:halign "middle"
:tooltip "SSID: ${wifi-name}"
(label :class "icon wifi"
:halign "middle"
:text "﬉"
)))
(defpoll wifi-status :interval "1s" "scripts/wifi status")
(defpoll wifi-name :interval "1s" "scripts/wifi name")
;; Workspaces container
(defwidget workspaces [wsp]
(box :space-evenly true :spacing 16 :orientation "h" :class "workspaces"
(for ws in wsp
(workspace :data ws)
)))
;; Workspace widget
(defwidget workspace [data]
(button :onclick "wmctrl -s ${data['index']}"
:class {data["iscurrent"] == true ? "active" : "inactive"}
;; "${data['name']}"
:tooltip "Switch to workspace ${data['name']}"
{data["iscurrent"] == true ? "" : ""}
))
(deflisten workspaces-data "scripts/workspace.py")
;; Music widget
(defwidget music []
(revealer :reveal {music-active == "true"}
(eventbox :onhover "${EWW_CMD} update music=true"
:onhoverlost "${EWW_CMD} update music=false"
(box :orientation "h"
:space-evenly "false"
:class "musicmenu ${music ? 'mm-active' : ''}"
(revealer :transition "slideleft"
:reveal music
:flipped true
:duration "450ms"
(box :orientation "h"
:class "mm-inner"
:space-evenly true
:valign "center"
:spacing 8
;; Pause
(button :class "icon prev"
:tooltip "Pause/play"
:onclick "playerctl previous" "")
;; Pause
(button :class "icon pause"
:tooltip "Pause/play"
:onclick "playerctl play-pause" {music-status == "Playing" ? "󰏤" : "󰐊"})
;; Next
(button :class "icon next"
:tooltip "Pause/play"
:onclick "playerctl next" "")
))
;; Open menu button
(button :class "icon"
:tooltip "Music"
:onclick "${EWW_CMD} update music=true" "󰎈")
)
)))
(defpoll music-active :interval "200ms" "scripts/musicstatus")
(defpoll music-status :interval "200ms" "playerctl status")
(defpoll artUrl :interval "200ms" "playerctl metadata artUrl &>/dev/null")
(defpoll title :interval "200ms" "playerctl metadata title &>/dev/null")
(defpoll artist :interval "200ms" "playerctl metadata artist &>/dev/null")
(defpoll songtime :interval "500ms" "scripts/getSongDuration")
(defvar music false)
;; WINDOWS
(defwindow bar-1
:monitor 0
:windowtype "dock"
:geometry (geometry :x "0%"
:y "0%"
:width "100%"
:height "32px"
:anchor "top center")
:reserve (struts :side "top" :distance "32px")
:hexpand "false"
:vexpand "false"
(bar-1 :screen 1))
(defwindow bar-2
:monitor 1
:windowtype "dock"
:geometry (geometry :x "0%"
:y "0%"
:width "100%"
:height "32px"
:anchor "top center")
:reserve (struts :side "top" :distance "32px")
:hexpand "false"
:vexpand "false"
(bar-2 :screen 2))