You are not logged in.
bloom wrote:
Impossible.
You can do that:
bspc query -T > saved_layout
bspc restore -T saved_layout
However, this won't work across restarts as the window IDs, the only reliably distinct way to identify windows, will change.
However, if you don't care about potential window placement errors, you could parse the output of `bspc query -T` and record various identifying aspects of the listed windows. Then, on restart, you could use these recorded identifiers to derive the new window IDs and use them to restore the layout.
Offline
Another option could be to simply spawn a "null" window at some point in the tree that is just a blank transparent window with no decorations.
I'd also like to see something like this. I often find myself opening a terminal just so the window I'm actually working in does not occupy the whole screen. Having a cleaner approach to this would be nice.
Offline
How i convert status for bspwm only use the lemonboy bar ?
My statusbar in monsterwm
I know this possible i finded other config use similar statusbar alike mine. here
Last edited by F34R (2013-10-09 15:43:37)
Offline
earsplit wrote:One small feature reqest.
I'll see if I can comply.
Thanks!
If anyone else wants a simple transparent empty spot in the grid for now, I achieved this with this simple X code:
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <string.h>
int main(int argc, char* argv[])
{
Display* display = XOpenDisplay(NULL);
XVisualInfo vinfo;
XMatchVisualInfo(display, DefaultScreen(display), 32, TrueColor, &vinfo);
XSetWindowAttributes attr;
attr.colormap = XCreateColormap(display, DefaultRootWindow(display), vinfo.visual, AllocNone);
attr.border_pixel = 0;
attr.background_pixel = 0;
Window win = XCreateWindow(display, DefaultRootWindow(display), 0, 0, 300, 200, 0, vinfo.depth, InputOutput, vinfo.visual, CWColormap | CWBorderPixel | CWBackPixel, &attr);
XSelectInput(display, win, StructureNotifyMask);
GC gc = XCreateGC(display, win, 0, 0);
Atom wm_delete_window = XInternAtom(display, "WM_DELETE_WINDOW", 0);
XSetWMProtocols(display, win, &wm_delete_window, 1);
XClassHint class_hint;
class_hint.res_name = "transparent_blank";
class_hint.res_class = "NO_SHADOW";
XSetClassHint(display, win, &class_hint);
XMapWindow(display, win);
int keep_running = 1;
XEvent event;
while (keep_running) {
XNextEvent(display, &event);
switch(event.type) {
case ClientMessage:
if (event.xclient.message_type == XInternAtom(display, "WM_PROTOCOLS", 1) && (Atom)event.xclient.data.l[0] == XInternAtom(display, "WM_DELETE_WINDOW", 1))
keep_running = 0;
break;
default:
break;
}
}
XDestroyWindow(display, win);
XCloseDisplay(display);
return 0;
}
Compile with
gcc -I /usr/X11/include -L /usr/X11/lib -lX11 FILE.c -o BINARY_NAME
Last edited by earsplit (2013-10-10 01:27:24)
Offline
Brought by 6bc1285.
In the contrib directory, you'll find create_frame.c.
It can be compiled with:
gcc -lxcb-icccm -lxcb -o create_frame create_frame.c
Example rule:
bspc rule -a BSPWM_FRAME --frame
There are three opacity settings for frames.
Offline
Brought by 6bc1285.
In the contrib directory, you'll find create_frame.c.
It can be compiled with:
gcc -lxcb-icccm -lxcb -o create_frame create_frame.c
Example rule:
bspc rule -a BSPWM_FRAME --frame
There are three opacity settings for frames.
You are a god among men. Thanks. I'll let you know if I think of any other feature requests that I get asked about
http://paste.unixhub.net/index.php/DTVE6j/
EDIT:
Maybe one idea, make a "null" node instead of a transparent window? That way users that don't want to run compositors can maintain the same functionality. Just a thought Is there anywhere I can endorse you? I feel like I should pay you for this. I've been using bspwm every day at work for 4 months without a hiccup. This is an amazing piece of software.
Last edited by earsplit (2013-10-10 20:57:02)
Offline
This is a nice new feature. Could create_frame be added to the Makefile?
Commit 6bc1285 produces the following warning when compiling:
cc -std=c99 -pedantic -Wall -Wextra -I/usr/local/include -D_POSIX_C_SOURCE=200112L -DVERSION=\"0.8.5\" -Os -c -o restore.o restore.c
restore.c: In function ‘restore_tree’:
restore.c:178:17: warning: implicit declaration of function ‘get_event_mask’ [-Wimplicit-function-declaration]
uint32_t values[] = {get_event_mask(n->client)};
^
Also, thanks for adding the local modifier.
One more thing: this might be a foolish question, but how exactly are tags intended to be used?
I use linux and I dont understand nothing in this post.
Offline
I would like to make a request. It was discussed a little bit before in the context of locking windows to specific spots on the screen, but I think my request is a simpler, special case of that idea - one that hopefully can be implemented without too much effort.
I would like an option (maybe a layout?) where one window is manually flagged as "primary" or "main" or whatever keyword makes the most sense. When this is done, the window always occupies the left (or right, whichever) half of the screen, and all automatic tiling is done around it, regardless of whether or not that primary window has focus.
Copying the behavior example from github, instead of this:
b c
/ \ / \
3 a --> 4 b
^ / \ ^ / \
2 1 3 a
/ \
2 1
+-------------------------+ +-------------------------+
| | | | | |
| | 2 | | | 3 |
| | | | | |
| 3 |------------| --> | 4 |------------|
| ^ | | | ^ | | |
| | 1 | | | 1 | 2 |
| | | | | | |
+-------------------------+ +-------------------------+
You would instead have this (assuming 3 is "primary"):
b c
/ \ / \
3 a --> 3 b
^ / \ / \
2 1 4 a
^ / \
2 1
+-------------------------+ +-------------------------+
| | | | | |
| | 2 | | | 4 |
| | | | | ^ |
| 3 |------------| --> | 3 |------------|
| ^ | | | | | |
| | 1 | | | 1 | 2 |
| | | | | | |
+-------------------------+ +-------------------------+
In other words, 3 would never, ever move as a result of automatic behavior of bspwm, but it could be manually moved/swapped with another window though an sxhkd binding, at which point that other window becomes the new "primary".
Note 1: I have not given the focus behavior any thought. Whatever makes the most sense would be fine.
Note 2: I also do not know what behavior would make the most sense when a "primary" window is the only active on on the workspace - should it fill the whole screen or just half?
The justification for this is that occasionally I find myself opening windows for short periods while working on something (including writing this, actually), and - assuming I fail to consciously take into account the layout - I get distracted moving everything back to how I want it.
My current workaround is the following (alternative suggestions are welcome):
#!/bin/bash
bspc window --focus biggest
bspc window --focus next
"$@"
but I ultimately feel that this layout idea - which would automatically handle all new windows, not just ones I manually launch with that workaround script - would be very useful to me.
Offline
Maybe one idea, make a "null" node instead of a transparent window?
The problem is that, without a window to draw to, I can't provide feedbacks.
Is there anywhere I can endorse you?
The email address given on my GitHub account is my PayPal address.
Offline
I would like to make a request. It was discussed a little bit before in the context of locking windows to specific spots on the screen, but I think my request is a simpler, special case of that idea - one that hopefully can be implemented without too much effort.
I would like an option (maybe a layout?) where one window is manually flagged as "primary" or "main" or whatever keyword makes the most sense. When this is done, the window always occupies the left (or right, whichever) half of the screen, and all automatic tiling is done around it, regardless of whether or not that primary window has focus.
I have an idea:
Let's create a new node state called private.
If a node insertion is requested on a private node, the insertion will occur on the nearest public node.
Offline
Sounds good.
The only note I would make is that ideally - to me, anyway - that when swapping a private node with a non-private one, the private flag is traded so that the same conceptual location on the tree remains private. If that is too unintuitive/dumb/annoying-to-implement, then do not worry about it on my account because your suggestion covers 99% of what I am asking for.
PS: Thanks again
Offline
instantepiphany wrote:So (assuming I understand how git works and I did actually revert to that version correctly) does this mean that I screwed something else up and it isn't anything to do with some code you pushed?
It would seem so.
Hmmmm. Will poke around for a while and post back the reason if it was something anyone else might run into.
Offline
Brought by 7334277.
This is just delightful.
Offline
Supplantr wrote:How exactly are tags intended to be used?
The tagging model is the same as in dwm.
But what exactly is the difference between tags and desktops? Now it looks like they're additional level of hierarchy (monitor -> desktop -> tag -> window), but I'm not very sure.
Also,
Maybe one idea, make a "null" node instead of a transparent window?
Now it looks like that if there's no tag active on desktop, and I try to create a new window, and after that activate tag on the desktop, there is this empty window/space, which can't be closed or interacted with. I suppose this is bug? example
Last edited by Nindwen (2013-10-13 17:42:05)
echo nindwen.blue | cat
Offline
bloom wrote:Supplantr wrote:How exactly are tags intended to be used?
The tagging model is the same as in dwm.
But what exactly is the difference between tags and desktops?
Now it looks like they're additional level of hierarchy (monitor -> desktop -> tag -> window), but I'm not very sure.
Now it looks like that if there's no tag active on desktop, and I try to create a new window, and after that activate tag on the desktop, there is this empty window/space, which can't be closed or interacted with. I suppose this is bug?
Yes, and it should be fixed by 6daf058.
Thanks for reporting.
Offline
bloom wrote:Supplantr wrote:How exactly are tags intended to be used?
The tagging model is the same as in dwm.
But what exactly is the difference between tags and desktops? Now it looks like they're additional level of hierarchy (monitor -> desktop -> tag -> window), but I'm not very sure.
That is what I've gotten out of tags so far. What I like most about them in dwm is that each desktop is basically a tag, letting me essentially view my window on any desktop/workspace by making its tag visible. It doesn't seem like that's possible with these tags unless you used them as desktops which removes the functionality you'd expect from desktops such as going to the next / prev or next / prev free or occupied.
Offline
Nindwen wrote:bloom wrote:The tagging model is the same as in dwm.
But what exactly is the difference between tags and desktops?
Now it looks like they're additional level of hierarchy (monitor -> desktop -> tag -> window), but I'm not very sure.
Thanks, I think I get it now.
However, I'm still not sure how they'd be best used with bspwm. If I understand correctly, currently I can't show same windows on multiple desktops. Wouldn't the whole idea make more sense if each desktop created its own tag on creation, and the tag would show the same windows in every desktop? Or in other words, desktop would only be the layout of windows and tags defined which windows are shown. This way, you could use desktops as simple containers for tags, but also use power of tags more freely.
Or maybe I just don't understand this correctly, and my idea makes no sense at all. I don't know. Maybe I should look at your keybindings to see how tags could be used ->
echo nindwen.blue | cat
Offline
Is anyone here using firefox? If I open up a new window and open up firefox, it splits the window in two and one window has the firefox gui, and the other window is another terminal with the output code from the firefox process. Is there any way to stop that from happening? I don't want a new window to open up when I start firefox, I would prefer if it would just open up in the current window and not make any new ones.
I haven't made any changes to any of the config files, and I'm using urxvt. It also does this split-window thing if I try using xterm.
Thanks guys.
Last edited by kevinae91 (2013-10-14 01:03:25)
Just keep it simple.
Offline
-
Last edited by Kesava (2015-06-14 03:45:41)
Offline
Is anyone here using firefox? If I open up a new window and open up firefox, it splits the window in two and one window has the firefox gui, and the other window is another terminal with the output code from the firefox process. Is there any way to stop that from happening? I don't want a new window to open up when I start firefox, I would prefer if it would just open up in the current window and not make any new ones.
I haven't made any changes to any of the config files, and I'm using urxvt. It also does this split-window thing if I try using xterm.
Thanks guys.
How are you starting Firefox? It sounds like you are opening up a terminal and typing in firefox. This will absolutely cause two windows to be open, one for the terminal and one for Firefox. You should use a keybinding or something like dmenu to run Firefox instead. Or, if you are set on running it from within a terminal, you could prefix the firefox command with setsid (type 'setsid firefox' in your terminal). This will make sure the Firefox process is outside that of your terminal, so you can safely close it and Firefox will still be running.
Offline
kevinae91 wrote:Is anyone here using firefox? If I open up a new window and open up firefox, it splits the window in two and one window has the firefox gui, and the other window is another terminal with the output code from the firefox process. Is there any way to stop that from happening? I don't want a new window to open up when I start firefox, I would prefer if it would just open up in the current window and not make any new ones.
I haven't made any changes to any of the config files, and I'm using urxvt. It also does this split-window thing if I try using xterm.
Thanks guys.
How are you starting Firefox? It sounds like you are opening up a terminal and typing in firefox. This will absolutely cause two windows to be open, one for the terminal and one for Firefox. You should use a keybinding or something like dmenu to run Firefox instead. Or, if you are set on running it from within a terminal, you could prefix the firefox command with setsid (type 'setsid firefox' in your terminal). This will make sure the Firefox process is outside that of your terminal, so you can safely close it and Firefox will still be running.
Good stuff. I don't have a panel installed either so opening up firefox through the terminal was really the only thing I could think of. I will try both of those suggestions. Thanks!
Just keep it simple.
Offline
Good stuff. I don't have a panel installed either so opening up firefox through the terminal was really the only thing I could think of. I will try both of those suggestions. Thanks!
Other options that work really well are:
1. Set up a specific keybinding for firefox.
- assuming that you are using sxhkd
- edit your sxhkdrc to add a keybinding of your choice; mine is:
alt + f
firefox
- make sxhkd reload its configuration files using the following at a terminal:
pkill -USR1 -x sxhkd
- then pressing alt & f together should launch firefox
- (note that you will need to have a unique keybinding, ie alt + f can't be used for something else)
2. Use a application launcher like dmenu
- info on wiki here here
- install & set up keybinding as per example above; mine is
Menu
dmenu_run -fn '-*-*-medium-r-normal-*-*-*-*-*-*-100-*-*' -p 'run'
- reload sxhkd settings & run dmenu using the new keybinding
- at the dmenu prompt type fir and firefox has likely been highlighted; hit enter
- (what you type at the dmenu prompt may vary depending on what other things you have installed that start with "fi...")
Last edited by robstwd (2013-10-14 09:20:50)
Offline