[awesome] installation de shifty (résolu)

Xorg, Compiz, KDE / Gnome / Xfce / Fluxbox / e17 / fvwm ... GDM/KDM/XDM...
Tristelune
Elfe
Messages : 516
Inscription : mer. 01 août 2007, 16:38

[awesome] installation de shifty (résolu)

Message par Tristelune »

Salut,

après avoir résolu un problème sur awesome j'essaie de le personnaliser un peu. J'essaie actuellement d'installer shifty, mais veut pas :cry:

Tout d'abord j'ai récupéré shifty de ce tuto:

http://forum.malekal.com/awesome-window ... ml#p178291

j'ai ensuite fait les modifications nécessaires à l'aide du tuto et surtout du wiki de awesome. Si je redémarre awesome, les tags que j'ai définis sont bien présents, mais plus aucun raccourci ne fonctionne!! J'ai déjà essayé pas mal de variantes et impossible de le faire fonctionner.

Ce que j'ai fait:

- copié shifty.lua dans .config/awesome
- ajouté "require("shifty")" dans le rc.lua
- défini mes tags

Code : Tout sélectionner

-- Define a tag table which hold all screen tags.
shifty.config.tags = {
    ["shell"] = {position = 1, init = true, },
    ["www"] = {position = 2, init = true},
    ["divers"] = {position = 3, },
}

shifty.taglist = mytaglist

-- Client rules

shifty.config.apps = {

         { match = {"www"                                       }, tag = "www"},
}

shifty.config.defaults = {
  layout = awful.layout.suit.tile,
  ncol = 1,
  mwfact = 0.50,
  floatBars=false,
}

shifty.init()
- sous globalkeys j'ai ajouté:

Code : Tout sélectionner

 
   awful.key({ modkey            }, "t",           function() shifty.add({ rel_index = 1 }) end),
    awful.key({ modkey, "Control" }, "t",           function() shifty.add({ rel_index = 1, nopopup = true }) end),
    awful.key({ modkey            }, "r",           shifty.rename),
    awful.key({ modkey            }, "w",           shifty.del),
- sous Set keys ajouté

Code : Tout sélectionner

root.keys(globalkeys)
shifty.config.globalkeys = globalkeys
shifty.config.clientkeys = clientkeys


Peut-être je cherche au mauvais endroit et c'est ma version de shifty qui ne va pas. Ou alors mon rc.lua ?

Merci d'avance!

Mon rc.lua avec shifty est le suivant:

Code : Tout sélectionner

-- Standard awesome library            
require("awful")                       
require("awful.autofocus")             
require("awful.rules")                 
-- Theme handling library              
require("beautiful")                   
-- Notification library                
require("naughty")                     
-- Revelation                          
require("revelation")                  
-- Shifty                              
require("shifty")                      

-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
beautiful.init("/usr/share/awesome/themes/default/theme.lua")

-- This is used later as the default terminal and editor to run.
terminal = "konsole"                                            
editor = os.getenv("EDITOR") or "nano"                          
editor_cmd = terminal .. " -e " .. editor                       

-- Default modkey.
-- Usually, Mod4 is the key with a logo between Control and Alt.
-- If you do not like this or do not have such a key,           
-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
-- However, you can use another modifier like Mod1, but it may interact with others.
modkey = "Mod4"                                                                     

-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =                                                         
{                                                                 
    awful.layout.suit.floating,                                   
    awful.layout.suit.tile,                                       
    awful.layout.suit.tile.left,                                  
    awful.layout.suit.tile.bottom,                                
    awful.layout.suit.tile.top,                                   
    awful.layout.suit.fair,                                       
    awful.layout.suit.fair.horizontal,                            
    awful.layout.suit.spiral,                                     
    awful.layout.suit.spiral.dwindle,                             
    awful.layout.suit.max,                                        
    awful.layout.suit.max.fullscreen,                             
    awful.layout.suit.magnifier                                   
}                                                                 
-- }}}                                                            

-- {{{ Tags
-- Define a tag table which hold all screen tags.
shifty.config.tags = {                           
        ["shell"] = {position = 1, init = true, },
        ["www"] = {position = 2, init = true},    
        ["divers"] = {position = 3, },            
}                                                 

shifty.taglist = mytaglist

-- Client rules

shifty.config.apps = {

         { match = {"www"                                       }, tag = "www"},
}                                                                               

shifty.config.defaults = {
  layout = awful.layout.suit.tile,
  ncol = 1,                       
  mwfact = 0.50,                  
  floatBars=false,                
}                                 

shifty.init()

-- {{{ Menu
-- Create a laucher widget and a main menu
myawesomemenu = {                         
   { "manual", terminal .. " -e man awesome" },
   { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
   { "restart", awesome.restart },                                                  
   { "quit", awesome.quit }                                                         
}                                                                                   

mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },                                                                               
                                    { "open terminal", terminal }                   
                                  }                                                 
                        })                                                          

mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
                                     menu = mymainmenu })                  
-- }}}                                                                     

-- {{{ Wibox
-- Create a textclock widget
mytextclock = awful.widget.textclock({ align = "right" })

-- Create a systray
mysystray = widget({ type = "systray" })

-- Create a wibox for each screen and add it
mywibox = {}                                
mypromptbox = {}                            
mylayoutbox = {}                            
mytaglist = {}                              
mytaglist.buttons = awful.util.table.join(  
                    awful.button({ }, 1, awful.tag.viewonly),
                    awful.button({ modkey }, 1, awful.client.movetotag),
                    awful.button({ }, 3, awful.tag.viewtoggle),         
                    awful.button({ modkey }, 3, awful.client.toggletag),
                    awful.button({ }, 4, awful.tag.viewnext),           
                    awful.button({ }, 5, awful.tag.viewprev)            
                    )                                                   
mytasklist = {}                                                         
mytasklist.buttons = awful.util.table.join(                             
                     awful.button({ }, 1, function (c)                  
                                              if not c:isvisible() then 
                                                  awful.tag.viewonly(c:tags()[1])
                                              end                                
                                              client.focus = c                   
                                              c:raise()                          
                                          end),                                  
                     awful.button({ }, 3, function ()                            
                                              if instance then                   
                                                  instance:hide()                
                                                  instance = nil                 
                                              else                               
                                                  instance = awful.menu.clients({ width=250 })                                                                          
                                              end                                   
                                          end),                                     
                     awful.button({ }, 4, function ()                               
                                              awful.client.focus.byidx(1)           
                                              if client.focus then client.focus:raise() end                                                                             
                                          end),                                     
                     awful.button({ }, 5, function ()                               
                                              awful.client.focus.byidx(-1)          
                                              if client.focus then client.focus:raise() end                                                                             
                                          end))                                     

for s = 1, screen.count() do
    -- Create a promptbox for each screen
    mypromptbox[s] = awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright })                                                                         
    -- Create an imagebox widget which will contains an icon indicating which layout we're using.                                                                       
    -- We need one layoutbox per screen.                                            
    mylayoutbox[s] = awful.widget.layoutbox(s)                                      
    mylayoutbox[s]:buttons(awful.util.table.join(                                   
                           awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end),                                                                          
                           awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end),                                                                         
                           awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end),                                                                          
                           awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end)))                                                                        
    -- Create a taglist widget                                                      
    mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.label.all, mytaglist.buttons)                                                                           

    -- Create a tasklist widget
    mytasklist[s] = awful.widget.tasklist(function(c)
                                              return awful.widget.tasklist.label.currenttags(c, s)                                                                      
                                          end, mytasklist.buttons)                  

    -- Create the wibox
    mywibox[s] = awful.wibox({ position = "top", screen = s })
    -- Add widgets to the wibox - order matters               
    mywibox[s].widgets = {                                    
        {                                                     
            mylauncher,                                       
            mytaglist[s],                                     
            mypromptbox[s],                                   
            layout = awful.widget.layout.horizontal.leftright 
        },                                                    
        mylayoutbox[s],                                       
        mytextclock,                                          
        s == 1 and mysystray or nil,                          
        mytasklist[s],                                        
        layout = awful.widget.layout.horizontal.rightleft     
    }                                                         
end                                                           
-- }}}                                                        

-- {{{ Mouse bindings
root.buttons(awful.util.table.join(
    awful.button({ }, 3, function () mymainmenu:toggle() end),
    awful.button({ }, 4, awful.tag.viewnext),                 
    awful.button({ }, 5, awful.tag.viewprev)                  
))                                                            
-- }}}                                                        

-- {{{ Key bindings
globalkeys = awful.util.table.join(
    awful.key({ modkey,           }, "Left",   awful.tag.viewprev       ),
    awful.key({ modkey,           }, "Right",  awful.tag.viewnext       ),
    awful.key({ modkey,           }, "Escape", awful.tag.history.restore),

    awful.key({ modkey,           }, "j",
        function ()                      
            awful.client.focus.byidx( 1) 
            if client.focus then client.focus:raise() end
        end),                                            
    awful.key({ modkey,           }, "k",                
        function ()                                      
            awful.client.focus.byidx(-1)                 
            if client.focus then client.focus:raise() end
        end),                                            
    awful.key({ modkey,           }, "w", function () mymainmenu:show(true)        end),                                                                                
    awful.key({ modkey,           }, "e", revelation.revelation),                   

        -- Shifty
        awful.key({ modkey            }, "t",           function() shifty.add({ rel_index = 1 }) end),                                                                  
        awful.key({ modkey, "Control" }, "t",           function() shifty.add({ rel_index = 1, nopopup = true }) end),                                                  
        awful.key({ modkey            }, "r",           shifty.rename),             
        awful.key({ modkey            }, "w",           shifty.del),                
    -- Layout manipulation                                                          
    awful.key({ modkey, "Shift"   }, "j", function () awful.client.swap.byidx(  1)    end),                                                                             
    awful.key({ modkey, "Shift"   }, "k", function () awful.client.swap.byidx( -1)    end),                                                                             
    awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end),                                                                             
    awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end),                                                                             
    awful.key({ modkey,           }, "u", awful.client.urgent.jumpto),              
    awful.key({ modkey,           }, "Tab",                                         
        function ()                                                                 
            awful.client.focus.history.previous()                                   
            if client.focus then                                                    
                client.focus:raise()                                                
            end                                                                     
        end),                                                                       

    -- Standard program
    awful.key({ modkey,           }, "Return", function () awful.util.spawn(terminal) end),                                                                             
    awful.key({ modkey, "Control" }, "r", awesome.restart),                         
    awful.key({ modkey, "Shift"   }, "q", awesome.quit),                            

    awful.key({ modkey,           }, "l",     function () awful.tag.incmwfact( 0.05)    end),                                                                           
    awful.key({ modkey,           }, "h",     function () awful.tag.incmwfact(-0.05)    end),                                                                           
    awful.key({ modkey, "Shift"   }, "h",     function () awful.tag.incnmaster( 1)      end),                                                                           
    awful.key({ modkey, "Shift"   }, "l",     function () awful.tag.incnmaster(-1)      end),                                                                           
    awful.key({ modkey, "Control" }, "h",     function () awful.tag.incncol( 1)         end),                                                                           
    awful.key({ modkey, "Control" }, "l",     function () awful.tag.incncol(-1)         end),                                                                           
    awful.key({ modkey,           }, "space", function () awful.layout.inc(layouts,  1) end),                                                                           
    awful.key({ modkey, "Shift"   }, "space", function () awful.layout.inc(layouts, -1) end),                                                                           

    -- Prompt
    awful.key({ modkey },            "r",     function () mypromptbox[mouse.screen]:run() end),                                                                         

    awful.key({ modkey }, "x",
              function ()     
                  awful.prompt.run({ prompt = "Run Lua code: " },
                  mypromptbox[mouse.screen].widget,              
                  awful.util.eval, nil,                          
                  awful.util.getdir("cache") .. "/history_eval") 
              end)                                               
)                                                                

clientkeys = awful.util.table.join(
    awful.key({ modkey,           }, "f",      function (c) c.fullscreen = not c.fullscreen  end),                                                                      
    awful.key({ modkey, "Shift"   }, "c",      function (c) c:kill()                         end),                                                                      
    awful.key({ modkey, "Control" }, "space",  awful.client.floating.toggle                     ),                                                                      
    awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end),                                                                      
    awful.key({ modkey,           }, "o",      awful.client.movetoscreen                        ),                                                                      
    awful.key({ modkey, "Shift"   }, "r",      function (c) c:redraw()                       end),                                                                      
    awful.key({ modkey,           }, "n",      function (c) c.minimized = not c.minimized    end),                                                                      
    awful.key({ modkey,           }, "m",                                           
        function (c)                                                                
            c.maximized_horizontal = not c.maximized_horizontal                     
            c.maximized_vertical   = not c.maximized_vertical                       
        end)                                                                        
)                                                                                   

-- Compute the maximum number of digit we need, limited to 9
keynumber = 0                                               
for s = 1, screen.count() do                                
   keynumber = math.min(9, math.max(#tags[s], keynumber));  
end                                                         

-- Bind all key numbers to tags.
-- Be careful: we use keycodes to make it works on any keyboard layout.
-- This should map on the top row of your keyboard, usually 1 to 9.    
for i = 1, keynumber do                                                
    globalkeys = awful.util.table.join(globalkeys,                     
        awful.key({ modkey }, "#" .. i + 9,                            
                  function ()                                          
                        local screen = mouse.screen                    
                        if tags[screen][i] then                        
                            awful.tag.viewonly(tags[screen][i])        
                        end                                            
                  end),                                                
        awful.key({ modkey, "Control" }, "#" .. i + 9,                 
                  function ()                                          
                      local screen = mouse.screen                      
                      if tags[screen][i] then                          
                          awful.tag.viewtoggle(tags[screen][i])        
                      end                                              
                  end),                                                
        awful.key({ modkey, "Shift" }, "#" .. i + 9,                   
                  function ()                                          
                      if client.focus and tags[client.focus.screen][i] then
                          awful.client.movetotag(tags[client.focus.screen][i])
                      end                                                     
                  end),                                                       
        awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,               
                  function ()                                                 
                      if client.focus and tags[client.focus.screen][i] then   
                          awful.client.toggletag(tags[client.focus.screen][i])
                      end                                                     
                  end))                                                       
end                                                                           

clientbuttons = awful.util.table.join(
    awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
    awful.button({ modkey }, 1, awful.mouse.client.move),              
    awful.button({ modkey }, 3, awful.mouse.client.resize))            

-- Set keys
root.keys(globalkeys)
shifty.config.globalkeys = globalkeys
shifty.config.clientkeys = clientkeys
-- }}}                               

-- {{{ Rules
awful.rules.rules = {
    -- All clients will match this rule.
    { rule = { },
      properties = { border_width = beautiful.border_width,
                     border_color = beautiful.border_normal,
                     focus = true,
                     keys = clientkeys,
                     buttons = clientbuttons } },
    { rule = { class = "MPlayer" },
      properties = { floating = true } },
    { rule = { class = "pinentry" },
      properties = { floating = true } },
    { rule = { class = "gimp" },
      properties = { floating = true } },
    -- Set Firefox to always map on tags number 2 of screen 1.
    -- { rule = { class = "Firefox" },
    --   properties = { tag = tags[1][2] } },
}
-- }}}

-- {{{ Signals
-- Signal function to execute when a new client appears.
client.add_signal("manage", function (c, startup)
    -- Add a titlebar
    -- awful.titlebar.add(c, { modkey = modkey })

    -- Enable sloppy focus
    c:add_signal("mouse::enter", function(c)
        if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
            and awful.client.focus.filter(c) then
            client.focus = c
        end
    end)

    if not startup then
        -- Set the windows at the slave,
        -- i.e. put it at the end of others instead of setting it master.
        -- awful.client.setslave(c)

        -- Put windows in a smart way, only if they does not set an initial position.
        if not c.size_hints.user_position and not c.size_hints.program_position then
            awful.placement.no_overlap(c)
            awful.placement.no_offscreen(c)
        end
    end
end)

client.add_signal("focus", function(c) c.border_color = beautiful.border_focus end)
client.add_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
-- }}}

-- Start following applications at start of awesome
awful.util.spawn_with_shell("konsole -e newsbeuter")
awful.util.spawn_with_shell("konsole -e mutt")
awful.util.spawn_with_shell("konsole")
Dernière modification par Tristelune le sam. 03 sept. 2011, 19:23, modifié 1 fois.
Tristelune
Elfe
Messages : 516
Inscription : mer. 01 août 2007, 16:38

Re: [awesome] installation de shifty (en cours)

Message par Tristelune »

Personne n'utilise shifty parmi les utilisateurs d'awesome ? Si il y en a, est-ce que ça fonctionnne ?
Avatar de l’utilisateur
schaars
Hankyu
Messages : 44
Inscription : mer. 27 août 2008, 19:59

Re: [awesome] installation de shifty (en cours)

Message par schaars »

Bonjour

Je suis en train de personnaliser awesome, avec shifty et le même tuto !
J'ai trouvé Shifty dans AUR :

Code : Tout sélectionner

$ yaourt -Ss shifty
aur/shifty-git
Je l'ai installé, j'ai testé le rc.lua du tuto en le modifiant très légèrement et awesome s'est correctement lancé.

Lorsque tu lances awesome, quelles erreurs affiche t'il ?

Edit: Shifty (depuis AUR) fonctionne ! Le seul souci est qu'on ne peut pas (re)nommer les tags.
eeepc 1005ha-h + Archlinux + awesome = 9h30 d'autonomie !
ceci n'est pas un easter egg !
Tristelune
Elfe
Messages : 516
Inscription : mer. 01 août 2007, 16:38

Re: [awesome] installation de shifty (en cours)

Message par Tristelune »

Je suis en train de personnaliser awesome, avec shifty et le même tuto !
:D
J'ai trouvé Shifty dans AUR
Je ne l'avais pas vu. Je viens d'essayer mais ce ne fut pas plus convaincant. Quand je démarre avec shifty les tags se créent, mais je ne peux plus rien faire. Plus aucun raccourci clavier ne fonctionne. Je peux encore choisir un tag avec la souris et accéder au menu grâce à la souris. Mais pour le reste awesome est inutilisable et il ne me donne aucune erreur. Est-ce possible d'obtenir un log des erreurs ou quelque chose du genre ?

Est-ce que tu pourrais me passer ta version actuelle de ton rc.lua ? Je pourrais l'essayer et voir ce que ça donne.
Avatar de l’utilisateur
schaars
Hankyu
Messages : 44
Inscription : mer. 27 août 2008, 19:59

Re: [awesome] installation de shifty (en cours)

Message par schaars »

Tu peux lancer awesome avec l'option -k afin de vérifier le fichier de configuration.

J'ai mis ma config ici, avec le rc.lua plus les autres scripts (teardrop, etc).
eeepc 1005ha-h + Archlinux + awesome = 9h30 d'autonomie !
ceci n'est pas un easter egg !
enjolras
Daikyu
Messages : 76
Inscription : lun. 23 nov. 2009, 21:15

Re: [awesome] installation de shifty (en cours)

Message par enjolras »

bonjour,
en ce qui me concerne, la version de shifty du tuto ne marchait pas.
si tu regardes il y a pas mal d'erreurs de syntaxe.
je les avais corrigées, mais sinon celle d'AUR marche, sinon il y plusieurs depôt avec des branches plus a jour.
"Tout ce qui a son prix est de peu de valeur."
NietzscheAinsi parlait zarthoustra
Tristelune
Elfe
Messages : 516
Inscription : mer. 01 août 2007, 16:38

Re: [awesome] installation de shifty (en cours)

Message par Tristelune »

enjolras a écrit : celle d'AUR marche, sinon il y plusieurs depôt avec des branches plus a jour.
Est-ce que tu pourrais me donner le liens des dépôts ? Je pense que c'est des versions que j'ai déjà essayé, mais on ne sais jamais.

Pour moi ça ne passe toujours pas. J'ai aussi essayé la version d'AUR, mais sans succès.

Je pourrais aussi avoir ton rc.lua ?
Tristelune
Elfe
Messages : 516
Inscription : mer. 01 août 2007, 16:38

Re: [awesome] installation de shifty (en cours)

Message par Tristelune »

Après avoir abandonné un temps, j'ai finalement retenté d'installer shifty et ça fonctionne maintenant!! :D

Je déterre un peu le topic, je laisse un modérateur me passer un savon si ce n'est pas bien,
mais je pense que ça pourrait être utile à d'autres.

Je me souviens qu'à l'époque apparemment certaines choses fonctionnaient, mais impossible de
créer de nouveaux tags ou de renommer un tag. J'ai pris la version shifty de git master sur le wiki
de awesome et j'ai suivi les instructions du wiki. Evidemment ça ne fonctionnait toujours pas. Après je me suis
inspiré du rc.lua ici:

https://bbs.archlinux.org/viewtopic.php?id=106632

Ce qui m'a donné le rc.lua suivant:

Code : Tout sélectionner

-- Standard awesome library
require("awful")
require("awful.autofocus")
require("awful.rules")
-- Theme handling library
require("beautiful")
-- Notification library
require("naughty")
-- Vicious
require("vicious")
require("shifty")
require("revelation")

-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
beautiful.init("/usr/share/awesome/themes/default/theme.lua")

-- This is used later as the default terminal and editor to run.
terminal = "konsole"
editor = os.getenv("EDITOR") or "nano"
editor_cmd = terminal .. " -e " .. editor

-- Default modkey.
-- Usually, Mod4 is the key with a logo between Control and Alt.
-- If you do not like this or do not have such a key,
-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
-- However, you can use another modifier like Mod1, but it may interact with others.
modkey = "Mod4"


-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =
{
    awful.layout.suit.floating,
    awful.layout.suit.tile,
    awful.layout.suit.tile.left,
    awful.layout.suit.tile.bottom,
    awful.layout.suit.tile.top,
    awful.layout.suit.fair,
    awful.layout.suit.fair.horizontal,
    awful.layout.suit.spiral,
    awful.layout.suit.spiral.dwindle,
    awful.layout.suit.max,
    awful.layout.suit.max.fullscreen,
    awful.layout.suit.magnifier
}
-- }}}

-- {{{ Tags
-- Define a tag table which hold all screen tags.
--tags = {
--	names = {"shell","www", 3, 4, 5, 6, 7, 8, 9},
--	layout = {layouts[2], layouts[2],layouts[2],
--				layouts[2], layouts[2], layouts[2],
--				layouts[2], layouts[2], layouts[2]
--			}
--}
--for s = 1, screen.count() do
    -- Each screen has its own tag table.
--	tags[s] = awful.tag(tags.names, s, tags.layout)
--end
-- }}}

--{{{ SHIFTY: configured tags
shifty.config.tags = {
   ["1:sys"] = { init = true, position = 1, screen = 1, 			                  },
   ["3:www"] = { exclusive = true, max_clients = 1, position = 3, spawn = "firefox"   },
  ["2:term"] = { persist = true, position = 2,                                        },
  ["ardour"] = { nopopup = true, leave_kills = true,                                  },
     ["p2p"] = { icon = "/usr/share/pixmaps/p2p.png", icon_only = true,               },
    ["gimp"] = { layout = "tile", mwfact = 0.18, icon="/usr/share/pixmaps/gimp.png",  },
      ["fs"] = { rel_index = 1,                                                       },
}

--}}}


--{{{ SHIFTY: application matching rules
-- order here matters, early rules will be applied first
shifty.config.apps = {
        { match = { "htop", "Wicd", "jackctl"       }, tag = "1:sys",        screen = 1,     },
        { match = {"Iceweasel.*", "Firefox.*"       }, tag = "3:www",                        },
        { match = {"urxvt"                          }, tag = "2:term",       screen = 1,     },
        { match = {"foobar2000.exe",                }, tag = "fb",           nopopup = true, },
        { match = {"Ardour.*", "Jamin",             }, tag = "ardour",                       },
        { match = {"Live.*",                        }, tag = "live",         nopopup = true, },
        { match = {"Deluge","nicotine"              }, tag = "p2p",                          },
        { match = {"Gimp","Ufraw"                   }, tag = { "graph", "gimp" }             },
        { match = {"gimp%-image%-window"            }, slave = true,                         },
        { match = {"gqview"                         }, tag = { "graph", "gqview" }           },
        { match = { "Pcmanfm"                       }, tag = "fs",                           },
        { match = {"gcolor2", "xmag"                }, intrusive = true,                     },
        { match = {"gcolor2"                        }, geometry = { 100,100,nil,nil },       },
        { match = {"recordMyDesktop", "MPlayer", "xmag", 
                                                    }, float = true,                         },
        { match = { "" }, buttons = {
                             button({ }, 1, function (c) client.focus = c; c:raise() end),
                             button({ modkey }, 1, function (c) awful.mouse.client.move() end),
                             button({ modkey }, 3, awful.mouse.client.resize ), }, },
}

--}}}

--{{{ SHIFTY: default tag creation rules
-- parameter description
-- * floatBars : if floating clients should always have a titlebar
-- * guess_name : wether shifty should try and guess tag names when creating new (unconfigured) tags
-- * guess_position: as above, but for position parameter
-- * run : function to exec when shifty creates a new tag
-- * remember_index: ?
-- * all other parameters (e.g. layout, mwfact) follow awesome's tag API
shifty.config.defaults={
	layout = awful.layout.suit.float,
}
shifty.config.layouts = layouts
shifty.init()

--}}}

-- {{{ Menu
-- Create a laucher widget and a main menu
myawesomemenu = {
   { "manual", terminal .. " -e man awesome" },
   { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
   { "restart", awesome.restart },
   { "quit", awesome.quit }
}

mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
                                    { "open terminal", terminal }
                                  }
                        })

mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
                                     menu = mymainmenu })
-- }}}

-- {{{ Wibox
-- Battery widget
-- Picture
baticon = widget ({ type = "imagebox" })
baticon.image = image(beautiful.widget_bat)
-- Initialize widget
batwidget = widget({ type = "textbox" })
-- Register widget
vicious.register(batwidget, vicious.widgets.bat, "$1$2%$3", 60, "BAT0")
-- Create a textclock widget
mytextclock = awful.widget.textclock({ align = "right" })

-- Create a systray
mysystray = widget({ type = "systray" })

-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = awful.util.table.join(
                    awful.button({ }, 1, awful.tag.viewonly),
                    awful.button({ modkey }, 1, awful.client.movetotag),
                    awful.button({ }, 3, awful.tag.viewtoggle),
                    awful.button({ modkey }, 3, awful.client.toggletag),
                    awful.button({ }, 4, awful.tag.viewnext),
                    awful.button({ }, 5, awful.tag.viewprev)
                    )
shifty.taglist = mytaglist

mytasklist = {}
mytasklist.buttons = awful.util.table.join(
                     awful.button({ }, 1, function (c)
                                              if not c:isvisible() then
                                                  awful.tag.viewonly(c:tags()[1])
                                              end
                                              client.focus = c
                                              c:raise()
                                          end),
                     awful.button({ }, 3, function ()
                                              if instance then
                                                  instance:hide()
                                                  instance = nil
                                              else
                                                  instance = awful.menu.clients({ width=250 })
                                              end
                                          end),
                     awful.button({ }, 4, function ()
                                              awful.client.focus.byidx(1)
                                              if client.focus then client.focus:raise() end
                                          end),
                     awful.button({ }, 5, function ()
                                              awful.client.focus.byidx(-1)
                                              if client.focus then client.focus:raise() end
                                          end))

for s = 1, screen.count() do
    -- Create a promptbox for each screen
    mypromptbox[s] = awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright })
    -- Create an imagebox widget which will contains an icon indicating which layout we're using.
    -- We need one layoutbox per screen.
    mylayoutbox[s] = awful.widget.layoutbox(s)
    mylayoutbox[s]:buttons(awful.util.table.join(
                           awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end),
                           awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end),
                           awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end),
                           awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end)))
    -- Create a taglist widget
    mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.label.all, mytaglist.buttons)

    -- Create a tasklist widget
    mytasklist[s] = awful.widget.tasklist(function(c)
                                              return awful.widget.tasklist.label.currenttags(c, s)
                                          end, mytasklist.buttons)

    -- Create the wibox
    mywibox[s] = awful.wibox({ position = "top", screen = s })
    -- Add widgets to the wibox - order matters
    mywibox[s].widgets = {
        {
            mylauncher,
            mytaglist[s],
            mypromptbox[s],
            layout = awful.widget.layout.horizontal.leftright
        },
        mylayoutbox[s],
        mytextclock,
		batwidget, baticon,
        s == 1 and mysystray or nil,
        mytasklist[s],
        layout = awful.widget.layout.horizontal.rightleft
    }
end
-- }}}


-- {{{ Mouse bindings
root.buttons(awful.util.table.join(
    awful.button({ }, 3, function () mymainmenu:toggle() end),
    awful.button({ }, 4, awful.tag.viewnext),
    awful.button({ }, 5, awful.tag.viewprev)
))
-- }}}

-- {{{ Key bindings
globalkeys = awful.util.table.join(
    awful.key({ modkey,           }, "Left",   awful.tag.viewprev       ),
    awful.key({ modkey,           }, "Right",  awful.tag.viewnext       ),
    awful.key({ modkey,           }, "Escape", awful.tag.history.restore),

    awful.key({ modkey,           }, "j",
        function ()
            awful.client.focus.byidx( 1)
            if client.focus then client.focus:raise() end
        end),
    awful.key({ modkey,           }, "k",
        function ()
            awful.client.focus.byidx(-1)
            if client.focus then client.focus:raise() end
        end),
    awful.key({ modkey,           }, "w", function () mymainmenu:show(true)        end),

	 -- SHIFTY: keybindings specific to shifty
	awful.key({                   }, "XF86Back",    awful.tag.viewprev),
	awful.key({                   }, "XF86Forward", awful.tag.viewnext),
	awful.key({  modkey           }, "XF86Back",    shifty.shift_prev),
	awful.key({  modkey           }, "XF86Forward", shifty.shift_next),
	awful.key({ modkey            }, "t",           function() shifty.add({ rel_index = 1 }) end),
	awful.key({ modkey, "Control" }, "t",           function() shifty.add({ rel_index = 1, nopopup = true }) end),
	awful.key({ modkey            }, "s",           shifty.rename),
	awful.key({ modkey            }, "z",           shifty.del),

	 -- REVELATION: keybindings specific to revelation
	awful.key({ modkey 			  }, "e", revelation), 

    -- Layout manipulation
    awful.key({ modkey, "Shift"   }, "j", function () awful.client.swap.byidx(  1)    end),
    awful.key({ modkey, "Shift"   }, "k", function () awful.client.swap.byidx( -1)    end),
    awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end),
    awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end),
    awful.key({ modkey,           }, "u", awful.client.urgent.jumpto),
    awful.key({ modkey,           }, "Tab",
        function ()
            awful.client.focus.history.previous()
            if client.focus then
                client.focus:raise()
            end
        end),

    -- Standard program
    awful.key({ modkey,           }, "Return", function () awful.util.spawn(terminal) end),
    awful.key({ modkey, "Control" }, "r", awesome.restart),
    awful.key({ modkey, "Shift"   }, "q", awesome.quit),

    awful.key({ modkey,           }, "l",     function () awful.tag.incmwfact( 0.05)    end),
    awful.key({ modkey,           }, "h",     function () awful.tag.incmwfact(-0.05)    end),
    awful.key({ modkey, "Shift"   }, "h",     function () awful.tag.incnmaster( 1)      end),
    awful.key({ modkey, "Shift"   }, "l",     function () awful.tag.incnmaster(-1)      end),
    awful.key({ modkey, "Control" }, "h",     function () awful.tag.incncol( 1)         end),
    awful.key({ modkey, "Control" }, "l",     function () awful.tag.incncol(-1)         end),
    awful.key({ modkey,           }, "space", function () awful.layout.inc(layouts,  1) end),
    awful.key({ modkey, "Shift"   }, "space", function () awful.layout.inc(layouts, -1) end),

    -- Prompt
    awful.key({ modkey },            "r",     function () mypromptbox[mouse.screen]:run() end),

    awful.key({ modkey }, "x",
              function ()
                  awful.prompt.run({ prompt = "Run Lua code: " },
                  mypromptbox[mouse.screen].widget,
                  awful.util.eval, nil,
                  awful.util.getdir("cache") .. "/history_eval")
              end)
)

clientkeys = awful.util.table.join(
    awful.key({ modkey,           }, "f",      function (c) c.fullscreen = not c.fullscreen  end),
    awful.key({ modkey, "Shift"   }, "c",      function (c) c:kill()                         end),
    awful.key({ modkey, "Control" }, "space",  awful.client.floating.toggle                     ),
    awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end),
    awful.key({ modkey,           }, "o",      awful.client.movetoscreen                        ),
    awful.key({ modkey, "Shift"   }, "r",      function (c) c:redraw()                       end),
    awful.key({ modkey,           }, "n",      function (c) c.minimized = not c.minimized    end),
    awful.key({ modkey,           }, "m",
        function (c)
            c.maximized_horizontal = not c.maximized_horizontal
            c.maximized_vertical   = not c.maximized_vertical
        end)
)

for i=1,9 do
    globalkeys = awful.util.table.join(globalkeys, awful.key({ modkey }, i, function ()
        local t = awful.tag.viewonly(shifty.getpos(i))
    end))
    globalkeys = awful.util.table.join(globalkeys, awful.key({ modkey, "Control" }, i, function ()
        local t = shifty.getpos(i)
        t.selected = not t.selected
    end))
    globalkeys = awful.util.table.join(globalkeys, awful.key({ modkey, "Control", "Shift" }, i, function ()
        if client.focus then
            awful.client.toggletag(shifty.getpos(i))
        end
    end))
    globalkeys = awful.util.table.join(globalkeys, awful.key({ modkey, "Shift" }, i, function ()
        if client.focus then
            local t = shifty.getpos(i)
            awful.client.movetotag(t)
            awful.tag.viewonly(t)
        end
    end))
end

-- Compute the maximum number of digit we need, limited to 9
--keynumber = 0
--for s = 1, screen.count() do
--   keynumber = math.min(9, math.max(#tags[s], keynumber));
--end

-- Compute the maximum number of digit we need, limited to 9
--for i=1, ( shifty.config.maxtags or 9 ) do
--  table.insert(globalkeys, key({ modkey }, i,
--  function ()
--    local t = awful.tag.viewonly(shifty.getpos(i))
--  end))
--  table.insert(globalkeys, key({ modkey, "Control" }, i,
--  function ()
--    local t = shifty.getpos(i)
--    t.selected = not t.selected
--  end))
--  table.insert(globalkeys, key({ modkey, "Control", "Shift" }, i,
--  function ()
--    if client.focus then
--      awful.client.toggletag(shifty.getpos(i))
--    end
--  end))
  -- move clients to other tags
--  table.insert(globalkeys, key({ modkey, "Shift" }, i,
--    function ()
--      if client.focus then
--        t = shifty.getpos(i)
--        awful.client.movetotag(t)
--        awful.tag.viewonly(t)
--      end
--    end))
--end



clientbuttons = awful.util.table.join(
    awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
    awful.button({ modkey }, 1, awful.mouse.client.move),
    awful.button({ modkey }, 3, awful.mouse.client.resize))

-- Set keys
root.keys(globalkeys)
shifty.config.globalkeys = globalkeys
shifty.config.clientkeys = clientkeys
-- }}}

-- {{{ Rules
awful.rules.rules = {
    -- All clients will match this rule.
    { rule = { },
      properties = { border_width = beautiful.border_width,
                     border_color = beautiful.border_normal,
                     focus = true,
                     keys = clientkeys,
                     buttons = clientbuttons } },
    { rule = { class = "MPlayer" },
      properties = { floating = true } },
    { rule = { class = "pinentry" },
      properties = { floating = true } },
    { rule = { class = "gimp" },
      properties = { floating = true } },
    -- Set Firefox to always map on tags number 2 of screen 1.
    -- { rule = { class = "Firefox" },
    --   properties = { tag = tags[1][2] } },
}
-- }}}

-- {{{ Signals
-- Signal function to execute when a new client appears.
client.add_signal("manage", function (c, startup)
    -- Add a titlebar
    -- awful.titlebar.add(c, { modkey = modkey })

    -- Enable sloppy focus
    c:add_signal("mouse::enter", function(c)
        if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
            and awful.client.focus.filter(c) then
            client.focus = c
        end
    end)

    if not startup then
        -- Set the windows at the slave,
        -- i.e. put it at the end of others instead of setting it master.
        -- awful.client.setslave(c)

        -- Put windows in a smart way, only if they does not set an initial position.
        if not c.size_hints.user_position and not c.size_hints.program_position then
            awful.placement.no_overlap(c)
            awful.placement.no_offscreen(c)
        end
    end
end)

client.add_signal("focus", function(c) c.border_color = beautiful.border_focus end)
client.add_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
-- }}}

awful.util.spawn_with_shell("konsole -e mutt")
awful.util.spawn_with_shell("konsole -e newsbeuter")
awful.util.spawn_with_shell("konsole")
Et à ce stade-là il n'est toujours pas possible de renommer et peut-être de créer des tags. Le tour de magie se trouve ici:

http://awesome.naquadah.org/wiki/Talk:Shifty

Après avoir appliqué le patch, le miracle se produisit!!!!!! :D

Je vais enfin pourvoir profiter de ce module, yaouuuuuhhhhh.

En espérant que ça puisse être utile à quelqu'un!!
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [awesome] installation de shifty (résolu)

Message par FoolEcho »

Tristelune a écrit :Je déterre un peu le topic, je laisse un modérateur me passer un savon si ce n'est pas bien,
mais je pense que ça pourrait être utile à d'autres.
Un an après, c'est pas bien en effet. Ooouuuuuh, pas bien ! -1. :humour:
«The following statement is not true. The previous statement is true.» :nage:
Répondre