diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/Plugins/HelloWorld.hs | 24 | ||||
| -rw-r--r-- | examples/Plugins/helloworld.config | 12 | ||||
| -rwxr-xr-x | examples/padding-icon.sh | 56 | ||||
| -rwxr-xr-x | examples/status.sh | 54 | ||||
| -rw-r--r-- | examples/xmobar.config | 38 | ||||
| -rw-r--r-- | examples/xmonadpropwrite.hs | 41 | 
6 files changed, 225 insertions, 0 deletions
diff --git a/examples/Plugins/HelloWorld.hs b/examples/Plugins/HelloWorld.hs new file mode 100644 index 0000000..d2267ae --- /dev/null +++ b/examples/Plugins/HelloWorld.hs @@ -0,0 +1,24 @@ +----------------------------------------------------------------------------- +-- | +-- Module      :  Plugins.HelloWorld +-- Copyright   :  (c) Andrea Rossato +-- License     :  BSD-style (see LICENSE) +-- +-- Maintainer  :  Jose A. Ortega Ruiz <jao@gnu.org> +-- Stability   :  unstable +-- Portability :  unportable +-- +-- A plugin example for Xmobar, a text based status bar +-- +----------------------------------------------------------------------------- + +module Xmobar.Plugins.HelloWorld where + +import Xmobar.Plugins + +data HelloWorld = HelloWorld +    deriving (Read, Show) + +instance Exec HelloWorld where +    alias HelloWorld = "helloWorld" +    run   HelloWorld = return "<fc=red>Hello World!!</fc>" diff --git a/examples/Plugins/helloworld.config b/examples/Plugins/helloworld.config new file mode 100644 index 0000000..3818bfa --- /dev/null +++ b/examples/Plugins/helloworld.config @@ -0,0 +1,12 @@ +Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*" +       , bgColor = "#000000" +       , fgColor = "#BFBFBF" +       , position = TopW C 90 +       , commands = [ Run Cpu [] 10 +                    , Run Weather "LIPB" [] 36000 +                    , Run HelloWorld +                    ] +       , sepChar = "%" +       , alignSep = "}{" +       , template = "%cpu% } %helloWorld% { %LIPB% | <fc=yellow>%date%</fc>" +       } diff --git a/examples/padding-icon.sh b/examples/padding-icon.sh new file mode 100755 index 0000000..31f5eeb --- /dev/null +++ b/examples/padding-icon.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +# Detects the width of running window with name given as first +# argument (xprop name '$1') and creates an XPM icon of that width, +# 1px height, and transparent.  Outputs an <icon>-tag for use in +# xmobar to display the generated XPM icon. +# +# Run script from xmobar and trayer: +# `Run Com "/where/ever/padding-icon.sh" ["panel"] "trayerpad" 10` +# and use `%trayerpad%` in your template. +# or, if you're using for instance stalonetray: +# `Run Com "/where/ever/padding-icon.sh" ["stalonetray"] "tray" 10` + +# Very heavily based on Jonas Camillus Jeppensen code +# https://github.com/jaor/xmobar/issues/239#issuecomment-233206552 + +# Function to create a transparent Wx1 px XPM icon +create_xpm_icon () { +timestamp=$(date) +pixels=$(for i in `seq $1`; do echo -n "."; done) + +cat << EOF > "$2" +/* XPM * +static char * trayer_pad_xpm[] = { +/* This XPM icon is used for padding in xmobar to */ +/* leave room for trayer-srg. It is dynamically   */ +/* updated by by trayer-pad-icon.sh which is run  */ +/* by xmobar.                                     */ +/* Created: ${timestamp} */ +/* <w/cols>  <h/rows>  <colors>  <chars per pixel> */ +"$1 1 1 1", +/* Colors (none: transparent) */ +". c none", +/* Pixels */ +"$pixels" +}; +EOF +} + +# panel window name +pname=${1:-panel} + +# Width of the trayer window +width=$(xprop -name $pname | grep 'program specified minimum size' | cut -d ' ' -f 5) + +# Icon file name +iconfile="/tmp/$pname-padding-${width:-0}px.xpm" + +# If the desired icon does not exist create it +if [ ! -f $iconfile ] +then +    create_xpm_icon $width $iconfile +fi + +# Output the icon tag for xmobar +echo "<icon=${iconfile}/>" diff --git a/examples/status.sh b/examples/status.sh new file mode 100755 index 0000000..94e8fe7 --- /dev/null +++ b/examples/status.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +STATUSPIPE="/tmp/xmobar_status_jrk" + +function isMuted () { +    # retrieve mute status +    # return an arbitrary string for true or nothing at all +    echo +} + +function getPercent () { +    # somehow retrieve the percent value as plain int (e.g. "66") +    echo "66" +} + +function percentBar () { +    local i=1                   res= +          normal=47             high=80 +          fgColor='#657b83'     mutedColor='#cb4b16' +          lowColor='#859900'    midColor='#b58900' +          highColor='#cb4b16' + +          bar="$(echo -ne "\u2588")" +          percent="$( getPercent )" +          muted="$( isMuted )" + +    if [ -n "$muted" ]; then +        res="<fc=$mutedColor>" +    else +        res="<fc=$lowColor>" +    fi + +    while [ $i -lt $percent ]; do +        if   [ $i -eq $normal -a -z "$muted" ]; then +            res+="</fc><fc=$midColor>" +        elif [ $i -eq $high   -a -z "$muted" ]; then +            res+="</fc><fc=$highColor>" +        fi + +        res+=$bar +        i=$((i+1)) +    done + +    res+="</fc><fc=$fgColor>" + +    while [ $i -lt 100 ]; do +        res+='-' +        i=$((i+1)) +    done + +    echo "$res</fc>" +} + +echo "$( percentBar )" > "$STATUSPIPE" diff --git a/examples/xmobar.config b/examples/xmobar.config new file mode 100644 index 0000000..c0d4cdc --- /dev/null +++ b/examples/xmobar.config @@ -0,0 +1,38 @@ +Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*" +       , additionalFonts = [] +       , borderColor = "black" +       , border = TopB +       , bgColor = "black" +       , fgColor = "grey" +       , alpha = 255 +       , position = Top +       , textOffset = -1 +       , iconOffset = -1 +       , lowerOnStart = True +       , pickBroadest = False +       , persistent = False +       , hideOnStart = False +       , iconRoot = "." +       , allDesktops = True +       , overrideRedirect = True +       , commands = [ Run Weather "EGPF" ["-t","<station>: <tempC>C", +                                          "-L","18","-H","25", +                                          "--normal","green", +                                          "--high","red", +                                          "--low","lightblue"] 36000 +                    , Run Network "eth0" ["-L","0","-H","32", +                                          "--normal","green","--high","red"] 10 +                    , Run Network "eth1" ["-L","0","-H","32", +                                          "--normal","green","--high","red"] 10 +                    , Run Cpu ["-L","3","-H","50", +                               "--normal","green","--high","red"] 10 +                    , Run Memory ["-t","Mem: <usedratio>%"] 10 +                    , Run Swap [] 10 +                    , Run Com "uname" ["-s","-r"] "" 36000 +                    , Run Date "%a %b %_d %Y %H:%M:%S" "date" 10 +                    ] +       , sepChar = "%" +       , alignSep = "}{" +       , template = "%cpu% | %memory% * %swap% | %eth0% - %eth1% }\ +                    \{ <fc=#ee9a00>%date%</fc>| %EGPF% | %uname%" +       } diff --git a/examples/xmonadpropwrite.hs b/examples/xmonadpropwrite.hs new file mode 100644 index 0000000..f3f4a5d --- /dev/null +++ b/examples/xmonadpropwrite.hs @@ -0,0 +1,41 @@ +-- Copyright Spencer Janssen <spencerjanssen@gmail.com> +--           Tomas Janousek <tomi@nomi.cz> +-- BSD3 (see LICENSE) +-- +-- Reads from standard input and writes to an X propery on root window. +-- To be used with XPropertyLog: +--  Add it to commands: +--      Run XPropertyLog "_XMONAD_LOG_CUSTOM" +--  Add it to the template: +--      template = "... %_XMONAD_LOG_CUSTOM% ..." +--  Run: +--      $ blah blah | xmonadpropwrite _XMONAD_LOG_CUSTOM + +import Control.Monad +import Graphics.X11 +import Graphics.X11.Xlib.Extras +import qualified Data.ByteString as B +import Foreign.C (CChar) +import System.IO +import System.Environment + +main = do +    atom <- flip fmap getArgs $ \args -> case args of +        [a] -> a +        _   -> "_XMONAD_LOG" + +    d <- openDisplay "" +    xlog <- internAtom d atom False +    ustring <- internAtom d "UTF8_STRING" False + +    root  <- rootWindow d (defaultScreen d) + +    forever $ do +        msg <- B.getLine +        changeProperty8 d root xlog ustring propModeReplace (encodeCChar msg) +        sync d True + +    return () + +encodeCChar :: B.ByteString -> [CChar] +encodeCChar = map fromIntegral . B.unpack  | 
