REEEEEEEEEEEEEEEEEEEEEE

This commit is contained in:
elkowar 2021-03-16 16:14:21 +01:00
parent 7d6343e415
commit ff35e25048
14 changed files with 536 additions and 114 deletions

View file

@ -1,10 +1,4 @@
{
"optOut": false,
"lastUpdateCheck": 1609704527220,
"update": {
"latest": "6.14.10",
"current": "6.14.9",
"type": "patch",
"name": "npm"
}
"lastUpdateCheck": 1615367685427
}

View file

@ -75,7 +75,6 @@ scale trough {
}
}
.this {
border: 10px solid blue;
}
@ -93,3 +92,38 @@ scale trough {
.lol {
color: red;
}
window {
background: none;
}
progressbar {
min-width: 1px;
trough {
min-width: 1px;
//background-color: #ebdbb255;
}
&, & * {
all: unset;
}
progress {
min-width: 1px;
//background-color: #8CD68F;
//box-shadow: 0 0 10px 3px #8CD68F22;
}
}
progressbar progress {
background: repeating-linear-gradient(0deg, #458588, #8ec07c); /*, #b8bb26, #fabd2f);*/
background-size: 100% 200%;
animation: AnimationName 1s linear infinite;
}
@keyframes AnimationName {
0%{background-position:0% 0%}
100%{background-position:0% 200%}
}

View file

@ -1,9 +1,29 @@
<eww>
<includes>
<file path="./foo.xml"/>
</includes>
<definitions>
<def name="pxbar">
<progress value="{{volume}}" orientation="v" halign="start" flipped="true"/>
</def>
<def name="test">
<box class="{{some_var}}" space-evenly="false" spacing="10">
testing {{shit}}
is shit true? {{shit == true}}
is shit "shit"? {{shit == "shit"}}
true and false 🤔 {{ true && false }}
fancy ass math {{ 12 + 5 * 12 * 4 }}
<if-else cond="{{shit == 'yea'}}">
<box>hi</box>
<box>ho</box>
</if-else>
<scale value="50" orientation="v" min="0" max="100" flipped="true" />
<button onclick="pgrep 'eww' &amp;&amp; echo '' || echo ''">Test bug</button>
@ -12,6 +32,8 @@
notify-send 'ree' 'this is {{shit}}'
<multiple text="{{shit}}" />
<!--<literal content="{{code}}"/>-->
</box>
</def>
@ -24,8 +46,9 @@
<box>{{text}}</box>
<label onscroll="notify-send '{{shit}}' {}" text="reeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" limit-width="5" wrap="true" />
<input onchange="notify-send 'ree' '{}'" />
<!--<input onchange="eww update code='{}'" />-->
{{date}}
{{date-tail}}
</box>
</def>
@ -67,15 +90,16 @@
<variables>
<script-var name="volume">
amixer sget 'Master' | grep 'Front Left:' | sed 's/.*\[\(.*\)%\].*/\1/g';
LANG=C pactl subscribe | grep REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE-line-buffered sink | while read -r _; do
LANG=C pactl subscribe | grep --line-buffered sink | while read -r _; do
amixer sget 'Master' | grep 'Front Left:' | sed 's/.*\[\(.*\)%\].*/\1/g'
done
</script-var>
<var name="shit">
shit
true
</var>
<var name="some_var"></var>
<var name="code"></var>
<var name="song-image"></var>
@ -88,7 +112,7 @@
<!--<script-var name="date" interval="1s">-->
<!--date-->
<!--</script-var>-->
<script-var name="date">
<script-var name="date-tail">
while true; do
sleep 1;
notify-send 'hi' 'ho'
@ -96,6 +120,16 @@
done
</script-var>
<script-var name="date" interval="1s">
date
</script-var>
<!--<script-var name="xyz">-->
<!--tail -F /home/leon/test | while read -r _; do notify-send "Hi"; done-->
<!--</script-var>-->
@ -107,8 +141,15 @@
<windows>
<window screen="DisplayPort-0" name="mw" stacking="fg" focusable="false">
<!--<struts top="250" top_end_x="1920"/>-->
<window screen="0" name="px" stacking="fg" focusable="false">
<geometry anchor="center left" width="10px" height="100%" x="1px" y="0px"/>
<widget>
<pxbar/>
</widget>
</window>
<window screen="1" name="mw" stacking="fg" focusable="false">
<!--<window screen="2" name="mw" stacking="fg" focusable="false">-->
<reserve side="l" distance="500px"/>
<geometry anchor="center" width="200px" height="200px" x="0px" y="0px"/>
<widget>
<test ree="test" />
@ -117,7 +158,8 @@
<window screen="0" name="mw2" stacking="fg">
<geometry anchor="bottom right"/>
<widget>
<test ree="test" />
<foo/>
<!--<test ree="test" />-->
</widget>
</window>
<window screen="0" name="volume_popup">

View file

@ -0,0 +1,87 @@
* {
all: unset; //Unsets everything so you can style everything from scratch
}
//Global Styles
window {
background-color: #282828;
color: #ffd5cd;
font-family: cozette;
}
button {
all: unset;
background-color: #282828;
}
.bar {
padding-left: 30px;
padding-right: 30px;
}
// Styles on classes (see eww.xml for more information)
.sidestuff slider {
all: unset;
color: #ffd5cd;
}
.slider-vol scale trough highlight {
all: unset;
background-color: #D35D6E;
color: #000000;
border-radius: 10px;
}
.slider-vol scale trough {
all: unset;
background-color: #4e4e4e;
border-radius: 50px;
min-height: 3px;
min-width: 50px;
margin-left: 10px;
margin-right: 20px;
}
.slider-ram scale trough highlight {
all: unset;
background-color: #D35D6E;
color: #000000;
border-radius: 10px;
}
.slider-ram scale trough {
all: unset;
background-color: #4e4e4e;
border-radius: 50px;
min-height: 3px;
min-width: 50px;
margin-left: 10px;
margin-right: 20px;
}
.label-ram, .label-vol {
font-size: large;
}
.time {
padding-right: 10px;
}
.workspaces button:hover {
color: #D35D6E;
}
.workspaces > * {
padding-left: 5px;
padding-right: 5px;
}
.active_wsp {
color: #8ec07c;
}
.full_wsp {
color: #ebdbb2;
}
.inactive_wsp {
color: #a89984;
}

View file

@ -0,0 +1,125 @@
<!-- The main eww configuration file. This is where your widgets and how they appear on the screen and what they
contain are defined. -->
<eww>
<definitions>
<!-- This is the place where you structure your widgets, align them and stuff. -->
<def name="bar"> <!-- Starts the definition of a widget named main -->
<box orientation="h" hexpand="true" valign="center">
<workspaces wsp_literal="{{wsp_literal}}"/>
<music/>
<sidestuff/>
</box>
</def>
<def name="sidestuff">
<box class="sidestuff" orientation="h" space-evenly="false" halign="end">
<slider-vol/>
<slider-ram/>
<time/>
</box>
</def>
<def name="workspaces">
<literal content="{{wsp_literal}}"/>
</def>
<def name="music">
<box orientation="h" class="music" halign="center" space-evenly="false">
<!-- An image. We won't be using it, but it might be handy if you ever need it. -->
<!-- <image path="/home/user/.config/eww/icons/music.svg"/> -->
 {{music}} <!--This is how you use variables.-->
</box>
</def>
<def name="slider-vol">
<!--A basic volume slider-->
<box orientation="h" class="slider-vol" space-evenly="false">
<box class="label-vol"></box>
<scale min="0" max="101" value="{{volume}}" onchange="amixer -D pulse sset Master {}%"/>
</box>
</def>
<def name="slider-ram">
<!--A basic RAM slider-->
<box orientation="h" class="slider-ram" space-evenly="false">
<box class="label-ram"></box>
<scale min="0" active="false" max="101" value="{{ram-used}}"/>
</box>
</def>
<def name="time">
<!--Time-->
<box class="time">{{hour}}:{{min}} {{month}} {{number_day}}, {{year_full}}</box>
</def>
</definitions>
<variables>
<!-- Music vars -->
<!-- These are your variables. Like they say, they run a script, and then output that to the variable. In
the following var, we get music info from playerctl. -->
<script-var name="music" interval="5s">playerctl metadata --format '{{ artist }} - {{ title }}'</script-var>
<!--Volume var-->
<!-- If your vars get too complex to write down here, you can use an external script and paste it's path here as well, as shown below.
-->
<script-var name="volume" interval="16ms">
amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'
</script-var>
<script-var name="workspace_literal_0">
~/.config/eww/scripts/workspaces.sh 0
</script-var>
<script-var name="workspace_literal_1">
~/.config/eww/scripts/workspaces.sh 1
</script-var>
<script-var name="workspace_literal_2">
~/.config/eww/scripts/workspaces.sh 2
</script-var>
<!--Date vars-->
<script-var name="number_day" interval="5h">date "+%d"</script-var>
<script-var name="month" interval="10h">date "+%b"</script-var>
<script-var name="min" interval="10s">date "+%M"</script-var>
<script-var name="hour" interval="1m">date "+%H"</script-var>
<script-var name="year_full" interval="15h">date "+%Y"</script-var>
<!--RAM var-->
<script-var name="ram-used" interval="1s">
printf '%.0f\n' $(LANG=en_US free -m | grep Mem | awk '{print ($3/$2)*100}')
</script-var>
<!--Battery charge var-->
<script-var name="battery-remaining" interval="2m">
<!--cat /sys/class/power_supply/BAT0/capacity-->
echo 50
</script-var>
</variables>
<windows>
<!-- These are the windows -->
<window screen="0" name="bar">
<geometry x="0%" y="0%" width="100%" height="40px"/> <!--Specifies geometry-->
<reserve side="top" distance="20px"/>
<widget>
<bar wsp_literal="{{workspace_literal_1}}"/> <!--This is the def we created earlier-->
</widget>
</window>
<window screen="1" name="bar1">
<geometry x="0%" y="0%" width="100%" height="40px"/> <!--Specifies geometry-->
<reserve side="top" distance="20px"/>
<widget>
<bar wsp_literal="{{workspace_literal_0}}"/> <!--This is the def we created earlier-->
</widget>
</window>
<window screen="2" name="bar2">
<geometry x="0%" y="0%" width="100%" height="40px"/> <!--Specifies geometry-->
<reserve side="top" distance="20px"/>
<widget>
<bar wsp_literal="{{workspace_literal_2}}"/> <!--This is the def we created earlier-->
</widget>
</window>
</windows>
</eww>

13
files/.config/eww/foo.xml Normal file
View file

@ -0,0 +1,13 @@
<eww>
<definitions>
<def name="foo">
<box>Hey this is a foo</box>
</def>
</definitions>
<variables>
<var name="shit">
shit
</var>
</variables>
</eww>

View file

@ -0,0 +1,28 @@
#!/usr/bin/env bash
monitor="$1"
gib_workspace_names() {
wmctrl -d \
| awk '{ print $1 " " $2 " " $9 }' \
| grep -v NSP \
| grep "${monitor}_"
}
gib_workspace_xml() {
gib_workspace_names | while read -r id active name; do
name="${name#*_}"
if [ "$active" == '*' ]; then
button_class="active_wsp"
elif wmctrl -l | grep --regexp '.*\s\+'"$id"'\s\+.*' >/dev/null; then
button_class="full_wsp"
else
button_class="inactive_wsp"
fi
echo -n '<button class="'"$button_class"'" onclick="wmctrl -s '"$id"'">'"$name"'</button>'
done
}
xprop -spy -root _NET_CURRENT_DESKTOP | while read -r; do
echo '<box orientation="h" class="workspaces" space-evenly="true" halign="start" valign="center" vexpand="true">'"$(gib_workspace_xml)"'</box>'
done

View file

@ -1,6 +1,6 @@
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE MultiParamTypeClasses, DeriveDataTypeable, TypeSynonymInstances, FlexibleInstances, FlexibleContexts, ScopedTypeVariables, LambdaCase #-}
{-# OPTIONS_GHC -fno-warn-missing-signatures -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-missing-signatures -fno-warn-unused-binds -fno-warn-Wno-unused-top-binds #-}
-- Imports -------------------------------------------------------- {{{
module Config (main) where
@ -97,6 +97,7 @@ import Data.Bifunctor
import GHC.IO.Unsafe (unsafePerformIO)
import XMonad.Layout.LayoutModifier
import qualified IndependentScreens as IS
import Data.List (find)
--import XMonad.Layout.MultiColumns (multiCol)
{-# ANN module "HLint: ignore Redundant $" #-}
{-# ANN module "HLint: ignore Redundant bracket" #-}
@ -272,7 +273,7 @@ myStartupHook = do
spawn "/home/leon/.config/polybar/launch.sh"
spawnOnce "nitrogen --restore"
spawnOnce "mailnag"
spawnOnce "flashfocus"
spawn "flashfocus"
for_ ["led1", "led2"] $ \led -> safeSpawn "sudo" ["liquidctl", "set", led, "color", "fixed", "00ffff"]
withDisplay $ \dpy -> do
r <- asks theRoot
@ -347,7 +348,7 @@ myKeys = concat [ zoomRowBindings, tabbedBindings, multiMonitorBindings, program
programLaunchBindings :: [(String, X ())]
programLaunchBindings =
[ ("M-p", spawn myLauncher)
, ("M-S-p", Rofi.showCombi def [ "drun", "window", "ssh" ])
, ("M-S-p", Rofi.showCombi def [ "drun", "ssh" ])
, ("M-S-e", Rofi.showNormal (def { Rofi.fuzzy = False }) "emoji")
--, ("M-s", spawn $ scriptFile "rofi-search.sh")
, ("M-S-o", spawn $ scriptFile "rofi-open.sh")
@ -470,6 +471,18 @@ myKeys = concat [ zoomRowBindings, tabbedBindings, multiMonitorBindings, program
, W.visible = (otherScreen { W.workspace = currentWsp { W.tag = W.tag otherWsp } } : (tail $ W.visible ws))
}
swapCurrentWspContentsWith :: Eq i => i -> W.StackSet i l a sid sd -> W.StackSet i l a sid sd
swapCurrentWspContentsWith other ws =
case find ((other ==) . W.tag) $ W.workspaces ws of
Just otherWsp -> W.mapWorkspace (swapWith otherWsp) ws
Nothing -> ws
where
currentWsp = W.workspace $ W.current ws
swapWith otherWsp w
| W.tag w == other = currentWsp { W.tag = W.tag otherWsp }
| W.tag w == W.tag currentWsp = otherWsp { W.tag = W.tag currentWsp }
| otherwise = w
withSelectionCommands :: [(String, X ())]
@ -632,10 +645,6 @@ fullscreenFixEventHook (ClientMessageEvent _ _ _ dpy win typ (_:dats)) = do
liftIO $ do
resizeWindow dpy win (fromIntegral $ wa_width attrs - 1) (fromIntegral $ wa_height attrs)
resizeWindow dpy win (fromIntegral $ wa_width attrs) (fromIntegral $ wa_height attrs)
--withWindowAttributes dpy win $ \attrs ->
--liftIO $ resizeWindow dpy win (fromIntegral $ wa_width attrs - 1) (fromIntegral $ wa_height attrs)
--withWindowAttributes dpy win $ \attrs ->
--liftIO $ resizeWindow dpy win (fromIntegral $ wa_width attrs + 1) (fromIntegral $ wa_height attrs)
return $ All True
fullscreenFixEventHook _ = return $ All True
@ -655,7 +664,7 @@ polybarLogHook monitor = do
-- swapping namedScratchpadFilterOutWorkspacePP and marshallPP will throw "Prelude.read no Parse" errors..... wtf
-- | create a polybar Pretty printer, marshalled for given monitor.
polybarPP :: ScreenId -> PP
polybarPP monitor = namedScratchpadFilterOutWorkspacePP . (if useSharedWorkspaces then id else IS.marshallPP $ fromIntegral monitor) $ def
polybarPP monitor = filterOutWsPP ["NSP"] . (if useSharedWorkspaces then id else IS.marshallPP $ fromIntegral monitor) $ def
{ ppCurrent = withFG aqua . withMargin . withFont 5 . const "__active__"
, ppVisible = withFG aqua . withMargin . withFont 5 . const "__active__"
, ppUrgent = withFG red . withMargin . withFont 5 . const "__urgent__"
@ -733,48 +742,6 @@ getActiveLayoutDescription = (description . W.layout . W.workspace . W.current)
--
--
-- newtype ActionCycleState = ActionCycleState (M.Map String Int) deriving Typeable
-- instance ExtensionClass ActionCycleState where
-- initialValue = ActionCycleState mempty
--
-- getActionCycle :: String -> ActionCycleState -> Maybe Int
-- getActionCycle name (ActionCycleState s) = M.lookup name s
--
-- nextActionCycle :: String -> Int -> ActionCycleState -> ActionCycleState
-- nextActionCycle name maxNum (ActionCycleState s) = ActionCycleState $ M.update (\n -> Just $ (n + 1) `mod` maxNum) name s
--
-- setActionCycle :: String -> Int -> ActionCycleState -> ActionCycleState
-- setActionCycle name n (ActionCycleState s)= ActionCycleState $ M.insert name n s
--
-- cycleAction :: String -> [X ()] -> X ()
-- cycleAction _ [] = pure ()
-- cycleAction name actions = do
-- idx <- XS.gets (getActionCycle name) >>= \case
-- Just x -> do
-- XS.modify (nextActionCycle name (length actions))
-- pure x
-- Nothing -> do
-- XS.modify (setActionCycle name 1)
-- pure 0
--
-- sequence_ $ actions `safeIdx` idx
--
--
--
--
-- safeIdx :: [a] -> Int -> Maybe a
-- safeIdx list i
-- | i < length list = Just $ list !! i
-- | otherwise = Nothing
--
unsafeGetXrdbValue :: String -> String
unsafeGetXrdbValue = unsafePerformIO . getXrdbValue
@ -801,3 +768,12 @@ fuckshit = getActiveLayoutDescription >>= debugShit
debugShit :: MonadIO m => String -> m ()
debugShit x = spawn $ "notify-send 'Debug' '" ++ x ++ "'"
lastLayout :: X ()
lastLayout = lastLayout' 123
where
lastLayout' :: Int -> X ()
lastLayout' 0 = pure ()
lastLayout' n = sendMessage NextLayout >> lastLayout' (n - 1)

View file

@ -1 +1 @@
/nix/store/g0342b3m9b0c8znl1s7xyibadadw0y0w-glibc-locales-2.32
/nix/store/k1yac6z5x9qqrrxf89xmwp38rs7snhjj-glibc-locales-2.32-10

View file

@ -0,0 +1,104 @@
/* ==UserStyle==
@name Github gruvbox
@namespace github.com/openstyles/stylus
@version 1.0.0
@description A new userstyle
@author Me
==/UserStyle== */
@-moz-document domain("github.com") {
[data-color-mode=dark] {
--color-bg-canvas: #282828 !important;
--color-bg-canvas-inset: #1d2021 !important;
--color-bg-canvas-inverse: #080808 !important;
--color-bg-canvas-mobile: #080808 !important;
--color-header-bg: #282828 !important;
--color-bg-primary: #1d2021 !important;
--color-bg-secondary: #1d2021 !important;
--color-bg-tertiary: #3c3836 !important;
--color-border-primary: transparent !important;
--color-border-secondary: transparent !important;
--color-box-header-blue-bg: transparent !important;
--color-box-header-blue-border: transparent !important;
--color-btn-bg: #ffffff10 !important;
--color-social-count-bg: #ffffff20 !important;
--color-btn-border: transparent !important;
--color-btn-hover-bg: #ffffff20 !important;
--color-btn-hover-border: transparent !important;
--color-topic-tag-bg: #5c8ae610 !important;
--color-header-search-bg: #ffffff10 !important;
--color-header-text: #ebdbb2 !important;
--color-header-logo: #ebdbb2 !important;
--color-header-search-border: transparent !important;
--color-input-contrast-bg: #ffffff10 !important;
--color-input-bg: #ffffff10 !important;
--color-input-border: transparent !important;
--color-text-primary: #fbf1c7 !important;
--color-text-secondary: #fbf1c7 !important;
--color-text-tertiary: #ebdbb2 !important;
--color-underlinenav-text: #ebdbb2 !important;
--color-underlinenav-text-active: #ebdbb2 !important;
--color-text-placeholder: #ffffff40 !important;
--color-underlinenav-counter-text: #ffffffAA !important;
--color-counter-bg: #ffffff20 !important;
--color-underlinenav-icon: #ffffffAA !important;
--color-calendar-graph-day-bg: #ffffff10 !important;
--color-border-overlay: transparent !important;
--color-shadow-large: rgb(1, 4, 9) 2px 2px 12px 0px !important;
--color-bg-overlay: #1c1c1c !important;
--color-select-menu-backdrop-bg: #1c1c1c !important;
--color-state-hover-secondary-bg: #ffffff10 !important;
--color-menu-bg-active: #ffffff10 !important;
--color-bg-info: #1c1c1c !important;
--color-btn-selected-bg: #ffffff20 !important;
--color-sidenav-selected-bg: #ffffff10 !important;
--color-auto-gray-2: #ffffff20 !important;
--color-state-selected-primary-bg: #835ce6 !important;
--color-text-link: #458588 !important;
--color-icon-success: #8ec07c !important;
}
[data-color-mode=dark] * {
transition-duration: 150ms !important;
}
[data-color-mode=dark] .markdown-body img,
[data-color-mode=dark] .bg-white:not(aside):not(.position-sticky) {
background: transparent !important;
}
[data-color-mode=dark] main .Box-header--blue,
[data-color-mode=dark] main .Box,
[data-color-mode=dark] .Box-row,
[data-color-mode=dark] .Box-header,
[data-color-mode=dark] .border-top .SelectMenu-item:last-child {
border: 0 !important;
}
[data-color-mode=dark] .tabnav-tab.selected,
[data-color-mode=dark] .tabnav-tab[aria-current]:not([aria-current=false]),
[data-color-mode=dark] .tabnav-tab[aria-selected=true],
[data-color-mode=dark] .pinned-issue-item,
[data-color-mode=dark] pager-flow,
[data-color-mode=dark] .border {
background: #1d2021;
}
[data-color-mode=dark] .SelectMenu-item {
border-color: #ffffff10;
}
[data-color-mode=dark] .Box-row--focus-gray.navigation-focus {
background: #ffffff03;
}
[data-color-mode=dark] main .Box-header,
[data-color-mode=dark] .Box-row {
margin: 0 !important;
}
svg {
color: var(--color-fg-primary) !important;
}
}

View file

@ -27,6 +27,15 @@ in
barrier
#hyper-haskell
font-manager
sqlite-web
#flameshot
sxhkd
okular
];
@ -60,6 +69,8 @@ in
};
systemd.user.services.dunst.Environment.DISPLAY = ":1";
services = {
mpd = {
enable = true;

View file

@ -141,6 +141,14 @@ in
fpath+=( /usr/share/zsh/site-functions/ )
'';
profileExtra = ''
[[ -f /home/leon/.profile ]] && . /home/leon/.profile
#case $(tty) in
#/dev/tty*) [[ $XDG_VTNR -le 2 ]] && tbsm;;
#esac
'';
initExtra = ''
export MANPAGER='nvim +Man! +"set nocul" +"set noshowcmd" +"set noruler" +"set noshowmode" +"set laststatus=2" +"set statusline=\ %t"'
export MANPAGER='nvim +Man! +"set nocul" +"set noshowcmd" +"set noruler" +"set noshowmode" +"set laststatus=0"'

View file

@ -1,4 +1,4 @@
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = [ pkgs.ytop pkgs.pscircle pkgs.asciiquarium pkgs.cmatrix ];
buildInputs = [ pkgs.pscircle pkgs.asciiquarium pkgs.cmatrix ];
}

View file

@ -1,4 +1,4 @@
#!/bin/bash
sudo chmod 666 /dev/ttyACM0
~/Downloads/Bazecor-0.2.4.AppImage
~/Downloads/Bazecor-0.2.7.AppImage