Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 20/12/2011, à 17:51

RegisBurin

[WIP] BabyBox

Salut tous

J'ouvre ce fil pour présenter la personnalisation effectuée sur la session de ma fille de 2 ans et demi tongue, et répondre à certaines question qui m'ont été posées sur d'autres fils (ici et ).

J'en appelle, évidemment, aux bonnes idées, aux avis, aux remarques, etc... qui pourront me permettre de faire évoluer l'interface et les applis proposées.

1324300018.png

Base Ubuntu 11.10, sous OpenBox - Cairo-dock / feh / xcompmgr.
Fond d'écran perso (fait sous Inkscape, .png ici, source disponible en SVG sur simple demande, toutes les ressources viennent de la librairie OpenClipart - donc Public Domain)
Icônes: GartoonRedux + persos
Font: Purisa
themerc Clearlooks revisité.

Dock, de gauche à droite:
La tv lance un script python (cf screenshot ci dessous) qui permet de choisir des vidéos, la guitare lance une playlist aléatoire de clips, l'appareil lance eog en diaporama sur son dossier Images/, "Gulli" lance FF maximisé+barre perso (icônes pages prec/suiv + home... c'est tout) sur la page d'accueil GulliReplay (parce que c'est exactement comme à la téloche, mais sans les 35% de pollution publicitaire), et enfin Ktuberling et Gcompris (de nouveaux jeux/activités viendront s'ajouter avec l'age).

Nota: L'épuration de FF m'a permis de découvrir une astuce plus générale. En l'absence de barre de recherche/adresse, le raccourci Ctrl+k (qui habituellement sert à donner le focus à la barre d'adresse) permet d'ouvrir la page d'accueil du moteur de recherche par défaut (pratique dans mon cas) big_smile

L'interface de choix des films:
1324300118.png

rc.xml revu en conséquence de l'utilisation (pas de menu au clic-droit sur le bureau, bureau unique, fenêtres maximisées, unique bouton de fermeture, et quelques raccourcis claviers pour l'admin par Papa wink (Alt+F1 fait apparaître le menu OB, Ctrl+Alt+t pour le terminal et Super+e nautilus avec l'option --no-desktop)
1324300254.png

Le rc.xml (pour info), et qui méritera un peu de nettoyage niveau raccourcis clavier:

<?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">
  <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>yes</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>yes</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 -->
    <primaryMonitor>1</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>OB-Malou</name>
    <titleLayout>LC</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>Purisa</name>
      <size>13</size>
      <!-- font size in points -->
      <weight>Bold</weight>
      <!-- 'bold' or 'normal' -->
      <slant>Normal</slant>
      <!-- 'italic' or 'normal' -->
    </font>
    <font place="InactiveWindow">
      <name>Purisa</name>
      <size>13</size>
      <!-- font size in points -->
      <weight>Normal</weight>
      <!-- 'bold' or 'normal' -->
      <slant>Normal</slant>
      <!-- 'italic' or 'normal' -->
    </font>
    <font place="MenuHeader">
      <name>sans</name>
      <size>9</size>
      <!-- font size in points -->
      <weight>normal</weight>
      <!-- 'bold' or 'normal' -->
      <slant>normal</slant>
      <!-- 'italic' or 'normal' -->
    </font>
    <font place="MenuItem">
      <name>sans</name>
      <size>9</size>
      <!-- font size in points -->
      <weight>normal</weight>
      <!-- 'bold' or 'normal' -->
      <slant>normal</slant>
      <!-- 'italic' or 'normal' -->
    </font>
    <font place="OnScreenDisplay">
      <name>Ubuntu</name>
      <size>12</size>
      <!-- font size in points -->
      <weight>Normal</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>1</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>0</popupTime>
    <!-- The number of milliseconds to show the popup for when switching
       desktops.  Set this to 0 to disable the popup. -->
  </desktops>
  <resize>
    <drawContents>yes</drawContents>
    <popupShow>Never</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>Bottom</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>Horizontal</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="DesktopLeft">
        <dialog>no</dialog>
        <wrap>no</wrap>
      </action>
    </keybind>
    <keybind key="C-A-Right">
      <action name="DesktopRight">
        <dialog>no</dialog>
        <wrap>no</wrap>
      </action>
    </keybind>
    <keybind key="C-A-Up">
      <action name="DesktopUp">
        <dialog>no</dialog>
        <wrap>no</wrap>
      </action>
    </keybind>
    <keybind key="C-A-Down">
      <action name="DesktopDown">
        <dialog>no</dialog>
        <wrap>no</wrap>
      </action>
    </keybind>
    <keybind key="S-A-Left">
      <action name="SendToDesktopLeft">
        <dialog>no</dialog>
        <wrap>no</wrap>
      </action>
    </keybind>
    <keybind key="S-A-Right">
      <action name="SendToDesktopRight">
        <dialog>no</dialog>
        <wrap>no</wrap>
      </action>
    </keybind>
    <keybind key="S-A-Up">
      <action name="SendToDesktopUp">
        <dialog>no</dialog>
        <wrap>no</wrap>
      </action>
    </keybind>
    <keybind key="S-A-Down">
      <action name="SendToDesktopDown">
        <dialog>no</dialog>
        <wrap>no</wrap>
      </action>
    </keybind>
    <keybind key="W-F1">
      <action name="Desktop">
        <desktop>1</desktop>
      </action>
    </keybind>
    <keybind key="W-F2">
      <action name="Desktop">
        <desktop>2</desktop>
      </action>
    </keybind>
    <keybind key="W-F3">
      <action name="Desktop">
        <desktop>3</desktop>
      </action>
    </keybind>
    <keybind key="W-F4">
      <action name="Desktop">
        <desktop>4</desktop>
      </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>
    <keybind key="Print">
      <action name="Execute">
        <execute>gnome-screenshot</execute>
      </action>
    </keybind>
    <keybind key="A-Print">
      <action name="Execute">
        <execute>gnome-screenshot -w</execute>
      </action>
    </keybind>
    <!-- Keybindings for window switching -->
    <keybind key="A-Tab">
      <action name="NextWindow"/>
    </keybind>
    <keybind key="A-S-Tab">
      <action name="PreviousWindow"/>
    </keybind>
    <keybind key="C-A-Tab">
      <action name="NextWindow">
        <panels>yes</panels>
        <desktop>yes</desktop>
      </action>
    </keybind>
    <!-- Keybindings for running applications -->
    <keybind key="W-e">
      <action name="Execute">
        <startupnotify>
          <enabled>true</enabled>
          <name>Nautilus</name>
        </startupnotify>
        <command>nautilus --no-desktop</command>
      </action>
    </keybind>
    <keybind key="C-A-t">
      <action name="Execute">
        <command>gnome-terminal</command>
      </action>
    </keybind>
    <keybind key="A-F1">
        <action name="ShowMenu">
          <menu>root-menu</menu>
        </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 -->
    <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="DesktopPrevious"/>
      </mousebind>
      <mousebind button="A-Down" action="Click">
        <action name="DesktopNext"/>
      </mousebind>
      <mousebind button="C-A-Up" action="Click">
        <action name="DesktopPrevious"/>
      </mousebind>
      <mousebind button="C-A-Down" action="Click">
        <action name="DesktopNext"/>
      </mousebind>
      <mousebind button="A-S-Up" action="Click">
        <action name="SendToDesktopPrevious"/>
      </mousebind>
      <mousebind button="A-S-Down" action="Click">
        <action name="SendToDesktopNext"/>
      </mousebind>
    </context>
    <context name="Titlebar">
      <mousebind button="Left" action="Press">
        <action name="Focus"/>
        <action name="Raise"/>
      </mousebind>
      <mousebind button="Left" action="Drag">
        <action name="Move"/>
      </mousebind>
      <mousebind button="Left" action="DoubleClick">
        <action name="ToggleMaximizeFull"/>
      </mousebind>
      <mousebind button="Middle" action="Press">
        <action name="Lower"/>
        <action name="FocusToBottom"/>
        <action name="Unfocus"/>
      </mousebind>
      <mousebind button="Up" action="Click">
        <action name="Shade"/>
        <action name="FocusToBottom"/>
        <action name="Unfocus"/>
        <action name="Lower"/>
      </mousebind>
      <mousebind button="Down" action="Click">
        <action name="Unshade"/>
        <action name="Raise"/>
      </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="Press">
        <action name="Focus"/>
        <action name="Raise"/>
        <action name="Unshade"/>
      </mousebind>
      <mousebind button="Left" action="Drag">
        <action name="Resize">
          <edge>top</edge>
        </action>
      </mousebind>
    </context>
    <context name="Left">
      <mousebind button="Left" action="Press">
        <action name="Focus"/>
        <action name="Raise"/>
      </mousebind>
      <mousebind button="Left" action="Drag">
        <action name="Resize">
          <edge>left</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="Right">
      <mousebind button="Left" action="Press">
        <action name="Focus"/>
        <action name="Raise"/>
      </mousebind>
      <mousebind button="Left" action="Drag">
        <action name="Resize">
          <edge>right</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="Bottom">
      <mousebind button="Left" action="Press">
        <action name="Focus"/>
        <action name="Raise"/>
      </mousebind>
      <mousebind button="Left" action="Drag">
        <action name="Resize">
          <edge>bottom</edge>
        </action>
      </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="BLCorner">
      <mousebind button="Left" action="Press">
        <action name="Focus"/>
        <action name="Raise"/>
      </mousebind>
      <mousebind button="Left" action="Drag">
        <action name="Resize"/>
      </mousebind>
    </context>
    <context name="BRCorner">
      <mousebind button="Left" action="Press">
        <action name="Focus"/>
        <action name="Raise"/>
      </mousebind>
      <mousebind button="Left" action="Drag">
        <action name="Resize"/>
      </mousebind>
    </context>
    <context name="TLCorner">
      <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="TRCorner">
      <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="ToggleMaximizeFull"/>
      </mousebind>
      <mousebind button="Middle" action="Click">
        <action name="ToggleMaximizeVert"/>
      </mousebind>
      <mousebind button="Right" action="Click">
        <action name="ToggleMaximizeHorz"/>
      </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="A-Up" action="Click">
        <action name="DesktopPrevious"/>
      </mousebind>
      <mousebind button="A-Down" action="Click">
        <action name="DesktopNext"/>
      </mousebind>
      <mousebind button="C-A-Up" action="Click">
        <action name="DesktopPrevious"/>
      </mousebind>
      <mousebind button="C-A-Down" action="Click">
        <action name="DesktopNext"/>
      </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="DesktopPrevious"/>
      </mousebind>
      <mousebind button="Down" action="Click">
        <action name="DesktopNext"/>
      </mousebind>
      <mousebind button="A-Up" action="Click">
        <action name="DesktopPrevious"/>
      </mousebind>
      <mousebind button="A-Down" action="Click">
        <action name="DesktopNext"/>
      </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/) --><!-- system menu files on Debian systems --><file>/var/lib/openbox/debian-menu.xml</file><file>debian-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 --&gt;
  <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 -->
</menu>
  <applications>
    <!--
  # this is an example with comments through out. use these to make your
  # own rules, but without the comments of course.

  <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)"
               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/type, or you may use more than one
  # together to restrict your matches.

  # the name, class, and role 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
-->
    <!-- Firefox -->
    <application name="firefox*">
      <maximized>true</maximized>
    </application>
    <!-- eog  -->
    <application name="eog">
       <maximized>true</maximized>
    </application>
  </applications>
</openbox_config>

A noter, enfin, que les yeux de la girafe bougent et suivent le pointeur... (greffon Xeyes fourni avec cairo-dock... tongue )

Je m'amuse beaucoup à développer cette interface pour ma toute petite, c'est intéressant d'appréhender l'ergonomie et les fonctionnalités dont doit faire oeuvre une interface par rapport à l'utilisateur visé (communication visuelle et sonore uniquement)... et a priori ça passe bien, puisqu'elle a su utiliser (au bout de 2/3 jours) de sa session sans trop d'aide.


Pour entrer un peu plus dans les détails techniques, et, du coup, répondre à cette question:

AntoineT a écrit :

Quand tu dis que tu n'as pas de click droit, c'est uniquement celui du menu openbox, ou également dans les applis (le dock par exemple) ?

J'ai juste désactiver le clic-droit sur le bureau qui fait apparaitre le menu OpenBox (donc dans le fichier rc.xml), à la place, et pour conserver un accès facile, j'ai créé un raccourci clavier.
Dans rc.xml, j'ai juste commenté les lignes du context "Root":

    <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>

Et ajouté ça dans la section <keyboard>:

    <keybind key="A-F1">
        <action name="ShowMenu">
          <menu>root-menu</menu>
        </action>
    </keybind>

Mais je crois que depuis, tu as trouvé seul la solution pour une désactivation plus "radicale" du clic droit (xmodmap)...

En fait, je voulais en faire autant, mais le clic-droit sert dans certaines applis (jeux apprentissage souris dans gcompris...), et surtout, j'en ai profiter pour lui apprendre la latéralité (cf cette anecdote). Donc pour l'instant, je laisse comme ça et les rares fois ou elle "clic-droite" maladroitement, elle rétablie d'elle-même (en cliquant ailleurs) ou elle m'appelle...

Il faudrait pouvoir scripter en utilisant xmodmap suivant le soft lancé... un peu rébarbatif (me semble vraiment intéressant pour firefox ou une mauvaise manip au clic-droit pourrait être problématique). Enfin je suis ouvert aux astuces... mais je préfère qu'elle "sache" que l'autre bouton sert à quelque chose... et qu'elle n'a pas besoin d'y toucher (héhé...)

Autre question posée par par AntoineT:

AntoineT a écrit :

- comment faire, si je rajoute plus tard un lanceur vers un dossier images ou videos pour que la petite ne puisse pas sortir de ce dossier là

Arf... difficile... J'ai essayé plein de chose basées sur des changement d'affichage dans différents gestionnaires de fichiers... mais rien de suffisamment "cloisonné" pour éviter d'atteindre d'autre dossiers/fichiers. Du coup, je ne lui permet pas d'accéder à nautilus (pas de menu), et je me suis rabattu sur une solution "fermée" (comprendre "pas dynamique") => le script python de choix des films. Elle affiche les films dispo, les lance au clic dans vlc qui quitte à la fin du film, puis relance ce même script jusqu'à ce qu'il soit tué volontairement (touche Esc ou icone "exit"). Au moins, elle ne peut choisir et lancer que ce qu'il propose... Le gros problème (pour moi) c'est qu'il est fait "à la main" (les icônes fignolées sous Gimp, et l'interface listent des fichiers dont le chemin est entré "en dur" dans le script).

C'est d'ailleurs dans ma todo-list:
- Trouver un moyen de rendre l'interface "dynamique" (exploration et liste auto des films dans un répertoire donné / récupération des thumbnails générées par exemple pour nautilus / mise en page auto dans l'interface de lancement...

En attendant, voilà le script (piteusement pompé du "script-quitter" de cette page, et adapté sans aucune notion de python sad juste un peu de logique et plein d'essais):

#!/usr/bin/python
# -*- coding: utf-8 -*-

import gtk, os

####################################################
##        variables 
####################################################

## Lien vers le fond d'ecran
IMG_FILE = '/home/malou/.scripts/panneau_da/img/panneau_da.png'

## Jouer Arctic Tale
CMD_ART = 'cvlc -f --play-and-exit "$HOME/Vidéos/Arctic Tale.avi" && $HOME/.scripts/panneau_da/panneau_da'

## Jouer Big Buck Bunny
CMD_BBB = 'cvlc -f --play-and-exit "$HOME/Vidéos/big_buck_bunny.avi" && $HOME/.scripts/panneau_da/panneau_da'

## Jouer Kung Fu Panda
CMD_KFP = 'cvlc -f --play-and-exit "$HOME/Vidéos/Kung-Fu Panda.avi" && $HOME/.scripts/panneau_da/panneau_da'

## Jouer La citadelle assiégée
CMD_LCA = 'cvlc -f --play-and-exit "$HOME/Vidéos/La Citadelle Assiegee.avi" && $HOME/.scripts/panneau_da/panneau_da'

## Jouer Raiponce
CMD_RAI = 'cvlc -f --play-and-exit "$HOME/Vidéos/Raiponce.avi" && $HOME/.scripts/panneau_da/panneau_da'

## Jouer Rio
CMD_RIO = 'cvlc -f --play-and-exit "$HOME/Vidéos/Rio.avi" && $HOME/.scripts/panneau_da/panneau_da'

## Jouer Wall-e
CMD_WAL = 'cvlc -f --play-and-exit "$HOME/Vidéos/Wall-E.avi" && $HOME/.scripts/panneau_da/panneau_da'

####################################################
##        debut du script 
####################################################


class MyApp():
    def __init__(self):
        
        self.window = gtk.Window()        
        self.window.set_title("panneau dessins anim")
        self.window.connect("destroy", self.doquit)
        self.window.connect("key-press-event", self.onkeypress)
        self.window.set_size_request(620,200)
        self.window.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("black"))
        self.window.set_decorated(False)
        self.window.set_position(gtk.WIN_POS_CENTER)
        
        self.mainpanel = gtk.Fixed()
        self.window.add(self.mainpanel)
        
        self.screen_x , self.screen_y = gtk.gdk.screen_width(), gtk.gdk.screen_height()

        x = ( self.screen_x / 2 ) - ( 140 * 4 / 2 ) - 30
        y = ( self.screen_y / 2 ) - 105

        self.bt_tab = []
        ## 1st Line
        self.add_bouton("application-exit", x+940, y-355, "Quitter")
        self.add_bouton("art", x+50, y+0, "Arctic Tale")
        self.add_bouton("bbb", x+200, y+0, "Big Buck Bunny")
        self.add_bouton("kfp", x+350, y+0, "Kung Fu Panda")
        self.add_bouton("lca", x+500, y+0, "La Citadelle Assiégée")
        self.add_bouton("rai", x+125, y+150, "Raiponce")
        self.add_bouton("rio", x+275, y+150, "Rio")
        self.add_bouton("wal", x+425, y+150, "Wall-E")
        
        self.set_background()
        self.bt_tab[0].grab_focus()             

    def set_background(self):
        pixbuf = gtk.gdk.pixbuf_new_from_file(IMG_FILE)
        pixbuf = pixbuf.scale_simple(gtk.gdk.screen_width(), gtk.gdk.screen_height(), gtk.gdk.INTERP_BILINEAR)
        pixmap, mask = pixbuf.render_pixmap_and_mask()
        self.window.set_app_paintable(True)
        self.window.resize(self.screen_x, self.screen_y)
        self.window.realize()
        self.window.window.set_back_pixmap(pixmap, False)
        self.window.move(0,0)
        del pixbuf
        del pixmap

    def add_bouton(self, icon, x, y, info):
        image = gtk.Image()
        image.set_from_file("img/" + icon + ".png")
        image.show()
        bouton = gtk.Button()
        bouton.set_relief(gtk.RELIEF_NONE)
        bouton.set_focus_on_click(False)
        bouton.set_border_width(0)
        #bouton.set_property('can-focus', False)
        bouton.add(image)
        tooltips = gtk.Tooltips()
        tooltips.set_tip(bouton, str(info))
        bouton.show()
        self.mainpanel.put(bouton, x,y)
        bouton.connect("clicked", self.clic_bouton, icon)
        self.bt_tab.append(bouton)

    # Cette fonction est invoquee quand on clique sur un bouton.
    def clic_bouton(self, widget, data=None):
        if (data=='art'):
            os.system(CMD_ART)

        elif (data=='bbb'):
            os.system(CMD_BBB)

        elif (data=='kfp'):
            os.system(CMD_KFP)

        elif (data=='lca'):
            os.system(CMD_LCA)

        elif (data=='rai'):
            os.system(CMD_RAI)

        elif (data=='rio'):
            os.system(CMD_RIO)

        elif (data=='wal'):
            os.system(CMD_WAL)

        self.doquit()           

    def onkeypress(self, widget=None, event=None, data=None):
        if event.keyval == gtk.keysyms.Escape:
            self.doquit() 
    
    def doquit(self, widget=None, data=None):
        gtk.main_quit()

    def run(self):
        self.window.show_all()
        gtk.main()

#-------------------------
if __name__ == "__main__":
#-------------------------
    ## need to change directory
    SRC_PATH = os.path.dirname( os.path.realpath( __file__ ) )
    os.chdir(SRC_PATH)
    app = MyApp()
    app.run()

Voilà. J'éditerais au fur et à mesure des modifications...

Todo list:
- "Nettoyer" le rc.xml
- Améliorer le script de sélection des vidéos
- Ajouter une dimension "sonore" à l'interface (j'aimerais ajouter des instructions ou des messages vocaux aux principales fonctions/activités)
- Tester/ajouter des applis dédiées à sa tranche d'age
- Repartir d'une install minimale et créer un live-CD avec Remastersys

Si certains ont des idées d'applis/jeux/fonctions, je suis preneur.
Je cherche notamment une appli (web ou pas) de coloriage basée sur du SVG (pour pouvoir faire des modèles persos). Sur tous les sites qui le propose, c'est quasiment tout le temps du flash, entouré de pub ou de liens potentiellement cliquables par maladresse, et surtout l’accès aux dessins depuis les pages d'accueil est trop difficile pour un enfant qui ne sait pas encore lire (choix dans des catégories, clicodrome...)

@+

Edit 24/01: modif lien fond d'écran
Edit 11/03: chgt titre (suppr "11.10")

Dernière modification par RegisBurin (Le 12/03/2012, à 00:16)


Ma config (M-AUDIO Delta44/Wacom CTH661) | BabyBox[WIP]
Moi sur le web ("Régis est un cool") / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#2 Le 21/12/2011, à 02:24

AntoineT

Re : [WIP] BabyBox

Super, j'adore la girafe avec les yeux qui suivent la souris !

De mon côté, je t'ai pompé honteusement et j'ai donc (session Openbox sous Oneiric)

Un ~/.config/openbox/autostart.sh avec
  - mise en place du fond d'écran via feh
  - lancement de xcompmgr
  - lancement d'un script de ralentissement de la souris/désactivation du click droit/désactivation de la scroll wheel/ désactivation du "tap" du touchpad (avec un switch on/off sur le script pour quand je prends la main)
  - conky avec heure/batterie (surtout pour les parents)
  - cairo-dock

J'ai chois de désactiver complètement le click droit car pour l'instant elle est assez pataude et a un peu de mal. Je réactiverai en temps voulu.

Applis de base dans cairo-dock : gcompris, gamine, tuxpaint (Mr patate à ajouter), un lanceur pour diaporama plein écran avec ordre aléatoire via feh.
Un autre lanceur ouvre nautilus --no-desktop sur son dossier Videos (simple click pour les lancer). Nautilus est sans barre latérale ni barre principale, mais toujours avec les menus déroulants. Lorsqu'une video est lancée (vlc fullscreen et play-and-exit), nautilus se ferme afin de revenir automatiquement sur le bureau à la fin de la video (le lanceur de Cairo-dock ouvre Nautilus, puis vérifie toutes les 5 secondes si vlc est lancé, et si c'est le cas il ferme Nautilus).

nautilus ~/Videos --no-desktop & while [ $test="" ]; do sleep 5; test=`ps -A | grep "vlc"`;  done && killall nautilus

Oui je sais, c'est crado. Ceci dit il y peut-être quelque chose à faire pour ton désir de désactiver le click droit sous FF : créer un script "souris" executable, et l'éxecuter au lancement de FF via cairo-dock, puis faire vérifier la présence du process FF, et réactiver le click à sa disparition ; un truc du genre (pas testé, et sans doute assez crade)

souris off & firefox & test=`ps -A | grep "firefox"` & while [ $test!="" ]; do sleep 5; test=`ps -A | grep "firefox"`;  done && souris

Mon script "souris" qui désactive un peu tout avec le switch "off" :

#!/bin/bash
# a placer dans/usr/local/bin
# puis sudo chmod 755 /usr/local/bin/souris

case $1 in
  off)
    /usr/bin/xmodmap -e "pointer = 1 2 32 30 31 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3"
    xset m 3/4
    xinput set-prop "AlpsPS/2 ALPS DualPoint TouchPad" "Synaptics Tap Time" 0
  ;;
  *)
    /usr/bin/xmodmap -e "pointer = default"
    xset m 5
       xinput set-prop "AlpsPS/2 ALPS DualPoint TouchPad" "Synaptics Tap Time" 180
  ;;
esac

Lorsque je prends la main, je lance un terminal avec Ctrl+Alt+T (rajouté dans rc.xml) et je lance "souris".


Je cherche comme toi une solution pour avoir juste une "vue" sur son dossier videos afin d'éviter la navigation via les menus déroulants. Il semble que ça ne soit pas possible avec Nautilus, mais peut-être en hackant quelque chose avec gtk.IconView (va me falloir du boulot, je n'ai aucune connaissance en la matière...). Ta solution python est séduisante, mais comme ses videos sont essentiellement des petits trucs pris depuis l'apareil photo (pas de films proprement dit) ç'est appelé à évoluer rapidement, donc un peu lourd à gérer via le script...

J'ai aussi vaguement hacké script-quitter pour n'avoir que "annulation" et "déconnection" dans les choix de fermeture de session. 

En tous cas merci de ces précisions,
A+
Antoine

EDIT :

je vois que dans ton interface de choix des films l'icône de sortie est sélectionnée par défaut (petit cadre pointillé autour). Je ne sais pas si c'est voulu, mais sinon tu peux supprimer la ligne

self.bt_tab[0].grab_focus()

et décommenter le

#bouton.set_property('can-focus', False)

Dernière modification par AntoineT (Le 21/12/2011, à 12:52)

Hors ligne

#3 Le 25/12/2011, à 20:37

kalisto07

Re : [WIP] BabyBox

bonjour
bravo pour le boulot et le partage.
peut on espérer voir poindre un *.iso de votre travail ?
(avec remastersys par exemple)
cela serais sympatoche comme cadeau de noel big_smile
roll

Hors ligne

#4 Le 02/01/2012, à 11:14

RegisBurin

Re : [WIP] BabyBox

Salut tous

Merci AntoineT pour les astuces/scripts avec xmodmap. C'est toujours bon à savoir (même si, comme toi, je doute de la "propreté" de la méthode).
Idem pour le script python, si j'avais bien compris comment donner le focus à un bouton choisi, je n'avais pas fait attention à cette ligne commentée qui permet de ne pas donner de focus/highlight. Très pratique, encore merci beaucoup.

@Kalisto7: Le live-CD/Remastersys, c'est dans ma todo-list, mais il faut d'abord que je reparte d'une fresh install minimale et que je remonte le tout. Là c'est une session OB ajoutée dans une Ubuntu classique...

Je tiendrais au jus de l'avancement big_smile

J'ai beaucoup cherché dans les softs de coloriage, mais je n'ai pas trouvé mon bonheur...

Entre autres, j'ai trouvé ça, qui paraissait pas mal (bien que non-libre), mais les archives proposées au téléchargement sont corrompues (impossible de les ouvrir/décompresser). Il y a aussi Kavlon qui est "vieux" (dev en 2006, site du projet=lien mort...) mais en pygame et sous GPL. Il faudrait pouvoir le forker pour le mettre "au goût du jour" niveau graphisme (c'est très moche) et utilisation (pas très pratique, ni instinctif), la sélection de la couleur se fait via une palette "ouverte" (pas terrible pour les tout-petits, moins facile à comprendre qu'un tableau de choix des couleurs primaires), la sélection des modèles n'est pas évidente non plus (choix via une option sur la commande de lancement...) et pas de possibilités (d'origine) de mettre la fenêtre en plein écran (ce qui me dérange le plus)...

Il faut vraiment que je me mette plus sérieusement au python...

Je continue de chercher.

@+


Ma config (M-AUDIO Delta44/Wacom CTH661) | BabyBox[WIP]
Moi sur le web ("Régis est un cool") / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#5 Le 04/01/2012, à 19:08

bishop

Re : [WIP] BabyBox

Salut !

Je m'abonne... roll
Superbe travail RegisBurin! Ta p'tiote doit être contente... big_smile
Aujourd'hui mon plus p'tiot a sept ans. Il ne joue plus dans la même cour. Il dispose d'une session provisoire Natty/Gnome personnalisée sur l'ordi familial en attendant la mise à jour matérielle et logicielle de son ordi.
Le choix d'Openbox, le développement des scripts et les idées que vous proposez (RegisBurin et AntoineT) m'intéressent. Je vais donc suivre ce post.


RegisBurin écrit :
Entre autres, j'ai trouvé ça, qui paraissait pas mal (bien que non-libre), mais les archives proposées au téléchargement sont corrompues (impossible de les ouvrir/décompresser).

Les archives téléchargées sur le site officiel sont également "corrompues" mais il suffit de changer l'extension tar.gz en zip pour les extraire sans problème. Tu te retrouves avec un autre archive à décompresser puis le dossier.
Malheureusement les démo ne sont pas utilisables, on ne peux pas colorier par exemple. On peut juste voir de quoi il s'agit.


Quelques applications destinées aux plus ou moins petits :
OOo4Kids : Bienvenue dans le projet OOo4Kids !, Téléchargementes de OOo4Kids.

Projet Tux4Kids comprenant Tux Math, Tux Typing, Tux Paint.

Memonix, un pack de plusieurs jeux pour améliorer la mémoire des enfants.

Pour que l'enfant  appréhende l'usage de la souris et l'usage du clavier...
Grabouille dans la documentation ubuntu-fr.
Gamine dans le même esprit que Grabouille.
PySyCache le site officiel, PySyCache dans la documentation ubuntu-fr (les paquets sont dispo(s) dans les dépôts officiels ubuntu.

Omnitux propose des activités ludo-éducatives autour d'élements multimédia (images, sons, textes)...

Jeux en ligne.
Liste de liens sur AbulEdu.
Par exemple Les jeux de Lulu, le lutin malin.

Ces diverses applications fonctionnent sans problème sous Natty 11.04. Je ne sais pas ce qu'il en est sous Oneiric 11.10.

Dernière modification par bishop (Le 04/01/2012, à 21:17)


Mon blog L'effet Papy Ion - | - Éditeur BBCode - | - Ma Bécane
Ma Bécane alimentée par Trusty 14.04 + additif VirtualBox (Elementary OS Luna)  | Portable LDLC Aurore : Trusty 14.04

Hors ligne

#6 Le 07/01/2012, à 16:47

RegisBurin

Re : [WIP] BabyBox

Salut tous

@bishop

- Merci big_smile

- OK noté pour les archives de coloritbynumbers (je n'avais pas pensé à cette astuce). Mais, pour le coup, si ces démos sont inutilisables... "Next!"

- OOo4Kids j'adore! (déjà installé sur une session pour ma nièce). Pour les petits (et même je pense jusqu'au collège) le couple Writer+Draw est largement suffisant (dans les fonctionnalités), tout en permettant d'appréhender une foule de concepts logiciels et de méthodologie qui font défaut à de nombreux adultes encore aujourd'hui (organisation et mise en forme de texte, publication basique, notion de dessin vectoriel avec draw). Ce seul pack permet de valider les objectifs des Domaines 1 et 3 du B2i

- Pour le reste, je connais et j'ai déjà testé tous ce que tu cites wink (à part Omnitux que je découvre, merci beaucoup).

J'ai aussi déjà mis en favoris des sites comme Lulu et d'autres, et lui ai déjà proposé (à ma fille) des jeux de ces sites en naviguant à sa place.

Mais, comme je le dis plus haut, ce n'est pas encore évident de la laisser en "autonomie" sur ce genre de page (parfois sans repères visuels, avec beaucoup des liens) comme elle ne sait pas lire (donc pas naviguer...).

[mode réflexion ON]
Il faudrait moi-même que je fasse des sélections de pages/jeux, que je bookmark, que j'ouvre tout au démarrage de FF (sic!) et que je lui apprenne à naviguer dans les onglets (faisable... et avec les favicons, ça facilite le truc)... Ou alors que j'utilise une page d'accueil à la SpeedDial (!idée!)
[mode réflexion OFF]

Pour finir, à part grabouille et certains pygames testés (qui ont parfois des misères graphiques, et plante aléatoirement), tout fonctionne aussi (tous les paquets installés sont des dépots originaux d'une Oneiric, pas de PPA sur l'OS de Madame big_smile ). Mais il faudrait vraiment que je reparte d'une fresh install et que je remonte la session de zéro. Pour faciliter la gestion et la ré-installation, ou pouvoir en faire un liveCD/USB "propre".

Je tiendrais au jus smile

@+


Ma config (M-AUDIO Delta44/Wacom CTH661) | BabyBox[WIP]
Moi sur le web ("Régis est un cool") / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#7 Le 23/01/2012, à 10:27

vince06fr

Re : [WIP] BabyBox

Les liens pour le fond d'ecran sont morts, dommage...

Hors ligne

#8 Le 23/01/2012, à 22:51

RegisBurin

Re : [WIP] BabyBox

Salut tous

vince06fr a écrit :

Les liens pour le fond d'ecran sont morts, dommage...

Fichtre ! J'ai fait "du ménage dans mon nuage", et je n'avais pas pensé à ces deux sources que j'avais mis en partage...

Pas grave, go ToileLibre => http://pix.toile-libre.org/upload/origi … 351587.png

Pour le .svg, pas de soucis, je peux l'envoyer par mail sur simple demande (par mp pour que j'ai une adresse)

@+

Edit 24/01: Au fait, petite précision, comme les ressources qui m'ont servit à faire ça sont "Public Domain" (issues de la librairie OpenClipart), je trouve cool qu'il en soit de même pour ce fond d'écran (just do what the f*** you want to big_smile )

Dernière modification par RegisBurin (Le 25/01/2012, à 00:28)


Ma config (M-AUDIO Delta44/Wacom CTH661) | BabyBox[WIP]
Moi sur le web ("Régis est un cool") / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#9 Le 16/02/2012, à 10:54

VPCL

Re : [WIP] BabyBox

Bonjour à tous,
j'ai lu ce fil sans rentrer dans tous les détails, cependant pour le problème de clic droit, je sais qu'il est possible de verrouiller les applications par le biais d'un code.Ainsi on conserve le clic droit  permettant le libre accès à certaines applications( jeux logiciels éducatifs ...) mais pas à d'autres (Internet ...). Je ne me rappelle plus la manip à effectuer mais je crois que je passais par "obmenu".

Quant au problème d'internet, sous XFCE, il est possible  de créer un lanceur avec un lien "URL" directement sur le bureau ce qui peut être pratique pour les enfants même si cela ne les empêche pas de pouvoir aller sur d'autres sites par ce biais.Cette fonction est-elle présente sous "Open box" ?

Pour mon fils (5ans), je me suis contenté de modifier l' apparence du bureau  de Xubuntu: retrais de certaines icônes (internet , logithèque...) et ajout de celle menant aux jeux, lecteur de musique... .Seul le clic droit permet d' aller à des parties "sensibles" du PC: pour cela une explication donnée au petit me semble plus efficace et éducatif.

En espérant que ce post vous soit utile.
Cordialement,Ludo.C.

Dernière modification par VPCL (Le 16/02/2012, à 11:39)

Hors ligne

#10 Le 16/02/2012, à 23:02

RegisBurin

Re : [WIP] BabyBox

Salut tous

@ VPCL: Je "plussoie" l'idée d'explication pour le clic-droit... en opposition au bridage pur. En fait, je n'ai finalement appliqué aucune méthode de bridage à part celle que j’énonce dans le tout premier post (suppression du menu au clic-droit sur le bureau vide, par modification du fichier rc.xml). Voilà, pour le reste, elle sait que le clic-droit sert à quelque chose, elle voit bien un menu apparaître, mais comme ça la "gène" elle clic-gauche ailleurs et rétabli d'elle même... Au pire, elle ne peut rien "casser", juste peut-être lancer une action non-voulue qui occasionne l'ouverture d'une boite de dialogue, à ce moment là, elle m'appelle et je rétabli (mais cela n'arrive quasiment jamais).

Au passage, j'ai essayé quelque chose ces derniers jours qui l'a fait vraiment kiffer. Je lui fait tester ma tablette graphique (Wacom Bamboo Fun Pen&Touch M) avec mypaint (une future Deevad j'espère big_smile )

Ce n'est pas si évident de prise en main (même pour certains adultes d'ailleurs...) car il faut se concentrer à garder une certaine distance pointe du stylet/tablette pour déplacer le pointeur, et toucher la surface seulement pour dessiner. De plus, ce n'est pas naturel de dessiner sur une surface en en regardant une autre. Mais quelle éclate quant elle arrive à gérer !! (elle me dessine des tas de bonshommes de toutes les couleurs wink )
Au début, je flippait qu'elle me ruine la pointe ou la surface en une heure (on sait comment ils sont parfois avec les feutres...), mais au contraire, elle n'appuie pas beaucoup, reste très concentrée, et la plupart du temps trace des traits vraiment très fin (la tablette réagissant à la pression et à l'inclinaison).

Coté ergonomie, les dimensions de la BambooFun sont idéales (taille totale = env. une feuille A4, très fine et légère, stylet plus gros qu'un feutre) et elle peut la tenir sur ses genoux ou la reposer sur le bureau.

Coté interface, je laisse juste la fenêtre d'édition (encore trop petite pour appréhender des choix de brosses dans une collection, et trop complexe de choisir une couleur précise dans un cercle colorimétrique).

Coté "technique":
- j'ai créé un lanceur supplémentaire dans le Cairo-dock avec comme commande '~/.scripts/wacom/mypaint.sh && mypaint', ou mypaint.sh permet d'affecter les 4 boutons de la tablette à la touche "x" (historique des 5 dernières couleurs) et désactive le "Touch"
- Affectation d'une brosse "sympa" (pas trop "aliasée") à la pointe, et d'une "gomme dure" sur le bouton gomme du stylet

Mes seuls "hic":
- Je n'ai pas encore regarder si je pouvais définir à l'ouverture 5 couleurs "basiques" (vert, rouge, bleu, jaune, noir) à cet "historique" (ou tout autre moyen de sélection de couleur plus évident que le cercle colorimétrique par défaut dans mypaint)
- Idem pour la définition par défaut des brosses à affecter aux boutons du stylet (pointe/gomme)
Donc, pour l'instant, je le fais à la main moi-même à l'ouverture du soft hmm (cela ne me prend pas plus de 10 secondes avec l'habitude, mais si ça pouvait être automatisé... Si un mypainter passe dans le coin... big_smile

Alors après, je pourrais utiliser un autre soft de dessin (et ils sont légions), mais j'adore mypaint, et le fait qu'il propose juste une grande "page blanche" en plein écran (j’entends sans menu ni rien...).

J'ai aussi essayé Xournal une fois, c'est rigolo (les templates de fond de page style cahier) et très facile d'emploi (notamment pour la sélection des couleurs), mais bon, menus et boutons/outils inutiles (pour ma petite) en en-tête de soft...

Voilà pour les news, si vous avez des idées, je prend big_smile

@+

Dernière modification par RegisBurin (Le 16/02/2012, à 23:08)


Ma config (M-AUDIO Delta44/Wacom CTH661) | BabyBox[WIP]
Moi sur le web ("Régis est un cool") / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#11 Le 20/02/2012, à 11:12

AntoineT

Re : [WIP] BabyBox

Salut à tous,

je reviens vous montrer quelques screenshots et vous indiquer quelques petites nouveautés que j'ai implémentées. Je précise que l'interface est pompée de façon éhontée sur celle que RegisBurin a mis en place...

Alors; le bureau principal :
1329726766.png
Le dock est Cairo-dock, avec Gcompris, un lanceur vers un dossier de petites videos en tous genres (chansons, videos familliales, etc.), un lanceur vers une interface de choix de petits dessins animés (voir plus bas), TuxPaint et un lanceur qui lance un diaporama de son dossier Images en ordre aléatoire et plein écran (feh). En haut à droite une applet Cairo-dock lancant le script de déconnexion.
Le conky donne l'heure, le jour de la semaine (suite à des questions récurrentes "on est quel jour ?"), la date ainsi que le niveau de batterie et de volume (la session est sur un portable). Plus tard je modifierai l'affichage de l'horloge pour quelque chose de plus lisible et ajouterai sans doute une horloge analogique (lua ?).
Le conky :

######################
# - Conky settings - #
######################
update_interval 1
total_run_times 0
net_avg_samples 1
cpu_avg_samples 1

imlib_cache_size 0
double_buffer yes
no_buffers yes

#####################
# - Text settings - #
#####################
use_xft yes
xftfont Dinreg:size=195
override_utf8_locale yes
text_buffer_size 2048
xftalpha 0.9

#############################
# - Window specifications - #
#############################
own_window_class Conky
own_window yes
own_window_transparent yes
own_window_type override
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
#own_window_argb_visual yes
#own_window_argb_value 100

alignment tr
gap_x 10
gap_y 80
minimum_size 20 20


default_bar_size 60 8

#########################
# - Graphics settings - #
#########################
draw_shades no

default_color BDB5A1
default_color dbd3be
default_shade_color 1d1d1d
color0 ffffff
color1 ffffff
color2 D6713C
color2 d16e21

#lua_load ~/.conky/conkybg.lua
#lua_draw_hook_pre conky_draw_bg

TEXT
${voffset -230}${font Dinreg:size=13}${alignr}H ${color}${font}
${font Dinreg:size=100}${voffset -430}${time %H}
${color2}${voffset -100}${time %M}
${color2}${voffset -150}${font Droid Sans:size=16}
${if_match ${time %w}==1}${color2}${font Droid Sans:size=20:style=Bold}${else}${font Droid Sans:size=12}${color}${endif}${alignr}Lundi${font Droid Sans:size=12}
${if_match ${time %w}==2}${color2}${font Droid Sans:size=20:style=Bold}${else}${font Droid Sans:size=12}${color}${endif}${alignr}Mardi${font Droid Sans:size=12}
${if_match ${time %w}==3}${color2}${font Droid Sans:size=20:style=Bold}${else}${font Droid Sans:size=12}${color}${endif}${alignr}Mercredi${font Droid Sans:size=12}
${if_match ${time %w}==4}${color2}${font Droid Sans:size=20:style=Bold}${else}${font Droid Sans:size=12}${color}${endif}${alignr}Jeudi${font Droid Sans:size=12}
${if_match ${time %w}==5}${color2}${font Droid Sans:size=20:style=Bold}${else}${font Droid Sans:size=12}${color}${endif}${alignr}Vendredi${font Droid Sans:size=12}
${if_match ${time %w}==6}${color2}${font Droid Sans:size=20:style=Bold}${else}${font Droid Sans:size=12}${color}${endif}${alignr}Samedi${font Droid Sans:size=12}
${if_match ${time %w}==0}${color2}${font Droid Sans:size=20:style=Bold}${else}${font Droid Sans:size=12}${color}${endif}${alignr}Dimanche${font Droid Sans:size=12}
${font Droid Sans:size=20:style=Bold}${alignr}${color2}${time %d} ${if_match "${time %B}"=="January"}janvier${else}\
${if_match "${time %B}"=="February"}février${else}\
${if_match "${time %B}"=="March"}mars${else}\
${if_match "${time %B}"=="April"}avril${else}\
${if_match "${time %B}"=="May"}mai${else}\
${if_match "${time %B}"=="June"}juin${else}\
${if_match "${time %B}"=="July"}juillet${else}\
${if_match "${time %B}"=="August"}août${else}\
${if_match "${time %B}"=="September"}septembre${else}\
${if_match "${time %B}"=="October"}octobre${else}\
${if_match "${time %B}"=="November"}novembre${else}\
${if_match "${time %B}"=="December"}décembre$\
{endif}${endif}${endif}${endif}${endif}${endif}${endif}${endif}${endif}${endif}${endif}${endif}
#${wireless_link_bar 3 wlan0}

${voffset 275}${alignr}$battery_bar ${font Droid Sans:size=16}${alignr}$battery_percent %${font Droid Sans:size=3}
${font Droid Sans:size=16}${alignr}Vol : ${exec amixer get Master | awk -F'[]%[]' '/%/ {if ($5 == "off") { print "Muet" } else { print $2" %" }}'}

Le script de déconnexion pompé sur le script-quitter renvoie sur cet écran :
1329727230.png
Le script :

#!/usr/bin/python
# coding=latin-1
import gtk, os
from PIL import Image, ImageFilter

####################################################
##        PARTIE A MODIFIER 
####################################################

## Lien vers le fond d'ecran
IMG_FILE = '/home/zelie/dragonb.jpg' 

## Commande pour se deconnecter
CMD_LOGOUT = 'openbox --exit'

## Commande pour reboot
CMD_REBOOT = 'sudo shutdown -r now'

## Commande pour etteindre l'ordinateur
CMD_SHUTDOWN = 'sudo shutdown -h now'

## Commande pour changer d'utilisateur
CMD_SWITCH = 'gdmflexiserver -xnet'

####################################################
##        NE RIEN CHANGER A PARTIR D'ICI 
####################################################


class MyApp():
    def __init__(self):
        
        self.window = gtk.Window()        
        self.window.set_title("Log Out ..")
        self.window.connect("destroy", self.doquit)
        self.window.connect("key-press-event", self.onkeypress)
        self.window.set_size_request(620,200)
        self.window.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("black"))
        self.window.set_decorated(False)
        self.window.set_position(gtk.WIN_POS_CENTER)
        
        self.mainpanel = gtk.Fixed()
        self.window.add(self.mainpanel)
        
        self.screen_x , self.screen_y = gtk.gdk.screen_width(), gtk.gdk.screen_height()

        x = ( self.screen_x / 2 ) - ( 140 * 4 / 2 ) - 30
        y = ( self.screen_y / 2 ) - 100

        self.bt_tab = []
        ## 1st Line
        self.add_bouton("application-exit", x+60, y+30, "Retour")
        self.add_bouton("system-log-out", x+500, y+30, "Déconnexion")
        ## self.add_bouton("system-restart", x+310, y+30, "Redemarrage")
        ##self.add_bouton("system-shutdown", x+340, y+30, "Extinction")
        self.add_bouton("system-switch", x+280, y+30, "Changer")
        self.add_label("Retour",x+100, y+170)
        self.add_label("Déconnexion",x+530, y+170)
        self.add_label("Changer d'utilisateur",x+280, y+170)
       
    self.set_background()
        ##self.bt_tab[1].grab_focus()             

##    def set_background(self):
##        pixbuf = gtk.gdk.pixbuf_new_from_file(IMG_FILE)
##        pixbuf = pixbuf.scale_simple(gtk.gdk.screen_width(), gtk.gdk.screen_height(), gtk.gdk.INTERP_BILINEAR)
##        pixmap, mask = pixbuf.render_pixmap_and_mask()
##        self.window.set_app_paintable(True)
##        self.window.resize(self.screen_x, self.screen_y)
##        self.window.realize()
##        self.window.window.set_back_pixmap(pixmap, False)
##        self.window.move(0,0)
##        del pixbuf
##        del pixmap

    def set_background(self):
        img_file = "/tmp/root_window.jpg"
    w = gtk.gdk.get_default_root_window()
        sz = w.get_size()
        pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
        pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
        if (pb != None):
            pb.save(img_file,"jpeg")
            image = Image.open(img_file)
            color = 'black'
            alpha = 0.7
            mask = Image.new("RGB", image.size, color)
            image = Image.blend(image, mask, alpha)
            image.save(img_file,"jpeg")

        pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(img_file, self.screen_x, self.screen_y)
        pixmap, mask = pixbuf.render_pixmap_and_mask()
        # width, height = pixmap.get_size()
        self.window.set_app_paintable(True)
        self.window.resize(self.screen_x, self.screen_y)
        self.window.realize()
        self.window.window.set_back_pixmap(pixmap, False)
        self.window.move(0,0)
        del pixbuf
        del pixmap

    def add_bouton(self, icon, x, y, info):
        image = gtk.Image()
        image.set_from_file("img/" + icon + ".png")
        image.show()
        bouton = gtk.Button()
        bouton.set_relief(gtk.RELIEF_NONE)
        bouton.set_focus_on_click(False)
        bouton.set_border_width(0)
        bouton.set_property('can-focus', False)
        bouton.add(image)
        tooltips = gtk.Tooltips()
        tooltips.set_tip(bouton, str(info))
        bouton.show()
        self.mainpanel.put(bouton, x,y)
        bouton.connect("clicked", self.clic_bouton, icon)
        self.bt_tab.append(bouton)


    def add_label(self, name, x, y):
        label = gtk.Label(name)
        label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("white"))
        self.mainpanel.put(label, x, y)

    # Cette fonction est invoquee quand on clique sur un bouton.
    def clic_bouton(self, widget, data=None):
        if (data=='system-log-out'):
            os.system(CMD_LOGOUT)

        elif (data=='system-restart'):
            os.system(CMD_REBOOT)

        elif (data=='system-shutdown'):
            os.system(CMD_SHUTDOWN)

        elif (data=='system-switch'):
            os.system(CMD_SWITCH)

        self.doquit()           

    def onkeypress(self, widget=None, event=None, data=None):
        if event.keyval == gtk.keysyms.Escape:
            self.doquit() 
    
    def doquit(self, widget=None, data=None):
        gtk.main_quit()

    def run(self):
        self.window.show_all()
        gtk.main()

#-------------------------
if __name__ == "__main__":
#-------------------------
    ## need to change directory
    SRC_PATH = os.path.dirname( os.path.realpath( __file__ ) )
    os.chdir(SRC_PATH)
    app = MyApp()
    app.run()

Pour ce qui est des diverses videos, vu le nombre de fichiers je suis plus ou moins obligé de passer par nautilus. Mais je voulais qu'à la fin d'une video on revienne au bureau (pas à nautilus). J'ai donc un script en taĉhe de fond (lancé au démarrage) qui vérifie régulièrement si VLC est lancé. Si oui il vérifie si nautilus est lancé, et si oui il kill nautilus. Comme ça lorsqu'on lance une video depuis nautilus, à la fin de la lecture de la vidéo, VLC se ferme (option --play-and-exit) en on se retrouve sur le bureau car nautilus a été killé. Du coup mes lanceurs Cairo sont redevenu standard. Le script :

#!/bin/bash

while [ 1=1  ];
do
        if [ "$(ps aux -A | grep vlc | grep zelie | grep -v grep)" ]; then
            if [ "$(ps aux -A | grep nautilus | grep zelie | grep -v grep)" ]; then
                killall nautilus
            fi
        fi
    sleep 5
done

Le lanceur des videos diverses renvoie directement sur nautilus. Par contre celui des dessins animés (la télé) renvoie sur une interface de choix de la série (2 pour le moment) via l'écran suivant:
1329727787.png
L'icone en haut à droite permet de killer le script afin de revenir sur le bureau. Chaque icone ouvre ensuite nautilus sur le dossier kivabien.
Le script:

#!/usr/bin/python
# coding=latin-1
import gtk, os
from PIL import Image, ImageFilter

####################################################
##        PARTIE A MODIFIER 
####################################################

## Lien vers le fond d'ecran
IMG_FILE = '/home/zelie/dragonter.jpg' 

## Commande pour Oui-oui
CMD_OUIOUI = 'nautilus /home/zelie/Videos/tmp/OuiOui --no-desktop'


## Commande pour Trotro
CMD_TROTRO = 'nautilus /home/zelie/Videos/tmp/Trotro --no-desktop'

####################################################
##        NE RIEN CHANGER A PARTIR D'ICI 
####################################################


class MyApp():
    def __init__(self):
        
        self.window = gtk.Window()        
        self.window.set_title("Log Out ..")
        self.window.connect("destroy", self.doquit)
        self.window.connect("key-press-event", self.onkeypress)
        self.window.set_size_request(620,200)
        self.window.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("black"))
        self.window.set_decorated(False)
        self.window.set_position(gtk.WIN_POS_CENTER)
        
        self.mainpanel = gtk.Fixed()
        self.window.add(self.mainpanel)
        
        self.screen_x , self.screen_y = gtk.gdk.screen_width(), gtk.gdk.screen_height()

        x = ( self.screen_x / 2 ) - ( 140 * 4 / 2 ) - 30
        y = ( self.screen_y / 2 ) - 100

        self.bt_tab = []
        ## 1st Line
        self.add_bouton("ouioui", x-20, y+30, "Oui Oui")
        self.add_bouton("trotro", x+500, y+30, "Trotro")
        self.add_bouton("application-exit", x+800, y-300, "Retour")
        self.add_label("Oui Oui",x+20, y+170)
        self.add_label("Trotro",x+540, y+170)
       
    self.set_background()
        ##self.bt_tab[1].grab_focus()             

    def set_background(self):
        pixbuf = gtk.gdk.pixbuf_new_from_file(IMG_FILE)
        pixbuf = pixbuf.scale_simple(gtk.gdk.screen_width(), gtk.gdk.screen_height(), gtk.gdk.INTERP_BILINEAR)
        pixmap, mask = pixbuf.render_pixmap_and_mask()
        self.window.set_app_paintable(True)
        self.window.resize(self.screen_x, self.screen_y)
        self.window.realize()
        self.window.window.set_back_pixmap(pixmap, False)
        self.window.move(0,0)
        del pixbuf
        del pixmap



    def add_bouton(self, icon, x, y, info):
        image = gtk.Image()
        image.set_from_file("img/" + icon + ".png")
        image.show()
        bouton = gtk.Button()
        bouton.set_relief(gtk.RELIEF_NONE)
        bouton.set_focus_on_click(False)
        bouton.set_border_width(0)
        bouton.set_property('can-focus', False)
        bouton.add(image)
        tooltips = gtk.Tooltips()
        tooltips.set_tip(bouton, str(info))
        bouton.show()
        self.mainpanel.put(bouton, x,y)
        bouton.connect("clicked", self.clic_bouton, icon)
        self.bt_tab.append(bouton)


    def add_label(self, name, x, y):
        label = gtk.Label(name)
        label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("white"))
        self.mainpanel.put(label, x, y)

    # Cette fonction est invoquee quand on clique sur un bouton.
    def clic_bouton(self, widget, data=None):
        if (data=='trotro'):
            os.system(CMD_TROTRO)

        elif (data=='ouioui'):
            os.system(CMD_OUIOUI)
                
        elif (data=='system-restart'):
            os.system(CMD_REBOOT)

        elif (data=='system-shutdown'):
            os.system(CMD_SHUTDOWN)

        elif (data=='system-switch'):
            os.system(CMD_SWITCH)

        self.doquit()           

    def onkeypress(self, widget=None, event=None, data=None):
        if event.keyval == gtk.keysyms.Escape:
            self.doquit() 
    
    def doquit(self, widget=None, data=None):
        gtk.main_quit()

    def run(self):
        self.window.show_all()
        gtk.main()

#-------------------------
if __name__ == "__main__":
#-------------------------
    ## need to change directory
    SRC_PATH = os.path.dirname( os.path.realpath( __file__ ) )
    os.chdir(SRC_PATH)
    app = MyApp()
    app.run()

Le problème qui est vite apparu, c'est qu'elle a trop d'épisodes dans chaque catégorie, et que donc 1) elle ne sait plus bien quoi choisir, 2) il faut scroller la fenêtre pour faire apparaître les fichiers suivants et 3) trop d'incitations à passer des plombes à regarder les dessins animés. J'ai donc fait un script qui se lance à chaque démarrage de la session et qui sélectionne aléatoirement N épisodes de chaque série (N est configurable) et les copie dans un sous dossier ad-hoc. L'interface de choix des séries ouvre en fait nautilus dans ce dossier "temporaire". Du coup elle a le choix, mais il est plus limité tout en variant à chaque fois que le session est ouverte ce qui évite la monotonie. Bien entendu je peux aussi lancer le script à la main si je veux renouveller le choix en cours de session (ou faire choisir un nombre plus grand d'épisodes).
Le script de sélection/copie aléatoire est le suivant (pour "Trotro"; il y a le même pour "OuiOui"):

#!/bin/bash
rm /home/zelie/Videos/tmp/Trotro/*
files=(/home/zelie/Videos/Trotro/*)
filecount="${#files[@]}"
filecount=$((filecount-1))
sf2=$( shuf -i 0-$filecount )
j=1
for i in $sf2
do
    if [ $j -le $1 ]
    then
        echo ${files[$i]}
        cp "${files[$i]}" /home/zelie/Videos/tmp/Trotro
        j=$((j+1))
    fi
done

Le script prend un argument correspondant au nombre d'épisodes qui seront sélectionnés (ex: lancer trotro 5 choisit aléatoirement 5 épisodes dans le dossier principal et les copie dans le dossier temporaire ad-hoc)

Du coup dans nautilus les choses sont un peu plus clean et facilite le choix (j'ai fait l'icone de fermeture close.xbm à la main car celles que j'aiavis trouvé n'étaient pas assez grandes ; si quelqu'un la veut je peux lui envoyer):
1329728509.png

J'ai toujours mon script de ralentissement de la souris/désactivation du click droit. Pour la vitesse, je vais l'augmenter petit à petit au fur et à mesure qu'elle sera plus à l'aise avec la manipulation (c'est une souris super-rapide à la base, même moi j'ai un peu de mal...). Pour le click droit, j'entends bien les arguments contre une désactivation systématique mais je préfère la conserver pour le moment.

Hors ligne

#12 Le 11/03/2012, à 23:59

RegisBurin

Re : [WIP] BabyBox

Salut tous

AntoineT a écrit :

Je précise que l'interface est pompée de façon éhontée sur celle que RegisBurin a mis en place...

Pour l'instant, tu as offert bien plus que ce que tu n'as "pris" ici, donc pas de soucis de ce coté, et merci à toi de suivre ce fil.

En l’occurrence, je prends tes script de test filemanager/vlc, et le "random_trotro.sh" qui est très cool.

À noter que j'ai fait un essai "BabyBox-KDE" ce week-end (Mme Burin n'était décidément pas fan de Unity roll et m'a fait switcher son poste sur Kubuntu), et qu'il y a un truc super intéressant à faire.
1331502690.png
En fait, kde se suffit à lui même pour ce genre d'interface. Le dock et Xeyes sont des gadgets plasma, et Dolphin le plus dépouillé possible...

@+


Ma config (M-AUDIO Delta44/Wacom CTH661) | BabyBox[WIP]
Moi sur le web ("Régis est un cool") / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#13 Le 12/09/2012, à 03:37

doudoulolita

Re : [WIP] BabyBox

Animatrice multimédia dans un Espace Public Numérique, je reçois (entre autres) des "grands" de 5 ans, et à l'heure actuelle, nous avons une session pour les écoles un peu adaptée avec une configuration de Writer un peu simplifiée (je rappelle que ce sont des "grands" qui savent recopier un modèle), des lanceurs dans la barre des tâches vers Gcompris, Tuxpaint, Firefox et Writer + un lanceur vers les dessins sauvegardés de Tuxpaint.
A noter que j'ai eu à une période des classe de "moyens" de 4 ans avec la même config. Nous recevons très rarement des plus jeunes ou seulement avec leur maman (ben, oui, pas encore de papas qui amènent des bébés).

Je crée des tampons personnalisés deTuxpaint pour des photomontages avec les photos des enfants. Je commence aussi à proposer des activités nouvelles pour Gcompris (pas encore intégrées).

Je souhaite mettre en marque-pages sur Firefox des sites utiles pour les non lecteurs (il y en a peu) mais il me faudra les envoyer via une routine sur 25 postes, depuis notre serveur. Je ne sais pas trop où envoyer le fichier bookmark.html. Comme je crois avoir affaire à des super papas en matière d'informatique, avez-vous des conseils à me donner ?

Il faut mieux travailler avec qu'à côté donc c'est bien que ceux qui disent pomper (en s'inspirant) et ceux qui pompent (en créant des choses) discutent ensemble. cool

Je me demande si 2 ans et demi n'est pas un peu tôt pour bénéficier de sa propre session, mais bon, pourquoi pas ?
Tout dépend pourquoi on le fait et comment l'enfant l'apprécie, j'imagine. smile
Ce que dit Régis sur l'utilisation du stylet montre que l'enfant agit vraiment, et n'est pas seulement spectateur comme avec une télé améliorée.

Vos graphismes à tous sont plutôt sympa, ça fait plaisir de voir autant de talents au service des petits.

Je note au début du topic l'emploi de raccourcis clavier. Mais je vois mal un enfant de 2 ans et demi les réaliser ! wink

Dernière modification par doudoulolita (Le 12/09/2012, à 03:52)

Hors ligne

#14 Le 14/09/2012, à 15:22

RegisBurin

Re : [WIP] BabyBox

Salut doudoulolita

Pour la config et le déploiement de favoris FF sur un intranet... je ne peux pas répondre par manque de connaissance sur cette action précise, mais j'imagine que ce ne doit pas être trop compliqué à faire (il faudrait presque poser question dans la partie "Réseau" du forum ou certain sont très "calés" à ces sujets). Cependant, si tu as découvert des sites faciles d'accès pour les tous petits (pas encore lecteur), je t'invite à partager les liens ici. Je suis en recherche perpétuelle de ce genre de plate-forme, pour la petite et aussi pour prendre ("pomper" wink ) des idées de mise en place et d'ergonomie d'interfaces dédiées aux petits.

Concernant l'age de ma fille quand j'ai créé cette session. Bon, je n'ai évidement pas le retour d'expérience d'un(e) psychomotricien(ne), ni l'objectivité qu'il faudrait (mon "beta-testeur" unique est mon bébé, et je suis un papa très fier du moindre développement psychomot'/moral/social révélé... un papa normal quoi tongue )... Mais je relève néanmoins, après 8 mois d'expérience, les points suivants:

Je pense que l'utilisation des périphériques informatique doit participer au développement psychomoteur, et de l'attention/concentration (je n'ai finalement jamais réglé/affaibli la vitesse de déplacement du pointeur et elle a très bien su s'en accommoder -elle qui a tendance à être plutôt "dynamique", voire brusque, lorsqu'elle joue avec ses jouets "classiques")

Les interfaces et les contenus des softs amènent forcément à l'utilisation de menus ou d'interactions avec des éléments graphiques. Si c'est un peu compliqué au début, l’apprentissage et la redondance font que c'est un bon parallèle avec les "jeux de société" (prévus pour cette tranche d'age) pour développer le respect des règles d'interactions, et la logique des systèmes (éléments imbriqués et interdépendants, jeux de constructions). Je suis souvent étonné qu'elle réussisse à retenir et effectuer certaines séquences d'actions parfois longues et complexes (ouvrir TuxPaint, créer un patron N&B via un fond choisi dans la liste, imprimer le patron et le récupérer dans l'imprimante pour le colorier ensuite...)

Pour ce qui est de la fréquence d'utilisation et la manière dont elle utilise le pc, disons qu'elle n'est absolument pas "geek". Elle sait venir allumer seul la machine, jouer un peu (dessins, memory et puzzles surtout), puis éteindre l'ordi et passer à autre chose aussi promptement qu'elle le fait avec ses autres jouets/jeux. Par ailleurs, comme je suis très vigilant au niveau de la télé (pas envie qu'elle devienne une "tête-carrée", ni qu'elle soit trop tôt gavée de publicité), je mets tout en oeuvre pour que justement (comme tu le dis) le pc n'ait pas la même utilité que la TV. À ce titre, j'ai finalement supprimé le raccourci vers gulli.fr car les replay sont plein de pubs aussi désormais sad , plus de liens vers des clips musicaux non plus. Tout cela participe à ce que l'ordi lui paraisse aussi utile et intéressant (et complémentaire) que ses jouets, ses jeux et ses livres, mais pas plus.

Petite anecdote au passage. Le diaporama que je lui ai préparé contient des bulles de texte sur chaque photo avec les noms des gens ou des choses (exemple). Du coup, la semaine dernière, pour sa toute première rentrée lorsque la maîtresse lui a expliqué qu'elles iraient mettre une étiquette portant son prénom sur le tableau de présence tous les matins, elle a tout de suite reconnu son badge grâce à la forme des lettres. (J'vous explique pas comment j'en ai ch** à cacher ma fierté de papa devant le panel de mamans... wink )

Quant à la dernière remarque sur les raccourcis claviers, en fait ils ne servent qu'à moi pour accéder aux paramètres, à un terminal ou au gestionnaire de fichier. Elle n'utilise d'ailleurs quasiment pas le clavier pour le moment (à part pour les activités Gcompris)...

Encore merci de nous lire, n'hésite pas à continuer d'échanger sur ce thème, et à partager ce que tu pourrais développer (pour Gcompris par exemple, je veux bien beta-tester s'il y a besoin big_smile ), ou trouver comme liens/sites intéressants pour les 3-6 ans

@+


Ma config (M-AUDIO Delta44/Wacom CTH661) | BabyBox[WIP]
Moi sur le web ("Régis est un cool") / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#15 Le 17/09/2012, à 10:35

david96

Re : [WIP] BabyBox

Bon sang, je suis une brèle, comment j'ai pu louper ton sujet alors que tu me l'avais signalé sur ce forum :  Votre opinion pour une enfant de 4 ans

Rhaaa, je m'en veux ! mad
Bon pour me rattraper je vais tenter d'intégrer ton travail sous Xubuntu (je lui ai mis ce gestionnaire de bureau finalement).

doudoulolita a écrit :

Nous recevons très rarement des plus jeunes ou seulement avec leur maman (ben, oui, pas encore de papas qui amènent des bébés).

Cette phrase m'a étonné… Je n'ai jamais rencontré cela avec mes filles, pourtant on a souvent déménagé. smile

Dernière modification par david96 (Le 17/09/2012, à 10:36)

En ligne

#16 Le 18/09/2012, à 11:30

doudoulolita

Re : [WIP] BabyBox

@david96 : J'espère que les papas vont aussi venir dans notre Espace Public Numérique avec leur tout-petits. On a par contre des papas accompagnateurs pour les moyens et les grands de maternelles et ils sont souvent très intéressés par les logiciels qu'on utilise avec eux. smile
@Regis : merci pour tes explications sur la manière de réagir de ta fille, c'est très intéressant.

Voici la liste de sites que j'ai trouvés:
jeux.lulu
poisson rouge
kidzo
mon-ludo
toupty
wismo
tralalere
caillou
le monde de victor
barbapapa
+ plein d'adresses utiles sur clicouweb

Côté logiciel, j'ai installé tout récemment Childsplay (qui est dans les sources d'Ubuntu 12.04), que je n'ai pas vu sur ce topic, je crois.
On a aussi Yofrankie, jeu 3D qui semble plaire aux 5-6 ans (moi, je ne sais pas y jouer !) et un petit jeu 2D auquel je participe : Ultimate Smash Friends (ils l'appellent le jeu de la bagarre wink )

Dernière modification par doudoulolita (Le 30/09/2012, à 22:42)

Hors ligne

#17 Le 18/09/2012, à 14:31

david96

Re : [WIP] BabyBox

Excellent, merci pour ce partage smile

Ma plus grande fille aime bien jouer à :
* secret_maryo_chronicles (un clône de mario)
* Les Chevaliers de Baphomet qu'on peut installer grâce à ScummVM
* fish_fillets super jeu casse tête tongue
* Limbo (attention, ce jeu peut faire peur)
* Et en général tous les  jeux qui font partie des Humble Indie Bundle
Mais à vrai dire, elle joue moins qu'avant sur son portable depuis qu'elle a la DS ; elle préfère maintenant utiliser son portable pour communiquer avec ses amies ou voir des vidéos.

Dernière modification par david96 (Le 18/09/2012, à 14:47)

En ligne

#18 Le 30/09/2012, à 22:35

doudoulolita

Re : [WIP] BabyBox

Sur un autre topic que j'ai créé, on m'a donné une bonne adresse. J'en ai extrait : Espace Kid d'Asri edu pour les 4-6 ans.

L'adresse de Limbo pour avoir un aperçu d'un univers pour enfant qui a l'air effectivement assez noir mais très beau : limbogame.org - Tu avais oublié de la mettre.

Dernière modification par doudoulolita (Le 30/09/2012, à 22:40)

Hors ligne

#19 Le 02/10/2012, à 09:05

RegisBurin

Re : [WIP] BabyBox

@David96: Non, ce n'est pas moi qui t'avais répondu sur cet autre forum, mais ravi que tu te joignes à nous sur ce sujet (et ravi qu'il ait été cité en lien dans cet autre topic tongue ). Merci pour Fish fillets que je ne connaissais pas. Concernant les jeux des humble bundle, je les ai quasiment tous acheté big_smile . Mis à part ZenBound2 que ma petite arrive à "manier" sur la tablette de Maman (sans pour autant comprendre qu'il faut enrouler tout l'objet pour gagner), elle est encore trop jeune pour le reste des jeux (trop compliqués, trop rapides ou trop violents...) Quant aux Mario like (SMC, SuperTux...) elle commence à comprendre le principe et apprécier -surtout l'esthétique- (elle y joue avec une manette Xbox360, niveau ergonomie c'est pas top pour les toutes petites mains donc elle y joue très peu...)

@Doudoulolita:
Grands mercis pour tous ces liens ! Pour Childsplay, j'avais trouvé que c'était redondant avec les activités proposées par Gcompris (auquel elle est vraiment très habituée)... mais il faudrait que je re-teste.

@+


Ma config (M-AUDIO Delta44/Wacom CTH661) | BabyBox[WIP]
Moi sur le web ("Régis est un cool") / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#20 Le 12/10/2012, à 11:32

doudoulolita

Re : [WIP] BabyBox

@Regis: D'accord avec toi sur Childsplay. L'ergonomie est même moins bonne que Gcompris sad . Cependant, avoir de nouveaux jeux à proposer est toujours intéressant, je pense, afin de conserver l'intérêt.

Mais je ne l'ai pas encore testé avec les maternelles, que nous venons juste de recevoir pour leur premier cours de l'année scolaire.
Nous avons démarré de nouveau sur Gcompris.

Les institutrices ont des attitudes différentes pour l'utilisation des jeux de Gcompris en cadre scolaire. 2 d'entre elles préfèrent que les enfants restent sur peu d'activités et de même type (genre seulement les jeux de la souris dans le menu du chat, voire seulement 2 jeux de la souris) alors que les 2 autres laissent toute liberté aux enfants.
Les premières estiment que les enfants doivent apprendre à finir une activité avant de passer à la suivante, ce qu'ils ne font pas naturellement, et que pour bien apprendre le clic de la souris, il ne faut pas mélanger avec d'autres notions.
Les secondes privilégient un apprentissage par l'exploration.

Hors ligne

#21 Le 13/01/2013, à 15:20

Julientroploin

Re : [WIP] BabyBox

Juste un petit message d'encouragement du papa d'une petite fille (de bientôt 2ans) qui va certainement s'inspirer de votre travail lors de ses prochaines vacances.
Je ne suis pas sûr d'avoir les compétences pour mettre en oeuvre tout ce que vous avez fait, mais j'éspère obtenir une session facilement utilisable...

Votre travail mériterait un tuto bien écrit dans la doc., du style "Créer une session pour jeunes enfants". Si personne n'est motivée pour le faire, je me lancerais peut être au moment où je créerais la mienne. Je mettrais dans ce cas un lien vers ce post wink

Félicitations à tous !

Dernière modification par Julientroploin (Le 13/01/2013, à 15:20)


Fixe : Core i5, 4GoRAM, NVidia 9800GT Silent => Raring64
Portable Compaq Presario2158 : AthlonXP-M2400+, 1GoRAM, ATI Radeon mobility320M => Debian stable+Openbox
https://launchpad.net/~julienmbpe

Hors ligne

#22 Le 16/11/2013, à 15:36

doudoulolita

Re : [WIP] BabyBox

Je reprends ce topic pour ajouter un lien vers le blog des maternelles de l'Espace Libre 13.1, dont je m'occupe.
il y a dedans des idées d'activité et des conseils pour la personnalisation de Tuxpaint, Gcompris et Omnitux.

C'est un peu de la pub mais juré, ça ne me rapporte pas un sou de plus !

Hors ligne

#23 Le 05/04/2014, à 15:48

krisskriss

Re : [WIP] BabyBox

Bonjour
super génial tout a fait ce que je recherche pour ma fille sauf que je voudrait faire tourner ce genre de launcher sur Android et pourvoir y mettre les jeux et application educatif du play store
est ce possible ??
kriss

Hors ligne

#24 Le 28/05/2014, à 13:07

RegisBurin

Re : [WIP] BabyBox

Salut à tous
Je me dois un petit retour sur ce topic, pour ses lecteurs, et pour faire le point sur l'avancée du projet.

Nous (la petite famille) avons eu de nombreux impératifs socioprofessionnels divers et "bouleversants" pour la petite (déménagement/achat de maison avec beaucoup de travaux, changement d'école, et changement de travail/horaires pour moi...). Bref, la "BabyBox" a fini par sombrer dans les abîmes des cartons pas encore déballés. tongue
Autant physiquement (le très vieux portable qui servait de BabyBox a finalement été mis au rebut pour cause de carte mémoire morte) que le projet en lui-même (je fais, depuis un moment, plus de maçonnerie/menuiserie/terrassement/électricité que de "geekeries").

Par ailleurs, ma fille a grandi (très vite), elle a maintenant 5 ans (dans 2 semaines), et n'a plus le même usage du PC. Elle se sert du "notre" pour jouer, sur une session "adulte" (une Mint sous Cinnamom sur le PC surf/bureautique "du salon") et s'en accommode parfaitement. Ce qui aide, c'est qu'elle sait déjà lire (Elle a appris à moitié toute seule, on ne sait pas trop comment!). Donc aucun soucis pour se balader dans les menus (de la session et des applis), et trouver se qu'elle cherche. J'aime à croire que l'apprentissage des symboles d'écriture via les jeux ludo-éducatifs, et le fait que je lui lise religieusement tous les soirs une histoire depuis qu'elle est née (quoique mantenant, elle en lise souvent toute seule), a favorisé son apprentissage et son intérêt pour la lecture (à l'école, ils nous proposent de la faire passer en CP dès l'an prochain, ça m'inquiète un peu, mais si ça permet qu'elle ne s'ennuie pas en restant en maternelle un an de plus...)

Voilà pour la partie "3615 ma vie".

Pour ce qui est de la BabyBox en tant que projet, j'ai quand même sauvé tout ça, et ai commencé (puis un peu abandonné) à repartir de zéro depuis une Debian 7.0 minimale et en hackant le script "Bee"... Pour l'instant, ça marchouille (mis à part quelques bugs de trucs qui ne veulent pas s'installer, et l'environnement graphique qui demande des bidouilles après install pour ressembler aux screens du premier post). Je posterai évidement le script si je m'y remet un jour (une nuit plutôt wink )

Quelques réponses et remarques à ceux qui suivent ce fil:
@ doudoulolita: Ma petite aime finalement alterner entre childsplay et Gcompris, certaines activités se complémentent parfaitement et le gameplay diffère sur certaines activités (entre autres, elle adore le pacman des lettres dans childsplay). Ce qui est marrant, c'est qu'elle a tellement fait la pub pour Gcompris/Tuxpaint à sa nouvelle école, qu'ils ont fini par les installer. Par contre, comme la version Windows ne proposent pas (gratuitement) l'intégralité des activités, elle peste de ne pas y trouver certains jeux qu'elle aime bien (c'est là que j'interviendrai un de ces quatre pour proposer une aide à l'install d'un poste Linux auprès des maîtresses... GnarkGnark).
Autre chose qui peut t'être utile dans ton animation de l'ERP (si toujours d'actualité). J'ai animé quelques ateliers informatiques pour des 6-12 ans pour un centre social avant de retrouver du taf. J'ai gardé des synopsis d'activités ("drôle de têtes", "drôle de voix"), ainsi qu'une liste des softs utilisés (les freeware étaient déjà installés sur des postes Windows, et pour le reste trois Framakeys dans la poche ont fait l'affaire). Si ça peut servir...
Au programmes (et en vrac): Des jeux, des calendriers persos, des bandes dessinées (au passage, dommage qu'il n'existe pas d'équivalent open source de BD Studio Pratic, c'est vraiment simple et génial comme soft), des diaporamas, et même un petit film réalisé avec tous (scenario écrit sous LibreOffice, puis tourné avec un APN) et monté sous Kdenlive avec les plus grands.
Encore merci pour tes partages, ils m'ont été bien utiles.

@Julientroploin: Où en es tu? As-tu préparer une jolie session pour ta petite? Quant à un éventuel tuto, si je mène à bout ce projet, et si j'arrive à avoir un iso ou un script utilisable, je créerai une page de doc, promis wink En attendant, j'ai condensé ce fil dans un wiki perso (cf. un des liens de ma signature).

@krisskriss: Merci pour les encouragements. Par contre niveau adaptation à un environnement Android ??? Aucune idée, il faudrait fouiner les forums spécialisés. Soit partir d'une Android sur un PC (ou d'une machine Adroid directement, tablette, phone...), mais je ne sais pas à quel point c'est "hackable" ?? Ou inversement, pouvoir lancer des applis du playstore sur une session relookée comme ma BabyBox (je ne sais pas s'il existe un équivalent libre et compatible Linux de Bluestacks?). Ou encore créer un lanceur qui lance un machine virtuelle Android... ou un lanceur qui lance une machine virtuelle Windows qui lance bluestacks, ou... NON, stop, ça devient "Inception" mon truc... big_smile

@+

Dernière modification par RegisBurin (Le 28/05/2014, à 13:11)


Ma config (M-AUDIO Delta44/Wacom CTH661) | BabyBox[WIP]
Moi sur le web ("Régis est un cool") / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#25 Le 28/05/2014, à 16:19

Julientroploin

Re : [WIP] BabyBox

Merci pour les retours RégisBurin !

RegisBurin a écrit :

@Julientroploin: Où en es tu? As-tu préparer une jolie session pour ta petite?

Oui, mais mon PC étant antédiluvien, j'avais comme challenge d'alléger au maximum le tout. Je suis donc parti sur une Debian minimale+openbox sur laquelle j'ai simplement paramétré Gcompris dans les applications au démarrage de la session. On n'arrive sur un bureau que si on ferme Gcompris...

Sur le bureau, une simple barre tint2 et un joli fond d'écran avec nitrogen.

Mais bon, pour l'instant ma fille n'est pas très demandeuse et préfère dessiner sur un papier ou faire du vélo que se servir de l'ordinateur... donc je ne force pas et attend que ça vienne.


Fixe : Core i5, 4GoRAM, NVidia 9800GT Silent => Raring64
Portable Compaq Presario2158 : AthlonXP-M2400+, 1GoRAM, ATI Radeon mobility320M => Debian stable+Openbox
https://launchpad.net/~julienmbpe

Hors ligne