Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#76 Le 02/05/2011, à 07:58

Rolinh

Re : [awesome]installation et configuration (surtout config :P )

fredr a écrit :

Pour la température, les thermal zone ne fonctionnent plus. Il faut regarder en: /sys/class/thermal/thermal_zone0/temp
Ce fichier contient la température en millième. Mais je n'ai pas encore trop regardé.

Ouep, je sais. C'est pour ça que j'ai modifié mon applet comme suit:

function activecputemp()
    local temp

    io.input("/sys/bus/acpi/devices/LNXTHERM\:00/thermal_zone/temp")
    temp = io.read("*number")/1000

    if temp < 46 then
        temp = '<span color="turquoise">' .. temp .. '</span>'
    elseif    temp < 61 then
        temp = '<span color="yellow">' .. temp .. '</span>'
    elseif  temp < 76 then
        temp = '<span color="orange">' .. temp .. '</span>'
    else
        temp = '<span color="red">' .. temp .. '</span>'
    end

    return temp
end

Merci pour la config. Je vais mettre des liens vers les configs dans la doc alors.

Hors ligne

#77 Le 02/05/2011, à 08:33

Rolinh

Re : [awesome]installation et configuration (surtout config :P )

Hop,

j'ai mis à jour la doc (voir le changelog pour les modifs) et j'ai ajouté un lien vers ton rc.lua et le mien en bas de page.

Dernière modification par Rolinh (Le 02/05/2011, à 08:33)

Hors ligne

#78 Le 02/05/2011, à 15:34

Rolinh

Re : [awesome]installation et configuration (surtout config :P )

Hop là, j'ai rajouté une astuce, tirée du wiki d'archlinux, qui permet de tester son rc.lua. Rudement pratique smile

A part ça, je ne sais pas qui a créé la section "Screenshot" mais ça serait pas mal de la populer du coup non?

Dernière modification par Rolinh (Le 02/05/2011, à 15:35)

Hors ligne

#79 Le 03/05/2011, à 20:43

wlourf

Re : [awesome]installation et configuration (surtout config :P )

Salut, mon astuce à deux balles si ça peut être utile pour la doc :

- j'ai viré gdm et je lance awesome avec startx, ainsi toutes les erreurs (même les erreurs non bloquantes, par exemple comparer un nombre à une variable nil) s'affichent dans le tty1

- pour avoir un conky vertical toujours visible, j'ai ajouté une marge (95 pixels sur l'écran de droite):

awful.screen.padding( screen[2], { right = 95} )

Par contre la cpuinfo de la doc ne fonctionne pas chez moi (valeurs>100%) mais je n'ai pas pris le temps de regarder en détail ce qui ne va pas !

Hop aussi smile

Hors ligne

#80 Le 03/05/2011, à 21:18

fredr

Re : [awesome]installation et configuration (surtout config :P )

Un petit truc qui permet d'ajouter des icones "lanceurs" à la wibox:

lanceur={ image = "/home/frinfo/programmes/eclipse/icon.xpm", command = "/home/frinfo/programmes/eclipse/eclipse"}
lanceur = awful.widget.launcher(lanceur)
tt = awful.tooltip ({ objects = { lanceur } })
tt:set_text ("Eclipse")
tt:set_timeout (0)

Ensuite il suffit d'ajouter lanceur à la liste de la wibox.

Fred

Tirer d'un module du wiki permettant de créer une barre de lanceurs depusi des fichiers .desktop mais je n'ai pas réussi à le faire tourner.


Fana du distro hopping, actuellement sur Ubuntu 24.04 avec Material-Sell..
L'optimiste pense que nous vivons dans le meilleur des mondes. Et le pessimiste craint que ce ne soit exact.

Hors ligne

#81 Le 03/05/2011, à 21:26

Rolinh

Re : [awesome]installation et configuration (surtout config :P )

wlourf a écrit :

- j'ai viré gdm et je lance awesome avec startx, ainsi toutes les erreurs (même les erreurs non bloquantes, par exemple comparer un nombre à une variable nil) s'affichent dans le tty1

Moi j'utilise slim comme login manager. Il suffit de consulter le fichier de logs pour voir les éventuelles erreurs. wink

wlourf a écrit :

- pour avoir un conky vertical toujours visible, j'ai ajouté une marge (95 pixels sur l'écran de droite):

awful.screen.padding( screen[2], { right = 95} )

Bonne astuce.

wlourf a écrit :

Par contre la cpuinfo de la doc ne fonctionne pas chez moi (valeurs>100%) mais je n'ai pas pris le temps de regarder en détail ce qui ne va pas !

Ah? je vais jeter un oeil à ce qui pourrait clocher alors wink

wlourf a écrit :

Hop aussi smile

tongue

@fredr: j'étais tombé dessus aussi. Tu peux le rajouter dans la page de la documentation wink
(perso, je n'utilise pas car si j'utilise Awesome c'est aussi pour me passer complétement de la souris)

EDIT:
@ wlourf: tu pourrais donner le retour de

cat /proc/stat

?

Dernière modification par Rolinh (Le 03/05/2011, à 21:34)

Hors ligne

#82 Le 03/05/2011, à 21:56

fredr

Re : [awesome]installation et configuration (surtout config :P )

Rolinh a écrit :

@fredr: j'étais tombé dessus aussi. Tu peux le rajouter dans la page de la documentation wink
(perso, je n'utilise pas car si j'utilise Awesome c'est aussi pour me passer complétement de la souris)

Oui, il serait plus logique de créer un menu perso... Je vais voir pour la doc, mais j'aimerais quand même réussir à faire tourner une version de la barre de lanceurs quand j'aurai une minute....

Fred


Fana du distro hopping, actuellement sur Ubuntu 24.04 avec Material-Sell..
L'optimiste pense que nous vivons dans le meilleur des mondes. Et le pessimiste craint que ce ne soit exact.

Hors ligne

#83 Le 04/05/2011, à 00:36

Kanor

Re : [awesome]installation et configuration (surtout config :P )

Petit découverte sympa
https://github.com/terceiro/awesome-fre … ter/README
génération d'un menu plus sympa que la version debian

Hors ligne

#84 Le 04/05/2011, à 11:15

fredr

Re : [awesome]installation et configuration (surtout config :P )

Salut,

Pour le cpuinfo, en fait il retourne la somme de l'activité des coeurs... SI les 2 core tournent à 60 % il retourne: CPU:120%

En fait le proc/acpi contient cpu cpu0 cpu1. Cpu est le total des 2 autres.

La version originale du widget retourne: cpu:22% cpu0:7% cpu1: 15% 

La température fonctionne.

Fred

Dernière modification par fredr (Le 04/05/2011, à 11:32)


Fana du distro hopping, actuellement sur Ubuntu 24.04 avec Material-Sell..
L'optimiste pense que nous vivons dans le meilleur des mondes. Et le pessimiste craint que ce ne soit exact.

Hors ligne

#85 Le 04/05/2011, à 12:19

Rolinh

Re : [awesome]installation et configuration (surtout config :P )

Ouep, c'est exact.  En fait il suffit de modifier cette ligne:

str = string.format("%02d", newjiffies-jiffies[cpu])

Comme suit

str = string.format("%02d", (newjiffies-jiffies[cpu])/2)

Puis là tu te retrouves avec un truc correct wink
(dans le cas où tu as deux coeurs, bien sûr. Faudrait p'têtre le préciser dans la doc)

@kanor: sympa l'astuce pour le menu smile

Dernière modification par Rolinh (Le 04/05/2011, à 12:25)

Hors ligne

#86 Le 04/05/2011, à 14:44

fredr

Re : [awesome]installation et configuration (surtout config :P )

Salut,

Une petite capture de mon awesome, avec une wibox en bas destinée à remplacer gkrelm et conky:

811d51bd230090dfb87a1852ffbc1t.jpg

Mon rc.lua:

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

require("vicious")

-- Load Debian menu entries
require("debian.menu")

-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
beautiful.init("/home/frinfo/.config/awesome/theme.lua")

-- This is used later as the default terminal and editor to run.
terminal = "terminator"
editor = "gvim"
editor_cmd = 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.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,
        awful.layout.suit.floating
}
-- }}}

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

-- {{{ Menu
-- Create a laucher widget and a main menu

mysysmenu = {
    {"Système", "gnome-system-monitor"},
    {"MC", terminal .. " -e mc"},
    {"Sudo MC", terminal .. " -e 'sudo mc'"},
    {"Synaptic", "gksu synaptic"},
    {"Logout", '/home/frinfo/dialog.sh'},
  --  {"Reboot", "gksu reboot"},
 --   {"Halt", "gksu halt"}
}

SSH = {
    {"Sun local", terminal.. " -e 'ssh 172.16.110.151 -l fredremy -X'"},
    {"Sun Web", terminal.. " -e 'ssh adresse cachee -p 2222 -l fredremy -X'"},
    {"HP local", terminal.. " -e 'ssh  adresse cachee -l frinfo -X'"},
    {"HP Web", terminal.. " -e 'ssh  adresse cachee -l frinfo -X'"}
}

FTP = {
    {"Sun local", terminal.. " -e 'mc /home/frinfo /#ftp:fredremy@172.16.110.151'"},
    {"HP local", terminal.. " -e 'mc /home/frinfo /#ftp:frinfo@192.168.1.209'"},
    {"HP Web", terminal.. " -e 'mc /home/frinfo /#ftp:frinfo@ adresse cachee'"}
}
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 },
                                    { "My SysMenu" , mysysmenu},
                                    { "SSH" , SSH},
                                    { "FTP" , FTP},
                                    { "Debian", debian.menu.Debian_menu.Debian },
                                    { "open terminal", terminal }
                                  }
                        })

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

-- {{{ Wibox


-- Create fraxcpumenu, and add all available governors to it
fraxcpumenu = {}
local fh= io.open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors", "r")
if fh ~= nil then 
   govstr= fh:read()
   fh:close()
   local i= 1
   for w in string.gmatch(govstr, "%a+") do
      fraxcpumenu[i]= { w, "sudo cpufreq-set  -c 0 -r --governor "..w}
      i= i + 1
   end
end
fraxcpumenu = awful.menu.new( { items= fraxcpumenu }  )

-- Create fraxcpu widget
fraxcpu=  widget({ type = "textbox", name = "fraxcpu", align = "right" })
fraxcpu.text= 'fraxcpu'

sepa=  widget({ type = "textbox" })
sepa.text= ' | '

-- Function for updating the fraxcpu widget
fraxcpuupd=1
function hook_fraxcpu (tbw)
   if not fraxcpuupd then return(nil) end
   local freq=''
   local fre2='' 
   local gov= ''
   local fh= io.open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor", "r")
   if fh then
      gov= fh:read()..':'
      fh:close()
   end
   fh= io.open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq", "r")
   fl= io.open("/sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq", "r")
   if fh then
      freq= fh:read()
      fre2= fl:read()
      fh:close()
      fl:close()
      freq= tostring(math.ceil(tonumber(freq)/1000))
      fre2= tostring(math.ceil(tonumber(fre2)/1000))
   else
      fraxcpuupd= nil
      fh= io.open("/proc/cpuinfo", "r")
      if fh then
     for l in fh:lines() do
        freq= string.match(l, '^%s*cpu MHz%s*:%s*([0-9]+)')
        if freq ~= nil then break end
        freq= ''
     end
      end
   end
   tbw.text= gov..freq..':'..fre2
end

-- Mouse button bindings for fraxcpu widget
fraxcpu:buttons(awful.util.table.join(
                                awful.button({ }, 1, function () awful.menu.toggle(fraxcpumenu) end),
                    awful.button({ }, 2, function () hook_fraxcpu(fraxcpu) end),
                    awful.button({ }, 3, function () hook_fraxcpu(fraxcpu) end)))



-- Create a systray
mysystray = widget({ type = "systray" })
 -- Quick launch bar widget BEGINS
 function getValue(t, key)
    _, _, res = string.find(t, key .. " *= *([^%c]+)%c")
    return res
 end
 
 function split (s,t)
    local l = {n=0}
    local f = function (s)
         l.n = l.n + 1
         l[l.n] = s
          end
    local p = "%s*(.-)%s*"..t.."%s*"
    s = string.gsub(s,p,f)
    l.n = l.n + 1
    return l
 end
 
 launchbar = { layout = awful.widget.layout.horizontal.leftright }
 filedir = "/home/frinfo/.config/awesome/bar/" -- Specify your folder with shortcuts here
 files = split(io.popen("ls " .. filedir .. "*.desktop"):read("*all"),"\n")
 for i = 1, table.getn(files) do
    local t = io.open(files[i]):read("*all")
    launchbar[i] = { image = image(getValue(t,"Icon")),
                     command = getValue(t,"Exec"),
                     tooltip = getValue(t,"Name"),
                     position = tonumber(getValue(t,"Position")) or 255
                 }
 end
 table.sort(launchbar, function(a,b) return a.position < b.position end)
 for i = 1, table.getn(launchbar) do
    local txt = launchbar[i].tooltip
    launchbar[i] = awful.widget.launcher(launchbar[i])
    local tt = awful.tooltip ({ objects = { launchbar[i] } })
    tt:set_text (txt)
    tt:set_timeout (0)
 end
 
 -- Quick launch bar widget ENDS

-- 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,
            s == 1 and sepa or nil,
            s == 1 and launchbar or nil,
            sepa,
            mytaglist[s],
            sepa,
            mypromptbox[s],
            layout = awful.widget.layout.horizontal.leftright
        },
        mylayoutbox[s],
        sepa,
        s == 1 and mysystray or nil,
        s == 1 and sepa or nil,
        mytasklist[s],
        layout = awful.widget.layout.horizontal.rightleft
    }
end
-- }}}
-- Create a textclock widget
 mytextclock = widget({ type = "textbox" })
vicious.register(mytextclock, vicious.widgets.date, "%A %d %B %Y | %H:%M")
  
-- Initialize widget
memwidget = widget({ type = "textbox" })
-- Register widget
vicious.register(memwidget, vicious.widgets.mem, "RAM: $1% ($2MB/$3MB)", 10)
-- Initialize widget
cpuwidget = widget({ type = "textbox" })
-- Register widget
vicious.register(cpuwidget, vicious.widgets.cpu, "CPU0: $2% CPU1: $3%")
-- Initialize widget
temp0widget = widget({ type = "textbox" })
-- Register widget
vicious.register(temp0widget, vicious.widgets.thermal, "$1°C", 10, "thermal_zone0")
-- Initialize widget
temp1widget = widget({ type = "textbox" })
-- Register widget
vicious.register(temp1widget, vicious.widgets.thermal, " $1°C", 10, "thermal_zone1")
-- Initialize widget
temp2widget = widget({ type = "textbox" })
-- Register widget
vicious.register(temp2widget, vicious.widgets.thermal, " $1°C", 10, "thermal_zone2")
-- Initialize widget
temp3widget = widget({ type = "textbox" })
-- Register widget
vicious.register(temp3widget, vicious.widgets.thermal, " $1°C", 10, "thermal_zone3")

-- hard disk temp
hddTempVal = widget({ type = "textbox" })
vicious.register(hddTempVal, vicious.widgets.hddtemp, '${/dev/sda}°C', 10)


-- bat
batwidget = widget({ type = "textbox" })
vicious.register(batwidget, vicious.widgets.bat, 'BAT: $1 $2%', 20, "C1CB")

-- volume
volumewidget = widget({ type = "textbox" })
vicious.register(volumewidget, vicious.widgets.volume, 'SOUND: $1% $2', 10, "Master")


bottom_wibox={}
bottom_wibox = awful.wibox({ position = "bottom", screen = 1, width="90%", align="center" })
awful.wibox.rounded_corners (bottom_wibox, 17)
awful.widget.layout.margins[cpuwidget] = { left = 10 } 
awful.widget.layout.margins[mytextclock] = { right = 10 } 
bottom_wibox.widgets = {
    {
     cpuwidget,
     sepa, 
     fraxcpu, 
     sepa,
     temp0widget, temp1widget, temp2widget, temp3widget,
     sepa,   
     hddTempVal,   
     sepa,   
     memwidget,
     sepa,
     batwidget,
     sepa,
     volumewidget,
      layout = awful.widget.layout.horizontal.leftright
  },
   mytextclock,
   layout = awful.widget.layout.horizontal.rightleft
  }    
    -- {{{ 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({keygrabber=true}) end),

    -- 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({    }, "XF86HomePage", function () awful.util.spawn("firefox") end),
    awful.key({ modkey,           }, "e", function () awful.util.spawn("pcmanfm") end),
    awful.key({ modkey, "Control"          }, "e", function () awful.util.spawn("gigolo") end),
    awful.key({   }, "XF86Mail", function () awful.util.spawn("xscreensaver-command --lock") end),
 awful.key({ }, "XF86AudioLowerVolume", function() awful.util.spawn("amixer -q set Master 5-% unmute") end),
    awful.key({ }, "XF86AudioRaiseVolume", function() awful.util.spawn("amixer -q set Master 5+% unmute") end),
    awful.key({ }, "XF86AudioMute", function() awful.util.spawn("amixer -q set Master toggle") end),

    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,           }, "t",      function (c) c.ontop = not c.ontop            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)
-- }}}

-- {{{ 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 = "Thunar" },
       properties = { tag = tags[1][9] } },
     { rule = { class = "Pcmanfm" },
       properties = { tag = tags[1][9] } },
      { rule = { class = "Gigolo" },
       properties = { tag = tags[1][8] } },
}
-- }}}

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

-- Update the fraxcpu widget every second
awful.hooks.timer.register(1, function ()
    hook_fraxcpu(fraxcpu) 
end)

-- }}}
--
os.execute ("xfce4-power-manager &")
os.execute ("xscreensaver -no-splash &")
os.execute ("pcmanfm &")
os.execute ("bluetooth-applet &")
os.execute ("parcellite & ")
os.execute ("nm-applet &")

Les lanceurs sont créés par des fichiers desktop dans .config/awesoem/bar
Pour la config des governors: http://forum.ubuntu-fr.org/viewtopic.ph … 9#p3950949

Edit: tous les widgets viennent de la librairie vicious, dispo dans le paquet awesome-extra
Fred

Dernière modification par fredr (Le 04/05/2011, à 14:45)


Fana du distro hopping, actuellement sur Ubuntu 24.04 avec Material-Sell..
L'optimiste pense que nous vivons dans le meilleur des mondes. Et le pessimiste craint que ce ne soit exact.

Hors ligne

#87 Le 04/05/2011, à 17:44

wlourf

Re : [awesome]installation et configuration (surtout config :P )

Merci pour l'astuce pour le nombre de coeurs smile

Comme j'utilise le même rc.lua sur différents PC, je récupère le nombre de coeurs dans une variable :

nbcpu=0
for line in io.lines("/proc/cpuinfo") do
    for key , value in string.gmatch(line, "processor") do
        nbcpu=nbcpu+1
    end
end

A placer en dehors de la "fonction activecpu()" pour que la boucle ne soit executée qu'une seule fois. Si ça peut servir ou être amélioré ...

De même pour la mémoire :

    for line in io.lines("/proc/meminfo") do
        for key , value in string.gmatch(line, "MemTotal") do
            i=0
            for word in line:gmatch("%w+") do
                 i=i+1
                 if i  == 2 then 
                     memtot=word 
                end
           end
        end
    end

La boucle pour récupérer la valeur est pas terrible !! Des idées ?

smile

Hors ligne

#88 Le 04/05/2011, à 18:46

Rolinh

Re : [awesome]installation et configuration (surtout config :P )

Bonne idée pour le nombre de cœurs wink
Si ton but est simplement de récupérer la mémoire totale, alors tu pourrais faire simplement ceci:

for line in io.lines("/proc/meminfo") do
    local tmp= string.match(line, "MemTotal:\ +(%d+)")
    if tmp then
        memtot = tmp
    end
end

Parce que trois boucles for imbriquées c'est pas terrible pour les performances (et inutile dans ce cas de figure) wink

EDIT:
c'est vrai que c'est peut-être un peu plus "user-friendly" de procéder ainsi. Je ne le faisais pas car je trouvais que c'était un parsage de fichier inutile étant donné que ce sont des valeurs statiques sur une même machine.

Dernière modification par Rolinh (Le 04/05/2011, à 18:53)

Hors ligne

#89 Le 04/05/2011, à 18:58

wlourf

Re : [awesome]installation et configuration (surtout config :P )

Rolinh a écrit :

Parce que trois boucles for imbriquées c'est pas terrible pour les performances (et inutile dans ce cas de figure) wink

EDIT:
c'est vrai que c'est peut-être un peu plus "user-friendly" de procéder ainsi. Je ne le faisais pas car je trouvais que c'était un parsage de fichier inutile étant donné que ce sont des valeurs statiques sur une même machine.

Je savais bien ue ce n'était pas terrible big_smile
En effet, le but est d'avoir le même rc.lua sur mes différents machines, ou sur une clé Live!

Sinon, je me permet l'ajout d'un petit break :

for line in io.lines("/proc/meminfo") do
    local tmp= string.match(line, "MemTotal:\ +(%d+)")
    if tmp then
        memtot = tmp
        break
    end
end

Hors ligne

#90 Le 04/05/2011, à 19:05

Rolinh

Re : [awesome]installation et configuration (surtout config :P )

wlourf a écrit :

Je savais bien ue ce n'était pas terrible big_smile

Ouep tongue Autant profiter des expressions régulières quand on peut.

Hors ligne

#91 Le 07/05/2011, à 11:35

Rolinh

Re : [awesome]installation et configuration (surtout config :P )

Plop les amis smile,

j'ai codé un widget pour avoir la température du GPU:

-- Create GPU Temp Widget
function activegputemp()
    local temp
    io.input("/sys/bus/pci/devices/0000:01:00.0/temp1_input")
    temp = io.read("*number")/1000

    if temp < 70 then
        temp = '<span color="turquoise">' .. temp .. '</span>'
    elseif    temp < 80 then
        temp = '<span color="yellow">' .. temp .. '</span>'
    elseif  temp < 90 then
        temp = '<span color="orange">' .. temp .. '</span>'
    elseif temp < 100 then
        temp = '<span color="red">' .. temp .. '</span>'
    else
        temp = '<span color="red">CRITICAL</span>'
    end

    return temp
end

gputemp = widget({ type = "textbox" , name = "gputemp" })

-- Assign a hook to update temperature
gputemp_timer = timer({timeout = 1})
gputemp_timer:add_signal("timeout", function() gputemp.text = "| GPU: " .. activegputemp() .. "°C " end)
gputemp_timer:start()

Cela marche impec chez moi. En revanche, je pense que le fichier à lire n'est pas "universel". J'ai une carte Nvidia et j'utilise le pilote Nouveau et je soupçonne fortement que cela ne marche pas avec le driver propriétaire.

Question par curiosité: chez moi, le GPU tourne en moyenne dans les 85°C. Cela me parait élevé bien qu'apparemment, pour le système, une température élevée est de 100°C et critique à 110°C. Qu'en est-il chez vous?

Dernière modification par Rolinh (Le 07/05/2011, à 11:36)

Hors ligne

#92 Le 07/05/2011, à 11:59

Kanor

Re : [awesome]installation et configuration (surtout config :P )

Avec le driver proprio je tourne à 55° et j'obtiens la température avec la commande suivante

 nvidia-settings -q GPUCoreTemp -t

Hors ligne

#93 Le 07/05/2011, à 12:04

Rolinh

Re : [awesome]installation et configuration (surtout config :P )

Kanor a écrit :

Avec le driver proprio je tourne à 55°

yikes
Merci de ta réponse mais je m'inquiète un peu du coup hmm
(mais de mémoire j'avais aussi des températures élevées avec le driver proprio... C'est peut-être ma carte (elle faisait d'ailleurs partie des séries à problèmes...)

Hors ligne

#94 Le 07/05/2011, à 12:19

Kanor

Re : [awesome]installation et configuration (surtout config :P )

Après mon ancien portable dell qui avait aussi une carte nvidia j'étais toujours à 70° et plus

Hors ligne

#95 Le 07/05/2011, à 12:21

Rolinh

Re : [awesome]installation et configuration (surtout config :P )

Ok. J'utilise un vieux portable Dell Latitude D630. Et ils avaient déjà du me remplacer la carte mère (sous garantie heureusement) parce que la puce intégrée Nvidia avait grillé (et Dell c'est définitivement finis pour moi).
Par curiosité, tu as quoi maintenant? Avec quelle carte?

Hors ligne

#96 Le 07/05/2011, à 12:24

Kanor

Re : [awesome]installation et configuration (surtout config :P )

un hp de type dv6 avec une GeForce 9200

Hors ligne

#97 Le 07/05/2011, à 17:05

fredr

Re : [awesome]installation et configuration (surtout config :P )

Salut,

Ca dépend fort du portable les temp Nvidia; sur mon HP ma 9600gt est à 55° en moyenne. Mais sur le fujitsu de mon fils (qui joue beaucoup) la même carte est en moyenne sur 85/90° (le portable à 2 ans pas de soucis)

Fred


Fana du distro hopping, actuellement sur Ubuntu 24.04 avec Material-Sell..
L'optimiste pense que nous vivons dans le meilleur des mondes. Et le pessimiste craint que ce ne soit exact.

Hors ligne

#98 Le 08/05/2011, à 10:27

Rolinh

Re : [awesome]installation et configuration (surtout config :P )

Merci pour ces informations smile

Sinon, hier j'ai découvert cmus, un lecteur de musique en console avec bindings vi. Comme je le trouve super chouette, il a aussitôt remplacé moc, que j'utilisais jusqu'à présent.
Si j'en parle ici, c'est parce que j'ai réécris le widget / contrôleur de moc afin qu'il contrôle cmus. Les explications ici wink

(faudra vraiment mettre à jour la doc...)

Hors ligne

#99 Le 08/05/2011, à 16:01

Kanor

Re : [awesome]installation et configuration (surtout config :P )

Moi j'ai modifié le plugin de gesion de mpd pour ne pas étre dépendant du player en utilisant mpc

function moc_control (action)
    local moc_info,moc_state

    if action == "next" then
        io.popen("mpc next")
    elseif action == "previous" then
        io.popen("mpc prev")
    elseif action == "stop" then
        io.popen("mpc stop")
    elseif action == "play_pause" then
        io.popen("mpc toggle")
    end
end

il me reste à recoder le le widget

Hors ligne

#100 Le 08/05/2011, à 16:29

Rolinh

Re : [awesome]installation et configuration (surtout config :P )

Utile quand on utilise mpd wink

Hors ligne