diff --git a/dotfiles/config/taffybar/imalison-taffybar.cabal b/dotfiles/config/taffybar/imalison-taffybar.cabal index cb7b1342..eb368dc7 100644 --- a/dotfiles/config/taffybar/imalison-taffybar.cabal +++ b/dotfiles/config/taffybar/imalison-taffybar.cabal @@ -27,11 +27,13 @@ executable imalison-taffybar , gtk-sni-tray , gtk-strut , haskell-gi-base + , hostname , hslogger , process , split , taffybar , transformers + , xdg-basedir , xmonad-contrib>=0.13 , xmonad>=0.13 default-language: Haskell2010 diff --git a/dotfiles/config/taffybar/stack.yaml b/dotfiles/config/taffybar/stack.yaml index d1f2c361..e7f82ca7 100644 --- a/dotfiles/config/taffybar/stack.yaml +++ b/dotfiles/config/taffybar/stack.yaml @@ -21,14 +21,14 @@ extra-deps: - X11-1.8 - X11-xft-0.3.1 - containers-0.5.11.0 -- dbus-1.0.1 +- dbus-1.2.1 - dbus-hslogger-0.1.0.1 - gi-cairo-connector-0.0.1 - gi-cairo-render-0.0.1 - gi-dbusmenu-0.4.1 - gi-dbusmenugtk3-0.4.1 - gi-gdk-3.0.15 -- gi-gdkpixbuf-2.0.16 +- gi-gdkpixbuf-2.0.18 - gi-gdkx11-3.0.4 - gi-gio-2.0.16 - gi-glib-2.0.17 @@ -44,7 +44,7 @@ extra-deps: - libxml-sax-0.7.5 - rate-limit-1.4.1 - spool-0.1 -- status-notifier-item-0.3.0.0 +- status-notifier-item-0.3.0.1 - stm-2.5.0.0 - time-units-1.0.0 - xml-helpers-1.0.0 diff --git a/dotfiles/config/taffybar/taffybar b/dotfiles/config/taffybar/taffybar index cc815a70..03833af2 160000 --- a/dotfiles/config/taffybar/taffybar +++ b/dotfiles/config/taffybar/taffybar @@ -1 +1 @@ -Subproject commit cc815a70cacd22203e0cc1e1f0484be388ae6ccb +Subproject commit 03833af2040a83b0d57eceb4cced0f61e92461a0 diff --git a/dotfiles/config/taffybar/taffybar.hs b/dotfiles/config/taffybar/taffybar.hs index 6ecdc799..337b5b86 100644 --- a/dotfiles/config/taffybar/taffybar.hs +++ b/dotfiles/config/taffybar/taffybar.hs @@ -11,7 +11,7 @@ import Data.List import Data.List.Split import qualified Data.Map as M import Data.Maybe -import qualified GitHub.Auth as Auth +import Network.HostName import StatusNotifier.Tray import System.Directory import System.Environment @@ -30,6 +30,7 @@ import System.Taffybar.Information.CPU import System.Taffybar.Information.EWMHDesktopInfo import System.Taffybar.Information.Memory import System.Taffybar.Information.X11DesktopInfo +import System.Environment.XDG.BaseDir import System.Taffybar.SimpleConfig import System.Taffybar.Util import System.Taffybar.Widget @@ -99,8 +100,16 @@ logDebug = do workspacesLogger <- getLogger "System.Taffybar.Widget.Workspaces" saveGlobalLogger $ setLevel WARNING workspacesLogger +cssFileByHostname = + [ ("uber-loaner", "uber-loaner.css") + , ("imalison-home", "taffybar.css") + ] + main = do + hostName <- getHostName homeDirectory <- getHomeDirectory + let cssFileName = lookup hostName cssFileByHostname + cssFilePath <- traverse (getUserConfigFile "taffybar") cssFileName -- logDebug -- logM "What" WARNING "Why" -- enableLogger "System.Taffybar.Widget.Util" DEBUG @@ -153,7 +162,8 @@ main = do ] , barPosition = Top , barPadding = 0 - , barHeight = 45 + , barHeight = 30 + , cssPath = cssFilePath } simpleTaffyConfig = baseConfig { centerWidgets = map (>>= buildContentsBox) [] @@ -163,11 +173,6 @@ main = do startTaffybar $ appendHook notifySystemD $ appendHook (void $ getHost False) $ - withBatteryRefresh $ withLogServer $ withToggleServer $ toTaffyConfig simpleTaffyConfig - --- Local Variables: --- flycheck-ghc-args: ("-Wno-missing-signatures") --- End: diff --git a/dotfiles/config/taffybar/uber-loaner.css b/dotfiles/config/taffybar/uber-loaner.css new file mode 100644 index 00000000..cf404705 --- /dev/null +++ b/dotfiles/config/taffybar/uber-loaner.css @@ -0,0 +1,117 @@ +@define-color transparent rgba(0.0, 0.0, 0.0, 0.0); +@define-color white #FFFFFF; +@define-color black #000000; +@define-color taffy-blue #0c7cd5; + +@define-color active-window-color @white; +@define-color urgent-window-color @taffy-blue; +@define-color font-color @black; +@define-color menu-background-color @white; +@define-color menu-font-color @black; + +/* Top level styling */ + +.taffy-window * { + font-family: "Noto Sans", sans-serif; + font-size: 10pt; + color: @font-color; +} + +.taffy-box { + border-color: @white; + border-style: solid; + border-radius: 0px; +} + +.inner-pad { + padding: 1px; +} + +.contents { + padding: 1px; + transition: background-color .5s; + border-radius: 6px; +} + +/* Workspaces styling */ + +.workspace-label { + padding-right: 3px; + padding-left: 2px; + font-size: 10pt; +} + +.active .contents { + background-color: rgba(0.0, 0.0, 0.0, 0.2); +} + +.visible .contents { + background-color: rgba(0.0, 0.0, 0.0, 0.2); +} + +.window-icon-container { + transition: opacity .5s, box-shadow .5s; + opacity: 1; + border-radius: 5px; + transition: background-color 1s; +} + +/* This gives space for the box-shadow (they look like underlines) that follow. + This will actually affect all widgets, (not just the workspace icons), but + that is what we want since we want the icons to look the same. */ +.auto-size-image, .sni-tray { + padding: 1px; +} + +.window-icon-container.active { + background-color: rgba(255.0, 255.0, 255.0, 0.3); +} + +.window-icon-container.urgent { +} + +.window-icon-container.inactive .window-icon { + padding: 0px; +} + +.window-icon-container.minimized .window-icon { + opacity: .3; +} + +.window-icon { + opacity: 1; + transition: opacity .5s; +} + +/* Button styling */ + +button { + all: initial; + background-color: @transparent; + border-width: 0px; + border-radius: 0px; +} + +button:checked, button:hover .Contents:hover { + box-shadow: inset 0 -3px @taffy-blue; +} + +/* Menu styling */ + +/* The ".taffy-window" prefixed selectors are needed because if they aren't present, + the top level .Taffybar selector takes precedence */ +.taffy-window menuitem *, menuitem * { + color: @menu-font-color; +} + +.taffy-window menuitem, menuitem { + background-color: @menu-background-color; +} + +.taffy-window menuitem:hover, menuitem:hover { + background-color: @taffy-blue; +} + +.taffy-window menuitem:hover > label, menuitem:hover > label { + color: @white; +}