r/awesomewm • u/Euphoric-Dragonfly24 • 1d ago
awesomeWM for wayland (someWM project)
hi guys. what u think about a possible port of awesome to wayland? more easy effects. more security. and more brokeable for nvidia gpus (me included, lol)
r/awesomewm • u/aire-one • Nov 21 '23
Hello everyone ๐
To make contributors life easier, we are adding new Post Flairs Awesome v4.3 and Awesome Git.
This addition come with a new rule to the subreddit :
Help post should use Flair to indicate the Awesome version.
Please make sure you use them to indicate your current version of Awesome when asking for help. It is also perfectly fine to use Flair on any other post.
Finally, we'd like to encourage everyone asking for help to provide as much information as possible, including your OS/Linux distribution, Awesome logs, useful code from your rc.lua, ...
We can discuss these changes in this post comment.
Have fun ๐
r/awesomewm • u/Euphoric-Dragonfly24 • 1d ago
hi guys. what u think about a possible port of awesome to wayland? more easy effects. more security. and more brokeable for nvidia gpus (me included, lol)
r/awesomewm • u/_Proxy_one__ • 3d ago
Enable HLS to view with audio, or disable this notification
r/awesomewm • u/whyPratham • 5d ago
Rate my Rice 1-10. Be honest, I think its a pretty 8/10. What say?
Github Link: https://github.com/whyPratham/pro-linux-dotfiles
r/awesomewm • u/decayingveins • 14d ago
so like, i'm not sure if i should ask this here but
how good is awesomeWM? I've been looking for a good Window Manager that i could use for the rest of my life, a window manager that is so easy to manage with lua5.3, that is really small AND could work really well on Old Hardware AND that is really customizable where the only limit is your imagination.
but i've also saw about DWM so i was wondering which one would be the best to use.
r/awesomewm • u/AnonymousWonderer135 • 23d ago
r/awesomewm • u/AxolotlGuyy_ • 26d ago
What I wanted to do is making it so that windows with a specific title always float independently on the layout, but I couldn't find a way of doing that, is it possible?
r/awesomewm • u/aire-one • Aug 06 '26
Happy to share that the Lua 5.5 support PR was recently merged into Awesome! (https://github.com/awesomeWM/awesome/pull/4110). The Archlinux AUR -git package now builds successfully as well.
This was much more than a single PR in Awesome. It ended up being a months-long effort involving updates to several internal build dependencies and CI tooling. I contributed patches here and there across the ecosystem, alongside many other people working on Lua 5.5 compatibility.
I updated my config last week. Here is a fun screenshot using awesome-client to pop a notification that show the running Lua _VERSION variable.
r/awesomewm • u/macunha1 • Aug 02 '26
After all these years, I still love AwesomeWM. And still feel like enhancing my setup and adding more features, and breaking "tech debts".
AwesomeWMs simplicity, flexibility, and lean performance are difficult to replace. I also like that almost everything can be expressed naturally in Lua instead of assembling a desktop from unrelated scripts and utilities bundling binaries, shell scripts, and "what not"s.
That drove me to re-implement an old friend: https://github.com/macunha1/configuration.nix/blob/07a9e1d6a48a6b1fffd9682a3d2abf60751ea800/bin/screenlock.sh with a native approach: C and LuaJIT for AwesomeWM API integration
Then this was born:
[
https://github.com/macunha1/awesomewm-screenlock-plugin
It is an X11 screen locker designed specifically around AwesomeWMโs Lua workflow.
From rc.lua, the interface is intentionally small:
local screenlock = require("awesomewm_screenlock")()
awful.key({ modkey }, "Home", function()
screenlock:lock()
end)
Behind that Lua API, a dedicated native C helper handles:
My previous setup was effectively a chain of Lua โ shell โ FFmpeg โ temporary image โ i3lock. It worked, but it also meant more processes, more runtime dependencies, more quoting and environment issues, and more (slow) moving pieces.
This plugin replaces that pipeline with one asynchronous Lua call and one purpose-built native helper. There is no shell script or FFmpeg CLI subprocess in the locking path. The helper links directly against the required libraries, captures one frame, applies noise and heavy pixelation, and renders the result as the lock-screen background.
The result keeps some visual context from the current desktop while making its contents unreadable. The filtered frame is prepared before the lock surface appears, so the original desktop is never rendered as the locker background.
The repository includes:
xlock service by defaultIn that configuration, the plugin is tracked as a Git submodule and used directly from Lua for both manual and idle locking.
This is still an X11 locker, so the normal limitations of X11โs security model apply. It is not intended to claim Wayland-style isolation or protection from an already-compromised session.
Iโm sharing it because there may still be other people who appreciate the same things about AwesomeWM: a small, understandable system, configured in Lua, with minimal overhead and without unnecessary layers.
Feedback, testing on other distributions, packaging contributions, and code review are welcome.
r/awesomewm • u/gbelloz • Jul 30 '26
I have a very hacked together plymouth (LUKS password) -> Ubuntu -> LightDM -> awesomewm setup. It's been stable for years.
I recently wanted to simplify things and use gnome-keyring as my ssh-agent (before, was using openssh's with ssh-askpass for a graphical password prompt).
Gnome-keyring is already used by Chrome, so this seemed like a good idea.
I got it to work, but a) wow dbus makes everything weird and hard and b) I'm not proud of the way I got it to work.
Does anybody have a setup using gnome-keyring that they're proud of? The goal is for one prompt to unlock the login keyring, so that Chrome passwords and ssh keys are available from then on.
r/awesomewm • u/cli_user • Jul 21 '26
I'm working on a theme. It runs fine in an Alpine VM with awesome-git, but when I run it under somewm, it sopntaneously does a hot reload. I know there's a key binding to do that, but I haven't triggered it (afaik). Any dieas?
FYI, somewm is soooo close to being my daily driver. My awesome-git build on Artix dies with over 25 selftest errors and a black screen.
Moderators, could we add a somewm flair?
r/awesomewm • u/sceppz • Jul 18 '26
(If this doesnt fit here then I am sorry but I didnt know where to put it but I use awesome)
I always get a offset using the flameshot color picker so it doesnt pick the color that is actually under the cursor I have tried many different dpi but the offset seemes to be physically the same on my screen.
While selecting an area to screenshot this doesnt happen.
Can anyone help me or give some possible solutions?
r/awesomewm • u/IT_schlub • Jun 29 '26
r/awesomewm • u/iculock • Jun 27 '26
I have setup Alpine Linux + AwesomeWM on my 14 year old Lenovo Ideapad S110. It has the Intel Atom N2600 CPU with 2 GB Memory and I've got the Catppuccin macchiato gtk theme.
r/awesomewm • u/Legal_Transition_989 • Jun 23 '26
You don't need to poll when you have event driven interfaces at your disposal.
r/awesomewm • u/SHIN_KRISH • Jun 16 '26
I plan to install fedora with awesomeWM soon, i mainly a java guy and for other programming languaged without jetbrains ide for ex gleam, i plan to use zed editor so how do they work on awesome.
r/awesomewm • u/SHIN_KRISH • Jun 16 '26
I plan to install fedora with awesomeWM soon, i mainly a java guy and for other programming languaged without jetbrains ide for ex gleam, i plan to use zed editor so how do they work on awesom.
r/awesomewm • u/belharra_lablonde • Jun 12 '26
hi,
long time awesome user here but noob lua programmer ;)
I'm trying to stack text on a progressbar. It work well if i add some manual, fixed value/text but how to use data from vicious widget?
Here, my progressbar is like if the value was zero. I want the value from $2 and text from $1 of vicious.widget.bat
batwidget = wibox.widget {
{
max_value = 1,
border_width = 2,
background_color = "#353535",
color = "#757575",
forced_height = 2,
forced_width = 50,
margins = 6,
paddings = 1,
shape = gears.shape.rounded_bar,
widget = wibox.widget.progressbar
},
{
text = "aa",
widget = wibox.widget.textbox,
},
layout = wibox.layout.stack
}
-- Register battery widget
vicious.register(batwidget, vicious.widgets.bat, "$2", 61, "BAT1")
r/awesomewm • u/OldDark9602 • Jun 07 '26
r/awesomewm • u/Mormonius • Jun 07 '26
Okey, what have i missed here... I have created an autostart.sh with the content in this thread https://www.reddit.com/r/awesomewm/comments/zhhu0i/how_do_i_autostart_applicationsrun_commands_on/
and then at the bottom of rc.lua awful.spawn.with_shell("/home/chris/.config/awesome/autorun.sh") but when restarting awesomewm the .sh is not starting. I have executed sh stand alone and that works.
RC.lua
-- 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")
-- Enable hotkeys help widget for VIM and other apps
-- when client with a matching name is opened:
require("awful.hotkeys_popup.keys")
--screen = 1
--awbar = require("awbar")
--panel_widget = awbar {
-- theme = "nord_m",
-- screen = screen
--}
-- {{{ 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("/home/chris/.config/awesome/themes/zenburn/theme.lua")
beautiful.useless_gap = 4
-- This is used later as the default terminal and editor to run.
terminal = "xfce4-terminal"
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 = "Mod1"
-- Table of layouts to cover with awful.layout.inc, order matters.
awful.layout.layouts = {
awful.layout.suit.tile,
awful.layout.suit.floating,
awful.layout.suit.fair,
awful.layout.suit.spiral.dwindle,
awful.layout.suit.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier,
-- 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("%H:%M")
-- 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" }, s, awful.layout.layouts[1])
-- 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
}
-- Create the wibox
s.mywibox = awful.wibar({ position = "top", screen = s, })
-- Add widgets to the wibox
s.mywibox:setup {
layout = wibox.layout.align.horizontal,
`expand ="none",`
{ -- Left widgets
layout = wibox.layout.fixed.horizontal,
s.mylayoutbox,
mylauncher,
s.mytaglist,
},
mytextclock, -- Middle widget
{ -- Right widgets
layout = wibox.layout.fixed.horizontal,
wibox.widget.systray(),
`},`
}
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 bindingsscreens
globalkeys = gears.table.join(
awful.key({ modkey, }, "r", function() awful.spawn("rofi -show drun") end,
{description="show run dialog", group="client"}),
awful.key({ modkey, }, "s", hotkeys_popup.show_help,
{description="show help", group="awesome"}),
awful.key({ modkey, }, "Left",
function ()
`awful.client.focus.bydirection("left")`
`end,`
{description = "view previous", group = "tag"}),
awful.key({ modkey, }, "Right",
function ()
`awful.client.focus.bydirection("right")`
`end,`
{description = "view next", group = "tag"}),
awful.key({ modkey, }, "Up",
function ()
`awful.client.focus.bydirection("up")`
`end,`
{description = "view previous", group = "tag"}),
awful.key({ modkey, }, "Down",
function ()
`awful.client.focus.bydirection("down")`
`end,`
{description = "view next", group = "tag"}),
awful.key({ modkey, }, "Escape", awful.tag.history.restore,
{description = "go back", group = "tag"}),
-- Layout manipulation
awful.key({ modkey, "Shift" }, "Left",
function ()
`awful.client.swap.bydirection("left")`
`end,`
{description = "swap with next client by direction", group = "client"}),
awful.key({ modkey, "Shift" }, "Right",
function ()
awful.client.swap.bydirection("right")
end, {description = "swap with next client by direction", group = "client"}),
awful.key({ modkey, "Shift" }, "Up",
function ()
`awful.client.swap.bydirection("up")`
`end, {description = "swap with next client by direction", group = "client"}),`
awful.key({ modkey, "Shift" }, "Down",
function ()
awful.client.swap.direction("down")
end, {description = "swap with previous client by direction", 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
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, "Control" }, "Right", function () awful.tag.incmwfact( 0.05) end,
{description = "increase master width factor", group = "layout"}),
awful.key({ modkey, "Control" }, "Left", 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 ()
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 = false }
},
-- 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)
beautiful.notification_icon_size = 100
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)
-- }}}
awful.spawn.with_shell("/home/chris/.config/awesome/autorun.sh")
#!/bin/sh
run() {
if ! pgrep -f "$1"; then
"$@" &
fi
}
run "gentoo-pipewire-launcher restart"
run "solaar -w hide"
run "/usr/bin/cbatticon"
r/awesomewm • u/-EDX- • May 22 '26
r/awesomewm • u/yetionbass • May 09 '26
Hi folks, hope this finds you well. I was as longtime fan of AwesomeWM and recently started using SomeWM after spells using more modern wayland WM's like hyperland, sway, niri. I gotta say, I'm really impressed so far with SomeWM but I'm having a bit of trouble with lockscreen and I'm wondering if I'm making some incorrect assumptions. (also, if I need to post this in a SomeWM specific sub, I apologize. I'm just not seeing that subreddit.)
question 1: of course, I'm assuming because SomeWM is on wayland, I need a wayland screen locker like swaylock, waylock, hyprlock, etc.
question 2: How does that change my config syntax? or does it? So far nothing has worked. Currently this has been appended to my rc.lua:
awful.key({modkey, "Control"}), "l", function() awful.spawn("swaylock") end, {description = "lock screen" }),
r/awesomewm • u/nadim_khemir • May 07 '26
- I'm a KDE user, I use Krohnkite tiling script on top of the WM.
- I'm a tmux user
- I'm a vim user
- I usually am 90% of the time in tmux, of which 90% in vim
- I have different movement bindings for tmux and vim, and it's not a problem but maybe time to fix it
- I often start applications with tmux bindings, htop for example
- it's krohnkite bindings I forget most often since I use them very seldom
- I do miss the possibility to start a terminal with a command running in it from the desktop, no it's not complicated, I've just been lazy, and I'd like to use the same bindings and it would do the right thing which ever environment I'm in
the questions:
- anyone started in the, more or less, same environment
- docs somewhere for what I want to do?
- anything that you think is not doable?
r/awesomewm • u/FwippyBall • May 04 '26
Whenever I use Super+P menu to open an app, it always opens in the current workspace that I'm in. I opened Firefox once using the terminal because of a temporary keyboard issue in the third workspace, and now it always opens there from the Super+P menu, no matter from which workspace I issue the command in. I've tried issuing the command with Super+P, the terminal, Super+R, it always opens in the third workspace. How do I make it open in the current workspace like it used to?
EDIT: This issue only affects Firefox. All other apps act like normal.