Coder Social home page Coder Social logo

taffybar / taffybar Goto Github PK

View Code? Open in Web Editor NEW
685.0 11.0 134.0 2.08 MB

A gtk based status bar for tiling window managers such as XMonad

License: BSD 3-Clause "New" or "Revised" License

Haskell 97.16% CSS 0.76% Nix 2.07%
taffybar xmonad haskell xmobar tiling-window-manager ewmh gtk systray statusnotifieritem gi-gtk

taffybar's Introduction

Taffybar

Build Status Hackage Commits Stackage LTS Stackage Nightly Help Wanted Matrix Chat Gitter Chat License BSD3 https://github.com/taffybar/taffybar/blob/master/doc/screenshot.png

Taffybar is a gtk+3 (through gi-gtk) based desktop information bar, intended primarily for use with XMonad, though it can also function alongside other EWMH compliant window managers. It is similar in spirit to xmobar, but it differs in that it gives up some simplicity for a reasonable helping of eye candy.

Before Installing

Taffybar's installation procedure varies depending on whether or not you intend to setup a new haskell project and use startTaffybar or use the dyreTaffybar with a global haskell installation . It is important for you to read this section so you can understand what all of that means before you decide how you want to install taffybar.

Taffybar is a library

As with window managers like XMonad and dwm, taffybar is most appropriately described as a library that allows you to build an executable that is customized to your tastes. This means that taffybar must be installed alongside a haskell compiler (ghc) that can compile the user's configuration source file.

The taffybar binary and startTaffybar vs dyreTaffybar

Taffybar can be started from your configuration file in two different ways:

dyreTaffybar

The dyreTaffybar entry point to taffybar uses the dyre library to automatically recompile your taffybar configuration whenever it detects that it has changed. The binary that is distributed with taffybar does nothing more than call this entry point. The main downside of this approach is that it does not allow the user to use any sort of project files for their configuration, and they must have any packages that are necessary for compilation of their configuration available in their global ghc environment.

startTaffybar

The startTaffybar entry point to taffybar simply starts taffybar with the provided configuration. The user binary will not be automatically recompiled when source files change. The advantage of using startTaffybar directly is that you can use that in the main function of a cabal project.

Distribution Packaging

Several linux distributions package taffybar (nixos, arch/aur, debian). Of these, only the NixOS distribution is officially supported by the maintainers. Using any of the others should be pretty similar to using a bare cabal installation of taffybar.

NixOS

If you wish to use the NixOS package for taffybar, make sure that you are using the module, and not simply the haskellPackage for taffybar. If you need to add additional haskell packages to the environment that compiles your taffybar.hs you will need to invoke that module and use the packages parameter to allow this.

It is also possible to run/use taffybar on NixOS without using this module by using a standalone haskell project for the taffybar configuration.

Using the overlay.nix when taffybar is broken in nixpkgs

The taffybar haskell package in nixpkgs has been broken in the unstable channel from time to time. This repository provides a nix overlay file which can be used to build taffybar with current versions of nixpkgs. See this comment for details on how to use the overlay.

Installation From Hackage/Source

Prerequisites

If you are not using distribution packaging of taffybar or the nix package manager (it will handle getting all the necessary packages for you), you will need to install all of taffybar's non-haskell dependencies manually.

Start by making sure you have installed everything that is needed for haskell-gi. Taffybar also needs the equivalent of libdbusmenu-gtk3-dev and libgirepository1.0-dev on Debian.

You can also get some idea of what the necessary dependencies are by looking at the nix section of the stack.yaml file in the taffybar repository.

Cabal

Cabal installation is a simple matter of installing taffybar from hackage:

cabal install taffybar

You do not need to do this if you are using the project approach with cabal.

The project approach

The project approach to installing/using taffybar involves maintaining a small haskell project that produces the users taffybar binary. No matter which package manager you choose to use you will need to make a .cabal file for this project. It is recommended that you use this example as a template. In that example, the users configuration resides in the file taffybar.hs in the same directory, but that can be changed as needed. As of right now, dyreTaffybar is incompatible with this approach because dyre simply calls ghc directly.

Cabal

Simply run cabal new-install to install the binary.

Stack

With stack, you will also need to maintain a stack.yaml file. Run stack install to install the binary. See this example

Nix

You will need to add default.nix file to your package. See this example

You may also need to use the overlay provided by this repository. See this comment for details.

Overlay

The taffybar haskell package is currently broken in nixpkgs, because some of its dependencies are not compiling correctly/are not sufficiently new. The environment.nix file in this repository fixes these build issues with an overlay. The overlay.nix file extends the environment overlay so that it overrides the taffybar package's build description to build the nix taffybar package from the repository source directory. An example of how to set up nixpkgs to use the taffybar overlay can be found here.

Configuration

Like xmobar and XMonad, taffybar is configured in haskell. Taffybar depends on dyre to automatically detect changes to its configuration file ($XDG_CONFIG_HOME/taffybar/taffybar.hs) and recompile when appropriate.

For more details about how to configure taffybar, see the full documentation. You can find a list of available widgets here.

FAQ

For the time being, taffybar's frequently asked questions page lives in this github issue.

Contributing

Taffybar desperately needs contributors. If you want to help, but don't know where to get started you can check out our "help wanted" and "easy" labels:

Help Wanted Help Wanted

taffybar's People

Contributors

amurrayc avatar bgamari avatar colonelpanic8 avatar dmanam avatar drdo avatar eddsteel avatar escherdragon avatar eskimor avatar f1u77y avatar ibab avatar illis avatar jagajaga avatar jameslikeslinux avatar kurnevsky avatar leifw avatar myriacore avatar nickhu avatar nomeata avatar pierrer avatar pnotequalnp avatar qrilka avatar quarkquark avatar rhofour avatar rubenastudillo avatar rvl avatar sakshamsharma avatar teleshoes avatar tordek avatar travitch avatar u11gh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

taffybar's Issues

New pager doesn't work with dynamic workspaces

I'm using XMonad's dynamic workspaces module, and this worked fine with the dbus log, but I've switched over to TaffyPager. It seems that workspaces are only read when Taffybar is started, could you possibly provide a callback to re-read the workspaces?

Too many wakeups in clock and cpu widget

powertop lists taffybar as the worst offender. Commenting out the widgets one by one I found that of those that I use, most behave well (e.g. block until something happens). But the cpu and clock widgets cause many updates per seconds (~70/s resp. ~44/s), despite being told to update once per second.

I didn’t debug this yet.

For the clock widget: Wouldn’t it make more sense to sleep until the time changes the next time? A bit annoying to implement that logic, but it would prevent a few unnecessary wakeups.

Calendar doesn't respect color scheme nor gtk-engine

First of all, thanks you for taffybar... it's just what i was looking for and it's great :D

The calendar doesn't seem to respect colors of the gtk theme nor the engine rendering, the calendar just looks like the default engine/colors. I tried to workaround this using the taffybar.rc with no results.

As a request, some option to add margins (right and left) cause i think the first and last characters are too close to the edge of the screen.Maybe adding something like pangoColor for the pp :D.

And for documentation purposes add a xmonad.hs example and add how to change the taffybar font maybe good idea.

Best regards Claudio J. Nervi .P

P.D.: using taffybar 0.1.3 from cabal in slackware64 13.37
P.D.2: sorry my bad English, I'm a Spanish speaker

Add network-uri depends

Taffybar does not currently build:

Preprocessing library taffybar-0.4.1...

src/System/Taffybar/Weather.hs:75:8:
    Could not find module ‘Network.URI’
    It is a member of the hidden package ‘network-uri-2.6.0.1’.
    Perhaps you need to add ‘network-uri’ to the build-depends in your .cabal file.
    Use -v to see a list of the files searched for.

The network package has recently been split into network and network-uri packages so this is really just a matter of adding network-uri as a dependency.

current month calendar days invisible in taffybar > 0.1.0

First thanks for taffybar! It is pretty cool already. :)

I haven't investigated the cause yet but after upgrading to 0.1.1 and 0.1.2
I noticed that the days in the current calendar month are no longer visible.
I suspect they may be being rendering in white on white somehow?
I can see today highlighted and the surrounding days from the previous
and next month but not the rest of the days for the current month.

I guess also ideally the calendar would appear under the time-date widget
but that is probably longer term polishing.

Installation document

I tried to install cabal install:

cabal install taffybar
Resolving dependencies...  
cabal: dependencies conflict: xmonad-contrib-0.10 requires mtl ==1.1.0.2
however
mtl-1.1.0.2 was excluded because taffybar-0.1.3 requires mtl >=2

A document to show how I install it from source would be nice.

`/proc/meminfo` format change in Linux 3.14 breaks `parseMeminfo`

Since Linux 3.14, there is an additional MemAvailable entry in /proc/meminfo that occupies the 3rd line, causing parseMeminfo to fetch the wrong values for buffer and cache. I think we should switch to more robust methods for parsing /proc/meminfo instead of relying on line numbers.

$ uname -a
Linux singularity 3.14.3-1-ck #1 SMP PREEMPT Tue May 6 20:16:53 EDT 2014 x86_64 GNU/Linux
$ head -n5 /proc/meminfo
MemTotal:       12193812 kB
MemFree:         4488400 kB
MemAvailable:    8626360 kB
Buffers:             892 kB
Cached:          4582876 kB

Should work even when started before dbus

Hi,

when starting taffybar from a script sourced by xinit, it may be the case that it is started before dbus is available, and I get

Jul 19 17:14:42 kirk /etc/gdm3/Xsession[19419]: taffybar-linux-x86_64: ClientError {clientErrorMessage = "connectSession: DBUS_SESSION_BUS_ADDRESS is missing or invalid.", clientErrorFatal = True}

in the logs. It should handle this gracefully and just begin to use dbus when it is available.

Battery widget can hang on startup

This is related to #44. Most of the battery widget code runs in its own thread, but some initialization code (that apparently can hang indefinitely) runs in the main thread at taffybar startup time. This code (batteryContextNew) should be moved to a separate thread or have a timeout.

automated vertical orientation

Taffybar should support placing itself vertically - user should specify it only once in the config and all the widgets should "inherit" or autodetect that property and behave accordingly: text should be rendered vertically and not sideways, pager and alike should grow vertically instead of horizontally and so on.

That's especially handy with the proliferation of wide-screen monitors where vertical screen estate is much "cheaper" than horizontal.

System.Taffybar.Weather doesn't allow to redefine weather format

I almost don't know Haskell (so sorry if this ticket is incorrect). I tried to change the Weather widget format, but it seems like corresponding module doesn't export DefaultWeatherFormatter. At least I didn't find the way to redefine the format. Could you provide the example?

Taffybar not installing via cabal

I did not find any mailing list for taffybar, so I'm posting this here.
After recent update to ghc 7.6.1 taffybar stopped building via cabal: looks like it depends on an outdated library. Here's a build log:

$  cabal install taffybar --force-reinstalls
Resolving dependencies...
Warning: The following packages are likely to be broken by the reinstalls:
pango-0.12.3
gtk-0.12.3.1
haskell98-2.0.0.2
ghc-7.6.1
Cabal-1.16.0
bin-package-db-0.0.0.0
Continuing even though the plan contains dangerous reinstalls.
Configuring bytestring-class-0.0.0...
Building bytestring-class-0.0.0...
Preprocessing library bytestring-class-0.0.0...
[1 of 1] Compiling Data.ByteString.Class ( Data/ByteString/Class.hs, dist/build/Data/ByteString/Class.o )

Data/ByteString/Class.hs:39:10:
    Illegal instance declaration for `StrictByteString String'
      (All instance types must be of the form (T a1 ... an)
       where a1 ... an are *distinct type variables*,
       and each type variable appears at most once in the instance head.
       Use -XFlexibleInstances if you want to disable this.)
    In the instance declaration for `StrictByteString String'

Data/ByteString/Class.hs:55:10:
    Illegal instance declaration for `LazyByteString String'
      (All instance types must be of the form (T a1 ... an)
       where a1 ... an are *distinct type variables*,
       and each type variable appears at most once in the instance head.
       Use -XFlexibleInstances if you want to disable this.)
    In the instance declaration for `LazyByteString String'
Failed to install bytestring-class-0.0.0
Downloading glib-0.12.4...
<command line>: cannot satisfy -package Cabal-1.16.0: 
    Cabal-1.16.0-dd0ce1db6fea670a788547ee85411486 is unusable due to missing or recursive dependencies:
      directory-1.2.0.0-8edf300597b0da609c8eccc9aa6d0cc3 process-1.1.0.2-03ae5757aa509ffbe497f42660cba52c unix-2.6.0.0-fd2d40657485db9e1c33f6fe18603ecb
    (use -v for more information)
Failed to install glib-0.12.4
Configuring unix-2.3.2.0...
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for an ANSI C-conforming const... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking dirent.h usability... yes
checking dirent.h presence... yes
checking for dirent.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking grp.h usability... yes
checking grp.h presence... yes
checking for grp.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking pwd.h usability... yes
checking pwd.h presence... yes
checking for pwd.h... yes
checking signal.h usability... yes
checking signal.h presence... yes
checking for signal.h... yes
checking for string.h... (cached) yes
checking sys/resource.h usability... yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
checking for sys/stat.h... (cached) yes
checking sys/times.h usability... yes
checking sys/times.h presence... yes
checking for sys/times.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/utsname.h usability... yes
checking sys/utsname.h presence... yes
checking for sys/utsname.h... yes
checking sys/wait.h usability... yes
checking sys/wait.h presence... yes
checking for sys/wait.h... yes
checking libutil.h usability... no
checking libutil.h presence... no
checking for libutil.h... no
checking pty.h usability... yes
checking pty.h presence... yes
checking for pty.h... yes
checking utmp.h usability... yes
checking utmp.h presence... yes
checking for utmp.h... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking time.h usability... yes
checking time.h presence... yes
checking for time.h... yes
checking for unistd.h... (cached) yes
checking utime.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking for getgrgid_r... yes
checking for getgrnam_r... yes
checking for getpwnam_r... yes
checking for getpwuid_r... yes
checking for getpwnam... yes
checking for getpwuid... yes
checking for getpwent... yes
checking for getgrent... yes
checking for lchown... yes
checking for setenv... yes
checking for sysconf... yes
checking for unsetenv... yes
checking for nanosleep... yes
checking for ptsname... yes
checking for setitimer... yes
checking for shm_open in -lrt... yes
checking for shm_open... yes
checking for shm_unlink... yes
checking value of SIGABRT... 6
checking value of SIGALRM... 14
checking value of SIGBUS... 7
checking value of SIGCHLD... 17
checking value of SIGCONT... 18
checking value of SIGFPE... 8
checking value of SIGHUP... 1
checking value of SIGILL... 4
checking value of SIGINT... 2
checking value of SIGKILL... 9
checking value of SIGPIPE... 13
checking value of SIGQUIT... 3
checking value of SIGSEGV... 11
checking value of SIGSTOP... 19
checking value of SIGTERM... 15
checking value of SIGTSTP... 20
checking value of SIGTTIN... 21
checking value of SIGTTOU... 22
checking value of SIGUSR1... 10
checking value of SIGUSR2... 12
checking value of SIGPOLL... 29
checking value of SIGPROF... 27
checking value of SIGSYS... 31
checking value of SIGTRAP... 5
checking value of SIGURG... 23
checking value of SIGVTALRM... 26
checking value of SIGXCPU... 24
checking value of SIGXFSZ... 25
checking value of SIG_BLOCK... 0
checking value of SIG_SETMASK... 2
checking value of SIG_UNBLOCK... 1
checking for _SC_GETGR_R_SIZE_MAX... yes
checking for _SC_GETPW_R_SIZE_MAX... yes
checking return type of usleep... int
checking return type of unsetenv... int
checking for RTLD_NEXT from dlfcn.h... no
checking for RTLD_DEFAULT from dlfcn.h... no
checking for RTLD_LOCAL from dlfcn.h... yes
checking for RTLD_GLOBAL from dlfcn.h... yes
checking for RTLD_NOW from dlfcn.h... yes
checking for openpty... no
checking for openpty in -lutil... yes
checking for /dev/ptmx... yes
checking for /dev/ptc... no
checking for dlopen in -ldl... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
configure: creating ./config.status
config.status: creating unix.buildinfo
config.status: creating include/HsUnixConfig.h
config.status: include/HsUnixConfig.h is unchanged
Building unix-2.3.2.0...
Preprocessing library unix-2.3.2.0...

dist/build/System/Posix/Signals.hs:127:0:
     fatal error: Signals.h: No such file or directory
compilation terminated.
Failed to install unix-2.3.2.0
cabal: Error: some packages failed to install:
HStringTemplate-0.6.12 depends on unix-2.3.2.0 which failed to install.
HTTP-4000.2.6 depends on unix-2.3.2.0 which failed to install.
bytestring-class-0.0.0 failed during the building phase. The exception was:
ExitFailure 1
dbus-core-0.9.3 depends on unix-2.3.2.0 which failed to install.
directory-1.2.0.1 depends on unix-2.3.2.0 which failed to install.
dyre-0.8.11 depends on unix-2.3.2.0 which failed to install.
executable-path-0.0.3 depends on unix-2.3.2.0 which failed to install.
gio-0.12.4 depends on glib-0.12.4 which failed to install.
glib-0.12.4 failed during the configure step. The exception was:
ExitFailure 1
gtk-0.12.4 depends on unix-2.3.2.0 which failed to install.
gtk-traymanager-0.1.3 depends on unix-2.3.2.0 which failed to install.
network-2.3.2.0 depends on unix-2.3.2.0 which failed to install.
pango-0.12.4 depends on unix-2.3.2.0 which failed to install.
process-1.1.0.2 depends on unix-2.3.2.0 which failed to install.
taffybar-0.2.1 depends on unix-2.3.2.0 which failed to install.
unix-2.3.2.0 failed during the building phase. The exception was:
ExitFailure 1
web-encodings-0.0.1 depends on bytestring-class-0.0.0 which failed to install.
xdg-basedir-0.2.2 depends on unix-2.3.2.0 which failed to install.
xmonad-0.10 depends on unix-2.3.2.0 which failed to install.
xmonad-contrib-0.10 depends on unix-2.3.2.0 which failed to install.

LayoutSwitcher does not work with chinese characters

LayoutSwitcher does not display layout names with chinese characters in them. It seems that this is a problem in pagerHints, as manually viewing the xpropertys for the root window with xprop -root shows

_XMONAD_CURRENT_LAYOUT(UTF8_STRING) = "

It should be noted that my workspace names are in chinese characters, and that they seems to work fine

Trick Hackage into building documentation

This is continued from the comments in Issue 12. For some reason, Hackage refuses to generate the taffybar documentation.
The log reports a build failure due to missing dependencies (related to gtk2hs). These dependencies exist. Some gtk2hs packages on hackage have documentation built, while others do not. I haven't seen any patterns between them.

Lines on graphs

Hi,

I would appreciate the possibility to add line graphs to the graph widget. Especially when displaying multiple values in one graph, this would be handy.

In my case, I’d like to have a filled-below-the-line-graph (as we have it now) for the CPU temperature, and superimposed a line graph showing the fan speed.

Thanks,
Joachim

Make it easy to specify that you would like to monitor all network interfaces

With http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
interfaces can be called enpXsY instead of ethX. This breaks the last bit of "portability" like "luckily all my machines have eth0 and that's all I use so using the exact same taffybar.hs works and is trivial to keep in sync".

I suggest to a convenient to address "all interfaces" (with option to exclude some like "lo" or other edge cases).

Use case: "For each of my interfaces, show me according to this ."

Example configs?

Taffybar is running smooth, low cpu, easy install via cabal. Wondering if you could include some more examples in the sample taffybar.hs file. I'm hitting a wall trying to get the battery indicator running. Alternately, or in addition, a list of other taffybar.hs samples elsewhere on github/etc. would be useful as examples. I didn't find any on a quick search but I'm sure they are out there.

Multimonitor support

I'm the developer/maintainer of X.H.DynamicBars in xmonad-contrib. It'd be nice if taffybar integrated with it. I see a few ways it could be done

  • DBus method call for monitor add/remove events (if keeping a single taffybar instance which draws multiple bars)
  • Take a monitor number on the command line (multiple instances; one per screen)

Maybe there's a better way?

multimonitor support in pager

TaffyPager should correctly detect addition/removal of monitors and visually highlight which workspaces currently visible through monitors and which one is active at the moment.

Escape '&' in XMonadLog

When, e.g. a window title contains an '&', and XMonad is set up to log to taffybar, the title is not updated and the following error is seen on taffybar's output:

Gtk-WARNING **: Failed to set text from markup due to error parsing markup: Error on line 1: Entity did not end with a semicolon; most likely you used an ampersand character without intending to start an entity - escape ampersand as &amp;

Sort workspaces in Workspaces Widget

I would like to sort workspaces by tag but the PagerConfig doesn't have any options to change the order. Is it possible to do it in TaffyBar? I tried to use dynamicLogWithPP myPP in my logHook in xmonad.hs but it doesn't affect TaffyBar and I'm not sure why.

Battery widget can hang on resume from sleep

I've noticed sometimes my battery widget hangs when I resume from sleep keeping the exact same text (I assume) it had prior to going to sleep. Usually I put it to sleep with the cord plugged in and sometimes I start it up without it plugged in, but I'm not sure if it makes a difference. I can't seem to reproduce it reliably though, but it seems to happen more often if it's been asleep for a little while.
I've poked around in the code a bit and been unable to determine what's going wrong, but I'll gladly look some more if anyone has any ideas.

Next release?

Any chance we might see a new release on hackage soon? The ability to build against gtk 0.13 is really nice to have, and releases on hackage play much nicer with the haskell infrastructure in nixos.

Add option to make graph add new values to the right side

Currently I feel that the graphs are moving in the wrong direction :) An option to make them move in the other direction would be very nice.

This is probably very simple to do and I might have a go at it in the near future. However my Haskell skills are almost non-existent so I'll have to some learning first...

Date widget does not pick up on DST changes without restart

This is a really minor and weird bug. It seems that the time in the date widget does not pick up on DST (daylight savings time) changes till restarted. So for example just recently DST was turned off on the 3rd of November, but the time kept on showing as if DST was still active till I restarted it.

Don't just fail/hang when no config file can be found

It's extremely confusing that the if the config file is missing or misspelled. The bar just starts blank. Leaving users clueless if there graphics driver is flawed or if taffybar really should start blank.

Instead it could display something like "Welcome to taffybar, configure at $HOME/.config/taffybar/taffybar.hs"

dbusLog conflicts(?) with ewmh

When I turn on dbusLog hook EWMH hooks (from XMonad.Hooks.EwmhDesktops) stop working (e.g. I don't get correct window with xprop -root _NET_ACTIVE_WINDOW) and othe programs need EWMH.
Looking through the code I don't see why this could happen.
Any hints?

Build breaks with glib-0.13.0.0

Build output below

Building taffybar-0.3.0...
Preprocessing library taffybar-0.3.0...
[ 1 of 36] Compiling System.Information.CPU ( src/System/Information/CPU.hs, dist/build/System/Information/CPU.o )
[ 2 of 36] Compiling System.Information.Memory ( src/System/Information/Memory.hs, dist/build/System/Information/Memory.o )
[ 3 of 36] Compiling System.Taffybar.Widgets.VerticalBar ( src/System/Taffybar/Widgets/VerticalBar.hs, dist/build/System/Taffybar/Widgets/VerticalBar.o )

src/System/Taffybar/Widgets/VerticalBar.hs:62:21: Warning:
    This binding for ‘width’ shadows the existing binding
      imported from ‘Graphics.Rendering.Cairo’ at src/System/Taffybar/Widgets/VerticalBar.hs:15:1-31
      (and originally defined in ‘Graphics.Rendering.Cairo.Types’)

src/System/Taffybar/Widgets/VerticalBar.hs:62:27: Warning:
    This binding for ‘height’ shadows the existing binding
      imported from ‘Graphics.Rendering.Cairo’ at src/System/Taffybar/Widgets/VerticalBar.hs:15:1-31
      (and originally defined in ‘Graphics.Rendering.Cairo.Types’)

src/System/Taffybar/Widgets/VerticalBar.hs:82:19: Warning:
    This binding for ‘width’ shadows the existing binding
      imported from ‘Graphics.Rendering.Cairo’ at src/System/Taffybar/Widgets/VerticalBar.hs:15:1-31
      (and originally defined in ‘Graphics.Rendering.Cairo.Types’)

src/System/Taffybar/Widgets/VerticalBar.hs:82:25: Warning:
    This binding for ‘height’ shadows the existing binding
      imported from ‘Graphics.Rendering.Cairo’ at src/System/Taffybar/Widgets/VerticalBar.hs:15:1-31
      (and originally defined in ‘Graphics.Rendering.Cairo.Types’)
[ 4 of 36] Compiling System.Taffybar.Widgets.Graph ( src/System/Taffybar/Widgets/Graph.hs, dist/build/System/Taffybar/Widgets/Graph.o )

src/System/Taffybar/Widgets/Graph.hs:201:12:
    No instance for (glib-0.13.0.0:System.Glib.UTFString.GlibString
                       string0)
      arising from a use of ‘labelNew’
    The type variable ‘string0’ is ambiguous
    Note: there are several potential instances:
      instance glib-0.13.0.0:System.Glib.UTFString.GlibString
                 Data.Text.Internal.Text
        -- Defined in ‘glib-0.13.0.0:System.Glib.UTFString’
      instance glib-0.13.0.0:System.Glib.UTFString.GlibString [Char]
        -- Defined in ‘glib-0.13.0.0:System.Glib.UTFString’
    In a stmt of a 'do' block: l <- labelNew Nothing
    In the expression:
      do { l <- labelNew Nothing;
           labelSetMarkup l lbl;
           boxPackStart box l PackNatural 0 }
    In a case alternative:
        Just lbl
          -> do { l <- labelNew Nothing;
                  labelSetMarkup l lbl;
                  boxPackStart box l PackNatural 0 }

unable to start taffybar

Hi everyone,
I installed taffybar from haskell-core in archlinux and used the default template for taffybar.hs from the repository (https://github.com/travitch/taffybar/blob/master/src/System/Taffybar.hs)
I keep getting the following error:
Configuration '/home/abhinav/.config/taffybar/taffybar.hs' changed. Recompiling.
Error occurred while loading configuration file.
Error:
/home/abhinav/.config/taffybar/taffybar.hs:140:8:
Could not find module ‘Paths_taffybar’
Use -v to see a list of the files searched for.

/home/abhinav/.config/taffybar/taffybar.hs:141:8:
Could not find module ‘System.Taffybar.StrutProperties’
Use -v to see a list of the files searched for.
output of ghc-pkg list : http://pastebin.com/weR7NFg6
and this is output of ghc-pkg check http://pastebin.com/54CQVMdZ

taffybar-0.1.3 doesn't really need gtk >= 0.12.1

Hi, I see you bumped the gtk dependency for ghc-7.2 (and same for gtk-traymanager),
and I am just wondering if this really helps anyone? :)

Yes, I understand that ghc-7.2 needs gtk-0.12.1 but
the latest taffybar code builds fine with gtk-0.12 on ghc-7.0, and
there is not really any advantage for ghc-7.0 users to upgrade
to gtk-0.12.1. So from my point of view (tell me if I am wrong:)
bumping the gtk depends is just making life harder for 7.0 users,
which is still the default for haskell-platform. So my suggestion
is to relax the dependency on gtk to 0.12.* again.

Thanks for taffybar. :)

Reflect Layout Geometry in Workspaces Image Area

Instead of icon in pager I would rather see preview of the layout for each workspace (with icons for windows which are big enough) which is properly filled according to number of windows currently present in particular layout.

For example if I have regular "split non-master region in half" layout it should show 50%/50% split for 2 windows and 50%/25%/25% split for 3 windows and icon should be displayed only on 50% parts if 25% is too small.

All the necessary information is available inside of xmonad but it's impossible to communicate it to regular pager. Utilizing this information would really set taffybar apart from hundreds of other pager available out there.

additional build dependency?

This may be a general cabal failing, or perhaps a missing dependency from a non-taffybar package. gtk2hs-buildtools is a build-dependency (for glib) and is the only package that I have to tell cabal to install manually prior to cabal install taffybar. I'm not sure if it can or should be added to taffybar's build dependency list, but thought I'd mention it.

Merge CPU Info modules

I've been thinking about making a release soon, but I'd like to consolidate the two CPU Info modules before I do so that I don't feel quite so obligated to support two for an indefinite period.

I should have asked when I merged it, but @escherdragon could you fill me in on what is different about the version you introduced in #19?

I want to merge it into the existing one if possible, just including all of the features from both.

Building with gtk 0.13.1

I needed to add the following patch in order to build with the latest gtk:

Index: habs/haskell-taffybar/src/taffybar-0.4.3/src/System/Taffybar/Widgets/Graph.hs
===================================================================
--- habs.orig/haskell-taffybar/src/taffybar-0.4.3/src/System/Taffybar/Widgets/Graph.hs
+++ habs/haskell-taffybar/src/taffybar-0.4.3/src/System/Taffybar/Widgets/Graph.hs
@@ -30,7 +30,7 @@ import Control.Monad ( when )
 import qualified Data.Sequence as S
 import Graphics.Rendering.Cairo
 import Graphics.Rendering.Cairo.Matrix hiding (scale, translate)
-import Graphics.UI.Gtk
+import Graphics.UI.Gtk hiding (rectangle)

 newtype GraphHandle = GH (MVar GraphState)
 data GraphState =

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.