Add eww and SSH

This commit is contained in:
langedev 2023-11-20 10:28:36 -08:00
parent 3fad5809b9
commit 7f324958a5
24 changed files with 309 additions and 16 deletions

View file

@ -6,17 +6,19 @@
home.homeDirectory = "/home/pan";
imports = [
./programs/xdg
./programs/hypr
./programs/dunst
./programs/git
./programs/alacritty
./programs/pywal
./programs/dunst
./programs/eww
./programs/fish
./programs/nnn
./programs/rofi
./programs/nvim
./programs/git
./programs/hypr
./programs/mpv
./programs/nnn
./programs/nvim
./programs/pywal
./programs/rofi
./programs/ssh
./programs/xdg
];
home.packages = with pkgs; [
@ -28,16 +30,12 @@
wget # Download web stuff
feh # Image viewer
appimage-run # Lets you run app images
# Development stuff, can be removed
zathura # PDF viewer
ani-cli # Easy anime player
# Development stuff
nodejs # For compiling JS stuff
jq # May be critical for scripts?
# Check if want settings?
zathura # PDF viewer
# Expand into other areas
sshfs # SSH File system (SSH)
eww-wayland # eww widgets (EWW)
];
# home.file = {};

View file

@ -0,0 +1,8 @@
box {
background-color: #1E1D2F;
color: #D9E0EE;
}
progressbar > trough {
min-width: 40px;
}

View file

View file

@ -0,0 +1,40 @@
(include "./widgets/components/hyprwindow.yuck")
(include "./widgets/components/hyprworkspaces.yuck")
(include "./widgets/components/internet.yuck")
(include "./widgets/components/japanesedate.yuck")
(include "./widgets/components/japaneseaudio.yuck")
(defwidget bar []
(centerbox :orientation "horizontal"
:style "padding: 0px 8px"
(box :halign "start"
:spacing 18
:space-evenly false
(hyprworkspaces)
(hyprwindow)
)
""
(box :halign "end"
:spacing 18
:space-evenly false
(eventbox :onhover "eww open preview"
:onhoverlost "eww close preview"
barplayer
)
(internet)
(japaneseaudio)
(japanesedate)
(label :style "color: #FAE3B0"
:text bartime
)
)
)
)
(defpoll bartime :interval "10s"
"date '+%H:%M'"
)
(deflisten barplayer :initial ""
"playerctl --follow metadata --format '{{ artist }} - {{ title }}' || true"
)

View file

@ -0,0 +1,5 @@
(defwidget hyprwindow []
(label :text "${hyprwindow_listener}")
)
(deflisten hyprwindow_listener :initial "" "bash $XDG_CONFIG_HOME/eww/scripts/get-window-title")

View file

@ -0,0 +1,17 @@
(defwidget hyprworkspaces []
(eventbox :onscroll "bash ~/.config/eww/scripts/change-active-workspace {} ${current_workspace}" :class "workspaces-widget"
(box :space-evenly false
:spacing 5
(for workspace in workspaces
(eventbox :onclick "hyprctl dispatch workspace ${workspace.id}"
(box :class "workspace-entry ${workspace.id == current_workspace ? "current" : ""} ${workspace.windows > 0 ? "occupied" : "empty"}"
(label :text "${workspace.id}")
)
)
)
)
)
)
(deflisten workspaces :initial "[]" "bash $XDG_CONFIG_HOME/eww/scripts/get-workspaces")
(deflisten current_workspace :initial "1" "bash $XDG_CONFIG_HOME/eww/scripts/get-active-workspace")

View file

@ -0,0 +1,18 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Directory listing for /eww/widgets/components/</title>
</head>
<body>
<h1>Directory listing for /eww/widgets/components/</h1>
<hr>
<ul>
<li><a href="hyprwindow.yuck">hyprwindow.yuck</a></li>
<li><a href="hyprworkspaces.yuck">hyprworkspaces.yuck</a></li>
<li><a href="japaneseaudio.yuck">japaneseaudio.yuck</a></li>
<li><a href="japanesedate.yuck">japanesedate.yuck</a></li>
</ul>
<hr>
</body>
</html>

View file

@ -0,0 +1,8 @@
(defwidget internet []
(box :spacing 0 :space-evenly false :style "color: #f5c2e7"
network
)
)
(defpoll network :interval "30s"
"iwgetid -r")

View file

@ -0,0 +1,11 @@
(defwidget japaneseaudio []
(eventbox :onscroll "bash -c 'if [ '{}' = 'up' ]; then pamixer -i 5; else pamixer -d 5; fi'"
(box :spacing 0 :space-evenly false :style "color: #96CDFB"
volume
"音"
)
)
)
(defpoll volume :interval "1s"
"pamixer --get-volume")

View file

@ -0,0 +1,9 @@
(defwidget japanesebattery []
(box :spacing 0 :space-evenly false :style "color: #FAB387"
power
"電"
)
)
(defpoll power :interval "1m"
"cat /sys/class/power_supply/BAT1/capacity")

View file

@ -0,0 +1,9 @@
(defwidget japanesedate []
(label :style "color: #DDB6F2"
:text japanesedate_time
)
)
(defpoll japanesedate_time :interval "100s"
"bash $XDG_CONFIG_HOME/eww/scripts/japanesedate"
)

View file

@ -0,0 +1,16 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Directory listing for /eww/widgets/</title>
</head>
<body>
<h1>Directory listing for /eww/widgets/</h1>
<hr>
<ul>
<li><a href="bar.yuck">bar.yuck</a></li>
<li><a href="components/">components/</a></li>
</ul>
<hr>
</body>
</html>

View file

@ -0,0 +1,15 @@
(defwidget powerbar []
(box
:orientation "vertical"
:spacing 8
:space-evenly false
:style "color: #FAB387"
(progress
:orientation "v"
:value {100 - power})
"電"
)
)
(defpoll power :interval "1m"
"cat /sys/class/power_supply/BAT1/capacity")

View file

@ -0,0 +1,21 @@
#!/bin/sh
function clamp {
min=$1
max=$2
val=$3
python -c "print(max($min, min($val, $max)))"
}
direction=$1
current=$2
if test "$direction" = "down"
then
target=$(clamp 1 10 $(($current+1)))
echo "jumping to $target"
hyprctl dispatch workspace $target
elif test "$direction" = "up"
then
target=$(clamp 1 10 $(($current-1)))
echo "jumping to $target"
hyprctl dispatch workspace $target
fi

View file

@ -0,0 +1,3 @@
#!/bin/sh
hyprctl monitors -j | jq --raw-output .[0].activeWorkspace.id
socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | stdbuf -o0 grep '^workspace>>' | stdbuf -o0 awk -F '>>|,' '{print $2}'

View file

@ -0,0 +1,3 @@
#!/bin/sh
hyprctl activewindow -j | jq --raw-output .title
socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | stdbuf -o0 grep '^activewindow>>' | stdbuf -o0 awk -F '>>|,' '{print $3}'

View file

@ -0,0 +1,11 @@
#!/bin/sh
spaces (){
WORKSPACE_WINDOWS=$(hyprctl workspaces -j | jq 'map({key: .id | tostring, value: .windows}) | from_entries')
seq 1 10 | jq --argjson windows "${WORKSPACE_WINDOWS}" --slurp -Mc 'map(tostring) | map({id: ., windows: ($windows[.]//0)})'
}
spaces
socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
spaces
done

View file

@ -0,0 +1,20 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Directory listing for /eww/scripts/</title>
</head>
<body>
<h1>Directory listing for /eww/scripts/</h1>
<hr>
<ul>
<li><a href="change-active-workspace">change-active-workspace</a></li>
<li><a href="get-active-workspace">get-active-workspace</a></li>
<li><a href="get-window-title">get-window-title</a></li>
<li><a href="get-workspaces">get-workspaces</a></li>
<li><a href="japanesedate">japanesedate</a></li>
<li><a href="medpreview">medpreview</a></li>
</ul>
<hr>
</body>
</html>

View file

@ -0,0 +1,31 @@
#!/bin/sh
readarray -t dateparts <<<"$(date "+%0m月%0d日%n%u")"
echo -n "${dateparts[0]}["
case ${dateparts[1]} in
1)
echo -n "月"
;;
2)
echo -n "火"
;;
3)
echo -n "水"
;;
4)
echo -n "木"
;;
5)
echo -n "金"
;;
6)
echo -n "土"
;;
7)
echo -n "日"
;;
esac
echo "]"

View file

@ -0,0 +1,3 @@
#!/bin/sh
playerctl --follow metadata mpris:artUrl | stdbuf -o0 cut -c 8-

View file

View file

@ -0,0 +1,32 @@
(include "./widgets/bar.yuck")
(include "./widgets/powerbar.yuck")
(defwindow bar0
:monitor 0
:geometry (geometry :width "100%"
:height "29px"
:anchor "top center")
:stacking "fg"
:exclusive true
(bar)
)
(defwindow preview
:monitor 0
:geometry (geometry :x "100px"
:y "5px"
:anchor "top right")
(image :path mediapreview)
)
(defwindow powerbar0
:monitor 0
:geometry (geometry :x "100px"
:y "5px"
:anchor "top right")
(powerbar)
)
(deflisten mediapreview :initial "hello?"
"bash $XDG_CONFIG_HOME/eww/scripts/medpreview"
)

7
programs/eww/default.nix Normal file
View file

@ -0,0 +1,7 @@
{ config, pkgs, ... }:
{
programs.eww.enable = true;
programs.eww.package = pkgs.eww-wayland;
programs.eww.configDir = ./config;
}

8
programs/ssh/default.nix Normal file
View file

@ -0,0 +1,8 @@
{ config, pkgs, ... }:
{
programs.ssh.enable = true;
home.packages = with pkgs; [
sshfs # SSH File system
];
}