awesomeWM / awesome

awesome window manager
https://awesomewm.org/
GNU General Public License v2.0
6.33k stars 596 forks source link

My Awesome WM shutdown abruptly sometimes when I press Super Key(Win). I never created anyshortcut for it, mostly happen in the middle of doing something. Also, when I scanned system with rkhunter it report that Awesome take more shared memory that intended. #3265

Closed z3n-k3rn3l closed 3 years ago

z3n-k3rn3l commented 3 years ago

Output of awesome --version: image

How to reproduce the issue: This is where I get confused. My system shutdown sometimes (random and unpredictable) when I press Win key + other keys. When I say other keys I cannot exactly find out which key it was. At sometimes, when I switch workspace this happens, sometimes when I switch between application and so on. Shutdown means I feel like executing 'shutdown now' command. Sure I have never assigned any shortcut for shutting down. So I used Rkhunter to scan for rootkit and found out Awesome is taking too much memory than it intended to be. See below which shows rkhunter scan output image

Actual result: Before even scanning with rkhunter I check system log and found out that everytime my system abruptly shutdown(when superkey combination is pressed) it register it as 'Power key pressed'. It is clear in the below picture. image

First I thought this is related to "Linux Magic System Request Key" and disabled it by writing 0 by this command "Linux Magic System Request Key". Hope this solved the issue, but didn't today again after a long time similar thing happened. It like someone shutting down when I am in the middle of something. Don't think its due to more applications are open simultaneously as by my experience today on a filemanager was open. Is this extra memory used by awesome is been exploited, like buffer overflow attack or something or this is just another bug. Below is my awesome rc.lua file content I also put the same file on filebin website. You can refer there too. via the first link just below this https://filebin.net/vi3hnnwuw2wnfclc

-------------------------------------MY rc.lua CONTENT ---------------------------------------------------------------------------------------------- -- If LuaRocks is installed, make sure that packages installed through it are -- found (e.g. lgi). If LuaRocks is not installed, do nothing. pcall(require, "luarocks.loader")

-- Standard awesome library local gears = require("gears") local awful = require("awful") require("awful.autofocus") -- Widget and layout library local wibox = require("wibox") -- Theme handling library local beautiful = require("beautiful") -- Notification library local naughty = require("naughty") local menubar = require("menubar") local hotkeys_popup = require("awful.hotkeys_popup") -- xrandr setup for multi monitor mode local xrandr = require("xrandr") -- Enable hotkeys help widget for VIM and other apps -- when client with a matching name is opened: require("awful.hotkeys_popup.keys")

--Screenful extension files require("awful.remote") require("screenful")

-- Added for using brightness widget local brightnessarc_widget = require("awesome-wm-widgets.brightnessarc-widget.brightnessarc") -- Added for controlling volume widget local volume_widget = require('awesome-wm-widgets.experiments.volume.volume') --local volume_widget = require("awesome-wm-widgets.volume-widget.volume") -- Added for logout Widget in WiBar local logout_menu_widget = require("awesome-wm-widgets.logout-menu-widget.logout-menu") -- Added RAM widget local ram_widget = require("awesome-wm-widgets.ram-widget.ram-widget") -- Added File system widget local fs_widget = require("awesome-wm-widgets.fs-widget.fs-widget") -- Added to get battery widget local batteryarc_widget = require("awesome-wm-widgets.batteryarc-widget.batteryarc") -- {{{ Error handling -- Check if awesome encountered an error during startup and fell back to -- another config (This code will only ever execute for the fallback config) if awesome.startup_errors then naughty.notify({ preset = naughty.config.presets.critical, title = "Oops, there were errors during startup!", text = awesome.startup_errors }) end

-- Handle runtime errors after startup do local in_error = false awesome.connect_signal("debug::error", function (err) -- Make sure we don't go into an endless error loop if in_error then return end in_error = true

    naughty.notify({ preset = naughty.config.presets.critical,
                     title = "Oops, an error happened!",
                     text = tostring(err) })
    in_error = false
end)

end -- }}}

-- {{{ Variable definitions -- Themes define colours, icons, font and wallpapers. --beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua") beautiful.init("/home/ram/.config/awesome/themes/default/theme.lua") beautiful.font = "Hack 10.7" --beautiful.titlebar_fg = "#bbffffff" beautiful.titlebar_fg = "#05375A" beautiful.titlebar_bg_normal = "1E608F" --beautiful.titlebar_fg_focus = "#FF5666" beautiful.titlebar_fg_focus = "#efffffff" beautiful.titlebar_bg_focus = "#efD64933" for s = 1, screen.count() do gears.wallpaper.maximized(beautiful.wallpaper, s, true) end

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

-- My custom shortcut variable definitions

-- for firefox modkey + shift + b browser = "firefox" -- for file manager modkey + e fileManager = "dolphin -stylesheet /home/ram/qt-dark.qss" fileManager2 = "pcmanfm-qt -stylesheet /home/ram/qt-dark.qss" -- for gimp modkey + shift + g gimp = "gimp" -- For spectacle modkey + shift + p spectacle = "spectacle" -- modkey + shift + ctrl + j for jupyter_lab jupyter_lab = "jupyter-lab" -- For virtualBox modkey + shift +ctrl + v virtualBox = "virtualbox" -- For keepassXC modkey + shift + ctrl + k keepassXC = "keepassxc" -- For kdenlive modkey + shift + l kdenlive = "kdenlive" --For changing wallpaper to random modkey+ctrl+shift +w nitrogenRun = "nitrogen --set-scaled --random /home/ram/Pictures/Wallpaper/" --Running Rofi app launcher launchRofi = "rofi -show drun" --Toogle visibilty of polybar togglePolybar = "polybar-msg cmd toggle" --hidePolybar = "killall -q polybar && ~/.config/polybar/launch.sh && polybar-msg cmd hide" --showPolybar = "killall -q polybar && ~/.config/polybar/launch.sh && polybar-msg cmd show" --Running rofi window launcher rofiWindows = "rofi -show window" --Launching Anki ankiRun = "anki" --Launching pavucontrol-qt for volume control volumeControlRun = "pavucontrol-qt" --Launching alacritty terminal alacrittyLaunch = 'alacritty'

-- 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. awful.layout.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, awful.layout.suit.corner.nw, --awful.layout.suit.corner.ne, -- awful.layout.suit.corner.sw, -- awful.layout.suit.corner.se, } -- }}}

-- {{{ Menu -- Create a launcher widget and a main menu myawesomemenu = { { "hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end }, { "manual", terminal .. " -e man awesome" }, { "edit config", editor_cmd .. " " .. awesome.conffile }, { "restart", awesome.restart }, { "quit", function() awesome.quit() end }, }

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

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

-- Menubar configuration menubar.utils.terminal = terminal -- Set the terminal for applications that require it -- }}}

-- Keyboard map indicator and switcher --mykeyboardlayout = awful.widget.keyboardlayout()

-- {{{ Wibar -- Create a textclock widget mytextclock = wibox.widget.textclock(" %I:%M:%S%p %F ",1)

-- Create a wibox for each screen and add it local taglist_buttons = gears.table.join( awful.button({ }, 1, function(t) t:view_only() end), awful.button({ modkey }, 1, function(t) if client.focus then client.focus:move_to_tag(t) end end), awful.button({ }, 3, awful.tag.viewtoggle), awful.button({ modkey }, 3, function(t) if client.focus then client.focus:toggle_tag(t) end end), awful.button({ }, 4, function(t) awful.tag.viewnext(t.screen) end), awful.button({ }, 5, function(t) awful.tag.viewprev(t.screen) end) )

local tasklist_buttons = gears.table.join( awful.button({ }, 1, function (c) if c == client.focus then c.minimized = true else c:emit_signal( "request::activate", "tasklist", {raise = true} ) end end), awful.button({ }, 3, function() awful.menu.client_list({ theme = { width = 250 } }) end), awful.button({ }, 4, function () awful.client.focus.byidx(1) end), awful.button({ }, 5, function () awful.client.focus.byidx(-1) end))

local function set_wallpaper(s) -- Wallpaper if beautiful.wallpaper then local wallpaper = beautiful.wallpaper -- If wallpaper is a function, call it with the screen if type(wallpaper) == "function" then wallpaper = wallpaper(s) end gears.wallpaper.maximized(wallpaper, s, true) end end

-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution) screen.connect_signal("property::geometry", set_wallpaper)

awful.screen.connect_for_each_screen(function(s) -- Wallpaper set_wallpaper(s)

-- Each screen has its own tag table.
--awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
  local names = { " ", "  ", " ", " ", " ", " ", " ", "  ", "  " }
  local l = awful.layout.suit  -- Just to save some typing: use an alias.
  local layouts = { l.tile, l.tile, l.tile, l.tile, l.tile,
      l.tile, l.tile, l.tile, l.tile}
  awful.tag(names, s, layouts)
-- Create a promptbox for each screen
s.mypromptbox = awful.widget.prompt()
-- Create an imagebox widget which will contain an icon indicating which layout we're using.
-- We need one layoutbox per screen.
s.mylayoutbox = awful.widget.layoutbox(s)
s.mylayoutbox:buttons(gears.table.join(
                       awful.button({ }, 1, function () awful.layout.inc( 1) end),
                       awful.button({ }, 3, function () awful.layout.inc(-1) end),
                       awful.button({ }, 4, function () awful.layout.inc( 1) end),
                       awful.button({ }, 5, function () awful.layout.inc(-1) end)))
-- Create a taglist widget
s.mytaglist = awful.widget.taglist {
    screen  = s,
    filter  = awful.widget.taglist.filter.all,
    buttons = taglist_buttons
}

-- Create a tasklist widget
s.mytasklist = awful.widget.tasklist {
    screen  = s,
    filter  = awful.widget.tasklist.filter.currenttags,
    buttons = tasklist_buttons
}

--local wb1 = awful.wibar { position = 'top', stretch = false, width = 216,height = 20, x = 683,y = 20,ontop = false,opacity= "0.75" } --wb1:setup { --layout = wibox.layout.align.horizontal, --{ --mytextclock, --layout = wibox.layout.fixed.horizontal, --}, ----mytasklist, ----{ ------layout= wibox.layout.fixed.horizontal.center ----layout = wibox.layout.fixed.horizontal, ------layout = wibox.layout.align:horizontal (middle:(mytextclock)), ------mytextclock, ----mytaglist, ----}, --}

--local wb2 = awful.wibar { position = 'top', stretch = false, width = 216,height = 20, x = 1024,y = 20,ontop = true,opacity= "0.75" } --wb2:setup { --layout = wibox.layout.align.horizontal, --{

    --ram_widget(),
    --fs_widget(),
    ---- Solved multiple mount code below in fs_widget.lua file
    ---- Now by default fs_widget will read '/' and '/home' folders
    ----fs_widget({ mounts = { '/home/ram' } }),
    ----mykeyboardlayout,
    --brightnessarc_widget({
      --get_brightness_cmd = 'xbacklight -get',
      --inc_brightness_cmd = 'xbacklight -inc 1.5',
      --dec_brightness_cmd = 'xbacklight -dec 1.5'
    --}),
    --volume_widget{
      --type = 'arc'},
    --logout_menu_widget(),
    ----logout_menu_widget{
      ----font = 'Play 14',
      ----onlock = function() awful.spawn.with_shell('i3lock-fancy') end
    ----},
    --wibox.widget.systray(),
    --s.mylayoutbox,
    --layout = wibox.layout.fixed.horizontal,
--},
----mytasklist,
----{
    ------layout= wibox.layout.fixed.horizontal.center
    ----layout = wibox.layout.fixed.horizontal,
    ------layout = wibox.layout.align:horizontal (middle:(mytextclock)),
    ------mytextclock,
    ----mytaglist,
----},

--}

-- Create the wibox
s.mywibox = awful.wibar({ position = "top", screen = s, height= "20",opacity= "0.55"})

-- Add widgets to the wibox
s.mywibox:setup {
    layout = wibox.layout.align.horizontal,
    expand = none,
    --spacing = 10,
    { -- Left widgets
        layout = wibox.layout.fixed.horizontal,
        mylauncher,
        s.mytaglist,
        s.mypromptbox,
    },
    s.mytasklist, -- Middle widget
    { -- Right widgets
        layout = wibox.layout.fixed.horizontal,
        mytextclock,
        ram_widget(),
        fs_widget(),
        -- Solved multiple mount code below in fs_widget.lua file
        -- Now by default fs_widget will read '/' and '/home' folders
        --fs_widget({ mounts = { '/home/ram' } }),
        --mykeyboardlayout,
        batteryarc_widget({
          show_current_level = true,
          arc_thickness = 1,
        }),
        brightnessarc_widget({
          get_brightness_cmd = 'xbacklight -get',
          inc_brightness_cmd = 'xbacklight -inc 1.5',
          dec_brightness_cmd = 'xbacklight -dec 1.5',
          --color = '#CE4E88' 
        }),
        volume_widget{
          type = 'arc'},
        logout_menu_widget(),
        --logout_menu_widget{
          --font = 'Play 14',
          --onlock = function() awful.spawn.with_shell('i3lock-fancy') end
        --},
        wibox.widget.systray(),
        s.mylayoutbox,
    },

}

end) -- }}}

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

-- {{{ Key bindings globalkeys = gears.table.join( awful.key({ modkey, }, "s", hotkeys_popup.show_help, {description="show help", group="awesome"}), awful.key({ modkey, }, "Left", awful.tag.viewprev, {description = "view previous", group = "tag"}), awful.key({ modkey, }, "Right", awful.tag.viewnext, {description = "view next", group = "tag"}), awful.key({ modkey, }, "Escape", awful.tag.history.restore, {description = "go back", group = "tag"}),

awful.key({ modkey,           }, "j",
    function ()
        awful.client.focus.byidx( 1)
    end,
    {description = "focus next by index", group = "client"}
),
awful.key({ modkey,           }, "k",
    function ()
        awful.client.focus.byidx(-1)
    end,
    {description = "focus previous by index", group = "client"}
),
awful.key({ modkey,           }, "w", function () mymainmenu:show() end,
          {description = "show main menu", group = "awesome"}),

-- For controlling brightness

awful.key({ modkey         }, ";", function () awful.spawn("xbacklight -inc 2.5") end, {description = "increase brightness", group = "custom"}),
awful.key({ modkey, "Shift"}, ";", function () awful.spawn("xbacklight -dec 2.5") end, {description = "decrease brightness", group = "custom"}),

-- For volume control 
        awful.key({ modkey }, "F9", function() volume_widget:inc() end),
        awful.key({ modkey }, "F8", function() volume_widget:dec() end),
        awful.key({ modkey }, "F7", function() volume_widget:toggle() end),

      --awful.key(
      --{modkey,       },"F9",
      --'XF86AudioRaiseVolume',
      --volume_widget.raise,
      --{description = 'volume up', group = 'hotkeys'}
    --),
    --awful.key(
      --{modkey,       },"F8",
      --'XF86AudioLowerVolume',
      --volume_widget.lower,
      --{description = 'volume down', group = 'hotkeys'}
    --),
    --awful.key(
      --{modkey,    },"F7",
      --'XF86AudioMute',
      --volume_widget.toggle,
      --{description = 'toggle mute', group = 'hotkeys'}
    --),
--volume hotkeys
  --awful.key({modkey}, 'F9', function () awful.util.spawn("amixer -D pulse sset Master 1%+", false) end,
            --{description = "volume up", group = "hotkeys"}),
  --awful.key({modkey}, 'F8', function () awful.util.spawn("amixer -D pulse sset Master 1%-", false) end,
            --{description = "volume down", group = "hotkeys"}),
  --awful.key({modkey}, 'F7', function () awful.util.spawn("amixer -D pulse sset Master 1+ toggle", false) end,
            --{description = "volume down", group = "hotkeys"}),

-- Layout manipulation
awful.key({ modkey, "Shift"   }, "j", function () awful.client.swap.byidx(  1)    end,
          {description = "swap with next client by index", group = "client"}),
awful.key({ modkey, "Shift"   }, "k", function () awful.client.swap.byidx( -1)    end,
          {description = "swap with previous client by index", group = "client"}),
awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end,
          {description = "focus the next screen", group = "screen"}),
awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end,
          {description = "focus the previous screen", group = "screen"}),
awful.key({ modkey,           }, "u", awful.client.urgent.jumpto,
          {description = "jump to urgent client", group = "client"}),
awful.key({ modkey,           }, "Tab",
    function ()
        awful.client.focus.history.previous()
        if client.focus then
            client.focus:raise()
        end
    end,
    {description = "go back", group = "client"}),

-- Standard program
-- My Custom Shortcut keys

awful.key({ modkey, "Shift","Control"   }, "b", function () awful.spawn(browser) end,
          {description = "Open Firefox Browser", group = "User Apps"}),

awful.key({ modkey,    }, "e", function () awful.spawn(fileManager) end,
          {description = "Open Dolphin FileManger", group = "System App Launch"}),

awful.key({ modkey, "Shift",    }, "e", function () awful.spawn(fileManager2) end,
          {description = "Open PCManFM FileManger", group = "System App Launch"}),

awful.key({ modkey, "Shift","Control"   }, "g", function () awful.spawn(gimp) end,
          {description = "Open GIMP EDITOR", group = "User Apps"}),

awful.key({ modkey, "Shift","Control"   }, "j", function () awful.spawn(jupyter_lab) end,
          {description = "Open Jupyter Lab for Python3 programming", group = "User Apps"}),

awful.key({ modkey, "Shift","Control"   }, "v", function () awful.spawn(virtualBox) end,
          {description = "Open Virtual Box", group = "User Apps"}),

awful.key({ modkey, "Shift","Control"   }, "k", function () awful.spawn(keepassXC) end,
          {description = "Launch KeepassXC Password Manager", group = "User Apps"}),

awful.key({ modkey, "Shift","Control"   }, "l", function () awful.spawn(kdenlive) end,
          {description = "Launch KdenLIVE", group = "User Apps"}),

awful.key({ modkey, "Shift","Control"   }, "w", function () awful.spawn(nitrogenRun) end,
          {description = "Change Wallpaper random", group = "User Apps"}),

awful.key({ modkey, "Shift"   }, "Return", function () awful.spawn(alacrittyLaunch) end,
          {description = "Launch Alacritty terminal", group = "System App Launch"}),

awful.key({ modkey, "Shift"   }, "x", function () awful.spawn("killall xinput") end,
          {description = "Kill xinput to stop autohidewibox.py ", group = "System App Launch"}),

--awful.key({ modkey, "Shift","Control"   }, "u", function () awful.spawn(togglePolybar) end,
          --{description = "toggle Polybar", group = "launcher"}),

-- awful.key({ modkey, "Shift","Control" }, "h", function () awful.spawn(hidePolybar) end, --{description = "hide Polybar", group = "launcher"}),

--awful.key({ modkey, "Shift","Control"   }, "u", function () awful.spawn(showPolybar) end,
          --{description = "show polybar", group = "launcher"}),

awful.key({ modkey, "Shift"  }, "p", function () awful.spawn(launchRofi) end,
          {description = "Launch Rofi", group = "System App Launch"}),

awful.key({ modkey, "Shift",   }, "w", function () awful.spawn(rofiWindows) end,
          {description = "show windows Rofi", group = "System App Launch"}),

awful.key({ modkey, "Shift","Control"   }, "a", function () awful.spawn(ankiRun) end,
          {description = "Launch Anki", group = "User Apps"}),

awful.key({ modkey, "Shift",  }, "v", function () awful.spawn(volumeControlRun) end,
          {description = "Pulse Audio Control", group = "System App Launch"}),

--keyboard shortcut to toggle multiple screens
awful.key({ modkey, "Shift",  }, "F7", function () xrandr.xrandr()  end,
          {description = "Call Multimonitor", group = "System App Launch"}),
--awful.key({modkey, "Shift"}, "F7", function() xrandr.xrandr() end),
          --{description = "Pulse Audio Control", group = "launcher"}),

awful.key({ modkey, "Shift"   }, "s", function () awful.spawn("gksu pamac-manager") end,
          {description = "Open pamac-manager", group = "System App Launch"}),

awful.key({ modkey, "Shift"   }, "t", function () awful.spawn("gksu timeshift-gtk") end,
          {description = "Open timeshift GTK", group = "System App Launch"}),

-- Custom Shortcut ends here

awful.key({ modkey,           }, "Return", function () awful.spawn(terminal) end,
          {description = "open a terminal", group = "launcher"}),
awful.key({ modkey, "Control" }, "r", awesome.restart,
          {description = "reload awesome", group = "awesome"}),
awful.key({ modkey, "Shift"   }, "q", awesome.quit,
          {description = "quit awesome", group = "awesome"}),

awful.key({ modkey,           }, "l",     function () awful.tag.incmwfact( 0.05)          end,
          {description = "increase master width factor", group = "layout"}),
awful.key({ modkey,           }, "h",     function () awful.tag.incmwfact(-0.05)          end,
          {description = "decrease master width factor", group = "layout"}),
awful.key({ modkey, "Shift"   }, "h",     function () awful.tag.incnmaster( 1, nil, true) end,
          {description = "increase the number of master clients", group = "layout"}),
awful.key({ modkey, "Shift"   }, "l",     function () awful.tag.incnmaster(-1, nil, true) end,
          {description = "decrease the number of master clients", group = "layout"}),
awful.key({ modkey, "Control" }, "h",     function () awful.tag.incncol( 1, nil, true)    end,
          {description = "increase the number of columns", group = "layout"}),
awful.key({ modkey, "Control" }, "l",     function () awful.tag.incncol(-1, nil, true)    end,
          {description = "decrease the number of columns", group = "layout"}),
awful.key({ modkey,           }, "space", function () awful.layout.inc( 1)                end,
          {description = "select next", group = "layout"}),
awful.key({ modkey, "Shift"   }, "space", function () awful.layout.inc(-1)                end,
          {description = "select previous", group = "layout"}),

awful.key({ modkey, "Control" }, "n",
          function ()
              local c = awful.client.restore()
              -- Focus restored client
              if c then
                c:emit_signal(
                    "request::activate", "key.unminimize", {raise = true}
                )
              end
          end,
          {description = "restore minimized", group = "client"}),

-- Prompt
awful.key({ modkey },            "r",     function () awful.screen.focused().mypromptbox:run() end,
          {description = "run prompt", group = "launcher"}),

awful.key({ modkey }, "x", function () awful.prompt.run { prompt = "Run Lua code: ", textbox = awful.screen.focused().mypromptbox.widget, exe_callback = awful.util.eval, history_path = awful.util.get_cache_dir() .. "/history_eval" } end, {description = "lua execute prompt", group = "awesome"}), -- Menubar awful.key({ modkey }, "p", function() menubar.show() end, {description = "show the menubar", group = "launcher"}) )

clientkeys = gears.table.join( awful.key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen c:raise() end, {description = "toggle fullscreen", group = "client"}), awful.key({ modkey, "Shift" }, "c", function (c) c:kill() end, {description = "close", group = "client"}), awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle , {description = "toggle floating", group = "client"}), awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end, {description = "move to master", group = "client"}), awful.key({ modkey, }, "o", function (c) c:move_to_screen() end, {description = "move to screen", group = "client"}), awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end, {description = "toggle keep on top", group = "client"}), awful.key({ modkey, }, "n", function (c) -- The client currently has the input focus, so it cannot be -- minimized, since minimized clients can't have the focus. c.minimized = true end , {description = "minimize", group = "client"}), awful.key({ modkey, }, "m", function (c) c.maximized = not c.maximized c:raise() end , {description = "(un)maximize", group = "client"}), awful.key({ modkey, "Control" }, "m", function (c) c.maximized_vertical = not c.maximized_vertical c:raise() end , {description = "(un)maximize vertically", group = "client"}), awful.key({ modkey, "Shift" }, "m", function (c) c.maximized_horizontal = not c.maximized_horizontal c:raise() end , {description = "(un)maximize horizontally", group = "client"}) )

-- Bind all key numbers to tags. -- Be careful: we use keycodes to make it work on any keyboard layout. -- This should map on the top row of your keyboard, usually 1 to 9. for i = 1, 9 do globalkeys = gears.table.join(globalkeys, -- View tag only. awful.key({ modkey }, "#" .. i + 9, function () local screen = awful.screen.focused() local tag = screen.tags[i] if tag then tag:view_only() end end, {description = "view tag #"..i, group = "tag"}), -- Toggle tag display. awful.key({ modkey, "Control" }, "#" .. i + 9, function () local screen = awful.screen.focused() local tag = screen.tags[i] if tag then awful.tag.viewtoggle(tag) end end, {description = "toggle tag #" .. i, group = "tag"}), -- Move client to tag. awful.key({ modkey, "Shift" }, "#" .. i + 9, function () if client.focus then local tag = client.focus.screen.tags[i] if tag then client.focus:move_to_tag(tag) end end end, {description = "move focused client to tag #"..i, group = "tag"}), -- Toggle tag on focused client. awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, function () if client.focus then local tag = client.focus.screen.tags[i] if tag then client.focus:toggle_tag(tag) end end end, {description = "toggle focused client on tag #" .. i, group = "tag"}) ) end

clientbuttons = gears.table.join( awful.button({ }, 1, function (c) c:emit_signal("request::activate", "mouse_click", {raise = true}) end), awful.button({ modkey }, 1, function (c) c:emit_signal("request::activate", "mouse_click", {raise = true}) awful.mouse.client.move(c) end), awful.button({ modkey }, 3, function (c) c:emit_signal("request::activate", "mouse_click", {raise = true}) awful.mouse.client.resize(c) end) )

-- Set keys root.keys(globalkeys) -- }}}

-- {{{ Rules -- Rules to apply to new clients (through the "manage" signal). awful.rules.rules = { -- All clients will match this rule. { rule = { }, properties = { border_width = beautiful.border_width, border_color = beautiful.border_normal, focus = awful.client.focus.filter, raise = true, keys = clientkeys, buttons = clientbuttons, screen = awful.screen.preferred, placement = awful.placement.no_overlap+awful.placement.no_offscreen } },

-- Floating clients.
{ rule_any = {
    instance = {
      "DTA",  -- Firefox addon DownThemAll.
      "copyq",  -- Includes session name in class.
      "pinentry",
    },
    class = {
      "Arandr",
      "Blueman-manager",
      "Gpick",
      "Kruler",
      "MessageWin",  -- kalarm.
      "Sxiv",
      "Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
      "Wpa_gui",
      "veromix",
      "xtightvncviewer"},

    -- Note that the name property shown in xprop might be set slightly after creation of the client
    -- and the name shown there might not match defined rules here.
    name = {
      "Event Tester",  -- xev.
    },
    role = {
      "AlarmWindow",  -- Thunderbird's calendar.
      "ConfigManager",  -- Thunderbird's about:config.
      "pop-up",       -- e.g. Google Chrome's (detached) Developer Tools.
    }
  }, properties = { floating = true }},

-- Add titlebars to normal clients and dialogs
{ rule_any = {type = { "normal", "dialog" }
  }, properties = { titlebars_enabled = true }
},

-- Set Firefox to always map on the tag named "2" on screen 1.
-- { rule = { class = "Firefox" },
--   properties = { screen = 1, tag = "2" } },

} -- }}}

-- {{{ Signals -- Signal function to execute when a new client appears. client.connect_signal("manage", function (c) -- Set the windows at the slave, -- i.e. put it at the end of others instead of setting it master. -- if not awesome.startup then awful.client.setslave(c) end

if awesome.startup
  and not c.size_hints.user_position
  and not c.size_hints.program_position then
    -- Prevent clients from being unreachable after screen count changes.
    awful.placement.no_offscreen(c)
end

end)

-- Add a titlebar if titlebars_enabled is set to true in the rules. client.connect_signal("request::titlebars", function(c) -- buttons for the titlebar local buttons = gears.table.join( awful.button({ }, 1, function() c:emit_signal("request::activate", "titlebar", {raise = true}) awful.mouse.client.move(c) end), awful.button({ }, 3, function() c:emit_signal("request::activate", "titlebar", {raise = true}) awful.mouse.client.resize(c) end) )

awful.titlebar(c) : setup {
    { -- Left
        awful.titlebar.widget.iconwidget(c),
        buttons = buttons,
        layout  = wibox.layout.fixed.horizontal
    },
    { -- Middle
        { -- Title
            align  = "center",
            widget = awful.titlebar.widget.titlewidget(c)
        },
        buttons = buttons,
        layout  = wibox.layout.flex.horizontal
    },
    { -- Right
        awful.titlebar.widget.floatingbutton (c),
        awful.titlebar.widget.maximizedbutton(c),
        awful.titlebar.widget.stickybutton   (c),
        awful.titlebar.widget.ontopbutton    (c),
        awful.titlebar.widget.closebutton    (c),
        layout = wibox.layout.fixed.horizontal()
    },
    layout = wibox.layout.align.horizontal
}

end)

-- Enable sloppy focus, so that focus follows mouse. client.connect_signal("mouse::enter", function(c) c:emit_signal("request::activate", "mouse_enter", {raise = false}) end)

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

-- Autostart for polybar --awful.spawn.with_shell("~/.config/polybar/launch.sh") --Running picom awful.spawn.with_shell("picom & ") awful.spawn.with_shell("nitrogen --set-scaled --random /home/ram/Pictures/Wallpaper/") awful.spawn.with_shell("nm-applet") awful.spawn.with_shell("killall -q pasystray") awful.spawn.with_shell("pasystray") --Starting autohidepython script awful.spawn.with_shell("~/.config/awesome/autohidewibox.py") --Stariting Klipper clipboard KDE applications awful.spawn.with_shell("klipper") --Autostart pcmanfm daemon --awful.spawn.with_shell("pcmanfm --desktop &")

z3n-k3rn3l commented 3 years ago

Do anyone related to Awesome Team ever going to give at least a response for this issue. What my issue will be helpful for others too.

psychon commented 3 years ago

Sorry, but: Response.

Well... your screenshot says that systemd-logind logs "Power key pressed." That's not running inside your graphical environment and is far outside of Awesome's control. This is even running "outside" of Xorg, so... some input device really must think you pressed your power key.

For memory usage: I fail to understand how much memory your awesomeWM is using. The screenshot only says "more than one MB", I think. That's a ridiculous low limit.

Right now, my top memory using processes (sorted by RES in top) are:

Sure, 88 MiB of memory is not nothing, but there are like 20 processes running with more memory usage

(While writing the above, I accidentally pressed some key on my keyboard and my PC did a suspend to ram. Seems vaguely related to this issue...)

Feb 14 10:29:54 ZweiLED systemd-logind[529]: Suspend key pressed.
Feb 14 10:29:54 ZweiLED systemd-logind[529]: Suspending...
z3n-k3rn3l commented 3 years ago

Thanks for your reply psychon. Awesome is taking 4 MB Shared memory where configured memory is 1MB, also this is shared memory and I hope not the used memory by awesome. Also, is this normal that RKHUNTER count awesome and other program which take more shared memory as rootkit. Hope that's s false positive. So you have a problem that some what related to me. I know how annoying this problem is. In your case it's just suspending system, my case it's shutting down without any prompt or confirmation.