The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Month: March 2010

  • Arch Linux: Wacom Graphire3 FDI File

    Again, this is similar to the FDI file for Xubuntu, with a partial match on the name.

    The button mapping swaps the two buttons along the pen, leaving the tip as Button 1. Button 2 pops up context menus, which I find easier when it’s on the front part of that two-button rocker.

    X occasionally crashes hard when the tablet moves the pointer between the two screens. It’s more common when scrolling, where the pointer is moving vertically along the gutter and falls off the edge. The workaround: restrict the tablet pointer so that it can’t quite get off the edge of the screen. Setting the BottomX value to just slightly more than the tablet can produce seems to work well: Tablet max = 16704 and BottomX = 16750.

    Unlike in Xubuntu, the tablet values mapped pretty closely to the whole screen; there was no need for absurd scaling values to expand a small upper-left rectangle to the full screen.

    The problem with hard X crashes is that X takes the (USB) keyboard down with it. The only solution seems to be ssh-ing in from another system and killing startx; you cannot Ctrl-Alt-Backspace or Ctrl-Alt-F1 or any of that stuff with a completely dead keyboard.

    You must include the SendCoreEvents option, otherwise The GIMP (and, presumably, other tablet-aware apps) will capture the events and never relinquish focus to system dialog boxes. Like, for example, the tablet won’t be able to focus inside the File->Save As dialog box…

    Herewith, the file /etc/hal/fdi/policy/10-linuxwacom.fdi:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <deviceinfo version="0.2">
     <device>
     <match key="info.product" contains="Wacom Graphire3">
     <merge key="input.x11_driver" type="string">wacom</merge>
     <merge key="input.x11_options.Type" type="string">stylus</merge>
     <merge key="input.x11_options.SendCoreEvents" type="string">True</merge>
     <merge key="input.x11_options.Button2" type="string">3</merge>
     <merge key="input.x11_options.Button3" type="string">2</merge>
     <merge key="input.x11_options.MMonitor" type="string">off</merge>
     <merge key="input.x11_options.ScreenNo" type="string">0</merge>
     <merge key="input.x11_options.BottomX" type="string">16750</merge>
    <!-- <merge key="input.x11_options.BottomY" type="string">11893</merge> -->
     <append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
     <append key="wacom.types" type="strlist">eraser</append>
     <append key="wacom.types" type="strlist">cursor</append>
     </match>
     </device>
     <!-- Wacom names "parser" -->
     <device>
     <match key="info.udi" contains_not="subdev_0">
     <match key="info.udi" contains_not="subdev_1">
     <match key="info.udi" contains_not="subdev_2">
     <match key="input.x11_options.Type" contains="stylus">
     <merge key="info.product" type="string">stylus</merge>
     </match>
     <match key="input.x11_options.Type" contains="eraser">
     <merge key="input.x11_options.SendCoreEvents" type="string">True</merge>
     <merge key="info.product" type="string">eraser</merge>
     <merge key="input.x11_options.MMonitor" type="string">off</merge>
     <merge key="input.x11_options.ScreenNo" type="string">0</merge>
     <merge key="input.x11_options.BottomX" type="string">16750</merge>
    <!-- <merge key="input.x11_options.BottomY" type="string">11893</merge> -->
     </match>
     <match key="input.x11_options.Type" contains="cursor">
     <merge key="info.product" type="string">cursor</merge>
     </match>
     </match>
     </match>
     </match>
     </device>
    </deviceinfo>
    

    All in all, it’s much better than it was.

  • Arch Linux: Kensington Expert Mouse FDI File

    The FDI file is similar to the one I used for Xubuntu, with the exact match changed to a partial match. For some reason, the exact match seemed to not work.

    Because the XFCE4 Mouse configuration utility sets handedness on a per-mouse basis, you need not swap buttons 1+3 here. I did, anyway, and the mouse automagically came up left-handed.

    I swapped 2+8, the top two buttons, putting the browser “back one page” button at the upper left and the “open in new tab” button at the upper right.

    The contents of /etc/hal/fdi/policy/10-expertmouse.fdi:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <deviceinfo version="0.2">
     <device>
     <match key="input.product" contains="Kensington Expert Mouse">
     <append key="input.x11_options.ButtonMapping" type="string">3 8 1 4 5 6 7 2</append>
     </match>
     </device>
    </deviceinfo>
    

    And, for whatever reason, the scroll ring now works perfectly without the least hint of stuttering or jamming.

  • Arch Linux: X11 and XFCE4 Setup

    The Arch Linux Installation Guide gets X11 up and running in fairly short order, leaving you with a bare xterm session. That handled a single screen, so I copied the /etc/X11/xorg.conf file I’d hand-carved for Xubuntu, restarted X, and by gosh-and-golly, it worked perfectly!

    The right-hand screen is still in landscape mode while physically rotated to portrait, but that’s fixable with xrandr.

    For future reference…

    Section "ServerLayout"
        Identifier     "RotatedPortrait"
        Screen      0  "Landscape" 0 0
        Screen      1  "Portrait" RightOf "Landscape"
    EndSection
    
    Section "Module"
        Load           "dbe"
        Load           "extmod"
    #   Load           "type1"
    #   Load           "freetype"
        Load           "glx"
    EndSection
    
    Section "ServerFlags"
        Option         "Xinerama" "0"
    EndSection
    
    Section "Monitor"
        # HorizSync source: edid, VertRefresh source: edid
        Identifier     "Dell2001FP"
        VendorName     "Dell"
        ModelName      "DELL 2001FP"
        HorizSync       31.0 - 80.0
        VertRefresh     56.0 - 76.0
        Option         "DPMS"
    EndSection
    
    Section "Monitor"
        # HorizSync source: edid, VertRefresh source: edid
        Identifier     "Dell2005FP"
        VendorName     "Dell"
        ModelName      "DELL 2005FPW"
        HorizSync       30.0 - 83.0
        VertRefresh     56.0 - 75.0
        Option         "DPMS"
    EndSection
    
    Section "Device"
        Identifier     "GF9400_0"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "GeForce 9400 GT"
        BusID          "PCI:1:0:0"
        Screen          0
    EndSection
    
    Section "Device"
        Identifier     "GF9400_1"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "GeForce 9400 GT"
        BusID          "PCI:1:0:0"
        Screen          1
    EndSection
    
    Section "Screen"
        Identifier     "Landscape"
        Device         "GF9400_0"
        Monitor        "Dell2001FP"
        DefaultDepth    24
        Option         "TwinView" "0"
        Option         "metamodes" "DFP-0: 1600x1200 +0+0"
        Option         "NoLogo" "Off"
        SubSection     "Display"
            Depth       24
        EndSubSection
    EndSection
    
    Section "Screen"
        Identifier     "Portrait"
        Device         "GF9400_1"
        Monitor        "Dell2005FP"
        DefaultDepth    24
        Option         "TwinView" "0"
        Option         "metamodes" "DFP-1: 1680x1050 +0+0"
        Option         "NoLogo" "Off"
        Option         "RandRRotation" "On"
    #    Option         "Rotate" "CCW"
        SubSection     "Display"
            Depth       24
        EndSubSection
    EndSection
    

    With that in hand, the Install Guide gets you through setting up XFCE4 with no problems at all; consult the XFCE guide for more details.. It handles both screens, lets you install panels on both with no complaint, and generally Just Works.

    Useful widgets:

    • clipman
    • cpugraph
    • datetime
    • netload
    • screenshooter
    • time-out (wish it knew about screensaver timeouts)

    Add xscreensaver which politely blanks both screens. Timeout in 5 minutes, lock after 1 more, then power saving stages in at 7/8/9 minutes.