You are not logged in.

#26 2012-09-19 10:21:24

Prezioso
Member
Registered: 2011-01-17
Posts: 77

Re: herbstluftwm screenshots and config

simon.swe wrote:

That "social" thing in your bar, with foreveR: hehe man bruker... is that from irc or? and how? smile

Offline

#27 2012-09-28 15:03:00

simon.swe
Member
From: sverige
Registered: 2012-02-26
Posts: 148
Website

Re: herbstluftwm screenshots and config

yes smile

Offline

#28 2013-03-18 23:39:24

10PinkPanther
Member
From: Croatia
Registered: 2012-11-10
Posts: 333

Re: herbstluftwm screenshots and config

Offline

#29 2013-10-15 09:36:32

oloꟼ
Member
From: France
Registered: 2012-01-05
Posts: 15

Re: herbstluftwm screenshots and config

cross post from here

1381829406.png          1381829530.png

Offline

#30 2013-11-30 23:41:39

suija
Member
Registered: 2013-06-23
Posts: 26

Re: herbstluftwm screenshots and config

Finally, after trying every tiling wm out there I have found my favourite. Using it for half a day and chances are the wm hopping is over.

119sb3o.png

Tho there are a couple of issues, mainly with what should be floating windows, mplayer and dialog popups...


.- .-. -.-. ....   .. ...   - .... .   -... . ... -

Offline

#31 2014-02-11 04:37:32

cowsquad
Member
From: portland oregon
Registered: 2012-12-15
Posts: 16

Re: herbstluftwm screenshots and config

do you mind sharing your configs?

nice screenshot you have there

Offline

#32 2014-02-11 10:32:24

oloꟼ
Member
From: France
Registered: 2012-01-05
Posts: 15

Re: herbstluftwm screenshots and config

Thank you. I'm afraid panel.sh is ugly and needs to be rewritten. It works though.

autostart and panel.sh: https://gist.github.com/PodColl/8932496

Offline

#33 2014-02-11 16:28:47

cowsquad
Member
From: portland oregon
Registered: 2012-12-15
Posts: 16

Re: herbstluftwm screenshots and config

oloꟼ wrote:

Thank you. I'm afraid panel.sh is ugly and needs to be rewritten. It works though.

autostart and panel.sh: https://gist.github.com/PodColl/8932496

Thanks man. Do you still use herbstluftwm or another one

Offline

#34 2014-02-21 22:45:16

bendersteed
Member
From: Greece
Registered: 2010-10-18
Posts: 85

Re: herbstluftwm screenshots and config

Here is mine as well, recently converted to hlwm, feels good.
6FYx3hB.png


Petite veille d'ivresse, sainte ! quand ce ne serait que pour le masque dont tu as gratifié. Nous t'affirmons, méthode ! Nous n'oublions pas que tu as glorifié hier chacun de nos âges. Nous avons foi au poison. Nous savons donner notre vie tout entière tous les jours.

Voici le temps des Assassins.

Offline

#35 2014-03-07 20:15:43

DisposableHero
Member
Registered: 2013-11-21
Posts: 19

Re: herbstluftwm screenshots and config

Trying out herbstluftwm, liking it so far!

http://imgur.com/8TYGgm5

Offline

#36 2014-03-27 14:30:10

frank.rehfeld
Member
From: Zossen
Registered: 2012-03-09
Posts: 7
Website

Re: herbstluftwm screenshots and config

DisposableHero wrote:

Trying out herbstluftwm, liking it so far!

http://imgur.com/8TYGgm5

What font are you using?

Offline

#37 2014-06-15 19:07:55

F34R
Member
From: /dev/loliland
Registered: 2012-02-05
Posts: 238

Re: herbstluftwm screenshots and config

Hi guys , anyone could how set font icon to tag name ?

Offline

#38 2014-07-02 15:14:19

xero
Member
From: 0x000000
Registered: 2014-04-02
Posts: 85
Website

Re: herbstluftwm screenshots and config

x-post
7l9ekhJs.png
herbstluftwm greybeard theme (wip) : https://github.com/xero/dotfiles/tree/m … rbstluftwm

Last edited by xero (2014-07-17 20:23:29)


▬▬ι═══════ﺤ
http://git.io/.files

Offline

#39 2014-08-10 09:59:54

tigrezno
Member
Registered: 2004-05-10
Posts: 64

Re: herbstluftwm screenshots and config

Not a screenshot but a simple and fast "scratchpad" script:

#!/bin/bash

name="htop"
cmd="xterm -name $name -e htop"
id=$(xdotool search --name $name)
pid=$(xdotool getwindowpid $id)

if [[ -n $id ]]
then
    if herbstclient dump | grep $(printf "%x" $id)
    then
        kill $pid
    else
        herbstclient bring $id
    fi
else
    $cmd
fi

It runs htop in a terminal if it's not already running or brings it to your current frame if it's already running. Using it again when htop is already in your current view, will kill it.

Last edited by tigrezno (2014-08-10 11:20:59)

Offline

#40 2015-07-20 15:54:23

caravanlizzy
Member
Registered: 2013-10-07
Posts: 91

Re: herbstluftwm screenshots and config

thats my herbstluftwm, still in process but i like it so far! pic and  config:


jKQcYbM.png



#!/bin/bash

sh ~/.config/herbstluftwm/killer &
# this is a simple config for herbstluftwm
hc() {
herbstclient "$@"

}

hc emit_hook reload

xsetroot -solid '#f3efeb'

# remove all existing keybindings
hc keyunbind --all

# keybindings
# if you have a super key you will be much happier with Mod set to Mod4
#Mod=Mod1    # Use alt as the main modifier
Mod=Mod4   # Use the super key as the main modifier

hc keybind $Mod-Shift-q quit
hc keybind $Mod-Shift-r reload
hc keybind $Mod-Shift-c close
hc keybind $Mod-Return spawn xterm
hc keybind $Mod-q spawn qutebrowser
hc keybind $Mod-m spawn thunderbird
hc keybind $Mod-t spawn xfce4-terminal
hc keybind $Mod-Shift-o chain , split right 0.5 , focus -e right , spawn xfce4-terminal
hc keybind $Mod-f spawn pcmanfm
hc keybind $Mod-Shift-u chain , split bottom 0.5 , focus -e down , spawn xfce4-terminal
hc keybind $Mod-s spawn skype
hc keybind $Mod-a spawn firefox
hc keybind $Mod-F1 spawn dmenu_run
hc keybind $Mod-y spawn surf http://curvefever.com/play2.php
hc keybind $Mod-Shift-t spawn xfce4-terminal --command ~/.config/herbstluftwm/./autoy

#media-keys
hc keybind XF86AudioLowerVolume spawn amixer -q set Master 2%- 
hc keybind XF86AudioRaiseVolume spawn amixer -q set Master 2%+
hc keybind XF86AudioMute spawn amixer -D pulse set Master toggle
herbstclient rule class=trayer manage=0ff

# basic movement
# focusing clients
hc keybind $Mod-Left  focus left
hc keybind $Mod-Down  focus down
hc keybind $Mod-Up    focus up
hc keybind $Mod-Right focus right
hc keybind $Mod-h     focus left
hc keybind $Mod-j     focus down
hc keybind $Mod-k     focus up
hc keybind $Mod-l     focus right

# moving clients
hc keybind $Mod-Shift-Left  shift left
hc keybind $Mod-Shift-Down  shift down
hc keybind $Mod-Shift-Up    shift up
hc keybind $Mod-Shift-Right shift right
hc keybind $Mod-Shift-h     shift left
hc keybind $Mod-Shift-j     shift down
hc keybind $Mod-Shift-k     shift up
hc keybind $Mod-Shift-l     shift right

# splitting frames
# create an empty frame at the specified direction
hc keybind $Mod-u       split   bottom  0.5
hc keybind $Mod-o       split   right   0.5
# let the current frame explode into subframes
hc keybind $Mod-Control-space split explode

# resizing frames
resizestep=0.05
hc keybind $Mod-Control-h       resize left +$resizestep
hc keybind $Mod-Control-j       resize down +$resizestep
hc keybind $Mod-Control-k       resize up +$resizestep
hc keybind $Mod-Control-l       resize right +$resizestep
hc keybind $Mod-Control-Left    resize left +$resizestep
hc keybind $Mod-Control-Down    resize down +$resizestep
hc keybind $Mod-Control-Up      resize up +$resizestep
hc keybind $Mod-Control-Right   resize right +$resizestep

# tags
tag_names=( '1' 'browser' 'mail' 'dört' 'cinq' 'sechs' 'skype' 'ocho' 'float'  )
tag_keys=( {1..9} 0  )

hc rename default "${tag_names[0]}" || true
for i in ${!tag_names[@]} ; do
hc add "${tag_names[$i]}"
key="${tag_keys[$i]}"
if ! [ -z "$key"  ] ; then
# hc keybind "$Mod-$key" use_index "$i"
hc keybind "$Mod-$key" use "${tag_names[$i]}"
hc keybind "$Mod-Shift-$key" move_index "$i"
fi
done

# cycle through tags
hc keybind $Mod-period use_index +1 --skip-visible
hc keybind $Mod-comma  use_index -1 --skip-visible
hc keybind $Mod-w use_previous

# layouting
hc keybind $Mod-r remove
hc keybind $Mod-space cycle_layout 1
hc keybind $Mod-F10 floating toggle
hc keybind $Mod-F11 fullscreen toggle
hc keybind $Mod-p pseudotile toggle

# mouse
hc mouseunbind --all
hc mousebind $Mod-Button1 move
hc mousebind $Mod-Button2 zoom
hc mousebind $Mod-Button3 resize

# focus
hc keybind $Mod-BackSpace   cycle_monitor
hc keybind $Mod-Tab         cycle_all +1
hc keybind $Mod-Shift-Tab   cycle_all -1
hc keybind $Mod-c cycle
hc keybind $Mod-i jumpto urgent

# theme
hc attr theme.tiling.reset 1
hc attr theme.floating.reset 1
hc set frame_border_active_color '#ffffff'
hc set frame_border_normal_color '#370628'
hc set frame_bg_normal_color '#370628'
hc set frame_bg_active_color '#ffffff'
hc set frame_border_width 1
hc set always_show_frame 1
hc set frame_bg_transparent 1
hc set frame_transparent_width 5
hc set frame_gap 0

hc attr theme.active.color '#ffffff'
hc attr theme.normal.color '#370628'
hc attr theme.urgent.color orange
hc attr theme.inner_width 0
hc attr theme.inner_color black
hc attr theme.border_width 11
hc attr theme.floating.border_width 11
hc attr theme.floating.outer_width 0
hc attr theme.floating.outer_color black
hc attr theme.active.inner_color '#370628'
hc attr theme.active.outer_color '#ffffff'
hc attr theme.background_color '#353838'

hc set window_gap 0
hc set frame_padding 0
hc set smart_window_surroundings 0
hc set smart_frame_surroundings 1
hc set mouse_recenter_gap 0

# rules
hc unrule -F
#hc rule class=XTerm tag=3 # move all xterms to tag 3
hc rule focus=on # normally focus new clients
#hc rule focus=off # normally do not focus new clients
# give focus to most common terminals
#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off
hc load skype "(split horizontal:0.800000:0 (clients horizontal:0) (clients vertical:0 0x1c00102))"
hc rule class~Skype tag=skype focus=off
hc rule class~Skype ! windowrole=ConversationsWindow index=1
hc rule class~Skype windowrole=ConversationsWindow index=0
hc rule class~Thunderbird tag=mail focus=off
hc rule class~Surf tag=ocho focus=off
hc rule class~widelands tag=float focus=off
hc floating float on
hc floating 1 on
hc floating mail on

# unlock, just to be sure
hc unlock

herbstclient set tree_style '╾│ ├└╼─┐'

# do multi monitor setup here, e.g.:
# hc set_monitors 1280x1024+0+0 1280x1024+1280+0
# or simply:
# hc detect_monitors

# find the panel
panel=~/.config/herbstluftwm/panel.sh
[ -x "$panel"  ] || panel=/etc/xdg/herbstluftwm/panel.sh
for monitor in $(herbstclient list_monitors | cut -d: -f1) ; do
# start it on each monitor
"$panel" $monitor &
done

#find the tray
tray=~/.config/herbstluftwm/tray.sh
for monitor in $(herbstclient list_monitors | cut -d: -f1) ; do
# start it on each monitor
"$tray" $monitor &
done
nm-applet &
thunderbird &

thats the panel.sh

#!/bin/bash

hc() { "${herbstclient_command[@]:-herbstclient}" "$@" ;}
monitor=${1:-0}
geometry=( $(herbstclient monitor_rect "$monitor") )
if [ -z "$geometry" ] ;then
    echo "Invalid monitor $monitor"
    exit 1
fi
# geometry has the format W H X Y
x=${geometry[0]}
y=${geometry[1]}
panel_width=959 #${geometry[3]}
panel_height=16
font="-*-fixed-medium-*-*-*-12-*-*-*-*-*-*-*"
bgcolor=$(hc get frame_border_normal_color)
selbg=$(hc get window_border_active_color)
selfg=$(hc get frame_border_normal_color)

####
# Try to find textwidth binary.
# In e.g. Ubuntu, this is named dzen2-textwidth.
if which textwidth &> /dev/null ; then
    textwidth="textwidth";
elif which dzen2-textwidth &> /dev/null ; then
    textwidth="dzen2-textwidth";
else
    echo "This script requires the textwidth tool of the dzen2 project."
    exit 1
fi
####
# true if we are using the svn version of dzen2
# depending on version/distribution, this seems to have version strings like
# "dzen-" or "dzen-x.x.x-svn"
if dzen2 -v 2>&1 | head -n 1 | grep -q '^dzen-\([^,]*-svn\|\),'; then
    dzen2_svn="true"
else
    dzen2_svn=""
fi

if awk -Wv 2>/dev/null | head -1 | grep -q '^mawk'; then
    # mawk needs "-W interactive" to line-buffer stdout correctly
    # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=593504
    uniq_linebuffered() {
      awk -W interactive '$0 != l { print ; l=$0 ; fflush(); }' "$@"
    }
else
    # other awk versions (e.g. gawk) issue a warning with "-W interactive", so
    # we don't want to use it there.
    uniq_linebuffered() {
      awk '$0 != l { print ; l=$0 ; fflush(); }' "$@"
    }
fi

hc pad $monitor $panel_height

{
    ### Event generator ###
    # based on different input data (mpc, date, hlwm hooks, ...) this generates events, formed like this:
    #   <eventname>\t<data> [...]
    # e.g.
    #   date    ^fg(#efefef)18:33^fg(#909090), 2013-10-^fg(#efefef)29

    #mpc idleloop player &
    while true ; do
        # "date" output is checked once a second, but an event is only
        # generated if the output changed compared to the previous run.
        date +$'date\t^fg(#efefef)%H:%M^fg(#909090), %Y-%m-^fg(#efefef)%d'
        sleep 1 || break
    done > >(uniq_linebuffered) &
    childpid=$!
    hc --idle
    kill $childpid
} 2> /dev/null | {
    IFS=$'\t' read -ra tags <<< "$(hc tag_status $monitor)"
    visible=true
    date=""
    windowtitle=""
		#my own try of a battery status
		# while true; do

    while true ; do

        ### Output ###
        # This part prints dzen data based on the _previous_ data handling run,
        # and then waits for the next event to happen.

        bordercolor="#26221C"
        separator="^bg()^fg($selbg)|"
        # draw tags
        for i in "${tags[@]}" ; do
            case ${i:0:1} in
                '#')
                    echo -n "^bg($selbg)^fg($selfg)"
                    ;;
                '+')
                    echo -n "^bg(#9CA668)^fg(#141414)"
                    ;;
                ':')
                    echo -n "^bg()^fg(#ffffff)"
                    ;;
                '!')
                    echo -n "^bg(#FF0675)^fg(#141414)"
                    ;;
                *)
                    echo -n "^bg()^fg(#ababab)"
                    ;;
            esac
            if [ ! -z "$dzen2_svn" ] ; then
                # clickable tags if using SVN dzen
                echo -n "^ca(1,\"${herbstclient_command[@]:-herbstclient}\" "
                echo -n "focus_monitor \"$monitor\" && "
                echo -n "\"${herbstclient_command[@]:-herbstclient}\" "
                echo -n "use \"${i:1}\") ${i:1} ^ca()"
            else
                # non-clickable tags if using older dzen
                echo -n " ${i:1} "
            fi
        done
        echo -n "$separator"
        echo -n "^bg()^fg() ${windowtitle//^/^^}"
        # small adjustments
        right="$separator^bg() $date $separator"
        right_text_only=$(echo -n "$right" | sed 's.\^[^(]*([^)]*)..g')
        # get width of right aligned text.. and add some space..
        width=$($textwidth "$font" "$right_text_only    ")
        echo -n "^pa($(($panel_width - $width)))$right"
        echo

        ### Data handling ###
        # This part handles the events generated in the event loop, and sets
        # internal variables based on them. The event and its arguments are
        # read into the array cmd, then action is taken depending on the event
        # name.
        # "Special" events (quit_panel/togglehidepanel/reload) are also handled
        # here.

        # wait for next event
        IFS=$'\t' read -ra cmd || break
        # find out event origin
        case "${cmd[0]}" in
            tag*)
                #echo "resetting tags" >&2
                IFS=$'\t' read -ra tags <<< "$(hc tag_status $monitor)"
                ;;
            date)
                #echo "resetting date" >&2
                date="${cmd[@]:1}"
                ;;
            quit_panel)
                exit
                ;;
            togglehidepanel)
                currentmonidx=$(hc list_monitors | sed -n '/\[FOCUS\]$/s/:.*//p')
                if [ "${cmd[1]}" -ne "$monitor" ] ; then
                    continue
                fi
                if [ "${cmd[1]}" = "current" ] && [ "$currentmonidx" -ne "$monitor" ] ; then
                    continue
                fi
                echo "^togglehide()"
                if $visible ; then
                    visible=false
                    hc pad $monitor 0
                else
                    visible=true
                    hc pad $monitor $panel_height
                fi
                ;;
            reload)
                exit
                ;;
            focus_changed|window_title_changed)
                windowtitle="${cmd[@]:2}"
                ;;
            #player)
            #    ;;
        esac
    done

    ### dzen2 ###
    # After the data is gathered and processed, the output of the previous block
    # gets piped to dzen2.

} 2> /dev/null | dzen2 -w $panel_width -x $x -y $y -fn "$font" -h $panel_height \
    -e 'button3=;button4=exec:herbstclient use_index -1;button5=exec:herbstclient use_index +1' \
    -ta l -bg "$bgcolor" -fg '#9eeeda'

and this is my tray

#!/bin/bash
 
trayer --edge top --align right --widthtype pixel --width 77 --heighttype pixel \
    --height 5 --expand true --tint 0x370628 --transparent true \
				        --alpha 0

Volume is still missin in my panel...

Last edited by caravanlizzy (2015-07-21 08:17:02)

Offline

#41 2015-08-04 18:24:27

karkhaz
Member
Registered: 2014-01-25
Posts: 77

Re: herbstluftwm screenshots and config

I use herbstluftwm on my laptop only:

YyPFXa7t.png
iHgRAJzt.png

The side panel persists even when I switch between workspaces. This is accomplished by dividing up the monitor into two herbstluftwm 'monitors', and the workspace changing commands only work on the left 'monitor'.

Extremely kludgy config, it is a WIP:

#!/bin/bash

# this is a simple config for herbstluftwm

hc() {
    herbstclient "$@"
}

hc emit_hook reload

xsetroot -solid '#002b36'

hc keyunbind --all

Mod=Mod4    # Use alt as the main modifier

hc keybind $Mod-Shift-q quit
hc keybind $Mod-Shift-r reload
hc keybind $Mod-Shift-c close_or_remove
hc keybind $Mod-Return spawn uxterm -j -s -rw
hc keybind $Mod-m spawn dmenu_run

# basic movement
# focusing clients
hc keybind $Mod-j     focus_edge left
hc keybind $Mod-k     focus_edge right
hc keybind $Mod-l     focus      up
hc keybind $Mod-h     focus      down

# moving clients
hc keybind $Mod-Shift-j     shift left
hc keybind $Mod-Shift-k     shift right
hc keybind $Mod-Shift-l     shift up
hc keybind $Mod-Shift-h     shift down

# splitting frames
# create an empty frame at the specified direction
hc keybind $Mod-u       split   bottom  0.5
hc keybind $Mod-o       split   right   0.5
# let the current frame explode into subframes
hc keybind $Mod-Control-space split explode

# resizing frames
resizestep=0.05
hc keybind $Mod-Control-h       resize left +$resizestep
hc keybind $Mod-Control-j       resize down +$resizestep
hc keybind $Mod-Control-k       resize up +$resizestep
hc keybind $Mod-Control-l       resize right +$resizestep
hc keybind $Mod-Control-Left    resize left +$resizestep
hc keybind $Mod-Control-Down    resize down +$resizestep
hc keybind $Mod-Control-Up      resize up +$resizestep
hc keybind $Mod-Control-Right   resize right +$resizestep

# do multi monitor setup here, e.g.:
hc set_monitors  \
  1028x768+0+0   \
  340x768+1028+0


sleep 1

hc focus_monitor 0

hc rename default term1 || true

tag=term1
hc add $tag
hc keybind $Mod-1       chain . focus_monitor 0 . use $tag
hc keybind $Mod-Shift-1 chain . focus_monitor 0 . use $tag
hc use $tag
hc split right 0.4
hc spawn uxterm -j -s -rw -uc
sleep 1
hc focus_edge right
hc spawn uxterm -j -s -rw -uc
sleep 1

tag=term2
hc add $tag
hc keybind $Mod-2       chain . focus_monitor 0 . use  $tag
hc keybind $Mod-Shift-2 chain . focus_monitor 0 . use  $tag
hc use $tag
hc split right 0.4
hc spawn uxterm -j -s -rw -uc
sleep 1
hc focus_edge right
hc spawn uxterm -j -s -rw -uc
sleep 1

tag=term3
hc add $tag
hc keybind $Mod-3       chain . focus_monitor 0 . use $tag
hc keybind $Mod-Shift-3 chain . focus_monitor 0 . use $tag
hc use $tag
hc split right 0.4
hc spawn uxterm -j -s -rw -uc
sleep 1
hc focus_edge right
hc spawn uxterm -j -s -rw -uc
sleep 1

tag=web4
hc add $tag
hc keybind $Mod-4       chain . focus_monitor 0 . use $tag
hc keybind $Mod-Shift-4 chain . focus_monitor 0 . use $tag

tag=web5
hc add $tag
hc keybind $Mod-5       chain . focus_monitor 0 . use $tag
hc keybind $Mod-Shift-5 chain . focus_monitor 0 . use $tag

tag=web6
hc add $tag
hc keybind $Mod-6       chain . focus_monitor 0 . use $tag
hc keybind $Mod-Shift-6 chain . focus_monitor 0 . use $tag

hc focus_monitor 1
hc add "side-panel"
hc use "side-panel"
killall conky
conky_window

sleep 1

hc set_monitors  \
  1028x768+0+0   \
  340x768+1028+0

hc set_monitors  \
  1028x768+0+0   \
  340x768+1028+0

# cycle through tags
hc keybind $Mod-period use_index +1 --skip-visible
hc keybind $Mod-comma  use_index -1 --skip-visible
# layouting
hc keybind $Mod-r remove
hc keybind $Mod-space cycle_layout 1
hc keybind $Mod-s floating toggle
hc keybind $Mod-f fullscreen toggle
hc keybind $Mod-p pseudotile toggle

# mouse
hc mouseunbind --all
hc mousebind $Mod-Button1 move
hc mousebind $Mod-Button2 zoom
hc mousebind $Mod-Button3 resize

# focus
hc keybind $Mod-BackSpace   cycle_monitor
hc keybind $Mod-Tab         cycle_all +1
hc keybind $Mod-Shift-Tab   cycle_all -1
hc keybind $Mod-c cycle
hc keybind $Mod-i jumpto urgent

hc focus_crosses_monitor_boundaries 0

# theme
hc attr theme.tiling.reset 1
hc attr theme.floating.reset 1
hc set frame_border_active_color '#d33682'
hc set frame_border_normal_color '#002b36'
hc set frame_bg_normal_color '#565656'
hc set frame_bg_active_color '#345F0C'
hc set frame_border_width 1
hc set always_show_frame 0
hc set frame_bg_transparent 1
hc set frame_transparent_width 1
hc set frame_gap 0

hc attr theme.active.color '#d33682'
hc attr theme.normal.color '#002b36'
hc attr theme.urgent.color '#cb4b16'
hc attr theme.inner_width 1
hc attr theme.inner_color "#002b36"
hc attr theme.border_width 1
hc attr theme.floating.border_width 1
hc attr theme.floating.outer_width 1
hc attr theme.floating.outer_color "#002b36"
hc attr theme.active.inner_color '#d33682'
hc attr theme.active.outer_color '#002b36'
hc attr theme.background_color '#002b36'

hc set window_gap 0
hc set frame_padding 0
hc set smart_window_surroundings 0
hc set smart_frame_surroundings 1
hc set mouse_recenter_gap 0

# rules
hc unrule -F
#hc rule class=XTerm tag=3 # move all xterms to tag 3
hc rule focus=on # normally focus new clients
#hc rule focus=off # normally do not focus new clients
# give focus to most common terminals
#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off

# unlock, just to be sure
hc unlock

herbstclient set tree_style '╾│ ├└╼─┐'


# find the panel
panel=~/.config/herbstluftwm/panel.sh

#[ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh
#for monitor in $(herbstclient list_monitors | cut -d: -f1) ; do
#    # start it on each monitor
#    "$panel" $monitor &
#done
[ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh
"$panel" 0 &

hc set smart_window_surroundings 1
hc set smart_frame_surroundings 1

hc set_monitors  \
  1028x768+0+0   \
  340x768+1028+0

lock_tag 0

It suffers from a bug where the stuff on the right-hand side monitor will sometimes jump over to the left when I change a workspace. I need to figure out what is wrong in my config, but it's easy to deal with for now.

Offline

#42 2015-08-04 20:56:51

thorsten
Member
From: Germany
Registered: 2010-02-24
Posts: 151

Re: herbstluftwm screenshots and config

karkhaz wrote:

I use herbstluftwm on my laptop only:

Nice desktop. Which calendar and wich music player are you using?

karkhaz wrote:

It suffers from a bug where the stuff on the right-hand side monitor will sometimes jump over to the left when I change a workspace. I need to figure out what is wrong in my config, but it's easy to deal with for now.

What do you mean by sometims? If you focus the tag of right-hand side while still being on the left-hand side? If yes, it helps to disable swap_monitors_to_get_tag.

Offline

#43 2015-08-11 13:00:18

karkhaz
Member
Registered: 2014-01-25
Posts: 77

Re: herbstluftwm screenshots and config

thorsten wrote:

Nice desktop. Which calendar and wich music player are you using?

Music player is cmus. I use pal for my calendar, but the display in the screenshot is not part of the pal program; I wrote the following script to read and display pal calendar files. It requires you to gem install rainbow.

#!/usr/bin/env ruby

require 'rainbow/ext/string'
require 'date'

$calfile = '/home/kareem/.pal/details.pal'

def main_loop
  events = File.read($calfile).split("\n")
  events = events[1..-1]

  events.reject! {|e| e.match /^\s*$/ }

  now = DateTime.now

  cur_day = nil

  str = ''

  events.each do |e|
    year, month, day, start, fin, event = nil
    e.match(/^(?<y>\d\d\d\d)(?<m>\d\d)(?<d>\d\d) (?<e>.+)/) do |m|
      year  = m[:y].to_i
      month = m[:m].to_i
      day   = m[:d].to_i
      event = m[:e].gsub(/\d\d:\d\d-\d\d:\d\d/, '').
                    gsub(/\d\d:\d\d/, '')
    end
    raise e if year.nil? or month.nil? or day.nil? or event.nil?

    e.match(/(?<sh>\d\d):(?<sm>\d\d)-(?<fh>\d\d):(?<fm>\d\d)/) do |m|
      start = DateTime.new(year, month, day, m[:sh].to_i, m[:sm].to_i)
      fin   = DateTime.new(year, month, day, m[:fh].to_i, m[:fm].to_i)
    end
    e.match(/(?<h>\d\d):(?<m>\d\d)/) do |m|
      start = DateTime.new(year, month, day, m[:h].to_i, m[:m].to_i)
    end
    raise e if start.nil?

    next if start.to_time + 3600 < now.to_time

    if start.to_date != cur_day
      cur_day = start.to_date
      date_string = start.to_date.strftime("%A %d %Y")
      if(cur_day == now.to_date)
        date_string = "Today"
      elsif(cur_day == now.to_date + 1)
        date_string = "Tomorrow"
      end
      str += sprintf "\n#{'_' * date_string.length}"
      str += sprintf "\n%s".color(:cyan).bright.background(:black), date_string
      str += sprintf "\n#{'`' * date_string.length}\n".color(:blue).bright
    end

    time = start.strftime("%H:%M").color(:green)
    time += " - #{fin.strftime('%H:%M')}" if fin

    event.strip!

    if start.to_time - now.to_time < 3600
      str += "#{event.color(:red)}#{':'.color(:cyan)} #{time}\n"

    elsif start.to_time - now.to_time < 3600 * 24
      str += "#{event.color(:yellow)}#{':'.color(:cyan)} #{time}\n"

    else
      str += "#{event}#{':'.color(:cyan)} #{time}\n"
    end

  end

  rows = `/usr/bin/env tput lines`.to_i
  counter = 0
  out = ''
  str.each_line do |l|
    break if counter > rows
    out += l
    counter += 1
  end
  puts out
end

main_loop
last_read = DateTime.now.to_time

while true
  mtime = File.mtime($calfile)

  if mtime > last_read
    last_read = mtime
    main_loop
  end

  sleep 1
end

And here is an example of a pal calendar file:

DT Detailed Schedule

20150815 Meal 07:00-10:00
20150815 Opening ceremony 10:00-10:30
20150815 Let's get ready to Go 10:30-11:30
20150815 Meal 12:00-14:00
20150815 Check-in A311 14:00
20150815 Future of Software Freedom 14:00-15:00
20150815 Lightning talks 15:30-17:00
20150815 Coffee & snacks 15:30-17:00
20150815 Meal 19:00-20:30
20150815 New to DebConf BOF 20:30-21:30
20150815 Debian Birthday Party 21:30

A better example of what pal does is in my mega 6-monitor i3 screenshot.

thorsten wrote:

What do you mean by sometims? If you focus the tag of right-hand side while still being on the left-hand side? If yes, it helps to disable swap_monitors_to_get_tag.

Thanks, that helps!

Last edited by karkhaz (2015-08-11 13:12:10)

Offline

#44 2015-10-04 11:05:00

thorsten
Member
From: Germany
Registered: 2010-02-24
Posts: 151

Re: herbstluftwm screenshots and config

herbstluftwm with a pseudo-dualhead setup, using lemonbar, urxvt, and cantata:
hlwm-vim-cantanta-qutebrowser-thumb.png

configs on github

Offline

#45 2015-10-22 22:04:11

caravanlizzy
Member
Registered: 2013-10-07
Posts: 91

Re: herbstluftwm screenshots and config

the last post was my hlwm on my notebook, this one is my setup at my tower. bit more colorless, but better to work since it doesnt make me work on hlwm all the time smile




-- read the rules and only post thumbnails https://bbs.archlinux.org/viewtopic.php?id=61754  [jwr] --

whaAlW6.png

Last edited by caravanlizzy (2016-03-16 23:37:11)

Offline

#46 2015-11-15 00:07:45

Shinryuu
Member
From: 俺のコスモス
Registered: 2010-02-27
Posts: 338

Re: herbstluftwm screenshots and config

This is a cross post from the most recent screenshot thread. I'm using pretty much the same setup with my main PC and laptop. I prefer to use sxhkd for keybindings. I've been on herbstluftwm for almost two years now and I've fiddled with lemonbar a lot cool
742253.png
7c904a.png

panel.sh:

#!/bin/bash

# Just a dirty script for lemonbar,
# you need to use 'siji' font for icons.

# main monitor
monitor=${1:-0}

# padding
herbstclient pad $monitor 16

# settings
RES="x16xx"
FONT="*-siji-medium-r-*-*-10-*-*-*-*-*-*-*"
FONT2="-*-cure.se-medium-r-*-*-11-*-*-*-*-*-*-*"
FONT3="IPAGothic-8"
BG="#1A1C1F"
FG="#A8A8A8"
BLK="#262626"
RED="#834f48"
YLW="#917154"
BLU="#45536E"
GRA="#898989"
VLT="#7B3D93"

# icons
st="%{F$YLW}  %{F-}"
sm="%{F$RED}  %{F-}"
sv="%{F$BLU}  %{F-}"
sd="%{F$VLT}  %{F-}"

# functions

set -f
	
function uniq_linebuffered() {
    awk -W interactive '$0 != l { print ; l=$0 ; fflush(); }' "$@"
}

# events
{   
    # now playing
    mpc idleloop player | cat &
    mpc_pid=$!

    # volume
    while true ; do
        echo "vol $(amixer get Master | tail -1 | sed 's/.*\[\([0-9]*%\)\].*/\1/')"
	sleep 1 || break
    done > >(uniq_linebuffered) &
    vol_pid=$!
    
    # date
    while true ; do
        date +'date_min %b %d %A '%{F$RED}%{F-}' %H:%M'
        sleep 1 || break
    done > >(uniq_linebuffered) &
    date_pid=$!

    # herbstluftwm
    herbstclient --idle

    # exiting; kill stray event-emitting processes
    kill $mpc_pid $vol_pid $date_pid    
} 2> /dev/null | {
    TAGS=( $(herbstclient tag_status $monitor) )
    unset TAGS[${#TAGS[@]}]
    time=""
    song="nothing to see here"
    windowtitle="what have you done?"
    visible=true

        while true ; do
        echo -n "%{l}"
        for i in "${TAGS[@]}" ; do
            case ${i:0:1} in
                '#') # current tag
                    echo -n "%{U$RED}%{+u}"
                    ;;
                '+') # active on other monitor
                    echo -n "%{U$YLW}%{+u}"
                    ;;
                ':')
                    echo -n "%{-u}"
                    ;;
                '!') # urgent tag
                    echo -n "%{U$YLW}"
                    ;;
                *)
                    echo -n "%{-u}"
                    ;;
            esac
            echo -n " ${i:1} "
        done
	
	echo -n "%{c}$st%{F$GRA}${windowtitle//^/^^} %{F-}"
	
        # align right
        echo -n "%{r}"
        echo -n "$sm"
        echo -n "$song" %{F$YLW}"$song2"%{F-}
        echo -n "$sv"
        echo -n "$volume"
        echo -n "$sd"
        echo -n "$date "
        echo ""
        # wait for next event
        read line || break
        cmd=( $line ) 
        # find out event origin
        case "${cmd[0]}" in
            tag*)
                TAGS=( $(herbstclient tag_status $monitor) )
                unset TAGS[${#TAGS[@]}]
                ;;
            mpd_player|player)
                song="$(mpc -f %artist% current)"
		song2="$(mpc -f %title% current)"
                ;;
            vol)
                volume="${cmd[@]:1}"
                ;;
            date_min)
                date="${cmd[@]:1}"
                ;;
	    focus_changed|window_title_changed)
                windowtitle="${cmd[@]:2}"
                ;;
            quit_panel)
                exit
                ;;
            reload)
                exit
                ;;
        esac
    done
} 2> /dev/null | lemonbar -g ${RES} -u 3 -B ${BG} -F ${FG} -f ${FONT} -f ${FONT2} -f ${FONT3} & $1

autostart:

#!/bin/bash

hc() {
    herbstclient "$@"
}

hc emit_hook reload

# remove all existing keybindings
hc keyunbind --all

# keybindings
Mod=Mod1    # Use alt as the main modifier

# tags
TAG_NAMES=("一" "二" "三" "四" "五" "六")
TAG_KEYS=( {1..6} 0 )

hc rename default "${TAG_NAMES[0]}" || true
for i in ${!TAG_NAMES[@]} ; do
    hc add "${TAG_NAMES[$i]}"
    key="${TAG_KEYS[$i]}"
    if ! [ -z "$key" ] ; then
        hc keybind "Control-$key" use_index "$i"
        hc keybind "$Mod-Shift-$key" move_index "$i"
    fi
done

hc attr theme.tiling.reset 1
hc attr theme.floating.reset 1
hc set frame_border_active_color '#353535'
hc set frame_border_normal_color '#101010'
hc set frame_bg_normal_color '#202020'
hc set frame_bg_active_color '#6c3b41'
hc set frame_border_width 1
hc set always_show_frame 0
hc set frame_bg_transparent 1
hc set frame_transparent_width 0
hc set frame_gap 0

hc attr theme.active.color '#353535'
hc attr theme.normal.color '#252525'
hc attr theme.urgent.color orange
hc attr theme.inner_width 1
hc attr theme.inner_color '#202020'
hc attr theme.border_width 2
hc attr theme.floating.border_width 4
hc attr theme.floating.outer_width 1
hc attr theme.floating.outer_color black
hc attr theme.active.inner_color '#383838'
hc attr theme.active.outer_color '#282828'
hc attr theme.background_color '#ffffff'

# mouse bindings    
hc mousebind $Mod-Button1 move
hc mousebind $Mod-Button2 zoom
hc mousebind $Mod-Button3 resize

# layouts
hc load 一 '
(split horizontal:0.500000:0 
     (clients vertical:0 0x1800005)
     (clients vertical:0))'
     
# rules
hc unrule -F

# focus new clients
hc rule focus=on

# rules for clients
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK)' manage=off

hc rule class=Dwb tag=term focus=on
hc rule class=qutebrowser tag=term focus=on
hc rule class=Chromium tag=term focus=on
hc rule class=mpv tag=term focus=on
hc rule class=sxiv tag=term focus=on
hc rule class=wine tag=term focus=on

# unlock, just to be sure
hc unlock

herbstclient set tree_style '╾│ ├└╼─┐'

# do multi monitor setup here, e.g.:
# hc set_monitors 1280x1024+0+0 1920x1080+1280+0
hc detect_monitors

# panel
panel.sh &

sxhkdrc:

# sxhkd configuration
# herbstluftwm

# TAS
alt + 4
    cd ~/TAS/fceux-2.2.2 && wine fceux.exe

# reload sxhkd config
alt + shift + s
    pkill -USR1 -x sxhkd; notify-send "sxhkd restarted"

# toggle redshift
control + apostrophe
    pkill -USR1 redshift; notify-send "redshift toggled"

# mute volume
XF86AudioMute
    amixer sset Master toggle; notify-send "Mute toggled"

# lower volume
XF86AudioLowerVolume
    amixer sset Master 5%-

# raise volume
XF86AudioRaiseVolume
    amixer sset Master 5%+

# turn off monitors
XF86Display
    display.sh off

# mpd controls

XF86AudioPlay
    mpc toggle

XF86AudioStop
    mpc stop

XF86AudioNext
    mpc next

XF86AudioPrev
    mpc prev

# menu
alt + p
    dmenu_run

# connman_dmenu
alt + comma
    sudo connman_dmenu

# touchpad behavior
alt + apostrophe
    touchpad.sh; notify-send "toucpad toggled"
        
# web, fm, img
alt + {1,2,3}
    {qutebrowser,spacefm,gimp}
    
alt + {odiaeresis,adiaeresis}
    {xcmenuctrl,lolimpdnu}
    
# terminal
alt + shift + Return
    termite

# close windows
alt + shift + c
    herbstclient close    

# kill panel properly and quit
alt + shift + q
    herbstclient close; pkill bar; pkill panel

# handle panels and reloading properly
alt + shift + r
    herbstclient reload; pkill lemonbar; pkill panel

# window splitting
alt + {w,q,e}
    herbstclient split {bottom 0.5,right 0.5, explode}

# focus

alt + period
    herbstclient cycle_monitor
    
alt + {Tab,shift+Tab,c,u}
    herbstclient {cycle_all +1,cycle_all -1,cycle,jumpto urgent}

alt + {Left,Down,Up,Right}
    herbstclient {focus left,focus down,focus up,focus right}

# layouting
alt + {r,shift+Tab,shift+f,shift+m,shift+p}
    herbstclient {remove,cycle_layout 1,floating toggle, fullscreen toggle, pseudotile toggle}
    
# moving clients
alt + shift + {Left,Down,Up,Right}
    herbstclient shift {left,down,up,right}

# resizing frames
alt + control + {Left,Down,Up,Right}
    herbstclient resize {left +0.01,down +0.01,up +0.01,right +0.01}
    
# cycle through tags
alt + {adiaeresis,odiaeresis}
    herbstclient use_index {+1 --skip-visible,-1 --skip-visible}
    
# shift client to specified monitor
alt + {apostrophe,section}
    herbstclient shift_to_monitor {1,0}
    
# swap client to master or stack
alt + m
    herbstclient spawn swap.sh auto

Last edited by Shinryuu (2015-11-15 00:11:23)

Offline

Board footer

Powered by FluxBB