diff --git a/home/programs/eww/src/eww.yuck b/home/programs/eww/src/eww.yuck index dc2c94f..9b97f94 100644 --- a/home/programs/eww/src/eww.yuck +++ b/home/programs/eww/src/eww.yuck @@ -1,97 +1,29 @@ -(defwindow bar-primary - :monitor 0 - :geometry (geometry :x "0px" - :y "25px" - :width "100%" - :height "25px" - :anchor "top center") - :stacking "fg" - :reserve (struts :distance "50px" :side "top") - :windowtype "dock" - :wm-ignore false -(box - :orientation "horizontal" - :halign "right" - (eventbox :onclick "notify-send Left" - :onrightclick "notify-send Right" - "Click Me!") - (rightSideBar))) +(defwidget workspaces-and-windows [] + (let content (split " " (file "/tmp/xmonad-eww-log")) + (let ws-list (take 9 content) + (let win-list (drop 9 content) + (box :orientation "vertical" :class "bar" -;; The Wrapper of the rightside Information -(defwidget rightSideBar [] - (box - :space-evenly "false" - :halign "end" - (audio) - (nw) - (date) - )) + ;; Workspaces + (box :orientation "horizontal" + (for ws in ws-list + (let class (if (starts-with ws "[[") + "ws-current" + (if (starts-with ws "(") + "ws-visible" + "ws-hidden"))) + (let name (string-trim ws "[]()") + (button :onclick (format "wmctrl -s %s" name) + :class class + (label :text name)))))) -;; The Internet Information box. -(defwidget audio [] -(box :class "container" - :space-evenly "false" - :halign "end" - (label :class "iconBat" :text "${volicon} ") - (label :class "text" :text "${vol} % ") - (label :class "text" :text "${micicon} "))) - -;; The Internet Information box. -(defwidget nw [] -(box :class "container" - :space-evenly "false" - :halign "end" - (label :class "iconNWDown" :text " ") - (label :class "text" :text " ${nwdown} ") - (label :class "iconNWUp" :text " ") - (label :class "text" :text "${nwup} "))) - -;; The date Information box. -(defwidget date [] -(box :class "container" - :space-evenly "false" - :halign "end" - (label :class "iconClock" :text " ") - (label :class "text" :text "${date-time} "))) - -;; Variables - -(defpoll volicon - :interval "1s" - :initial "-" ; optional, defaults to poll at startup - `if [[ $(cut -d ' ' -f 2 <<< $(pulseaudio-ctl full-status)) == "yes" ]]; then echo "󰝟"; else echo ""; fi`) - -(defpoll vol - :interval "1s" - :initial "-" ; optional, defaults to poll at startup - `Volume=$(cut -d ' ' -f 1 <<<$(pulseaudio-ctl full-status)); echo "$(( Volume/2 ))"`) - -(defpoll micicon - :interval "1s" - :initial "-" ; optional, defaults to poll at startup - `if [[ $(cut -d ' ' -f 3 <<< $(pulseaudio-ctl full-status)) == "yes" ]]; then echo ""; else echo ""; fi`) - -(defpoll nwup ;; TODO - :interval "1s" - :initial "-" ; optional, defaults to poll at startup - `echo "up"`) - -(defpoll nwdown ; TODO - :interval "1s" - :initial "-" ; optional, defaults to poll at startup - `echo "down"`) - -(defpoll date-time - :interval "1s" - :initial "initial-value" ; optional, defaults to poll at startup - `date "+%a %d.%m.%y %H:%M:%S"`) - -;; IDK -(defwidget greeter [?text name] -(box :orientation "horizontal" - :halign "center" - :geometry (geometry :x "0px" - :y "0px" - :height "20px" - :anchor "top center") - text)) + ;; Open windows + (box :orientation "horizontal" :class "window-list" + (for win in win-list + (let class (if (starts-with win "*") "win-focused" "win") + (label :class class :text (string-trim win "*"))))) + ) + ) + ) + ) +) diff --git a/home/programs/eww/src/scripts/xmonad_log.sh b/home/programs/eww/src/scripts/xmonad_log.sh new file mode 100755 index 0000000..b7a6a58 --- /dev/null +++ b/home/programs/eww/src/scripts/xmonad_log.sh @@ -0,0 +1,4 @@ +tail -F /tmp/xmonad-eww-log | while read -r line; do + clean_line=$(echo "$line" | sed -E 's/<[^>]+>//g') + eww update xmonad_log="$clean_line" +done diff --git a/home/programs/neovim/lua/plugins/catppuccin-nvim.lua b/home/programs/neovim/lua/plugins/catppuccin-nvim.lua index b3e7c93..42938c4 100644 --- a/home/programs/neovim/lua/plugins/catppuccin-nvim.lua +++ b/home/programs/neovim/lua/plugins/catppuccin-nvim.lua @@ -5,6 +5,7 @@ return { name = "catppuccin", priority = 1000, config = function() + require("catppuccin").setup() vim.cmd.colorscheme("catppuccin-mocha") end, opts = { diff --git a/home/programs/xmonad/default.nix b/home/programs/xmonad/default.nix index e783403..9645569 100644 --- a/home/programs/xmonad/default.nix +++ b/home/programs/xmonad/default.nix @@ -19,5 +19,7 @@ xorg.xmessage ghc cabal-install + wmctrl + trayer ]; } diff --git a/home/programs/xmonad/src/xmonad.hs b/home/programs/xmonad/src/xmonad.hs index 8a0841e..05292ae 100644 --- a/home/programs/xmonad/src/xmonad.hs +++ b/home/programs/xmonad/src/xmonad.hs @@ -1,102 +1,101 @@ -import XMonad -import XMonad.Util.SpawnOnce (spawnOnce) -import XMonad.Hooks.EwmhDesktops -import XMonad.Util.EZConfig -import XMonad.Hooks.DynamicLog -import XMonad.Hooks.StatusBar -import XMonad.Hooks.StatusBar.PP -import XMonad.Layout.ThreeColumns -import XMonad.Layout.Magnifier -import XMonad.Util.ClickableWorkspaces -import XMonad.Util.Loggers import Data.ByteString (maximum) import Distribution.Compat.Prelude (print) ---import Control.Monad.RWS (All(All)) +import System.IO +import XMonad +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.EwmhDesktops +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.StatusBar +import XMonad.Hooks.StatusBar.PP +import XMonad.Layout.Magnifier +import XMonad.Layout.ThreeColumns +import XMonad.Util.ClickableWorkspaces +import XMonad.Util.EZConfig +import XMonad.Util.Loggers +import XMonad.Util.Run (spawnPipe) +import XMonad.Util.SpawnOnce (spawnOnce) + +-- import Control.Monad.RWS (All(All)) import XMonad.Hooks.ManageHelpers +main = do + xmonad . ewmhFullscreen . ewmh $ myConfig -main = xmonad . ewmhFullscreen . ewmh . withEasySB (statusBarProp "xmobar" (pure myXmobarPP)) defToggleStrutsKey $ myconfig +myConfig = + def + { modMask = mod4Mask + , terminal = "alacritty" + , layoutHook = avoidStruts myLayout + , normalBorderColor = "#f5c2e7" + , focusedBorderColor = "#cdd6f4" + , manageHook = manageDocks <+> myManageHooks + , startupHook = myStartupHook + , logHook = dynamicLogWithPP myXmobarPP + } + `additionalKeysP` myKeys -myconfig = def - { - modMask = mod4Mask - , layoutHook = myLayout - , terminal = "alacritty" - , normalBorderColor = "#f5c2e7" - , focusedBorderColor = "#cdd6f4" - , manageHook = myManageHooks - , startupHook = myStartupHook - } - `additionalKeysP` - [ - -- Messages - ("M-m w", spawn "xmessage 'Test Message :)'") -- type mod+x then w to pop up 'woohoo!') - -- System +myKeys = + [ -- Messages + ("M-m w", spawn "xmessage 'Test Message :)'") -- type mod+x then w to pop up 'woohoo!') + -- System , ("M-p", spawn "rofi -show \"drun\"") - -- Screenshots - , ("", spawn "maim --format=png \"/home/$USER/Pictures/screenshot-$(date -u +%Y-%m-%d-%H:%M:%S).png\"") -- Whole Screen to File + , -- Screenshots + ("", spawn "maim --format=png \"/home/$USER/Pictures/screenshot-$(date -u +%Y-%m-%d-%H:%M:%S).png\"") -- Whole Screen to File , ("M-", spawn "maim --format=png --window $(xdotool getactivewindow) \"/home/$USER/Pictures/screenshot-$(date -u +%Y-%m-%d-%H:%M:%S).png\"") -- Focused Window to File , ("S-", spawn "maim --format=png --select \"/home/$USER/Pictures/screenshot-$(date -u +%Y-%m-%d-%H:%M:%S).png\"") -- Selection to File , ("C-", spawn "maim --format=png | xclip -selection clipboard -t image/png") -- Whole Screen to Clipboard , ("M-C-", spawn "maim --format=png --window $(xdotool getactivewindow) | xclip -section clipboard -t image/png") -- Focused Window to Clipboard , ("C-S-", spawn "maim --format=png --select | xclip -selection clipboard -t image/png") -- Selection to Clipboard - --Program + -- Program , ("M-c", spawn "firefox") , ("M-y", spawn "signal-desktop") , ("M-x", spawn "telegram-desktop") , ("M-c", spawn "firefox") , ("M-v", spawn "thunderbird") - -- Brightness - , ("", spawn "xbacklight -inc 10") + , -- Brightness + ("", spawn "xbacklight -inc 10") , ("", spawn "xbacklight -dec 10") - -- Audio - , ("", spawn "pulseaudio-ctl mute") + , -- Audio + ("", spawn "pulseaudio-ctl mute") , ("", spawn "pulseaudio-ctl up 5") , ("", spawn "pulseaudio-ctl down 5") , ("", spawn "pulseaudio-ctl mute-input") - ] - --`removeKeysP` [ "M-S-q" ] + ] + +-- `removeKeysP` [ "M-S-q" ] myXmobarPP :: PP -myXmobarPP = def - { - ppSep = pink " • " - , ppWsSep = "" - , ppCurrent = wrap " " "" . xmobarBorder "Top" "#f38ba8" 2 - , ppVisible = wrap " " "" . xmobarBorder "Top" "#a6e3a1" 2 - , ppHidden = green . wrap " " "" - , ppHiddenNoWindows = gray . wrap " " "" - , ppUrgent = red . wrap (yellow "!") (yellow "!") - , ppTitleSanitize = xmobarStrip - , ppOrder = \[ws, l, _, wins] -> [ws, l, wins] - , ppExtras = [logTitles formatFocused formatUnfocused] - } +myXmobarPP = + def + { ppOutput = \str -> do + writeFile "/tmp/xmonad-eww-log" str + , ppCurrent = wrap "[[" "]]" + , ppVisible = wrap "(" ")" + , ppHidden = wrap " " " " + , ppHiddenNoWindows = id + , ppUrgent = wrap "!" "!" + , ppSep = " " + , ppOrder = \(ws : _ : _ : wins : _) -> [ws, wins] + , ppExtras = [logTitles formatFocused formatUnfocused] + } where - formatFocused = wrap "[" "]" . pink . ppWindow - formatUnfocused = wrap "[" "]" . gray . ppWindow + formatFocused = wrap "*" "*" . ppWindow + formatUnfocused = id . ppWindow ppWindow :: String -> String - ppWindow = xmobarRaw . (\w -> if null w then "???" else w) . shorten 15 -- set maximum length of windowtitle to 15 + ppWindow w = if null w then "???" else take 30 w - pink, gray, red, yellow, green :: String -> String - pink = xmobarColor "#f5c2e7" "" - green = xmobarColor "#a6e3a1" "" - gray = xmobarColor "#cdd6f4" "" - red = xmobarColor "#f38ba8" "" - yellow = xmobarColor "#f9e2af" "" - - -myLayout = Tall 1 (3/100) (1/2) ||| Mirror (Tall 1 (3/100) (1/2)) ||| Full ||| ThreeColMid 1 (3/100) (1/2) -- wenn wieder zoom von fokusierten Seitenfenstern gewünscht, dann Fireox fixn und: magnifiercz' 1.3 (ThreeColMid 1 (3/100) (1/2)) +myLayout = Tall 1 (3 / 100) (1 / 2) ||| Mirror (Tall 1 (3 / 100) (1 / 2)) ||| Full ||| ThreeColMid 1 (3 / 100) (1 / 2) -- wenn wieder zoom von fokusierten Seitenfenstern gewünscht, dann Fireox fixn und: magnifiercz' 1.3 (ThreeColMid 1 (3/100) (1/2)) myManageHooks :: ManageHook -myManageHooks = composeAll - [ - isDialog --> doFloat - , className =? "Xmessage" --> doCenterFloat - ] +myManageHooks = + composeAll + [ isDialog --> doFloat + , className =? "Xmessage" --> doCenterFloat + ] myStartupHook :: X () myStartupHook = do - mapM_ spawnOnce ["xmobar -x " ++ show sid | sid <- [0..9]] - spawnOnce "dropbox" - spawnOnce "nextcloud --background" + spawnOnce "nextcloud --background" + spawnOnce "trayer --edge top --align left --widthtype request --height 25 --transparent true --alpha 0 --expand false --SetDockType true --SetPartialStrut true --monitor primary &" + spawnOnce "eww open bar" diff --git a/indent.log b/indent.log new file mode 100644 index 0000000..edf3e4f --- /dev/null +++ b/indent.log @@ -0,0 +1,38 @@ +INFO: latexindent.pl version 3.24.4, 2024-07-18, a script to indent .tex files + latexindent.pl lives here: /nix/store/n170p0fiily4lcr7agswvzm84fyzi2jx-latexindent-3.24.4-tex/scripts/latexindent/ + Sun Apr 20 15:34:29 2025 + Reading input from STDIN +INFO: Processing switches: + -y|--yaml: YAML settings specified via command line +INFO: Directory for backup files and log file indent.log: + . +INFO: Perl modules are being loaded from the following directories: + /nix/store/3vq9qasxlqpyq1k95nq3s13g2m6w59ay-perl-5.40.0/lib/perl5/5.40.0/FindBin.pm + /nix/store/zi73jrv7iqlrwg6sk8fjbfafqs7jjj1z-perl-5.40.0-env/lib/perl5/site_perl/5.40.0/YAML/Tiny.pm + /nix/store/3vq9qasxlqpyq1k95nq3s13g2m6w59ay-perl-5.40.0/lib/perl5/5.40.0/File/Copy.pm + /nix/store/3vq9qasxlqpyq1k95nq3s13g2m6w59ay-perl-5.40.0/lib/perl5/5.40.0/File/Basename.pm + /nix/store/3vq9qasxlqpyq1k95nq3s13g2m6w59ay-perl-5.40.0/lib/perl5/5.40.0/Getopt/Long.pm + /nix/store/zi73jrv7iqlrwg6sk8fjbfafqs7jjj1z-perl-5.40.0-env/lib/perl5/site_perl/5.40.0/File/HomeDir.pm +INFO: LatexIndent perl modules are being loaded from, for example: + /nix/store/n170p0fiily4lcr7agswvzm84fyzi2jx-latexindent-3.24.4-tex/scripts/latexindent/LatexIndent/Document.pm +INFO: YAML settings read: defaultSettings.yaml + Reading defaultSettings.yaml from /nix/store/n170p0fiily4lcr7agswvzm84fyzi2jx-latexindent-3.24.4-tex/scripts/latexindent/defaultSettings.yaml +INFO: YAML reading settings + Home directory is /home/elias + latexindent.pl didn't find indentconfig.yaml or .indentconfig.yaml + see all possible locations: https://latexindentpl.readthedocs.io/en/latest/sec-appendices.html#indentconfig-options) +INFO: YAML settings read: -y switch + YAML setting: "defaultIndent:' '" + quote found in -y switch + key: + value: defaultIndent:' ' + double-quoted string found in -y switch: "defaultIndent:' '", substitute to defaultIndent:' ' +INFO: Phase 1: searching for objects +INFO: Phase 2: finding surrounding indentation +INFO: Phase 3: indenting objects +INFO: Phase 4: final indentation check +INFO: Output routine: + Not outputting to file; see -w and -o switches for more options. + -------------- +INFO: Please direct all communication/issues to: + https://github.com/cmhughes/latexindent.pl