You are not logged in.

#1 2011-08-18 04:47:36

BurntSushi
Member
From: Massachusetts
Registered: 2009-06-28
Posts: 362
Website

Vim-like window marking for any EWMH window manager

This is really small and simple tool that runs in the background and lets you mark any window using any letter (a-z) and then jump back to it whenever you want. (Even if you're on a different desktop.)

Right now, all you can do is assign a mark to a window and jump to it. I'll probably add another option that lets you bring a window to the current desktop.

For example, while in Gmail press Super+m then hit 'g'. Browse to some other desktop, and when you want to check your mail press Super+' and then hit 'g'. So the idea is to have two keybindings; one for marking and one for jumping. After you've initiated one of the keybindings, window-marker expects one more letter to complete the command.

The keybindings can be set on the command line.

usage: window-marker [-h] [-m KEYBINDING] [-g KEYBINDING]

Vim-like marks for windows.

optional arguments:
  -h, --help            show this help message and exit
  -m KEYBINDING, --mark KEYBINDING
                        keybinding to add a mark (default: Mod4-m)
  -g KEYBINDING, --goto KEYBINDING
                        keybinding to goto a mark (default Mod4-apostrophe)

Using window-marker is exactly like using marks in vim. Namely, by pressing
the keybinding for "mark", window-marker then listens for one more letter
(a-z) to be entered. Whichever letter is entered will now be associated with
the active window.

If you now want to go back to that window (even if you're
on a different desktop), simply press the keybinding for "goto" and then enter
the letter you used to mark the window.

To set your own keybinding, please
consult /usr/include/X11/keysymdef.h and the output of `xmodmap`. The `xev`
program may also be useful.

It's in the AUR.

Last edited by BurntSushi (2011-08-18 04:59:01)


Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.

Tu ne cede malis sed contra audentior ito

Offline

#2 2011-08-18 06:34:45

Army
Member
Registered: 2007-12-07
Posts: 1,784

Re: Vim-like window marking for any EWMH window manager

I wanted to give it a try, installed it from the AUR. What I get is

% window-marker
Traceback (most recent call last):
  File "/usr/bin/window-marker", line 111, in <module>
    if not keysym.grab_key(conn, root, mods, kc):
  File "/usr/lib/python2.7/site-packages/xpybutil/keysym.py", line 153, in grab_key
    xcb.xproto.GrabMode.Async).check()
  File "/usr/lib/python2.7/site-packages/xcb/xproto.py", line 1900, in GrabKeyChecked
    buf.write(pack('xB2xIHBBB3x', owner_events, grab_window, modifiers, key, pointer_mode, keyboard_mode))
struct.error: cannot convert argument to integer

Offline

#3 2011-08-18 12:53:06

BurntSushi
Member
From: Massachusetts
Registered: 2009-06-28
Posts: 362
Website

Re: Vim-like window marking for any EWMH window manager

@Army -

Could you post your output of the following command?

xmodmap -pk

It'll be long, so make sure to wrap it in [ code ] tags :-) Thanks!


Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.

Tu ne cede malis sed contra audentior ito

Offline

#4 2011-08-18 14:08:24

Army
Member
Registered: 2007-12-07
Posts: 1,784

Re: Vim-like window marking for any EWMH window manager

BurntSushi wrote:

It'll be long, so make sure to wrap it in [ code ] tags :-) Thanks!

Hey, I never missed using them! tongue

There are 7 KeySyms per KeyCode; KeyCodes range from 8 to 255.

    KeyCode	Keysym (Keysym)	...
    Value  	Value   (Name) 	...

      8    	
      9    	0xff1b (Escape)	0x0000 (NoSymbol)	0xff1b (Escape)	
     10    	0x0031 (1)	0x0021 (exclam)	0x0031 (1)	0x0021 (exclam)	0x00b9 (onesuperior)	0x00a1 (exclamdown)	0x00b9 (onesuperior)	
     11    	0x0032 (2)	0x0022 (quotedbl)	0x0032 (2)	0x0022 (quotedbl)	0x00b2 (twosuperior)	0x0ac3 (oneeighth)	0x00b2 (twosuperior)	
     12    	0x0033 (3)	0x00a7 (section)	0x0033 (3)	0x00a7 (section)	0x00b3 (threesuperior)	0x00a3 (sterling)	0x00b3 (threesuperior)	
     13    	0x0034 (4)	0x0024 (dollar)	0x0034 (4)	0x0024 (dollar)	0x00bc (onequarter)	0x00a4 (currency)	0x00bc (onequarter)	
     14    	0x0035 (5)	0x0025 (percent)	0x0035 (5)	0x0025 (percent)	0x00bd (onehalf)	0x0ac4 (threeeighths)	0x00bd (onehalf)	
     15    	0x0036 (6)	0x0026 (ampersand)	0x0036 (6)	0x0026 (ampersand)	0x00ac (notsign)	0x0ac5 (fiveeighths)	0x00ac (notsign)	
     16    	0x0037 (7)	0x002f (slash)	0x0037 (7)	0x002f (slash)	0x007b (braceleft)	0x0ac6 (seveneighths)	0x007b (braceleft)	
     17    	0x0038 (8)	0x0028 (parenleft)	0x0038 (8)	0x0028 (parenleft)	0x005b (bracketleft)	0x0ac9 (trademark)	0x005b (bracketleft)	
     18    	0x0039 (9)	0x0029 (parenright)	0x0039 (9)	0x0029 (parenright)	0x005d (bracketright)	0x00b1 (plusminus)	0x005d (bracketright)	
     19    	0x0030 (0)	0x003d (equal)	0x0030 (0)	0x003d (equal)	0x007d (braceright)	0x00b0 (degree)	0x007d (braceright)	
     20    	0x00df (ssharp)	0x003f (question)	0x00df (ssharp)	0x003f (question)	0x005c (backslash)	0x00bf (questiondown)	0x1001e9e (U1E9E)	
     21    	0xfe51 (dead_acute)	0xfe50 (dead_grave)	0xfe51 (dead_acute)	0xfe50 (dead_grave)	0xfe5b (dead_cedilla)	0xfe5c (dead_ogonek)	0xfe5b (dead_cedilla)	
     22    	0xff08 (BackSpace)	0x0000 (NoSymbol)	0xff08 (BackSpace)	
     23    	0xff09 (Tab)	0xfe20 (ISO_Left_Tab)	0xff09 (Tab)	0xfe20 (ISO_Left_Tab)	
     24    	0x0071 (q)	0x0051 (Q)	0x0071 (q)	0x0051 (Q)	0x0040 (at)	0x07d9 (Greek_OMEGA)	0x0040 (at)	
     25    	0x0077 (w)	0x0057 (W)	0x0077 (w)	0x0057 (W)	0x01b3 (lstroke)	0x01a3 (Lstroke)	0x01b3 (lstroke)	
     26    	0x0065 (e)	0x0045 (E)	0x0065 (e)	0x0045 (E)	0x20ac (EuroSign)	0x20ac (EuroSign)	0x20ac (EuroSign)	
     27    	0x0072 (r)	0x0052 (R)	0x0072 (r)	0x0052 (R)	0x00b6 (paragraph)	0x00ae (registered)	0x00b6 (paragraph)	
     28    	0x0074 (t)	0x0054 (T)	0x0074 (t)	0x0054 (T)	0x03bc (tslash)	0x03ac (Tslash)	0x03bc (tslash)	
     29    	0x007a (z)	0x005a (Z)	0x007a (z)	0x005a (Z)	0x08fb (leftarrow)	0x00a5 (yen)	0x08fb (leftarrow)	
     30    	0x0075 (u)	0x0055 (U)	0x0075 (u)	0x0055 (U)	0x08fe (downarrow)	0x08fc (uparrow)	0x08fe (downarrow)	
     31    	0x0069 (i)	0x0049 (I)	0x0069 (i)	0x0049 (I)	0x08fd (rightarrow)	0x02b9 (idotless)	0x08fd (rightarrow)	
     32    	0x006f (o)	0x004f (O)	0x006f (o)	0x004f (O)	0x00f8 (oslash)	0x00d8 (Oslash)	0x00f8 (oslash)	
     33    	0x0070 (p)	0x0050 (P)	0x0070 (p)	0x0050 (P)	0x00fe (thorn)	0x00de (THORN)	0x00fe (thorn)	
     34    	0x00fc (udiaeresis)	0x00dc (Udiaeresis)	0x00fc (udiaeresis)	0x00dc (Udiaeresis)	0xfe57 (dead_diaeresis)	0xfe58 (dead_abovering)	0xfe57 (dead_diaeresis)	
     35    	0x002b (plus)	0x002a (asterisk)	0x002b (plus)	0x002a (asterisk)	0xfe53 (dead_tilde)	0xfe54 (dead_macron)	0xfe53 (dead_tilde)	
     36    	0xff0d (Return)	0x0000 (NoSymbol)	0xff0d (Return)	
     37    	0xffe3 (Control_L)	0x0000 (NoSymbol)	0xffe3 (Control_L)	
     38    	0x0061 (a)	0x0041 (A)	0x0061 (a)	0x0041 (A)	0x00e6 (ae)	0x00c6 (AE)	0x00e6 (ae)	
     39    	0x0073 (s)	0x0053 (S)	0x0073 (s)	0x0053 (S)	0x100017f (U017F)	0x1001e9e (U1E9E)	0x100017f (U017F)	
     40    	0x0064 (d)	0x0044 (D)	0x0064 (d)	0x0044 (D)	0x00f0 (eth)	0x00d0 (ETH)	0x00f0 (eth)	
     41    	0x0066 (f)	0x0046 (F)	0x0066 (f)	0x0046 (F)	0x01f0 (dstroke)	0x00aa (ordfeminine)	0x01f0 (dstroke)	
     42    	0x0067 (g)	0x0047 (G)	0x0067 (g)	0x0047 (G)	0x03bf (eng)	0x03bd (ENG)	0x03bf (eng)	
     43    	0x0068 (h)	0x0048 (H)	0x0068 (h)	0x0048 (H)	0x02b1 (hstroke)	0x02a1 (Hstroke)	0x02b1 (hstroke)	
     44    	0x006a (j)	0x004a (J)	0x006a (j)	0x004a (J)	0xfe60 (dead_belowdot)	0xfe56 (dead_abovedot)	0xfe60 (dead_belowdot)	
     45    	0x006b (k)	0x004b (K)	0x006b (k)	0x004b (K)	0x03a2 (kra)	0x0026 (ampersand)	0x03a2 (kra)	
     46    	0x006c (l)	0x004c (L)	0x006c (l)	0x004c (L)	0x01b3 (lstroke)	0x01a3 (Lstroke)	0x01b3 (lstroke)	
     47    	0x00f6 (odiaeresis)	0x00d6 (Odiaeresis)	0x00f6 (odiaeresis)	0x00d6 (Odiaeresis)	0xfe59 (dead_doubleacute)	0xfe60 (dead_belowdot)	0xfe59 (dead_doubleacute)	
     48    	0x00e4 (adiaeresis)	0x00c4 (Adiaeresis)	0x00e4 (adiaeresis)	0x00c4 (Adiaeresis)	0xfe52 (dead_circumflex)	0xfe5a (dead_caron)	0xfe52 (dead_circumflex)	
     49    	0xfe52 (dead_circumflex)	0x00b0 (degree)	0xfe52 (dead_circumflex)	0x00b0 (degree)	0x1002032 (U2032)	0x1002033 (U2033)	0x1002032 (U2032)	
     50    	0xffe1 (Shift_L)	0x0000 (NoSymbol)	0xffe1 (Shift_L)	
     51    	0x0023 (numbersign)	0x0027 (apostrophe)	0x0023 (numbersign)	0x0027 (apostrophe)	0x0ad1 (rightsinglequotemark)	0xfe55 (dead_breve)	0x0ad1 (rightsinglequotemark)	
     52    	0x0079 (y)	0x0059 (Y)	0x0079 (y)	0x0059 (Y)	0x00bb (guillemotright)	0x100203a (U203A)	0x00bb (guillemotright)	
     53    	0x0078 (x)	0x0058 (X)	0x0078 (x)	0x0058 (X)	0x00ab (guillemotleft)	0x1002039 (U2039)	0x00ab (guillemotleft)	
     54    	0x0063 (c)	0x0043 (C)	0x0063 (c)	0x0043 (C)	0x00a2 (cent)	0x00a9 (copyright)	0x00a2 (cent)	
     55    	0x0076 (v)	0x0056 (V)	0x0076 (v)	0x0056 (V)	0x0afe (doublelowquotemark)	0x0afd (singlelowquotemark)	0x0afe (doublelowquotemark)	
     56    	0x0062 (b)	0x0042 (B)	0x0062 (b)	0x0042 (B)	0x0ad2 (leftdoublequotemark)	0x0ad0 (leftsinglequotemark)	0x0ad2 (leftdoublequotemark)	
     57    	0x006e (n)	0x004e (N)	0x006e (n)	0x004e (N)	0x0ad3 (rightdoublequotemark)	0x0ad1 (rightsinglequotemark)	0x0ad3 (rightdoublequotemark)	
     58    	0x006d (m)	0x004d (M)	0x006d (m)	0x004d (M)	0x00b5 (mu)	0x00ba (masculine)	0x00b5 (mu)	
     59    	0x002c (comma)	0x003b (semicolon)	0x002c (comma)	0x003b (semicolon)	0x00b7 (periodcentered)	0x00d7 (multiply)	0x00b7 (periodcentered)	
     60    	0x002e (period)	0x003a (colon)	0x002e (period)	0x003a (colon)	0x1002026 (U2026)	0x00f7 (division)	0x1002026 (U2026)	
     61    	0x002d (minus)	0x005f (underscore)	0x002d (minus)	0x005f (underscore)	0x0aaa (endash)	0x0aa9 (emdash)	0x0aaa (endash)	
     62    	0xffe2 (Shift_R)	0x0000 (NoSymbol)	0xffe2 (Shift_R)	
     63    	0xffaa (KP_Multiply)	0x1008fe21 (XF86ClearGrab)	0xffaa (KP_Multiply)	0x1008fe21 (XF86ClearGrab)	
     64    	0xffe9 (Alt_L)	0xffe7 (Meta_L)	0xffe9 (Alt_L)	0xffe7 (Meta_L)	
     65    	0x0020 (space)	0x0000 (NoSymbol)	0x0020 (space)	
     66    	0xffe5 (Caps_Lock)	0x0000 (NoSymbol)	0xffe5 (Caps_Lock)	
     67    	0xffbe (F1)	0x1008fe01 (XF86Switch_VT_1)	0xffbe (F1)	0x1008fe01 (XF86Switch_VT_1)	
     68    	0xffbf (F2)	0x1008fe02 (XF86Switch_VT_2)	0xffbf (F2)	0x1008fe02 (XF86Switch_VT_2)	
     69    	0xffc0 (F3)	0x1008fe03 (XF86Switch_VT_3)	0xffc0 (F3)	0x1008fe03 (XF86Switch_VT_3)	
     70    	0xffc1 (F4)	0x1008fe04 (XF86Switch_VT_4)	0xffc1 (F4)	0x1008fe04 (XF86Switch_VT_4)	
     71    	0xffc2 (F5)	0x1008fe05 (XF86Switch_VT_5)	0xffc2 (F5)	0x1008fe05 (XF86Switch_VT_5)	
     72    	0xffc3 (F6)	0x1008fe06 (XF86Switch_VT_6)	0xffc3 (F6)	0x1008fe06 (XF86Switch_VT_6)	
     73    	0xffc4 (F7)	0x1008fe07 (XF86Switch_VT_7)	0xffc4 (F7)	0x1008fe07 (XF86Switch_VT_7)	
     74    	0xffc5 (F8)	0x1008fe08 (XF86Switch_VT_8)	0xffc5 (F8)	0x1008fe08 (XF86Switch_VT_8)	
     75    	0xffc6 (F9)	0x1008fe09 (XF86Switch_VT_9)	0xffc6 (F9)	0x1008fe09 (XF86Switch_VT_9)	
     76    	0xffc7 (F10)	0x1008fe0a (XF86Switch_VT_10)	0xffc7 (F10)	0x1008fe0a (XF86Switch_VT_10)	
     77    	0xff7f (Num_Lock)	0x0000 (NoSymbol)	0xff7f (Num_Lock)	
     78    	0xff14 (Scroll_Lock)	0x0000 (NoSymbol)	0xff14 (Scroll_Lock)	
     79    	0xff95 (KP_Home)	0xffb7 (KP_7)	0xff95 (KP_Home)	0xffb7 (KP_7)	
     80    	0xff97 (KP_Up)	0xffb8 (KP_8)	0xff97 (KP_Up)	0xffb8 (KP_8)	
     81    	0xff9a (KP_Prior)	0xffb9 (KP_9)	0xff9a (KP_Prior)	0xffb9 (KP_9)	
     82    	0xffad (KP_Subtract)	0x1008fe23 (XF86Prev_VMode)	0xffad (KP_Subtract)	0x1008fe23 (XF86Prev_VMode)	
     83    	0xff96 (KP_Left)	0xffb4 (KP_4)	0xff96 (KP_Left)	0xffb4 (KP_4)	
     84    	0xff9d (KP_Begin)	0xffb5 (KP_5)	0xff9d (KP_Begin)	0xffb5 (KP_5)	
     85    	0xff98 (KP_Right)	0xffb6 (KP_6)	0xff98 (KP_Right)	0xffb6 (KP_6)	
     86    	0xffab (KP_Add)	0x1008fe22 (XF86Next_VMode)	0xffab (KP_Add)	0x1008fe22 (XF86Next_VMode)	
     87    	0xff9c (KP_End)	0xffb1 (KP_1)	0xff9c (KP_End)	0xffb1 (KP_1)	
     88    	0xff99 (KP_Down)	0xffb2 (KP_2)	0xff99 (KP_Down)	0xffb2 (KP_2)	
     89    	0xff9b (KP_Next)	0xffb3 (KP_3)	0xff9b (KP_Next)	0xffb3 (KP_3)	
     90    	0xff9e (KP_Insert)	0xffb0 (KP_0)	0xff9e (KP_Insert)	0xffb0 (KP_0)	
     91    	0xff9f (KP_Delete)	0xffac (KP_Separator)	0xff9f (KP_Delete)	0xffac (KP_Separator)	
     92    	0xfe03 (ISO_Level3_Shift)	0x0000 (NoSymbol)	0xfe03 (ISO_Level3_Shift)	
     93    	
     94    	0x003c (less)	0x003e (greater)	0x003c (less)	0x003e (greater)	0x007c (bar)	0x00a6 (brokenbar)	0x007c (bar)	
     95    	0xffc8 (F11)	0x1008fe0b (XF86Switch_VT_11)	0xffc8 (F11)	0x1008fe0b (XF86Switch_VT_11)	
     96    	0xffc9 (F12)	0x1008fe0c (XF86Switch_VT_12)	0xffc9 (F12)	0x1008fe0c (XF86Switch_VT_12)	
     97    	
     98    	0xff26 (Katakana)	0x0000 (NoSymbol)	0xff26 (Katakana)	
     99    	0xff25 (Hiragana)	0x0000 (NoSymbol)	0xff25 (Hiragana)	
    100    	0xff23 (Henkan_Mode)	0x0000 (NoSymbol)	0xff23 (Henkan_Mode)	
    101    	0xff27 (Hiragana_Katakana)	0x0000 (NoSymbol)	0xff27 (Hiragana_Katakana)	
    102    	0xff22 (Muhenkan)	0x0000 (NoSymbol)	0xff22 (Muhenkan)	
    103    	
    104    	0xff8d (KP_Enter)	0x0000 (NoSymbol)	0xff8d (KP_Enter)	
    105    	0xffe4 (Control_R)	0x0000 (NoSymbol)	0xffe4 (Control_R)	
    106    	0xffaf (KP_Divide)	0x1008fe20 (XF86Ungrab)	0xffaf (KP_Divide)	0x1008fe20 (XF86Ungrab)	
    107    	0xff61 (Print)	0xff15 (Sys_Req)	0xff61 (Print)	0xff15 (Sys_Req)	
    108    	0xfe03 (ISO_Level3_Shift)	0x0000 (NoSymbol)	0xfe03 (ISO_Level3_Shift)	
    109    	0xff0a (Linefeed)	0x0000 (NoSymbol)	0xff0a (Linefeed)	
    110    	0xff50 (Home)	0x0000 (NoSymbol)	0xff50 (Home)	
    111    	0xff52 (Up)	0x0000 (NoSymbol)	0xff52 (Up)	
    112    	0xff55 (Prior)	0x0000 (NoSymbol)	0xff55 (Prior)	
    113    	0xff51 (Left)	0x0000 (NoSymbol)	0xff51 (Left)	
    114    	0xff53 (Right)	0x0000 (NoSymbol)	0xff53 (Right)	
    115    	0xff57 (End)	0x0000 (NoSymbol)	0xff57 (End)	
    116    	0xff54 (Down)	0x0000 (NoSymbol)	0xff54 (Down)	
    117    	0xff56 (Next)	0x0000 (NoSymbol)	0xff56 (Next)	
    118    	0xff63 (Insert)	0x0000 (NoSymbol)	0xff63 (Insert)	
    119    	0xffff (Delete)	0x0000 (NoSymbol)	0xffff (Delete)	
    120    	
    121    	0x1008ff12 (XF86AudioMute)	0x0000 (NoSymbol)	0x1008ff12 (XF86AudioMute)	
    122    	0x1008ff11 (XF86AudioLowerVolume)	0x0000 (NoSymbol)	0x1008ff11 (XF86AudioLowerVolume)	
    123    	0x1008ff13 (XF86AudioRaiseVolume)	0x0000 (NoSymbol)	0x1008ff13 (XF86AudioRaiseVolume)	
    124    	0x1008ff2a (XF86PowerOff)	0x0000 (NoSymbol)	0x1008ff2a (XF86PowerOff)	
    125    	0xffbd (KP_Equal)	0x0000 (NoSymbol)	0xffbd (KP_Equal)	
    126    	0x00b1 (plusminus)	0x0000 (NoSymbol)	0x00b1 (plusminus)	
    127    	0xff13 (Pause)	0xff6b (Break)	0xff13 (Pause)	0xff6b (Break)	
    128    	0x1008ff4a (XF86LaunchA)	0x0000 (NoSymbol)	0x1008ff4a (XF86LaunchA)	
    129    	0xffae (KP_Decimal)	0xffae (KP_Decimal)	0xffae (KP_Decimal)	0xffae (KP_Decimal)	
    130    	0xff31 (Hangul)	0x0000 (NoSymbol)	0xff31 (Hangul)	
    131    	0xff34 (Hangul_Hanja)	0x0000 (NoSymbol)	0xff34 (Hangul_Hanja)	
    132    	
    133    	0xffeb (Super_L)	0x0000 (NoSymbol)	0xffeb (Super_L)	
    134    	0xffec (Super_R)	0x0000 (NoSymbol)	0xffec (Super_R)	
    135    	0xff67 (Menu)	0x0000 (NoSymbol)	0xff67 (Menu)	
    136    	0xff69 (Cancel)	0x0000 (NoSymbol)	0xff69 (Cancel)	
    137    	0xff66 (Redo)	0x0000 (NoSymbol)	0xff66 (Redo)	
    138    	0x1005ff70 (SunProps)	0x0000 (NoSymbol)	0x1005ff70 (SunProps)	
    139    	0xff65 (Undo)	0x0000 (NoSymbol)	0xff65 (Undo)	
    140    	0x1005ff71 (SunFront)	0x0000 (NoSymbol)	0x1005ff71 (SunFront)	
    141    	0x1008ff57 (XF86Copy)	0x0000 (NoSymbol)	0x1008ff57 (XF86Copy)	
    142    	0x1005ff73 (SunOpen)	0x0000 (NoSymbol)	0x1005ff73 (SunOpen)	
    143    	0x1008ff6d (XF86Paste)	0x0000 (NoSymbol)	0x1008ff6d (XF86Paste)	
    144    	0xff68 (Find)	0x0000 (NoSymbol)	0xff68 (Find)	
    145    	0x1008ff58 (XF86Cut)	0x0000 (NoSymbol)	0x1008ff58 (XF86Cut)	
    146    	0xff6a (Help)	0x0000 (NoSymbol)	0xff6a (Help)	
    147    	0x1008ff65 (XF86MenuKB)	0x0000 (NoSymbol)	0x1008ff65 (XF86MenuKB)	
    148    	0x1008ff1d (XF86Calculator)	0x0000 (NoSymbol)	0x1008ff1d (XF86Calculator)	
    149    	
    150    	0x1008ff2f (XF86Sleep)	0x0000 (NoSymbol)	0x1008ff2f (XF86Sleep)	
    151    	0x1008ff2b (XF86WakeUp)	0x0000 (NoSymbol)	0x1008ff2b (XF86WakeUp)	
    152    	0x1008ff5d (XF86Explorer)	0x0000 (NoSymbol)	0x1008ff5d (XF86Explorer)	
    153    	0x1008ff7b (XF86Send)	0x0000 (NoSymbol)	0x1008ff7b (XF86Send)	
    154    	
    155    	0x1008ff8a (XF86Xfer)	0x0000 (NoSymbol)	0x1008ff8a (XF86Xfer)	
    156    	0x1008ff41 (XF86Launch1)	0x0000 (NoSymbol)	0x1008ff41 (XF86Launch1)	
    157    	0x1008ff42 (XF86Launch2)	0x0000 (NoSymbol)	0x1008ff42 (XF86Launch2)	
    158    	0x1008ff2e (XF86WWW)	0x0000 (NoSymbol)	0x1008ff2e (XF86WWW)	
    159    	0x1008ff5a (XF86DOS)	0x0000 (NoSymbol)	0x1008ff5a (XF86DOS)	
    160    	0x1008ff2d (XF86ScreenSaver)	0x0000 (NoSymbol)	0x1008ff2d (XF86ScreenSaver)	
    161    	
    162    	0x1008ff74 (XF86RotateWindows)	0x0000 (NoSymbol)	0x1008ff74 (XF86RotateWindows)	
    163    	0x1008ff19 (XF86Mail)	0x0000 (NoSymbol)	0x1008ff19 (XF86Mail)	
    164    	0x1008ff30 (XF86Favorites)	0x0000 (NoSymbol)	0x1008ff30 (XF86Favorites)	
    165    	0x1008ff33 (XF86MyComputer)	0x0000 (NoSymbol)	0x1008ff33 (XF86MyComputer)	
    166    	0x1008ff26 (XF86Back)	0x0000 (NoSymbol)	0x1008ff26 (XF86Back)	
    167    	0x1008ff27 (XF86Forward)	0x0000 (NoSymbol)	0x1008ff27 (XF86Forward)	
    168    	
    169    	0x1008ff2c (XF86Eject)	0x0000 (NoSymbol)	0x1008ff2c (XF86Eject)	
    170    	0x1008ff2c (XF86Eject)	0x1008ff2c (XF86Eject)	0x1008ff2c (XF86Eject)	0x1008ff2c (XF86Eject)	
    171    	0x1008ff17 (XF86AudioNext)	0x0000 (NoSymbol)	0x1008ff17 (XF86AudioNext)	
    172    	0x1008ff14 (XF86AudioPlay)	0x1008ff31 (XF86AudioPause)	0x1008ff14 (XF86AudioPlay)	0x1008ff31 (XF86AudioPause)	
    173    	0x1008ff16 (XF86AudioPrev)	0x0000 (NoSymbol)	0x1008ff16 (XF86AudioPrev)	
    174    	0x1008ff15 (XF86AudioStop)	0x1008ff2c (XF86Eject)	0x1008ff15 (XF86AudioStop)	0x1008ff2c (XF86Eject)	
    175    	0x1008ff1c (XF86AudioRecord)	0x0000 (NoSymbol)	0x1008ff1c (XF86AudioRecord)	
    176    	0x1008ff3e (XF86AudioRewind)	0x0000 (NoSymbol)	0x1008ff3e (XF86AudioRewind)	
    177    	0x1008ff6e (XF86Phone)	0x0000 (NoSymbol)	0x1008ff6e (XF86Phone)	
    178    	
    179    	0x1008ff81 (XF86Tools)	0x0000 (NoSymbol)	0x1008ff81 (XF86Tools)	
    180    	0x1008ff18 (XF86HomePage)	0x0000 (NoSymbol)	0x1008ff18 (XF86HomePage)	
    181    	0x1008ff73 (XF86Reload)	0x0000 (NoSymbol)	0x1008ff73 (XF86Reload)	
    182    	0x1008ff56 (XF86Close)	0x0000 (NoSymbol)	0x1008ff56 (XF86Close)	
    183    	
    184    	
    185    	0x1008ff78 (XF86ScrollUp)	0x0000 (NoSymbol)	0x1008ff78 (XF86ScrollUp)	
    186    	0x1008ff79 (XF86ScrollDown)	0x0000 (NoSymbol)	0x1008ff79 (XF86ScrollDown)	
    187    	0x0028 (parenleft)	0x0000 (NoSymbol)	0x0028 (parenleft)	
    188    	0x0029 (parenright)	0x0000 (NoSymbol)	0x0029 (parenright)	
    189    	0x1008ff68 (XF86New)	0x0000 (NoSymbol)	0x1008ff68 (XF86New)	
    190    	0xff66 (Redo)	0x0000 (NoSymbol)	0xff66 (Redo)	
    191    	0x1008ff81 (XF86Tools)	0x0000 (NoSymbol)	0x1008ff81 (XF86Tools)	
    192    	0x1008ff45 (XF86Launch5)	0x0000 (NoSymbol)	0x1008ff45 (XF86Launch5)	
    193    	0x1008ff46 (XF86Launch6)	0x0000 (NoSymbol)	0x1008ff46 (XF86Launch6)	
    194    	0x1008ff47 (XF86Launch7)	0x0000 (NoSymbol)	0x1008ff47 (XF86Launch7)	
    195    	0x1008ff48 (XF86Launch8)	0x0000 (NoSymbol)	0x1008ff48 (XF86Launch8)	
    196    	0x1008ff49 (XF86Launch9)	0x0000 (NoSymbol)	0x1008ff49 (XF86Launch9)	
    197    	
    198    	
    199    	0x1008ffa9 (XF86TouchpadToggle)	0x0000 (NoSymbol)	0x1008ffa9 (XF86TouchpadToggle)	
    200    	0x1008ffb0 (XF86TouchpadOn)	0x0000 (NoSymbol)	0x1008ffb0 (XF86TouchpadOn)	
    201    	0x1008ffb1 (XF86TouchpadOff)	0x0000 (NoSymbol)	0x1008ffb1 (XF86TouchpadOff)	
    202    	
    203    	0xff7e (Mode_switch)	0x0000 (NoSymbol)	0xff7e (Mode_switch)	
    204    	0x0000 (NoSymbol)	0xffe9 (Alt_L)	0x0000 (NoSymbol)	0xffe9 (Alt_L)	
    205    	0x0000 (NoSymbol)	0xffe7 (Meta_L)	0x0000 (NoSymbol)	0xffe7 (Meta_L)	
    206    	0x0000 (NoSymbol)	0xffeb (Super_L)	0x0000 (NoSymbol)	0xffeb (Super_L)	
    207    	0x0000 (NoSymbol)	0xffed (Hyper_L)	0x0000 (NoSymbol)	0xffed (Hyper_L)	
    208    	0x1008ff14 (XF86AudioPlay)	0x0000 (NoSymbol)	0x1008ff14 (XF86AudioPlay)	
    209    	0x1008ff31 (XF86AudioPause)	0x0000 (NoSymbol)	0x1008ff31 (XF86AudioPause)	
    210    	0x1008ff43 (XF86Launch3)	0x0000 (NoSymbol)	0x1008ff43 (XF86Launch3)	
    211    	0x1008ff44 (XF86Launch4)	0x0000 (NoSymbol)	0x1008ff44 (XF86Launch4)	
    212    	0x1008ff4b (XF86LaunchB)	0x0000 (NoSymbol)	0x1008ff4b (XF86LaunchB)	
    213    	0x1008ffa7 (XF86Suspend)	0x0000 (NoSymbol)	0x1008ffa7 (XF86Suspend)	
    214    	0x1008ff56 (XF86Close)	0x0000 (NoSymbol)	0x1008ff56 (XF86Close)	
    215    	0x1008ff14 (XF86AudioPlay)	0x0000 (NoSymbol)	0x1008ff14 (XF86AudioPlay)	
    216    	0x1008ff97 (XF86AudioForward)	0x0000 (NoSymbol)	0x1008ff97 (XF86AudioForward)	
    217    	
    218    	0xff61 (Print)	0x0000 (NoSymbol)	0xff61 (Print)	
    219    	
    220    	0x1008ff8f (XF86WebCam)	0x0000 (NoSymbol)	0x1008ff8f (XF86WebCam)	
    221    	
    222    	
    223    	0x1008ff19 (XF86Mail)	0x0000 (NoSymbol)	0x1008ff19 (XF86Mail)	
    224    	0x1008ff8e (XF86Messenger)	0x0000 (NoSymbol)	0x1008ff8e (XF86Messenger)	
    225    	0x1008ff1b (XF86Search)	0x0000 (NoSymbol)	0x1008ff1b (XF86Search)	
    226    	0x1008ff5f (XF86Go)	0x0000 (NoSymbol)	0x1008ff5f (XF86Go)	
    227    	0x1008ff3c (XF86Finance)	0x0000 (NoSymbol)	0x1008ff3c (XF86Finance)	
    228    	0x1008ff5e (XF86Game)	0x0000 (NoSymbol)	0x1008ff5e (XF86Game)	
    229    	0x1008ff36 (XF86Shop)	0x0000 (NoSymbol)	0x1008ff36 (XF86Shop)	
    230    	
    231    	0xff69 (Cancel)	0x0000 (NoSymbol)	0xff69 (Cancel)	
    232    	0x1008ff03 (XF86MonBrightnessDown)	0x0000 (NoSymbol)	0x1008ff03 (XF86MonBrightnessDown)	
    233    	0x1008ff02 (XF86MonBrightnessUp)	0x0000 (NoSymbol)	0x1008ff02 (XF86MonBrightnessUp)	
    234    	0x1008ff32 (XF86AudioMedia)	0x0000 (NoSymbol)	0x1008ff32 (XF86AudioMedia)	
    235    	0x1008ff59 (XF86Display)	0x0000 (NoSymbol)	0x1008ff59 (XF86Display)	
    236    	0x1008ff04 (XF86KbdLightOnOff)	0x0000 (NoSymbol)	0x1008ff04 (XF86KbdLightOnOff)	
    237    	0x1008ff06 (XF86KbdBrightnessDown)	0x0000 (NoSymbol)	0x1008ff06 (XF86KbdBrightnessDown)	
    238    	0x1008ff05 (XF86KbdBrightnessUp)	0x0000 (NoSymbol)	0x1008ff05 (XF86KbdBrightnessUp)	
    239    	0x1008ff7b (XF86Send)	0x0000 (NoSymbol)	0x1008ff7b (XF86Send)	
    240    	0x1008ff72 (XF86Reply)	0x0000 (NoSymbol)	0x1008ff72 (XF86Reply)	
    241    	0x1008ff90 (XF86MailForward)	0x0000 (NoSymbol)	0x1008ff90 (XF86MailForward)	
    242    	0x1008ff77 (XF86Save)	0x0000 (NoSymbol)	0x1008ff77 (XF86Save)	
    243    	0x1008ff5b (XF86Documents)	0x0000 (NoSymbol)	0x1008ff5b (XF86Documents)	
    244    	0x1008ff93 (XF86Battery)	0x0000 (NoSymbol)	0x1008ff93 (XF86Battery)	
    245    	0x1008ff94 (XF86Bluetooth)	0x0000 (NoSymbol)	0x1008ff94 (XF86Bluetooth)	
    246    	0x1008ff95 (XF86WLAN)	0x0000 (NoSymbol)	0x1008ff95 (XF86WLAN)	
    247    	
    248    	
    249    	
    250    	
    251    	
    252    	
    253    	
    254    	
    255    	

Offline

#5 2011-08-18 14:37:40

BurntSushi
Member
From: Massachusetts
Registered: 2009-06-28
Posts: 362
Website

Re: Vim-like window marking for any EWMH window manager

Army wrote:
BurntSushi wrote:

It'll be long, so make sure to wrap it in [ code ] tags :-) Thanks!

Hey, I never missed using them! tongue

My apologies, just playing it safe :-)

Anyway, the good news is your xmodmap output shows what I guessed was the problem when you first posted; so I've already added a bug fix. If you're using yaourt, then a 'yaourt -Syua' should set you straight. If you're installing manually, you'll need to grab fresh versions of xpybutil-git and window-marker-git.

The problem is that window-marker uses "Mod4-apostrophe" by default; and your 'apostrophe' keysym wasn't the first in the list for its corresponding keycode. So I've fixed my libraries to support a keysym being in any position in the list instead of assuming it was first. X key mapping is a bitch, unfortunately.

In either case, if you get the same error, could you try changing the keybindings to see if that works?

window-marker --mark 'Mod4-m' --goto 'Mod4-g'

By the way, you have an interesting key map. Your number sign is on the same key as your apostrophe? What kind of keyboard do you have?

Last edited by BurntSushi (2011-08-18 14:38:39)


Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.

Tu ne cede malis sed contra audentior ito

Offline

#6 2011-08-18 20:01:58

Army
Member
Registered: 2007-12-07
Posts: 1,784

Re: Vim-like window marking for any EWMH window manager

BurntSushi wrote:

By the way, you have an interesting key map. Your number sign is on the same key as your apostrophe? What kind of keyboard do you have?

It's a german qwertz keyboard, see here.
Back to your application:
The command line you gave as an example happens to be exactly the one I intended to try. I launched this command line, highlighted the browser, typed a (Super+m)+b, went to a urxvt terminal, typed (Super+g)+b and this is my output.

% window-marker --mark 'Mod4-m' --goto 'Mod4-g'
Traceback (most recent call last):
  File "/usr/bin/window-marker", line 130, in <module>
    event.event_loop(conn)
  File "/usr/lib/python2.7/site-packages/xpybutil/event.py", line 104, in event_loop
    cb(e)
  File "/usr/bin/window-marker", line 87, in cb_get_letter
    grabbing(letter.lower())
  File "/usr/bin/window-marker", line 61, in do_goto_window
    ewmh.request_current_desktop_checked(conn, wdesk).check()
  File "/usr/lib/python2.7/site-packages/xpybutil/ewmh.py", line 524, in request_current_desktop_checked
    [desktop_number, timestamp])
  File "/usr/lib/python2.7/site-packages/xpybutil/util.py", line 169, in root_send_client_event_checked
    data))
  File "/usr/lib/python2.7/site-packages/xpybutil/util.py", line 150, in _root_send_client_event_pack
    *data # Data
struct.error: cannot convert argument to integer

I use i3 (version 3, see AUR package i3-wm-old) as window manager, if that helps...

It might be that some wonder why I'm interested in this window-marker, because i3 already has something like this implemented. That's true, but
1. it works a little bit different
2. it's always good to know stuff like that in case for some reason I'll go away from i3 again

Offline

#7 2011-08-18 21:38:38

BurntSushi
Member
From: Massachusetts
Registered: 2009-06-28
Posts: 362
Website

Re: Vim-like window marking for any EWMH window manager

Army wrote:

It's a german qwertz keyboard, see here.

Wow. Well, I'm happy to see now that my keybinding libraries work with a keyboard like that! Thanks for helping me with that :-)

Army wrote:

Back to your application:
The command line you gave as an example happens to be exactly the one I intended to try. I launched this command line, highlighted the browser, typed a (Super+m)+b, went to a urxvt terminal, typed (Super+g)+b and this is my output.

...

I use i3 (version 3, see AUR package i3-wm-old) as window manager, if that helps...

Total bummer. You've got to use an EWMH-compliant window manager, and i3 just doesn't cut it. I actually installed it and tried to get it working (going so far as to ignore the desktop switching and just trying to send an "activate window" message to the apropriate window, but no dice there either). Sorry :-(

Army wrote:

It might be that some wonder why I'm interested in this window-marker, because i3 already has something like this implemented. That's true, but
1. it works a little bit different
2. it's always good to know stuff like that in case for some reason I'll go away from i3 again

Yeah, when I started working on my own window manager at the beginning of this year, I checked out i3 for ideas and the window marking was one that I found pretty neat. I sort-of forgot about it until yesterday when I said, "Hmmm I sure could use vim-like window marking."

Otherwise, my tool should work for most window managers. (I tested it on KWin too.) Even window managers that barely support EWMH; unfortunately i3 doesn't even do that. (It is otherwise a very cool WM though, it's probably my third or fourth favorite.)


Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.

Tu ne cede malis sed contra audentior ito

Offline

#8 2011-08-18 22:42:09

VCoolio
Member
From: Netherlands
Registered: 2010-01-05
Posts: 120

Re: Vim-like window marking for any EWMH window manager

Cool stuff. Works with e17, just wanted to mention that. Now let's see if I can make a habit of using this smile.

Offline

#9 2011-08-19 08:47:53

Army
Member
Registered: 2007-12-07
Posts: 1,784

Re: Vim-like window marking for any EWMH window manager

BurntSushi wrote:

Total bummer. You've got to use an EWMH-compliant window manager, and i3 just doesn't cut it. I actually installed it and tried to get it working (going so far as to ignore the desktop switching and just trying to send an "activate window" message to the apropriate window, but no dice there either). Sorry :-(

Not a problem, the lack of EWMH-compliance is the biggest criticism I have with i3. I'll test the new version of i3, maybe it's more EWMH-compliant (I actually guess it is)

Offline

Board footer

Powered by FluxBB