From 0d648056df40a21eb419a98277978c82477f45d3 Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Mon, 21 May 2018 12:44:12 -0700 Subject: [PATCH] [taffybar] Simplify taffybar.hs --- dotfiles/config/taffybar/stack.yaml | 5 +- dotfiles/config/taffybar/taffybar | 2 +- dotfiles/config/taffybar/taffybar.css | 174 ++++++++++++++------------ dotfiles/config/taffybar/taffybar.hs | 56 +++------ 4 files changed, 113 insertions(+), 124 deletions(-) diff --git a/dotfiles/config/taffybar/stack.yaml b/dotfiles/config/taffybar/stack.yaml index b183e6f1..e8461d13 100644 --- a/dotfiles/config/taffybar/stack.yaml +++ b/dotfiles/config/taffybar/stack.yaml @@ -27,11 +27,12 @@ extra-deps: - gi-gdkx11-3.0.2 - gi-gio-2.0.16 - gi-gtk-3.0.21 +- gi-gtk-hs-0.3.6.1 - gi-pango-1.0.16 - gi-xlib-2.0.2 - gio-0.13.4.1 -- gtk-sni-tray-0.1.3.0 -- gtk-strut-0.1.2.0 +- gtk-sni-tray-0.1.3.1 +- gtk-strut-0.1.2.1 - gtk-traymanager-1.0.1 - gtk3-0.14.9 - haskell-gi-0.21.2 diff --git a/dotfiles/config/taffybar/taffybar b/dotfiles/config/taffybar/taffybar index 441f16f3..e6f0bf2e 160000 --- a/dotfiles/config/taffybar/taffybar +++ b/dotfiles/config/taffybar/taffybar @@ -1 +1 @@ -Subproject commit 441f16f381c66e22d95054a605ebc348012b93ad +Subproject commit e6f0bf2e08300e6dc5405131549fc21a6e9af7f0 diff --git a/dotfiles/config/taffybar/taffybar.css b/dotfiles/config/taffybar/taffybar.css index 7a498a2a..180dcbdc 100644 --- a/dotfiles/config/taffybar/taffybar.css +++ b/dotfiles/config/taffybar/taffybar.css @@ -1,17 +1,35 @@ -@define-color bg-color #000000; -@define-color bg-tone #1E1E20; -@define-color active-window-color #374140; -@define-color urgent-window-color #D9CB9E; -@define-color font-color #FFFFFF; +@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; -.InnerPad { +@define-color active-window-color @white; +@define-color urgent-window-color @taffy-blue; +@define-color font-color @white; +@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-radius: 10px; + background-color: rgba(0.0, 0.0, 0.0, 0.3); +} + +.inner-pad { padding-bottom: 5px; padding-top: 5px; padding-left: 2px; padding-right: 2px; } -.Contents { +.contents { padding-bottom: 4px; padding-top: 4px; padding-right: 2px; @@ -20,94 +38,84 @@ border-radius: 5px; } -.Active .Contents, .Visible .Contents { +/* Workspaces styling */ + +.workspace-label { + padding-right: 3px; + padding-left: 2px; + font-size: 12pt; +} + +.active .contents { background-color: rgba(0.0, 0.0, 0.0, 0.5); } -.WorkspaceLabel { - padding-right: 3px; - padding-left: 2px; - font-size: 10pt; +.visible .contents { + background-color: rgba(0.0, 0.0, 0.0, 0.2); } -.Windows * { - color: @bg-color; - border-color: @bg-color; -} - -.TrayContainer { - background-color: @urgent-window-color; - padding: 20px; -} - -.TrayWidget { - background-color: @urgent-window-color; - padding: 20px; -} - -.TrayWidgetContainer { - background-color: @urgent-window-color; - padding: 20px; -} - -.TaffyBox { - border-bottom: solid; - border-width: 1px; - border-color: #FFFFFF; - background-color: rgba(0.0, 0.0, 0.0, 0.3); -} - -.Taffybar * { - font-family: "Noto Sans", sans-serif; - font-size: 10pt; - color: @font-color; -} - -.Menu * { - color: #FFFFFF; - background-color: rgba(1.0, 1.0, 1.0, 1.0); -} - -.OuterPad * { - background-color: rgba(1.0, 0.0, 0.0, 0.0); -} - -.OuterPad:focus { - background-color: rgba(0.0, 0.0, 0.0, 0.3); - box-shadow: inset 0 -3px #0c7cd5; -} - -.OuterPad *:hover { - box-shadow: inset 0 -3px #0c7cd5; -} - -.IconImage { - transition: opacity .5s, background-color .5s; - opacity: 1; - padding-bottom: 1px; - padding-top: 1px; -} - -.IconContainer { - border-bottom: 0px; - transition: opacity .5s, box-shadow 1s; - padding-bottom: 4px; +.window-icon-container { + transition: opacity .5s, box-shadow .5s; opacity: 1; } -.IconContainer.Active { - border-color: rgba(255, 255, 255, 1.0); - /* background-color: rgba(255, 255, 255, 0.3); */ - border-radius: 0px; - opacity: 1; - box-shadow: inset 0 -1px #FFFFFF; +/* 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-top: 3px; + padding-bottom: 3px; } -.IconContainer.Urgent { +.window-icon-container.active { + box-shadow: inset 0 -3px @white; +} + +.window-icon-container.urgent { box-shadow: inset 0 -3px @urgent-window-color; } -.IconContainer.Minimized .IconImage { - transition: opacity .5s; +.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 { + 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; +} diff --git a/dotfiles/config/taffybar/taffybar.hs b/dotfiles/config/taffybar/taffybar.hs index 12e66a7a..5b0c0c3e 100644 --- a/dotfiles/config/taffybar/taffybar.hs +++ b/dotfiles/config/taffybar/taffybar.hs @@ -1,28 +1,17 @@ {-# LANGUAGE PackageImports #-} module Main where -import qualified Control.Concurrent.MVar as MV import Control.Exception.Base import Control.Monad import Control.Monad.IO.Class import Control.Monad.Trans.Class import Control.Monad.Trans.Reader import qualified Data.ByteString.Char8 as BS -import Data.GI.Base -import Data.GI.Base.ManagedPtr import Data.List import Data.List.Split import qualified Data.Map as M import Data.Maybe -import Debug.Trace -import Foreign.ForeignPtr -import Foreign.Ptr -import qualified GI.Gtk as GI import qualified GitHub.Auth as Auth -import qualified "gtk3" Graphics.UI.Gtk as Gtk -import qualified "gtk3" Graphics.UI.Gtk.Abstract.Widget as W -import qualified "gtk3" Graphics.UI.Gtk.Layout.Table as T -import Graphics.UI.Gtk.Types import StatusNotifier.Tray import System.Directory import System.Environment @@ -38,7 +27,6 @@ import System.Taffybar.Compat.GtkLibs import System.Taffybar.DBus import System.Taffybar.DBus.Toggle import System.Taffybar.Hooks -import System.Taffybar.IconImages import System.Taffybar.Information.CPU import System.Taffybar.Information.EWMHDesktopInfo import System.Taffybar.Information.Memory @@ -51,18 +39,6 @@ import System.Taffybar.Widget.Util import System.Taffybar.Widget.Workspaces import Text.Printf import Text.Read hiding (lift) -import Unsafe.Coerce - -buildContentsBox widget = liftIO $ do - contents <- Gtk.hBoxNew False 0 - Gtk.containerAdd contents widget - _ <- widgetSetClass contents "Contents" - Gtk.widgetShowAll contents - buildPadBox contents - -setMinWidth width widget = liftIO $ do - Gtk.widgetSetSizeRequest widget width (-1) - return widget mkRGBA (r, g, b, a) = (r/256, g/256, b/256, a/256) blue = mkRGBA (42, 99, 140, 256) @@ -76,7 +52,7 @@ myGraphConfig = { graphPadding = 0 , graphBorderWidth = 0 , graphWidth = 75 - , graphBackgroundColor = (1.0, 1.0, 1.0, 0.0) + , graphBackgroundColor = (0.0, 0.0, 0.0, 0.0) } netCfg = myGraphConfig @@ -112,19 +88,20 @@ workspaceNamesLabelSetter workspace = liftX11Def [] getFullWorkspaceNames logDebug = do - handler <- streamHandler stdout DEBUG - logger <- getLogger "System.Taffybar" + logger <- getLogger "System.Taffybar.Widget.Generic.AutoSizeImage" saveGlobalLogger $ setLevel DEBUG logger + logger2 <- getLogger "StatusNotifier.Tray" + saveGlobalLogger $ setLevel DEBUG logger2 workspacesLogger <- getLogger "System.Taffybar.Widget.Workspaces" saveGlobalLogger $ setLevel WARNING workspacesLogger -github = do - Right (token, _) <- passGet "github-token" - githubNotificationsNew $ defaultGithubConfig $ Auth.OAuth $ BS.pack token +-- github = do +-- Right (token, _) <- passGet "github-token" +-- githubNotificationsNew $ defaultGithubConfig $ Auth.OAuth $ BS.pack token main = do homeDirectory <- getHomeDirectory - logDebug + -- logDebug let resourcesDirectory = homeDirectory ".lib" "resources" inResourcesDirectory file = resourcesDirectory file highContrastDirectory = @@ -155,7 +132,7 @@ main = do , minWSWidgetSize = Nothing , minIcons = 1 , getIconInfo = myGetIconInfo - , windowIconSize = 31 + -- , windowIconSize = 31 , widgetGap = 0 , showWorkspaceFn = hideEmpty , updateRateLimitMicroseconds = 100000 @@ -170,23 +147,26 @@ main = do , textBatteryNew "$percentage$% ($time$)" , batteryIconNew , sniTrayNew - , github + -- , github , cpu , mem , networkGraphNew netCfg Nothing -- , networkMonitorNew defaultNetFormat Nothing >>= setMinWidth 200 - , fsMonitorNew 60 ["/dev/sdd2"] + -- , fsMonitorNew 60 ["/dev/sdd2"] , mpris2New ] , barPosition = Top - , barPadding = 0 - , barHeight = 55 + , barPadding = 5 + , barHeight = 50 , widgetSpacing = 0 } simpleTaffyConfig = baseConfig - dyreTaffybar $ withBatteryRefresh $ withLogServer $ withToggleServer $ - toTaffyConfig simpleTaffyConfig + -- { endWidgets = [] + -- , startWidgets = [flip widgetSetClass "Workspaces" =<< workspaces] + -- } + startTaffybar $ withBatteryRefresh $ withLogServer $ withToggleServer $ + toTaffyConfig simpleTaffyConfig -- Local Variables: -- flycheck-ghc-args: ("-Wno-missing-signatures")