• Personnaliser le bureau CTWM pour nous autres, Français

    Lorsque vous procédez à l'installation "Complete" de NetBSD (avec X11), vous obtenez un environnement de bureau : CTWM.

    Il fait un peu vieillot à première vue... sauf qu'en réalité, il est hyper personnalisable !
    Je n'utilise plus les autres depuis j'ai appris à m'en servir.

    2 configurations sont possibles :
    - La configuration par défaut (système).
    - La configuration par utilisateur.


    Le fichier de configuration utilisé par défaut lorsque CTWM se lance est ici : /etc/X11/ctwm/system.ctwmrc

    Pour configurer un environnement CTWM différent d'un utilisateur à l'autre, il faut rédiger un fichier ~/.ctwmrc (dans le répertoire de base de chaque utilisateur).
    En gros, vous copiez le fichier par défaut depuis /etc/X11/ctwm/ vers votre espace personnel en le renommant puis vous modifiez votre propre configuration.

    Ici, je préfère utiliser la même configuration pour tous les utilisateurs (puisqu'il n'y a que marcel, comme toujours), donc je vais toucher directement au fichier par défaut.

    On se met en root :

    su -


    D'abord, on en fait une copie par sécurité :

    cp /etc/X11/ctwm/system.ctwmrc /etc/X11/ctwm/system.ctwmrc.BAK


    Voici un fichier de configuration d'exemple modifié, avec le nom des menus en Français, ainsi que quelques raccourcis claviers personnalisés :
    - touchewindows + E (= mod4+E) pour ouvrir l'explorateur Thunar - à condition de l'avoir installé au préalable
    - touchewindows + L (= mod4+L) pour verrouiller l'écran - ça lance xscreensaver - à condition de l'avoir installé au préalable et de l'avoir configuré pour qu'il verrouille l'écran).
    - touchewindows + M (= mod4+B) pour redimensionner la fenêtre active de l'écran afin qu'elle occupe 100% de l'écran (il est très rapide après de la redimensionner à la souris pour qu'elle n'occupe que la moitié gauche ou droite de l'écran... je ne suis pas parvenu à faire cela en raccourics).
    - mod4+F : Lancer Firefox (il faut l'avoir installé)
    - mod4+T : Lancer Thunderbird (idem)
    - mod4+C : Lancer xfce4-screenshooter (idem)

    Ah au fait, je n'ai pas trouvé comment afficher les caractères accentués.. ça n'a pas fonctionné chez moi..
    Si quelqu'un sait, je suis preneur.

    #
    # $NetBSD: system.ctwmrc,v 1.19 2022/05/27 17:04:16 nia Exp $
    #
    # ctwmrc by nia
    #
    # An attempt to strike a usability balance that makes keys and buttons
    # do the thing users of various operating systems expect them to do.
    #
    # Most things should be possible to accomplish with only the keyboard.
    #
    # Also, mostly inoffensive colours (avoiding potentially inaccessible
    # combinations like red-green).
    #

    # -*- coding: utf-8 -*-


    # don't use the default buttons or key bindings, we define our own
    NoDefaults

    DontShowWelcomeWindow

    ShowWorkSpaceManager
    ShowIconManager

    # 3D icon managers do not seemingly honor IconManagerHighlight,
    # which makes them slightly less useful
    #UseThreeDIconManagers
    #UseThreeDWMap
    UseThreeDBorders
    #UseThreeDMenus
    UseThreeDTitles

    esyscmd(`printf "define(fontsize, %d)\n" "$(/usr/X11R7/libexec/ctwm_font_size)"')

    ifelse(fontsize, `64', `
    TitleFont "-*-spleen-*-*-*-*-64-*-*-*-*-*-*-*"
    MenuFont "-*-spleen-*-*-*-*-64-*-*-*-*-*-*-*"
    IconManagerFont "-*-spleen-*-*-*-*-64-*-*-*-*-*-*-*"
    IconFont "-*-spleen-*-*-*-*-64-*-*-*-*-*-*-*"
    ResizeFont "-*-spleen-*-*-*-*-64-*-*-*-*-*-*-*"
    WorkSpaceFont "-*-spleen-*-*-*-*-32-*-*-*-*-*-*-*"
    WorkSpaceManagerGeometry "240x960-4-4" 1
    IconManagerGeometry "800x-1-1+0" 1
    ThreeDBorderWidth 12
    BorderWidth 12
    define(setsizes, `yes')
    ')

    ifelse(fontsize, `32', `
    TitleFont "-*-spleen-*-*-*-*-32-*-*-*-*-*-*-*"
    MenuFont "-*-spleen-*-*-*-*-32-*-*-*-*-*-*-*"
    IconManagerFont "-*-spleen-*-*-*-*-32-*-*-*-*-*-*-*"
    IconFont "-*-spleen-*-*-*-*-32-*-*-*-*-*-*-*"
    ResizeFont "-*-spleen-*-*-*-*-32-*-*-*-*-*-*-*"
    WorkSpaceFont "-*-spleen-*-*-*-*-24-*-*-*-*-*-*-*"
    WorkSpaceManagerGeometry "120x480-4-4" 1
    IconManagerGeometry "400x-1-1+0" 1
    ThreeDBorderWidth 6
    BorderWidth 6
    define(setsizes, `yes')
    ')

    ifelse(fontsize, `24', `
    TitleFont "-*-spleen-*-*-*-*-24-*-*-*-*-*-*-*"
    MenuFont "-*-spleen-*-*-*-*-24-*-*-*-*-*-*-*"
    IconManagerFont "-*-spleen-*-*-*-*-24-*-*-*-*-*-*-*"
    IconFont "-*-spleen-*-*-*-*-24-*-*-*-*-*-*-*"
    ResizeFont "-*-spleen-*-*-*-*-24-*-*-*-*-*-*-*"
    WorkSpaceFont "-*-spleen-*-*-*-*-16-*-*-*-*-*-*-*"
    WorkSpaceManagerGeometry "90x360-4-4" 1
    IconManagerGeometry "300x-1-1+0" 1
    ThreeDBorderWidth 4
    BorderWidth 4
    define(setsizes, `yes')
    ')

    ifelse(fontsize, `12', `
    TitleFont "-*-spleen-*-*-*-*-12-*-*-*-*-*-*-*"
    MenuFont "-*-spleen-*-*-*-*-12-*-*-*-*-*-*-*"
    IconManagerFont "-*-spleen-*-*-*-*-12-*-*-*-*-*-*-*"
    IconFont "-*-spleen-*-*-*-*-12-*-*-*-*-*-*-*"
    ResizeFont "-*-spleen-*-*-*-*-12-*-*-*-*-*-*-*"
    WorkSpaceFont "-*-spleen-*-*-*-*-8-*-*-*-*-*-*-*"
    WorkSpaceManagerGeometry "45x180-4-4" 1
    IconManagerGeometry "150x-1-1+0" 1
    ThreeDBorderWidth 1
    BorderWidth 1
    define(setsizes, `yes')
    ')

    # Fallback in case a valid font size was not returned.
    # "Default case" is 16px.

    ifdef(`setsizes', `', `
    TitleFont "-*-spleen-*-*-*-*-16-*-*-*-*-*-*-*"
    MenuFont "-*-spleen-*-*-*-*-16-*-*-*-*-*-*-*"
    IconManagerFont "-*-spleen-*-*-*-*-16-*-*-*-*-*-*-*"
    IconFont "-*-spleen-*-*-*-*-16-*-*-*-*-*-*-*"
    ResizeFont "-*-spleen-*-*-*-*-16-*-*-*-*-*-*-*"
    WorkSpaceFont "-*-spleen-*-*-*-*-12-*-*-*-*-*-*-*"
    WorkSpaceManagerGeometry "60x240-4-4" 1
    IconManagerGeometry "200x-1-1+0" 1
    ThreeDBorderWidth 3
    BorderWidth 3
    ')

    RestartPreviousState

    DecorateTransients

    # allow the user to have their root window recolored as they choose
    DontPaintRootWindow

    # hide window contents while altering windows for performance
    NoOpaqueMove
    NoOpaqueResize

    AutoOccupy
    AutoRelativeResize

    CenterFeedbackWindow

    NoGrabServer

    RaiseOnClick

    DontMoveOff
    MoveOffResistance 150

    ConstrainedMoveTime 0

    IgnoreLockModifier

    # Not actually that random.
    # Means that windows do not have to be placed by hand with a mouse,
    # which helps if you are using a keyboard only.
    RandomPlacement "on"

    MoveDelta 3
    ClearShadowContrast 40
    DarkShadowContrast 60
    MovePackResistance 100

    RaiseWhenAutoUnSqueeze
    ShortAllWindowsMenus

    #BeNiceToColorMap

    NoStackMode

    StayUpMenus
    WarpToDefaultMenuEntry
    MenuShadowDepth 1

    # warp through all windows in the current workspace
    WindowRing
    WarpRingOnScreen

    NoTitleHighlight

    TitleButtonShadowDepth 1
    TitleShadowDepth 1
    TitleButtonBorderWidth 0
    TitlePadding 0
    TitleJustification "left"
    ButtonIndent 0
    FramePadding 0

    LeftTitleButton ":xpm:dot" = f.menu "titleops"
    RightTitleButton ":xpm:resize" = f.resize
    RightTitleButton ":xpm:cross" = f.delete

    BorderShadowDepth 2
    BorderResizeCursors

    MaxIconTitleWidth 120
    NoIconManagerFocus
    IconManagerShadowDepth 1
    IconifyByUnmapping

    ReallyMoveInWorkspaceManager
    MapWindowCurrentWorkSpace { "black" "firebrick" }
    DontToggleWorkSpaceManagerState
    DontWarpCursorInWMap
    NoShowOccupyAll
    ReverseCurrentWorkspace
    StartInMapState
    WMgrHorizButtonIndent 0
    WMgrVertButtonIndent 0

    WorkSpaces
    {
    "1" { "lavender" "black" "darkslateblue" "white" }
    "2" { "lavender" "black" "darkslateblue" "white" }
    "3" { "lavender" "black" "darkslateblue" "white" }
    "4" { "lavender" "black" "darkslateblue" "white" }
    "5" { "lavender" "black" "darkslateblue" "white" }
    }

    Cursors
    {
    Frame "left_ptr"
    Title "left_ptr"
    Icon "left_ptr"
    IconMgr "left_ptr"
    Move "fleur"
    Resize "fleur"
    Menu "left_ptr"
    Button "hand2"
    Wait "watch"
    Select "dot"
    Destroy "pirate"
    }

    Color
    {
    BorderColor "firebrick"

    BorderTileBackground "steelblue"
    BorderTileForeground "steelblue"

    DefaultBackground "grey70"
    DefaultForeground "black"

    TitleBackground "lavender"
    TitleForeground "black"

    MenuBackground "lavender"
    MenuForeground "black"
    MenuTitleBackground "darkorange2"
    MenuTitleForeground "black"
    MenuShadowColor "gray15"

    IconBackground "black"
    IconForeground "white"
    IconBorderColor "gray45"

    IconManagerBackground "lavender"
    IconManagerForeground "black"
    IconManagerHighlight "firebrick"

    MapWindowBackground "lavender"
    MapWindowForeground "black"
    }

    Monochrome
    {
    BorderColor "black"

    BorderTileForeground "black"
    BorderTileBackground "white"

    TitleForeground "black"
    TitleBackground "white"

    MenuForeground "black"
    MenuBackground "white"
    MenuTitleForeground "black"
    MenuTitleBackground "white"

    MapWindowForeground "white"
    MapWindowBackground "white"
    }

    syscmd(/usr/X11R7/libexec/ctwm_app_menu)

    menu "appmenu"
    {
    "Applications pkgsrc" f.title
    " Accessoires" f.menu "Accessories"
    " Jeux" f.menu "Games"
    " Graphique" f.menu "Graphics"
    " Internet" f.menu "Internet"
    " Multimedia" f.menu "Multimedia"
    " Bureautique" f.menu "Office"
    " Programmation" f.menu "Programming"
    " Systeme" f.menu "System"
    " Divers" f.menu "Misc"
    }


    menu "deskutils"
    {
    "Utilitaires de bureau" f.title
    " Calculatrice" !"xcalc &"
    " Editeur de texte" !"xedit &"
    "" f.separator
    " XEyes" !"xeyes &"
    " OpenGL Gears" !"glxgears &"
    " Cube tournant" !"ico -sleep 0.016 -obj cube -colors darkorange &"
    "" f.separator
    " Compositeur (ombres)" !"pkill xcompmgr; xcompmgr -c &"
    " Compositeurr (simple)" !"pkill xcompmgr; xcompmgr -n &"
    "" f.separator
    " Loupe" !"xmag -source 100x100 &"
    " Fermer la fenêtre" !"xkill &"
    }

    menu "termutils"
    {
    "Utiliaires du Terminal" f.title
    "" f.separator
    " Editeur VIsual" !"xterm -class UXTerm -e vi &"
    " Tetris" !"xterm -class UXTerm -e tetris &"
    "" f.separator
    " Egaliseur audio" !"xterm -class UXTerm -e aiomixer &"
    "" f.separator
    " Liste des processus" !"xterm -class UXTerm -e top &"
    " I/O stats" !"xterm -class UXTerm -e 'sysstat iostat' &"
    " Statistiques reseau" !"xterm -class UXTerm -e 'sysstat ifstat' &"
    " Utilisation du disque" !"xterm -class UXTerm -e 'sysstat df' &"
    }

    menu "NetBSD"
    {
    "NetBSD" f.title
    "" f.separator
    " Terminal" !"uxterm &"
    "" f.separator
    " Applications" f.menu "appmenu"
    " Utilitaires de Bureau" f.menu "deskutils"
    " Utilitaires du Terminal" f.menu "termutils"
    "" f.separator
    " Redemarrer CTWM" f.twmrc
    " Quitter" f.quit
    }

    menu "titleops"
    {
    "Fenetre" f.title
    "" f.separator
    " Iconifier" f.iconify
    " Redimensionner" f.resize
    " Deplacer" f.move
    "" f.separator
    " Occuper ..." f.occupy
    " Occuper tout" f.occupyall
    "" f.separator
    " Elever" f.raise
    " Abaisser" f.lower
    "" f.separator
    " Zoom" f.fullzoom
    " Zoom-V" f.zoom
    " Zoom-H" f.horizoom
    "" f.separator
    " Arreter" f.destroy
    " Fermer" f.delete
    }

    IconManagerDontShow
    {
    }

    OccupyAll
    {
    "XClock"
    "xsm"
    "xconsole"
    "XVidCap"
    }

    AlwaysOnTop
    {
    "XEyes"
    "XVidCap"
    }

    NoTitle
    {
    "TWM Icon Manager"
    "WorkSpaceManager"
    "XClock"
    }

    WindowRingExclude
    {
    "TWM Icon Manager"
    "WorkSpaceManager"
    "XClock"
    "xsm"
    "xconsole"
    }

    StartIconified
    {
    }

    NoBorder
    {
    }

    Function "raise-move" { f.raise f.deltastop f.forcemove }
    Function "raise-and-resize" { f.raise f.deltastop f.resize }

    # These are basically essential for basic functionality.

    Button1 = : title : f.function "raise-move"
    Button2 = : title : f.function "raise-and-resize"
    Button3 = : title | frame : f.menu "titleops"

    Button1 = : frame : f.function "raise-and-resize"

    Button1 = : icon | iconmgr : f.iconify
    Button2 = : icon : f.move
    Button3 = : icon | iconmgr : f.raiselower

    Button1 = : root : f.menu "NetBSD"
    Button2 = : root : f.menu "TwmAllWindows"
    Button3 = : root : f.menu "NetBSD"

    #
    # Mod1 is the "Alt/Meta" key.
    # Mod4 is the "OS" key.
    #

    Button1 = mod1 : window : f.forcemove
    Button1 = mod4 : window : f.forcemove
    Button3 = mod1 : window : f.resize
    Button3 = mod4 : window : f.resize

    "Up" = mod4 : all : f.upworkspace
    "Down" = mod4 : all : f.downworkspace
    "Left" = mod4 : all : f.prevworkspace
    "Right" = mod4 : all : f.nextworkspace


    ###################
    # Raccourcis personnalisés :
    #

    # - Lancer Thunar :
    "e" = mod4 : all : !"thunar &"

    # - Lancer xscreensaver
    "L" = mod4 : all : !"xscreensaver-command -lock &"

    # - Maximiser l'affichage d'une fenêtre :
    "B" = mod4 : window : f.fullzoom

    # - Lancer firefox
    "F" = mod4 : all : !"firefox &"

    # - Lancer thunderbird
    "T" = mod4 : all : !"thunderbird &"

    # - Lancer l'outil de captures d'écran :
    "C" = mod4 : all : !"xfce4-screenshooter &"


    ###################


    "Up" = mod1 | control : all : f.upworkspace
    "Down" = mod1 | control : all : f.downworkspace
    "Left" = mod1 | control : all : f.prevworkspace
    "Right" = mod1 | control : all : f.nextworkspace

    "1" = mod1 | control : all : f.gotoworkspace "1"
    "2" = mod1 | control : all : f.gotoworkspace "2"
    "3" = mod1 | control : all : f.gotoworkspace "3"
    "4" = mod1 | control : all : f.gotoworkspace "4"
    "5" = mod1 | control : all : f.gotoworkspace "5"
    "6" = mod1 | control : all : f.gotoworkspace "6"
    "7" = mod1 | control : all : f.gotoworkspace "7"
    "8" = mod1 | control : all : f.gotoworkspace "8"
    "9" = mod1 | control : all : f.gotoworkspace "9"

    "1" = mod4 : all : f.gotoworkspace "1"
    "2" = mod4 : all : f.gotoworkspace "2"
    "3" = mod4 : all : f.gotoworkspace "3"
    "4" = mod4 : all : f.gotoworkspace "4"
    "5" = mod4 : all : f.gotoworkspace "5"
    "6" = mod4 : all : f.gotoworkspace "6"
    "7" = mod4 : all : f.gotoworkspace "7"
    "8" = mod4 : all : f.gotoworkspace "8"
    "9" = mod4 : all : f.gotoworkspace "9"

    "XF86AudioRaiseVolume" = : all : !"mixerctl -w outputs.master+=5"
    "XF86AudioLowerVolume" = : all : !"mixerctl -w outputs.master-=5"
    #"XF86AudioMute" = : all : !"mixerctl -w outputs.master=0"

    #
    # "Windows" style keyboard shortcuts
    #

    "Tab" = mod1 : all : f.warpring "next"
    "Tab" = mod1 | s : all : f.warpring "prev"
    "Tab" = mod4 : all : f.warpring "next"
    "Tab" = mod4 | s : all : f.warpring "prev"
    "space" = mod1 : window : f.menu "titleops"
    "F4" = mod1 : window : f.delete

    #
    # "Mac" style keyboard shortcuts
    #

    "w" = mod4 : window : f.delete
    "m" = mod4 : window : f.iconify

    #
    # "evilwm" style keyboard shortcuts
    #

    # it is useful to be able to spawn a terminal without clicking.
    "Return" = mod1 | c : all : !"uxterm &"
    "Return" = mod4 | s : all : !"uxterm &"

    "slash" = mod1 | c : all : f.menu "TwmAllWindows"
    "slash" = mod4 : all : f.menu "TwmAllWindows"
    "p" = mod1 | c : all : f.menu "NetBSD"
    "p" = mod4 : all : f.menu "NetBSD"

    # vi-style directions
    "j" = mod1 | control : window : f.jumpdown "10"
    "k" = mod1 | control : window : f.jumpup "10"
    "h" = mod1 | control : window : f.jumpleft "10"
    "l" = mod1 | control : window : f.jumpright "10"

    "j" = mod4 : window : f.jumpdown "10"
    "k" = mod4 : window : f.jumpup "10"
    "h" = mod4 : window : f.jumpleft "10"
    "l" = mod4 : window : f.jumpright "10"

    "j" = mod4 | s : window : f.changesize "bottom +10"
    "k" = mod4 | s : window : f.changesize "bottom -10"
    "h" = mod4 | s : window : f.changesize "right -10"
    "l" = mod4 | s : window : f.changesize "right +10"

    "j" = mod1 | c | s : window : f.changesize "bottom +10"
    "k" = mod1 | c | s : window : f.changesize "bottom -10"
    "h" = mod1 | c | s : window : f.changesize "right -10"
    "l" = mod1 | c | s : window : f.changesize "right +10"



    Pour activer les modifications, suffit de cliquer n'importe où "Restart CTWM"


    Tags Tags : , , , , ,
  • Commentaires

    Aucun commentaire pour le moment

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :