[taffybar] Use sni tray

This commit is contained in:
Ivan Malison 2018-03-23 21:24:38 -07:00
parent a55c88fc9a
commit db2ad6f48d
No known key found for this signature in database
GPG Key ID: 62530EFBE99DC2F8
4 changed files with 63 additions and 15 deletions

View File

@ -18,9 +18,12 @@ executable imalison-taffybar
, containers , containers
, directory , directory
, filepath , filepath
, gtk3 , gi-gtk
, gtk-traymanager>=1.0.0 , glib
, gtk3>=0.14.8
, gtk-sni-tray
, mtl , mtl
, haskell-gi-base
, process , process
, split , split
, taffybar , taffybar

View File

@ -18,13 +18,24 @@ packages:
extra-dep: true extra-dep: true
- location: ../../../../Projects/haskell-dbus - location: ../../../../Projects/haskell-dbus
extra-dep: true extra-dep: true
- location: ../../../../Projects/gtk-sni-tray
extra-dep: true
- location: ./gtk2hs/gtk
extra-dep: true
extra-deps: extra-deps:
- spool-0.1 - spool-0.1
- X11-xft-0.3.1 - X11-xft-0.3.1
- gio-0.13.4.1 - gio-0.13.4.1
- gtk3-0.14.8
- libxml-sax-0.7.5 - libxml-sax-0.7.5
- rate-limit-1.1.1 - rate-limit-1.1.1
- time-units-1.0.0 - time-units-1.0.0
- xml-helpers-1.0.0 - xml-helpers-1.0.0
- gi-dbusmenugtk3-0.4.1
- gi-dbusmenu-0.4.1
- gi-gdk-3.0.15
- gi-gdkpixbuf-2.0.15
- gi-gtk-3.0.21
- gi-gio-2.0.16
- gi-pango-1.0.16
resolver: lts-10.5 resolver: lts-10.5
allow-newer: true

View File

@ -45,14 +45,29 @@
.IconImage { .IconImage {
transition: opacity .5s; transition: opacity .5s;
padding: 2px; padding: 0px;
opacity: 1; opacity: 1;
} }
#WindowSwitcher, #Taffybar_WindowSwitcher { .WindowSwitcher * {
background-color: @bg-color; background-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;
}
.Taffybar { .Taffybar {
background-color: @bg-color; background-color: @bg-color;
border-radius: 5px; border-radius: 5px;

View File

@ -5,16 +5,24 @@ import qualified Control.Concurrent.MVar as MV
import Control.Exception.Base import Control.Exception.Base
import Control.Monad import Control.Monad
import Control.Monad.Reader import Control.Monad.Reader
import Data.GI.Base
import Data.GI.Base.ManagedPtr
import Data.List import Data.List
import Data.List.Split import Data.List.Split
import qualified Data.Map as M import qualified Data.Map as M
import Data.Maybe import Data.Maybe
import Foreign.ForeignPtr
import Foreign.Ptr
import qualified GI.Gtk.Objects.Widget as GI
import qualified "gtk3" Graphics.UI.Gtk as Gtk import qualified "gtk3" Graphics.UI.Gtk as Gtk
import qualified "gtk3" Graphics.UI.Gtk.Abstract.Widget as W import qualified "gtk3" Graphics.UI.Gtk.Abstract.Widget as W
import qualified "gtk3" Graphics.UI.Gtk.Layout.Table as T import qualified "gtk3" Graphics.UI.Gtk.Layout.Table as T
import Graphics.UI.Gtk.Types
import StatusNotifier.Tray
import System.Directory import System.Directory
import System.Environment import System.Environment
import System.FilePath.Posix import System.FilePath.Posix
import System.Glib.GObject
import System.Information.CPU import System.Information.CPU
import System.Information.EWMHDesktopInfo import System.Information.EWMHDesktopInfo
import System.Information.Memory import System.Information.Memory
@ -31,12 +39,12 @@ import System.Taffybar.SimpleClock
import System.Taffybar.Systray import System.Taffybar.Systray
import System.Taffybar.ToggleMonitor import System.Taffybar.ToggleMonitor
import System.Taffybar.Widgets.PollingGraph import System.Taffybar.Widgets.PollingGraph
import System.Taffybar.Widgets.StatusNotifierTray
import System.Taffybar.WindowSwitcher import System.Taffybar.WindowSwitcher
import System.Taffybar.WorkspaceHUD import System.Taffybar.WorkspaceHUD
import System.Taffybar.WorkspaceSwitcher import System.Taffybar.WorkspaceSwitcher
import Text.Printf import Text.Printf
import Text.Read hiding (get, lift) import Text.Read hiding (lift)
import Unsafe.Coerce
data ConstantIconController = ConstantIconController { cicImage :: Gtk.Image } data ConstantIconController = ConstantIconController { cicImage :: Gtk.Image }
@ -76,9 +84,9 @@ getFullWorkspaceNames :: X11Property [(WorkspaceIdx, String)]
getFullWorkspaceNames = go <$> readAsListOfString Nothing "_NET_DESKTOP_FULL_NAMES" getFullWorkspaceNames = go <$> readAsListOfString Nothing "_NET_DESKTOP_FULL_NAMES"
where go = zip [WSIdx i | i <- [0..]] where go = zip [WSIdx i | i <- [0..]]
workspaceNamesLabelSetter workspace = do workspaceNamesLabelSetter workspace =
fullNames <- liftX11Def [] getFullWorkspaceNames fromMaybe "" . lookup (workspaceIdx workspace) <$>
return $ fromMaybe "" $ lookup (workspaceIdx workspace) fullNames liftX11Def [] getFullWorkspaceNames
-- mem :: IO Gtk.Widget -- mem :: IO Gtk.Widget
-- mem = do -- mem = do
@ -147,6 +155,17 @@ getInterfaces = do
(_, output, _) <- readCreateProcessWithExitCode (shell "list_interfaces.sh") "" (_, output, _) <- readCreateProcessWithExitCode (shell "list_interfaces.sh") ""
return $ splitOn "\n" output return $ splitOn "\n" output
addClass klass action = do
widget <- action
widgetSetClass widget klass
return widget
(buildWidgetCons, _) = mkWidget
buildSNITray = do
GI.Widget trayGIWidgetMP <- buildTrayWithHost
wrapNewGObject mkWidget (castPtr <$> disownManagedPtr trayGIWidgetMP)
main = do main = do
interfaceNames <- getInterfaces interfaceNames <- getInterfaces
homeDirectory <- getHomeDirectory homeDirectory <- getHomeDirectory
@ -229,20 +248,20 @@ main = do
wnd = windowSwitcherNew pgr wnd = windowSwitcherNew pgr
taffyConfig = taffyConfig =
defaultTaffybarConfig defaultTaffybarConfig
{ startWidgets = [hud, los, wnd] { startWidgets = [hud, los, addClass "WindowSwitcher" wnd]
, endWidgets = , endWidgets =
[ batteryBarNew defaultBatteryConfig 1.0 [ batteryBarNew defaultBatteryConfig 1.0
, makeContents clock "Cpu" , makeContents clock "Cpu"
, makeContents systrayNew "Cpu" -- , makeContents systrayNew "Cpu"
, makeContents buildTray "Cpu" , makeContents buildSNITray "Cpu"
, makeContents cpu "Cpu" , makeContents cpu "Cpu"
, makeContents mem "Cpu" , makeContents mem "Cpu"
, makeContents netMonitor "Cpu" , makeContents netMonitor "Cpu"
, makeContents (join $ containerAddReturn <$> Gtk.eventBoxNew <*> mpris) "Cpu" , makeContents (join $ containerAddReturn <$> Gtk.eventBoxNew <*> mpris) "Cpu"
] ]
, barPosition = Top , barPosition = Top
, barPadding = 10 , barPadding = 5
, barHeight = (underlineHeight myHUDConfig + windowIconSize myHUDConfig) + 15 , barHeight = (underlineHeight myHUDConfig + windowIconSize myHUDConfig + 10)
, widgetSpacing = 0 , widgetSpacing = 0
} }
withToggleSupport taffyConfig withToggleSupport taffyConfig