Page 1 of 2 12 LastLast
Results 1 to 10 of 13

Thread: Pulling text out of a file

  1. #1
    Join Date
    Oct 2010
    Location
    The United States
    Beans
    843
    Distro
    Ubuntu

    Pulling text out of a file

    Hi Folks,

    This is probably pretty simple for someone who has a better understanding of grep than I do.
    I have an xml file that has a lot of data in this format:

    Code:
    </keybind>
        <keybind key="C-A-D">
          <action name="Execute">
          <command>thunar</command>
        </action>
      </keybind>
    Does anyone know how I make a list from that file? Specifically what I want is:
    Code:
    Key C-A-D thunar
    Thank you,
    GG -----------

  2. #2
    Join Date
    Feb 2007
    Location
    West Hills CA
    Beans
    10,044
    Distro
    Ubuntu 14.04 Trusty Tahr

    Re: Pulling text out of a file

    Since the file is in XML format, I would use an XML tool:

    Code:
    apropos xml
    xmlcatalog (1) - Command line tool to parse and manipulate XML or SGML catalog files.
    xmllint (1) - command line XML tool

    Code:
    man xmllint
    -------------------------------------
    Oooh Shiny: PopularPages

    Unumquodque potest reparantur. Patientia sit virtus.

  3. #3
    Join Date
    Oct 2010
    Location
    The United States
    Beans
    843
    Distro
    Ubuntu

    Re: Pulling text out of a file

    Ok thanks - all I want to do is just save the keyboard shortcuts listed in the xml file as a list in a text file.
    Last edited by GrouchyGaijin; June 1st, 2014 at 09:26 PM. Reason: typo
    Thank you,
    GG -----------

  4. #4
    Join Date
    Apr 2012
    Beans
    7,256

    Re: Pulling text out of a file

    OK so this is my first ever attempt at a python DOM parser, so it will be a miracle if it works (but it might be enough to get you started)

    Code:
    #!/usr/bin/python
    
    import sys
    from xml.dom import minidom
    
    # obviously we should check that argv[1] exists and is readable
    xmldoc = minidom.parse(sys.argv[1])
    
    keylist = xmldoc.getElementsByTagName('keybind')
    for k in keylist :
        alist = k.getElementsByTagName('action')
        for a in alist :
            if a.attributes['name'].value == "Execute":
                clist = a.getElementsByTagName('command')
                for c in clist :
                    print "Key %s %s" % (k.attributes['key'].value, \
                    c.childNodes[0].nodeValue)
    Tested on your sample
    Code:
    $ cat test.xml
    <keybind key="C-A-D">
        <action name="Execute">
            <command>thunar</command>
        </action>
    </keybind>
    Code:
    $ ./domparse.py test.xml
    Key C-A-D thunar
    REFS:
    http://www.diveintopython.net/xml_pr...dnodes.example
    http://stackoverflow.com/questions/3...minidom-python

  5. #5
    Join Date
    Mar 2014
    Beans
    Hidden!

    Re: Pulling text out of a file

    Hi steeldriver,
    The script works with what you were given,
    however doesn't pick up all shortcuts in an rc.xml file.
    Not all shortcuts use <action name="Execute">
    eg
    Keybindings for window actions have their own syntax...
    Code:
    </keybind>
        <keybind key="W-Right">        # HalfRightScreen
          <action name="UnmaximizeFull"/>
          <action name="MoveResizeTo">
            <x>-0</x>
            <y>0</y>
            <height>97%</height>
            <width>50%</width>
          </action>
        </keybind>
        <keybind key="W-Up">        # HalfUpperScreen
          <action name="UnmaximizeFull"/>
          <action name="MoveResizeTo">
            <x>0</x>
            <y>0</y>
            <width>100%</width>
            <height>50%</height>
          </action>
        </keybind>
        <keybind key="W-Down">        # HalfLowerScreen
          <action name="UnmaximizeFull"/>
          <action name="MoveResizeTo">
            <x>0</x>
            <y>-0</y>
            <width>100%</width>
            <height>50%</height>
          </action>
        </keybind>
        <!-- Keybindings for running applications on Home + E -->
        <keybind key="W-e">
          <action name="Execute">
            <startupnotify>
              <enabled>true</enabled>
              <name>PCManFM</name>
            </startupnotify>
            <command>pcmanfm</command>
          </action>
        </keybind>
    Sample rc.xml ...
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Do not edit this file, it will be overwritten on install.
            Copy the file to $HOME/.config/openbox/ instead. -->
    <openbox_config xmlns="http://openbox.org/3.4/rc" xmlns:xi="http://www.w3.org/2001/XInclude">
      <resistance>
        <strength>10</strength>
        <screen_edge_strength>20</screen_edge_strength>
      </resistance>
      <focus>
        <focusNew>yes</focusNew>
        <!-- always try to focus new windows when they appear. other rules do
           apply -->
        <followMouse>no</followMouse>
        <!-- move focus to a window when you move the mouse into it -->
        <focusLast>yes</focusLast>
        <!-- focus the last used window when changing desktops, instead of the one
           under the mouse pointer. when followMouse is enabled -->
        <underMouse>no</underMouse>
        <!-- move focus under the mouse, even when the mouse is not moving -->
        <focusDelay>200</focusDelay>
        <!-- when followMouse is enabled, the mouse must be inside the window for
           this many milliseconds (1000 = 1 sec) before moving focus to it -->
        <raiseOnFocus>no</raiseOnFocus>
        <!-- when followMouse is enabled, and a window is given focus by moving the
           mouse into it, also raise the window -->
      </focus>
      <placement>
        <policy>Smart</policy>
        <!-- 'Smart' or 'UnderMouse' -->
        <center>yes</center>
        <!-- whether to place windows in the center of the free area found or
           the top left corner -->
        <monitor>Mouse</monitor>
        <!-- with Smart placement on a multi-monitor system, try to place new windows
           on: 'Any' - any monitor, 'Mouse' - where the mouse is, 'Active' - where
           the active window is, 'Primary' - only on the primary monitor -->
        <primaryMonitor>Mouse</primaryMonitor>
        <!-- The monitor where Openbox should place popup dialogs such as the
           focus cycling popup, or the desktop switch popup.  It can be an index
           from 1, specifying a particular monitor.  Or it can be one of the
           following: 'Mouse' - where the mouse is, or
                      'Active' - where the active window is -->
      </placement>
      <theme>
        <name>Lubuntu-default</name>
        <titleLayout>NLIMC</titleLayout>
        <!--
          available characters are NDSLIMC, each can occur at most once.
          N: window icon
          L: window label (AKA title).
          I: iconify
          M: maximize
          C: close
          S: shade (roll up/down)
          D: omnipresent (on all desktops).
      -->
        <keepBorder>yes</keepBorder>
        <animateIconify>yes</animateIconify>
        <font place="ActiveWindow">
          <name>Ubuntu Medium</name>
          <size>11</size>
          <!-- font size in points -->
          <weight>bold</weight>
          <!-- 'bold' or 'normal' -->
          <slant>normal</slant>
          <!-- 'italic' or 'normal' -->
        </font>
        <font place="InactiveWindow">
          <name>Ubuntu Medium</name>
          <size>11</size>
          <!-- font size in points -->
          <weight>bold</weight>
          <!-- 'bold' or 'normal' -->
          <slant>normal</slant>
          <!-- 'italic' or 'normal' -->
        </font>
        <font place="MenuHeader">
          <name>Ubuntu</name>
          <size>11</size>
          <!-- font size in points -->
          <weight>normal</weight>
          <!-- 'bold' or 'normal' -->
          <slant>normal</slant>
          <!-- 'italic' or 'normal' -->
        </font>
        <font place="MenuItem">
          <name>Ubuntu</name>
          <size>11</size>
          <!-- font size in points -->
          <weight>normal</weight>
          <!-- 'bold' or 'normal' -->
          <slant>normal</slant>
          <!-- 'italic' or 'normal' -->
        </font>
        <font place="ActiveOnScreenDisplay">
          <name>Ubuntu Medium</name>
          <size>11</size>
          <!-- font size in points -->
          <weight>bold</weight>
          <!-- 'bold' or 'normal' -->
          <slant>normal</slant>
          <!-- 'italic' or 'normal' -->
        </font>
        <font place="InactiveOnScreenDisplay">
          <name>Ubuntu Medium</name>
          <size>11</size>
          <!-- font size in points -->
          <weight>bold</weight>
          <!-- 'bold' or 'normal' -->
          <slant>normal</slant>
          <!-- 'italic' or 'normal' -->
        </font>
      </theme>
      <desktops>
        <!-- this stuff is only used at startup, pagers allow you to change them
           during a session
    
           these are default values to use when other ones are not already set
           by other applications, or saved in your session
    
           use obconf if you want to change these without having to log out
           and back in -->
        <number>2</number>
        <firstdesk>1</firstdesk>
        <names>
          <!-- set names up here if you want to, like this:
        <name>desktop 1</name>
        <name>desktop 2</name>
        -->
        </names>
        <popupTime>875</popupTime>
        <!-- The number of milliseconds to show the popup for when switching
           desktops.  Set this to 0 to disable the popup. -->
      </desktops>
      <resize>
        <drawContents>no</drawContents>
        <popupShow>Nonpixel</popupShow>
        <!-- 'Always', 'Never', or 'Nonpixel' (xterms and such) -->
        <popupPosition>Center</popupPosition>
        <!-- 'Center', 'Top', or 'Fixed' -->
        <popupFixedPosition>
          <!-- these are used if popupPosition is set to 'Fixed' -->
          <x>10</x>
          <!-- positive number for distance from left edge, negative number for
             distance from right edge, or 'Center' -->
          <y>10</y>
          <!-- positive number for distance from top edge, negative number for
             distance from bottom edge, or 'Center' -->
        </popupFixedPosition>
      </resize>
      <!-- You can reserve a portion of your screen where windows will not cover when
         they are maximized, or when they are initially placed.
         Many programs reserve space automatically, but you can use this in other
         cases. -->
      <margins>
        <top>0</top>
        <bottom>0</bottom>
        <left>0</left>
        <right>0</right>
      </margins>
      <dock>
        <position>TopLeft</position>
        <!-- (Top|Bottom)(Left|Right|)|Top|Bottom|Left|Right|Floating -->
        <floatingX>0</floatingX>
        <floatingY>0</floatingY>
        <noStrut>no</noStrut>
        <stacking>Above</stacking>
        <!-- 'Above', 'Normal', or 'Below' -->
        <direction>Vertical</direction>
        <!-- 'Vertical' or 'Horizontal' -->
        <autoHide>no</autoHide>
        <hideDelay>300</hideDelay>
        <!-- in milliseconds (1000 = 1 second) -->
        <showDelay>300</showDelay>
        <!-- in milliseconds (1000 = 1 second) -->
        <moveButton>Middle</moveButton>
        <!-- 'Left', 'Middle', 'Right' -->
      </dock>
      <keyboard>
        <chainQuitKey>C-g</chainQuitKey>
        <!-- Keybindings for desktop switching -->
        <keybind key="C-A-Left">
          <action name="GoToDesktop">
            <to>left</to>
            <wrap>no</wrap>
          </action>
        </keybind>
        <keybind key="C-A-Right">
          <action name="GoToDesktop">
            <to>right</to>
            <wrap>no</wrap>
          </action>
        </keybind>
        <keybind key="C-A-Up">
          <action name="GoToDesktop">
            <to>up</to>
            <wrap>no</wrap>
          </action>
        </keybind>
        <keybind key="C-A-Down">
          <action name="GoToDesktop">
            <to>down</to>
            <wrap>no</wrap>
          </action>
        </keybind>
        <keybind key="S-A-Left">
          <action name="SendToDesktop">
            <to>left</to>
            <wrap>no</wrap>
          </action>
        </keybind>
        <keybind key="S-A-Right">
          <action name="SendToDesktop">
            <to>right</to>
            <wrap>no</wrap>
          </action>
        </keybind>
        <keybind key="S-A-Up">
          <action name="SendToDesktop">
            <to>up</to>
            <wrap>no</wrap>
          </action>
        </keybind>
        <keybind key="S-A-Down">
          <action name="SendToDesktop">
            <to>down</to>
            <wrap>no</wrap>
          </action>
        </keybind>
        <keybind key="W-F1">
          <action name="GoToDesktop">
            <to>1</to>
          </action>
        </keybind>
        <keybind key="W-F2">
          <action name="GoToDesktop">
            <to>2</to>
          </action>
        </keybind>
        <keybind key="W-F3">
          <action name="GoToDesktop">
            <to>3</to>
          </action>
        </keybind>
        <keybind key="W-F4">
          <action name="GoToDesktop">
            <to>4</to>
          </action>
        </keybind>
        <keybind key="W-d">
          <action name="ToggleShowDesktop"/>
        </keybind>
        <!-- Keybindings for windows -->
        <keybind key="A-F4">
          <action name="Close"/>
        </keybind>
        <keybind key="A-Escape">
          <action name="Lower"/>
          <action name="FocusToBottom"/>
          <action name="Unfocus"/>
        </keybind>
        <keybind key="A-space">
          <action name="ShowMenu">
            <menu>client-menu</menu>
          </action>
        </keybind>
        <!-- Take a screenshot of the current window with scrot when Alt+Print are pressed -->
        <keybind key="A-Print">
          <action name="Execute">
            <command>lxsession-default screenshot window</command>
          </action>
        </keybind>
        <!-- Keybindings for window switching -->
        <keybind key="A-Tab">
          <action name="NextWindow">
            <dialog>icons</dialog>
            <finalactions>
              <action name="Focus"/>
              <action name="Raise"/>
              <action name="Unshade"/>
            </finalactions>
          </action>
        </keybind>
        <keybind key="A-S-Tab">
          <action name="PreviousWindow">
            <finalactions>
              <action name="Focus"/>
              <action name="Raise"/>
              <action name="Unshade"/>
            </finalactions>
          </action>
        </keybind>
        <keybind key="C-A-Tab">
          <action name="NextWindow">
            <panels>yes</panels>
            <desktop>yes</desktop>
            <finalactions>
              <action name="Focus"/>
              <action name="Raise"/>
              <action name="Unshade"/>
            </finalactions>
          </action>
        </keybind>
        <!-- Keybindings for window switching with the arrow keys -->
        <keybind key="W-S-Right">
          <action name="DirectionalCycleWindows">
            <direction>right</direction>
          </action>
        </keybind>
        <keybind key="W-S-Left">
          <action name="DirectionalCycleWindows">
            <direction>left</direction>
          </action>
        </keybind>
        <keybind key="W-S-Up">
          <action name="DirectionalCycleWindows">
            <direction>up</direction>
          </action>
        </keybind>
        <keybind key="W-S-Down">
          <action name="DirectionalCycleWindows">
            <direction>down</direction>
          </action>
        </keybind>
        <!-- Keybindings for window tiling -->
        <keybind key="W-Left">        # HalfLeftScreen
          <action name="UnmaximizeFull"/>
          <action name="MoveResizeTo">
            <x>0</x>
            <y>0</y>
            <height>97%</height>
            <width>50%</width>
          </action>
        </keybind>
        <keybind key="W-Right">        # HalfRightScreen
          <action name="UnmaximizeFull"/>
          <action name="MoveResizeTo">
            <x>-0</x>
            <y>0</y>
            <height>97%</height>
            <width>50%</width>
          </action>
        </keybind>
        <keybind key="W-Up">        # HalfUpperScreen
          <action name="UnmaximizeFull"/>
          <action name="MoveResizeTo">
            <x>0</x>
            <y>0</y>
            <width>100%</width>
            <height>50%</height>
          </action>
        </keybind>
        <keybind key="W-Down">        # HalfLowerScreen
          <action name="UnmaximizeFull"/>
          <action name="MoveResizeTo">
            <x>0</x>
            <y>-0</y>
            <width>100%</width>
            <height>50%</height>
          </action>
        </keybind>
        <!-- Keybindings for running applications on Home + E -->
        <keybind key="W-e">
          <action name="Execute">
            <startupnotify>
              <enabled>true</enabled>
              <name>PCManFM</name>
            </startupnotify>
            <command>pcmanfm</command>
          </action>
        </keybind>
        <!-- Keybindings for running Run menu from Lxpanel on Home + R-->
        <keybind key="W-r">
          <action name="Execute">
            <command>lxpanelctl run</command>
          </action>
        </keybind>
        <keybind key="A-F2">
          <action name="Execute">
            <command>lxpanelctl run</command>
          </action>
        </keybind>
        <!-- Keybindings for running Menu from Lxpanel -->
        <keybind key="A-F1">
          <action name="Execute">
            <command>lxpanelctl menu</command>
          </action>
        </keybind>
        <keybind key="C-Escape">
          <action name="Execute">
            <command>lxpanelctl menu</command>
          </action>
        </keybind>
        <!-- Keybindings to toggle fullscreen -->
        <keybind key="F11">
          <action name="ToggleFullscreen"/>
        </keybind>
        <!-- Launch task manager on Ctrl + Alt + Del-->
        <keybind key="C-A-Delete">
          <action name="Execute">
            <command>lxtask</command>
          </action>
        </keybind>
        <!-- Launch a terminal on Ctrl + Alt + T-->
        <keybind key="C-A-T">
          <action name="Execute">
            <command>lxsession-default terminal</command>
          </action>
        </keybind>
        <!-- Launch a filemanager on Ctrl + Alt + D-->
        <keybind key="C-A-D">
          <action name="Execute">
            <startupnotify>
              <enabled>true</enabled>
              <name>PCManFM</name>
            </startupnotify>
            <command>pcmanfm</command>
          </action>
        </keybind>
        <!-- Lock the screen on Ctrl + Alt + l-->
        <keybind key="C-A-l">
          <action name="Execute">
            <command>xscreensaver-command -lock</command>
          </action>
        </keybind>
        <!-- Keybinding for Volume management -->
        <keybind key="XF86AudioRaiseVolume">
            <action name="Execute">
                <command>amixer -q sset Master 3%+ unmute</command>
            </action>
        </keybind>
        <keybind key="XF86AudioLowerVolume">
            <action name="Execute">
                <command>amixer -q sset Master 3%- unmute</command>
            </action>
        </keybind>
        <keybind key="XF86AudioMute">
            <action name="Execute">
                <command>amixer -q sset Master toggle</command>
            </action>
        </keybind>
        <!-- Keybinding for terminal button-->
        <keybind key="XF86WWW">
          <action name="Execute">
            <command>lxsession-default terminal</command>
          </action>
        </keybind>
        <keybind key="XF86Terminal">
          <action name="Execute">
            <command>lxsession-default terminal</command>
          </action>
        </keybind>
        <!-- Keybinding for calculator button-->
        <keybind key="XF86Calculator">
          <action name="Execute">
            <command>galculator</command>
          </action>
        </keybind>
        <!-- Keybinding for computer button-->
        <keybind key="XF86MyComputer">
          <action name="Execute">
            <command>pcmanfm</command>
          </action>
        </keybind>
        <!-- Keybindings for Multimedia Keys and LCD Backlight (alternative when not using gnome-power-manager or xfce4-volumed) -->
        <keybind key="C-F7">
          <action name="Execute">
            <command>sleep 2;xset dpms force off</command>
          </action>
        </keybind>
        <keybind key="C-F10">
          <action name="Execute">
            <command>xbacklight -dec 10</command>
          </action>
        </keybind>
        <keybind key="C-F11">
          <action name="Execute">
            <command>xbacklight -inc 10</command>
          </action>
        </keybind>
        <!-- Launch scrot when Print is pressed -->
        <keybind key="Print">
          <action name="Execute">
            <command>lxsession-default screenshot</command>
          </action>
        </keybind>
        <!-- Launch logout when push on the shutdown button -->
        <keybind key="XF86PowerOff">
          <action name="Execute">
            <command>lxsession-default quit</command>
          </action>
        </keybind>
      </keyboard>
      <mouse>
        <dragThreshold>8</dragThreshold>
        <!-- number of pixels the mouse must move before a drag begins -->
        <doubleClickTime>200</doubleClickTime>
        <!-- in milliseconds (1000 = 1 second) -->
        <screenEdgeWarpTime>400</screenEdgeWarpTime>
        <!-- Time before changing desktops when the pointer touches the edge of the
           screen while moving a window, in milliseconds (1000 = 1 second).
           Set this to 0 to disable warping -->
        <screenEdgeWarpMouse>false</screenEdgeWarpMouse>
        <!-- Set this to TRUE to move the mouse pointer across the desktop when
           switching due to hitting the edge of the screen -->
        <context name="Frame">
          <mousebind button="A-Left" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
          </mousebind>
          <mousebind button="A-Left" action="Click">
            <action name="Unshade"/>
          </mousebind>
          <mousebind button="A-Left" action="Drag">
            <action name="Move"/>
          </mousebind>
          <mousebind button="A-Right" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="Unshade"/>
          </mousebind>
          <mousebind button="A-Right" action="Drag">
            <action name="Resize"/>
          </mousebind>
          <mousebind button="A-Middle" action="Press">
            <action name="Lower"/>
            <action name="FocusToBottom"/>
            <action name="Unfocus"/>
          </mousebind>
          <mousebind button="A-Up" action="Click">
            <action name="GoToDesktop">
              <to>previous</to>
            </action>
          </mousebind>
          <mousebind button="A-Down" action="Click">
            <action name="GoToDesktop">
              <to>next</to>
            </action>
          </mousebind>
          <mousebind button="C-A-Up" action="Click">
            <action name="GoToDesktop">
              <to>previous</to>
            </action>
          </mousebind>
          <mousebind button="C-A-Down" action="Click">
            <action name="GoToDesktop">
              <to>next</to>
            </action>
          </mousebind>
          <mousebind button="A-S-Up" action="Click">
            <action name="SendToDesktop">
              <to>previous</to>
            </action>
          </mousebind>
          <mousebind button="A-S-Down" action="Click">
            <action name="SendToDesktop">
              <to>next</to>
            </action>
          </mousebind>
        </context>
        <context name="Titlebar">
          <mousebind button="Left" action="Drag">
            <action name="Move"/>
          </mousebind>
          <mousebind button="Left" action="DoubleClick">
            <action name="ToggleMaximize"/>
          </mousebind>
          <mousebind button="Up" action="Click">
            <action name="if">
              <shaded>no</shaded>
              <then>
                <action name="Shade"/>
                <action name="FocusToBottom"/>
                <action name="Unfocus"/>
                <action name="Lower"/>
              </then>
            </action>
          </mousebind>
          <mousebind button="Down" action="Click">
            <action name="if">
              <shaded>yes</shaded>
              <then>
                <action name="Unshade"/>
                <action name="Raise"/>
              </then>
            </action>
          </mousebind>
        </context>
        <context name="Titlebar Top Right Bottom Left TLCorner TRCorner BRCorner BLCorner">
          <mousebind button="Left" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="Unshade"/>
          </mousebind>
          <mousebind button="Middle" action="Press">
            <action name="Lower"/>
            <action name="FocusToBottom"/>
            <action name="Unfocus"/>
          </mousebind>
          <mousebind button="Right" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="ShowMenu">
              <menu>client-menu</menu>
            </action>
          </mousebind>
        </context>
        <context name="Top">
          <mousebind button="Left" action="Drag">
            <action name="Resize">
              <edge>top</edge>
            </action>
          </mousebind>
        </context>
        <context name="Left">
          <mousebind button="Left" action="Drag">
            <action name="Resize">
              <edge>left</edge>
            </action>
          </mousebind>
        </context>
        <context name="Right">
          <mousebind button="Left" action="Drag">
            <action name="Resize">
              <edge>right</edge>
            </action>
          </mousebind>
        </context>
        <context name="Bottom">
          <mousebind button="Left" action="Drag">
            <action name="Resize">
              <edge>bottom</edge>
            </action>
          </mousebind>
          <mousebind button="Right" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="ShowMenu">
              <menu>client-menu</menu>
            </action>
          </mousebind>
        </context>
        <context name="TRCorner BRCorner TLCorner BLCorner">
          <mousebind button="Left" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="Unshade"/>
          </mousebind>
          <mousebind button="Left" action="Drag">
            <action name="Resize"/>
          </mousebind>
        </context>
        <context name="Client">
          <mousebind button="Left" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
          </mousebind>
          <mousebind button="Middle" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
          </mousebind>
          <mousebind button="Right" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
          </mousebind>
        </context>
        <context name="Icon">
          <mousebind button="Left" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="Unshade"/>
            <action name="ShowMenu">
              <menu>client-menu</menu>
            </action>
          </mousebind>
          <mousebind button="Right" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="ShowMenu">
              <menu>client-menu</menu>
            </action>
          </mousebind>
        </context>
        <context name="AllDesktops">
          <mousebind button="Left" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="Unshade"/>
          </mousebind>
          <mousebind button="Left" action="Click">
            <action name="ToggleOmnipresent"/>
          </mousebind>
        </context>
        <context name="Shade">
          <mousebind button="Left" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
          </mousebind>
          <mousebind button="Left" action="Click">
            <action name="ToggleShade"/>
          </mousebind>
        </context>
        <context name="Iconify">
          <mousebind button="Left" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
          </mousebind>
          <mousebind button="Left" action="Click">
            <action name="Iconify"/>
          </mousebind>
        </context>
        <context name="Maximize">
          <mousebind button="Left" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="Unshade"/>
          </mousebind>
          <mousebind button="Middle" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="Unshade"/>
          </mousebind>
          <mousebind button="Right" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="Unshade"/>
          </mousebind>
          <mousebind button="Left" action="Click">
            <action name="ToggleMaximize"/>
          </mousebind>
          <mousebind button="Middle" action="Click">
            <action name="ToggleMaximize">
              <direction>vertical</direction>
            </action>
          </mousebind>
          <mousebind button="Right" action="Click">
            <action name="ToggleMaximize">
              <direction>horizontal</direction>
            </action>
          </mousebind>
        </context>
        <context name="Close">
          <mousebind button="Left" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="Unshade"/>
          </mousebind>
          <mousebind button="Left" action="Click">
            <action name="Close"/>
          </mousebind>
        </context>
        <context name="Desktop">
          <mousebind button="Up" action="Click">
            <action name="GoToDesktop">
              <to>previous</to>
            </action>
          </mousebind>
          <mousebind button="Down" action="Click">
            <action name="GoToDesktop">
              <to>next</to>
            </action>
          </mousebind>
          <mousebind button="A-Up" action="Click">
            <action name="GoToDesktop">
              <to>previous</to>
            </action>
          </mousebind>
          <mousebind button="A-Down" action="Click">
            <action name="GoToDesktop">
              <to>next</to>
            </action>
          </mousebind>
          <mousebind button="C-A-Up" action="Click">
            <action name="GoToDesktop">
              <to>previous</to>
            </action>
          </mousebind>
          <mousebind button="C-A-Down" action="Click">
            <action name="GoToDesktop">
              <to>next</to>
            </action>
          </mousebind>
          <mousebind button="Left" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
          </mousebind>
          <mousebind button="Right" action="Press">
            <action name="Focus"/>
            <action name="Raise"/>
          </mousebind>
        </context>
        <context name="Root">
          <!-- Menus -->
          <mousebind button="Middle" action="Press">
            <action name="ShowMenu">
              <menu>client-list-combined-menu</menu>
            </action>
          </mousebind>
          <mousebind button="Right" action="Press">
            <action name="ShowMenu">
              <menu>root-menu</menu>
            </action>
          </mousebind>
        </context>
        <context name="MoveResize">
          <mousebind button="Up" action="Click">
            <action name="GoToDesktop">
              <to>previous</to>
            </action>
          </mousebind>
          <mousebind button="Down" action="Click">
            <action name="GoToDesktop">
              <to>next</to>
            </action>
          </mousebind>
          <mousebind button="A-Up" action="Click">
            <action name="GoToDesktop">
              <to>previous</to>
            </action>
          </mousebind>
          <mousebind button="A-Down" action="Click">
            <action name="GoToDesktop">
              <to>next</to>
            </action>
          </mousebind>
        </context>
      </mouse>
      <menu>
        <!-- You can specify more than one menu file in here and they are all loaded,
           just don't make menu ids clash or, well, it'll be kind of pointless -->
        <!-- default menu file (or custom one in $HOME/.config/openbox/) -->
        <file>$HOME/.config/openbox/menu.xml</file>
        <file>menu.xml</file>
    
        <hideDelay>200</hideDelay>
        <!-- if a press-release lasts longer than this setting (in milliseconds), the
           menu is hidden again -->
        <middle>no</middle>
        <!-- center submenus vertically about the parent entry -->
        <submenuShowDelay>100</submenuShowDelay>
        <!-- time to delay before showing a submenu after hovering over the parent
           entry.
           if this is a negative value, then the delay is infinite and the
           submenu will not be shown until it is clicked on -->
        <submenuHideDelay>400</submenuHideDelay>
        <!-- time to delay before hiding a submenu when selecting another
           entry in parent menu
           if this is a negative value, then the delay is infinite and the
           submenu will not be hidden until a different submenu is opened -->
        <applicationIcons>yes</applicationIcons>
        <!-- controls if icons appear in the client-list-(combined-)menu -->
        <manageDesktops>yes</manageDesktops>
        <!-- show the manage desktops section in the client-list-(combined-)menu -->
        <showIcons>yes</showIcons>
        <!-- show icons on the menu -->
      </menu>
      <applications>
        <!--
      # this is an example with comments through out. use these to make your
      # own rules, but without the comments of course.
      # you may use one or more of the name/class/role/title/type rules to specify
      # windows to match
    
      <application name="the window's _OB_APP_NAME property (see obxprop)"
                  class="the window's _OB_APP_CLASS property (see obxprop)"
                   role="the window's _OB_APP_ROLE property (see obxprop)"
                  title="the window's _OB_APP_TITLE property (see obxprop)"
                   type="the window's _OB_APP_TYPE property (see obxprob)..
                          (if unspecified, then it is 'dialog' for child windows)">
      # you may set only one of name/class/role/title/type, or you may use more
      # than one together to restrict your matches.
    
      # the name, class, role, and title use simple wildcard matching such as those
      # used by a shell. you can use * to match any characters and ? to match
      # any single character.
    
      # the type is one of: normal, dialog, splash, utility, menu, toolbar, dock,
      #    or desktop
    
      # when multiple rules match a window, they will all be applied, in the
      # order that they appear in this list
    
    
        # each rule element can be left out or set to 'default' to specify to not 
        # change that attribute of the window
    
        <decor>yes</decor>
        # enable or disable window decorations
    
        <shade>no</shade>
        # make the window shaded when it appears, or not
    
        <position force="no">
          # the position is only used if both an x and y coordinate are provided
          # (and not set to 'default')
          # when force is "yes", then the window will be placed here even if it
          # says you want it placed elsewhere.  this is to override buggy
          # applications who refuse to behave
          <x>center</x>
          # a number like 50, or 'center' to center on screen. use a negative number
          # to start from the right (or bottom for <y>), ie -50 is 50 pixels from the
          # right edge (or bottom).
          <y>200</y>
          <monitor>1</monitor>
          # specifies the monitor in a xinerama setup.
          # 1 is the first head, or 'mouse' for wherever the mouse is
        </position>
    
        <focus>yes</focus>
        # if the window should try be given focus when it appears. if this is set
        # to yes it doesn't guarantee the window will be given focus. some
        # restrictions may apply, but Openbox will try to
    
        <desktop>1</desktop>
        # 1 is the first desktop, 'all' for all desktops
    
        <layer>normal</layer>
        # 'above', 'normal', or 'below'
    
        <iconic>no</iconic>
        # make the window iconified when it appears, or not
    
        <skip_pager>no</skip_pager>
        # asks to not be shown in pagers
    
        <skip_taskbar>no</skip_taskbar>
        # asks to not be shown in taskbars. window cycling actions will also
        # skip past such windows
    
        <fullscreen>yes</fullscreen>
        # make the window in fullscreen mode when it appears
    
        <maximized>true</maximized>
        # 'Horizontal', 'Vertical' or boolean (yes/no)
      </application>
    
      # end of the example
    -->
        <!-- Option to maximize all normal window when launched-->
        <!--
        <application type="normal">
          <maximized>true</maximized>
        </application>
        -->
    
      </applications>
    </openbox_config>
    Is it possible to amend to pickup all shortcuts.
    Thanks
    Last edited by grumblebum2; June 2nd, 2014 at 05:39 AM.

  6. #6
    Join Date
    Oct 2010
    Location
    The United States
    Beans
    843
    Distro
    Ubuntu

    Re: Pulling text out of a file

    Yeah maybe I should have posted the entire xml file.
    When I run the script on the xml file I get this:
    Code:
    Traceback (most recent call last):
      File "/home/john/scripts/domparse.py", line 7, in <module>
        xmldoc = minidom.parse(sys.argv[1])
      File "/usr/lib/python2.7/xml/dom/minidom.py", line 1918, in parse
        return expatbuilder.parse(file)
      File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 924, in parse
        result = builder.parseFile(fp)
      File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 207, in parseFile
        parser.Parse(buffer, 0)
    xml.parsers.expat.ExpatError: not well-formed (invalid token): line 9, column 5
    Thank you,
    GG -----------

  7. #7
    Join Date
    Mar 2014
    Beans
    Hidden!

    Re: Pulling text out of a file

    FYI
    I have no errors here, just doesn't show all shortcuts.
    Code:
    glen@Trusty:~$ /home/glen/scripts/domparse.py /home/glen/Desktop/rc.xml
    Key A-Print lxsession-default screenshot window
    Key W-e pcmanfm
    Key W-r lxpanelctl run
    Key A-F2 lxpanelctl run
    Key A-F1 lxpanelctl menu
    Key C-Escape lxpanelctl menu
    Key C-A-Delete lxtask
    Key C-A-T lxsession-default terminal
    Key C-A-D pcmanfm
    Key C-A-l xscreensaver-command -lock
    Key XF86AudioRaiseVolume amixer -q sset Master 3%+ unmute
    Key XF86AudioLowerVolume amixer -q sset Master 3%- unmute
    Key XF86AudioMute amixer -q sset Master toggle
    Key XF86WWW lxsession-default terminal
    Key XF86Terminal lxsession-default terminal
    Key XF86Calculator galculator
    Key XF86MyComputer pcmanfm
    Key C-F7 sleep 2;xset dpms force off
    Key C-F10 xbacklight -dec 10
    Key C-F11 xbacklight -inc 10
    Key Print lxsession-default screenshot
    Key XF86PowerOff lxsession-default quit

  8. #8
    Join Date
    Oct 2010
    Location
    The United States
    Beans
    843
    Distro
    Ubuntu

    Re: Pulling text out of a file

    My mistake - when I ran the script on the actual xml file and not on a segement of the rc.xml I had saved then I didn't get any errors either.
    Off topic but, what do the XF86 shortcuts do?
    @Steeldriver - thanks again man. Have you always been a modirator or is this a new position?
    Thank you,
    GG -----------

  9. #9
    Join Date
    Mar 2014
    Beans
    Hidden!

    Re: Pulling text out of a file

    Quote Originally Posted by GrouchyGaijin View Post
    My mistake - when I ran the script on the actual xml file and not on a segement of the rc.xml I had saved then I didn't get any errors either.
    Off topic but, what do the XF86 shortcuts do?
    @Steeldriver - thanks again man. Have you always been a modirator or is this a new position?
    I dabbled with Lubuntu 13.10 a while back...still installed.
    I think I was trying to get the media keys to work....volume+/-, play etc
    Doesn't work now and can't remember if they ever did.

  10. #10
    Join Date
    Apr 2012
    Beans
    7,256

    Re: Pulling text out of a file

    Mornin'

    Here's a modified version that doesn't do the attributes['name'].value == "Execute" test, i.e it processes all Action tags, adding a tab-separated list of Commands if it finds them (i.e. in the case of Execute actions)

    I also changed the formatting a bit - adding quotes around the command. FWIW it would be easy to make it output CSV if you prefer.

    Code:
    #!/usr/bin/python
    
    import sys
    from xml.dom import minidom
    
    # obviously we should check that argv[1] exists and is readable
    xmldoc = minidom.parse(sys.argv[1])
    
    keylist = xmldoc.getElementsByTagName('keybind')
    for k in keylist :
        alist = k.getElementsByTagName('action')
        for a in alist :
            result = "Key: %s\tAction: %s" \
            % (k.attributes['key'].value, a.attributes['name'].value)
            clist = a.getElementsByTagName('command')
            for c in clist :
                result += "\tCommand: \"%s\"" % c.childNodes[0].nodeValue
            print("%s") % result

Page 1 of 2 12 LastLast

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •