You are not logged in.
I think I've found a bug: raise_on_click doesn't work.
From my autostart:hc set focus_follows_mouse 1
hc set raise_on_click 1
hc set raise_on_focus 0
hc set focus_follows_shift 1I can't raise a window in floating mode with this settings.
I fixed that issue in the raise_on_click branch. I'll merge it to the master-branch after I tested it on a thin-client-setup tomorrow which often behaves different at those mouse-grabbing-things.
I also added many planned features to the BUGS-file:
diff --git a/BUGS b/BUGS
+ - or: chain commands like: cmdchain 4 cmd1 arg1a arg1b arg1c cmd2 arg2a arg2b
+ - alias commands: alias shortcmd = cmd default arg, alias shortcmd --delete
+ - undo command which undos the last layout changes on a certain tag
+ - load frame without changing it's properties to just change the
+ child-frames. Something like: (split unchanged $child1 child2)
+ - a more verbose tag_status: list_tags with one line per tag
+ - cycle through all "invisible" (or non-focused) frames
Offline
Thanks, looking forward to it.
Edit: I just patched and it works flawlessly.
Last edited by Doomcide (2012-04-30 16:04:40)
Offline
I don't know if this is a bug, or if I've missed something in the docs, but I'm having a peculiar issue with the image-viewing programs geeqie and sxiv. Both have the feature of resizing their own window based on the dimensions of the image, but in herbstluftwm floating mode, the windows will not resize. Is there something I could put in the autostart file, or in a script, that would take care of this?
Other than that, I'm really enjoying herbstluftwm, and I'm even getting used to typing the name of it! Thank you for your hard work, thorsten!
Offline
I don't know if this is a bug, or if I've missed something in the docs, but I'm having a peculiar issue with the image-viewing programs geeqie and sxiv. Both have the feature of resizing their own window based on the dimensions of the image, but in herbstluftwm floating mode, the windows will not resize. Is there something I could put in the autostart file, or in a script, that would take care of this?
It's not documented and not configurable: It just is not possible in old versions (0.3 or older). And exactly this is working in floating and pseudotile-mode in the current git-version (It was added by commit 1dfddc9)
Other than that, I'm really enjoying herbstluftwm, and I'm even getting used to typing the name of it! Thank you for your hard work, thorsten!
Thanks. You're welcome to join #herbstluftwm on freenode.
Offline
It's not documented and not configurable: It just is not possible in old versions (0.3 or older). And exactly this is working in floating and pseudotile-mode in the current git-version (It was added by commit 1dfddc9)
Sweet! Thanks again!
Offline
Just an other thank you.
Just switched from wmii. I was quickly able to get almost the same behavior as wmii, with less bugs, and more features.
Config files in plain bash is really a great idea !
EDIT: or you can just write them in Python3, as I did after a few tries
BTW, here is my config on github if anyone is curious
Last edited by Yannick_LM (2012-05-12 17:02:45)
Offline
I've been a dwm user for a long time. For whatever reason (mostly that the flextile patch doesn't seem to work with dwm 6+), I decided to start again a journey for a new WM. I almost settled on WMII, but it just didn't feel quite right. What it did teach me is that I really wanted a more manual tiling WM which uses the frames concept. As with many other anal-retentive people, what I really wanted was a WM which I could configure to work EXACTLY as I want. Hence I've quite happily settled with Herbstluftwm. With this WM it seems that as long as you're willing to write a script for it, you can achieve any behavior you want.
I haven't got it completely where I want it, but I'm not too far way. Essentially I have it configured to work with one or two horizontally split frames (much like dwm without the notion of a "master" frame). I haven't yet found a satisfactory way of detecting when a frame is empty (checking each frame each time focus changes seems inelegant and sloppy to me). Also my method of having have Mod-Tab go to the last used tag is a bit ugly, but it's not so awful. Anyway, here are my configs:
autostart
#!/bin/bash
export HLWM_PATH=~/.config/herbstluftwm
export FONT='-*-terminus-*-r-normal-*-12-*-*-*-*-*-iso8859-*'
function hc() { herbstclient "$@"; }
hc emit_hook reload
# remove all existing keybindings
hc keyunbind --all
# general settings
hc set focus_follows_mouse 1
# exterior
hc set frame_border_width 0
hc set always_show_frame 0
hc set window_gap 0
hc set window_border_width 1
hc set frame_bg_normal_color '#000000'
hc set frame_bg_active_color '#222222'
hc set window_border_normal_color '#333333'
hc set window_border_active_color '#cc0000'
hc pad 0 15
# status
exec $HLWM_PATH/hlwm_status &
# run hooks
hc emit_hook kill_hooks
for hook in $HLWM_PATH/hooks/*; do
exec $hook &
done
# keybindings
Mod=Mod1
hc keybind $Mod-Shift-q spawn $HLWM_PATH/quit
hc keybind $Mod-Shift-r reload
hc keybind $Mod-Shift-c close
hc keybind $Mod-Shift-Return spawn urxvt
hc keybind $Mod-p spawn dmenu_run \
-i -fn "$FONT" -nb "#222222" -nf "#cccccc" -sb "#444444" -sf "#ffffff"
# tags
hc rename default 1 || true
for i in {1..9}; do
hc add "$i"
hc keybind "$Mod-$i" use "$i"
hc keybind "$Mod-Shift-$i" move "$i"
done
# dwm style alt-tab
hc keybind $Mod-Tab spawn $HLWM_PATH/use_last_tag
# layouting
hc keybind $Mod-w remove
hc keybind $Mod-space cycle_layout 2
# resizing
RESIZESTEP=0.05
hc keybind $Mod-u resize left +$RESIZESTEP
hc keybind $Mod-o resize right +$RESIZESTEP
# focus
hc keybind $Mod-h focus left
hc keybind $Mod-j cycle 1
hc keybind $Mod-k cycle -1
hc keybind $Mod-l focus 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 spawn $HLWM_PATH/shift_right
# rules
hc unrule -F
#hc rule class=XTerm tag=3 # move all xterms to tag 3
hc rule focus=off # normally do not focus new clients
hc rule class~'(Firefox.*|Vimperator.*)' tag=2
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)' manage=off
# unlock, just to be sure
hc unlock
My panel script is potentially quite different from the usual panel.sh, though I didn't really look at it too closely
#!/bin/bash
# kill existing panels
killall conky dzen2
herbstclient emit_hook close_panel
# note $FONT is defined in autostart
conky | dzen2 -w 900 -x 540 -ta r -fn "$FONT" &
herbstclient --idle 'close_panel|tag_flags|tag_changed.*' | \
while read -r; do
[ "$REPLY" == "close_panel" ] && exit $?
herbstclient tag_status | sed -e 's/\t\.[0-9a-Z]*//g' -e 's/\t/ /g'
done | dzen2 -w 540 -ta l -fn "$FONT"
Here's an example of a hook. In particular, this is what I use to have Mod-Tab change to the previously viewed tag
#!/bin/bash
herbstclient --idle 'kill_hooks|tag_changed.*' | while read -r; do
if [ "$REPLY" == "kill_hooks" ]; then
echo "last_tag hook closing!"
exit $?
fi
cat $HLWM_PATH/.current_tag > $HLWM_PATH/.last_tag
echo "$REPLY" | cut -f2 > $HLWM_PATH/.current_tag
done
I've tried to make the hooks I use trigger as infrequently as possible to avoid scripts running too frequently. All in all I'm quite happy. I was getting especially restless with my system and this gave me a project to work on to waste time (we of course always need such a thing).
Anyway, many thanks for an excellent WM!
Thanks,
Ryan
Offline
[
You could just write:mv $HLWM_PATH/.current_tag $HLWM_PATH/.last_tag
instead.
I considered this, but somewhat arbitrarily decided that overwriting the file was the better option (my potentially misled reasoning was that the creation of a new file is more costly than writing to an existing file), though I agree the mv command looks better aesthetically. Do you know which is more costly? Obviously no one is pressing Mod-Tab all over the place, so it doesn't really matter, but there's something to be said for little tweaks here and there once you make enough of them.
To keep this response somewhat on topic, I'll reiterate that this is an instance where it'd be quite nice to be able to set variables from within herbstluftwm.
Thanks,
Ryan
Offline
I considered this, but somewhat arbitrarily decided that overwriting the file was the better option (my potentially misled reasoning was that the creation of a new file is more costly than writing to an existing file), though I agree the mv command looks better aesthetically. Do you know which is more costly?
The mv operation should be cheaper as it's a filesystem operation whereas cat opens, reads, pipes, etc.
Offline
Has anyone had any problems running Herbst over three heads? I've noticed some weirdness happening on my third screen (windows staying "stuck" when I switch tags, other windows popping in and out when I change tags, my panel's "current tag" highlight not working properly, etc).
Offline
Has anyone had any problems running Herbst over three heads? I've noticed some weirdness happening on my third screen (windows staying "stuck" when I switch tags,
I just tested it with this configuration:
w=1440
h=900
herbstclient set_monitors $((w/2))x${h}+0+0 $((w/2))x$((h/2))+$((w/2))+{0,$((h/2))}
And I can't notice any problems.
other windows popping in and out when I change tags,
This sounds like you have one window in fullscreen mode and another window not in fullscreen on the same tag. If yes, then this is a known bug.
my panel's "current tag" highlight not working properly, etc).
Are you using a current panel.sh version (the flags listed by tag_status changed some weeks ago)
Offline
snip
Thanks, all sorted now. Sick WM.
Offline
I had gotten so used to hlwm that I had forgotten about how wonderful it was. I got a new monitor the other day. My appreciation is renewed. This WM friggin' rules.
Offline
I've got Opera (this happens with all GUI browsers and Libreoffice as well) running and if I switch to float, the application window shunts off to the right side of the monitor (about 20px are visible on the monitor where the app was started) and it takes a lot of left dragging to bring it back. This also happens with dialogs created by the application. Is this known?
Offline
I'm working on a status bar dzen2 script, based on the default one, but I've run into a bizarre problem.
I have the following code, taken verbatim from the default panel:
TAGS=( $(herbstclient tag_status $monitor) )
while true ; do
for i in "${TAGS[@]}" ; do
echo -n "^ca(1,herbstclient focus_monitor $monitor && "'herbstclient use "'${i:1}'") '${i:2}" ^ca()"
done
done
But for some reason, rather than getting clickable tags, I get this:
1[]#2[]:3[]:4[]:5[].6
(where [] is actually a single box character). Obviously what's happening is that the $TAGS variable is a single string, not an array; the '#' is getting discarded from the front of the string by ${i:1}. The same issue shows up if I run the default panel /etc/xdg/herbstluftwm/panel.sh. I also get the same result of I replace the 'echo' line with
echo -n ${i:1}
I'm running herbstluftwm-git and dzen2-svn.
Any ideas what could be the problem here? I swear it was working briefly yesterday. I've looked up the bash array syntax, and I'm pretty sure I've got it right.
Offline
Well with herbstluftwm-git and dzen2-svn your code works as expected for me
I tried with this script:
#!/bin/bash
monitor=0
TAGS=( $(herbstclient tag_status $monitor) )
while true ; do
for i in "${TAGS[@]}" ; do
echo -n "^ca(1,herbstclient focus_monitor $monitor && "'herbstclient use "'${i:1}'") '${i:2}" ^ca()"
done
echo
sleep 1
done
and running it with
./test | dzen2
Offline
Well with herbstluftwm-git and dzen2-svn your code works as expected for me
I tried with this script:
#!/bin/bash monitor=0 TAGS=( $(herbstclient tag_status $monitor) ) while true ; do for i in "${TAGS[@]}" ; do echo -n "^ca(1,herbstclient focus_monitor $monitor && "'herbstclient use "'${i:1}'") '${i:2}" ^ca()" done echo sleep 1 done
and running it with
./test | dzen2
That works for me as well. But my own script doesn't.
Offline
I've got Opera (this happens with all GUI browsers and Libreoffice as well) running and if I switch to float, the application window shunts off to the right side of the monitor (about 20px are visible on the monitor where the app was started) and it takes a lot of left dragging to bring it back. This also happens with dialogs created by the application. Is this known?
Are you using multiple monitors? If yes, then the problem is: some applications try to place themself in the center of *both* screens or even on the second monitor. But hlwm interpretes these coordinates as coordinates relative to the monitor, so they are that far on the right. The problem is, that most applications don't do that, so I didn't find a good solution for both applications yet.
That works for me as well. But my own script doesn't.
I guess that your shebang line (the first line of your script) maybe isn't correct. (maybe you used /bin/sh or /bin/zsh instead of /bin/bash?)
Offline
syngin wrote:I've got Opera (this happens with all GUI browsers and Libreoffice as well) running and if I switch to float, the application window shunts off to the right side of the monitor (about 20px are visible on the monitor where the app was started) and it takes a lot of left dragging to bring it back. This also happens with dialogs created by the application. Is this known?
Are you using multiple monitors? If yes, then the problem is: some applications try to place themself in the center of *both* screens or even on the second monitor. But hlwm interpretes these coordinates as coordinates relative to the monitor, so they are that far on the right. The problem is, that most applications don't do that, so I didn't find a good solution for both applications yet.
Yeah, I am. Thanks again, Thorsten.
Offline
ibrunton wrote:That works for me as well. But my own script doesn't.
I guess that your shebang line (the first line of your script) maybe isn't correct. (maybe you used /bin/sh or /bin/zsh instead of /bin/bash?)
No, definitely /bin/bash.
I got it working last night, but it seems that the TAGS=( ... ) line only works outside of a { } block. No idea why, but if I put it outside a block, it works, and if I put it back inside, it doesn't work. Like I said before, even the default panel.sh script has the same problem (on my machine, at least).
Offline
I made a patch wich provides an option (smart_surroundings) to remove window/frame borders/gaps whenever possible:
Last edited by bloom (2012-06-17 12:10:55)
Offline
Been using herbstluftwm for a couple weeks now. Loving it. Only gripe is not being able to float a single window, but I understand that is being thought about and on the todo list.
I enhanced the layout.sh example to include window titles. Also made an example that pipes the output to xosd. See OSD overlay text in upper left of screenshot. Being able to script/hack these things is so much fun.
#!/bin/bash
source /etc/bash_completion.d/herbstclient-completion
# alias hc and add completion for it
function _hc_complete() {
COMPREPLY=(
$(herbstclient -q complete "$((COMP_CWORD-1))" "${COMP_WORDS[@]:1}")
)
}
complete -F _hc_complete hc
alias hc=herbstclient
function hcs() # dump current herbstluftwm settings
{
for s in `herbstclient complete 1 set`; do
echo "$s = `herbstclient get $s`"
done
}
function hc_cur_tag()
{
herbstclient tag_status | /bin/grep -oP "\t#[^\t]*" | cut -b 3
}
function hcl() # dump current herbstluftwm layout for all tags
{
local TAGC="${1:+`tput setaf 5`}"
local WINDOWC="${1:+`tput setaf 3`}"
local TITLEC="${1:+`tput setaf 4`}"
local CLEAR="${1:+`tput sgr0`}"
herbstclient complete 1 use |
while read t; do
TAG="$t: "
indent=$(echo -n "$TAG" | sed 's/./ /g')
TAG="${TAGC}${TAG}${CLEAR}"
LAYOUT=`herbstclient layout $t`
echo -e "${TAG}${LAYOUT}" \
| sed "2,\$ s/^/$indent/" \
| sed "s/\(0x[0-9a-f]\{1,\}\)/${WINDOWC}\1${CLEAR}/g"
echo -e "$LAYOUT" | /bin/grep -oE "0x[0-9a-f]{1,}" |
while read w; do
echo -n "$indent${WINDOWC}$w${CLEAR} - "
echo "${TITLEC}`xdotool getwindowname $w`${CLEAR}"
done
done
}
function hcosd()
{
local FGCLR=white
local OLCLR=blue
local OUTL=2
local DELAY=10
local FONT='-*-terminus-bold-r-*-*-22-*-*-*-*-*-*-*'
echo -e "$1" \
| osd_cat -A left \
-i 0 \
-o 5 \
-d $DELAY \
-O $OUTL \
-c $FGCLR \
-u $OLCLR \
-l `echo -e "$1" | wc -l` \
-f $FONT
}
function hclo()
{
local TS=`herbstclient get tree_style`
herbstclient set tree_style '*| +`--.'
local TXT=`hcl`
herbstclient set tree_style "$TS"
hcosd "$TXT"
}
Keybinding:
hc keybind $Mod-Shift-o spawn bash -c hclo
Last edited by insanum (2012-06-29 07:02:57)
Offline
hi, I'm new to herbstluftwm and I noticed that hlwm won't let me play minecraft. When I start the game through dmenu it loads but when I hit F11 (default in minecraft) for fullscreen it flickers to fullscreen for a second and then goes back to window mode. hlwm won't even let me play in window mode since it always throws me back to the minecraft menu. I tried pseudo-float ($MOD+s in my case) and hlwm window fullscreen ($MOD+f) but nothing worked. In dwm or monsterwm this is not a problem. The game starts in window mode there, too, but with F11 it goes fullscreen and I can play.
Thanks in advance and here's a screenshot;
EDIT: I added this line to my autostart file which let's me start the game in a fullscreen window but won't let me go really fullscreen and play:
hc rule class='net-minecraft-LauncherFrame' fullscreen=on
EDIT 2: ok, Problem solved with this line in .xinitrc
export _JAVA_AWT_WM_NONREPARENTING=1 &
http://awesome.naquadah.org/wiki/Problems_with_Java
Last edited by andmars (2012-07-05 21:36:44)
Offline
...
Last edited by andmars (2012-07-04 21:01:05)
Offline