Skip to content

Documentation

Kievits Rene edited this page May 16, 2022 · 1 revision

crylia-theme Documentation

File structure

/

The root folder container the rc.lua which is the entry point for awesome.

/src/

The src folder contains the most important files for awesome such as the widgets or core components.

/mappings/

Actually its bindings, It just annoyed me to not have a folder icon in VS Code! Here lie all keybindings.

/crylia-bar/

This is where the bar is defined, its not in the source since it's completely independent.

/src/widgets/

Every widget is in here

/src/modules/

Every module is in here, e.g. Title bar, OSD's etc

/src/core/

This is what for me is core stuff for awesome, your mileage may vary.

/src/theme/

Everything theme related like the colors, the user_variables, default themes are here and it's your main configuration folder!

/src/assets/

Images, svg's or json/txt files are in here

/src/scripts/

Every script where I thought its better to be in a file is here.

/src/tools/

Really just stuff that helps me like the image lookup or auto start

Basic configuration

If you want to change stuff like the dock programs, widgets in the bar or default programs then you are in the right place!

user_variables.lua

This file contains the most important stuff, everything is explained in the file itself but I'm gonna add it here as well for completion reasons.

  • layouts = {}

Enter the layouts you want to use, you can choose between these:

awful.layout.suit.tile
awful.layout.suit.tile.left
awful.layout.suit.tile.bottom
awful.layout.suit.tile.top
awful.layout.suit.floating
awful.layout.suit.fair
awful.layout.suit.fair.horizontal
awful.layout.suit.corner.nw
awful.layout.suit.corner.ne
awful.layout.suit.corner.sw
awful.layout.suit.corner.se
awful.layout.suit.magnifier
awful.layout.suit.max
awful.layout.suit.max.fullscreen
awful.layout.suit.spiral.dwindle
  • icon_theme = ""

Be careful here, changing it will most likely break the icon_handler

  • autostart = {}

Pretty self explanatory, just add everything that should be auto started as string (terminal command)

  • network = {wlan = "", ethernet = ""}

run ip a in your terminal and enter fill in the blanks with your interface name

  • font = { regular = "", bold = "", extrabold = "", specify = ""}

Use any font you like, just fill in all blanks

  • terminal = ""

Your desired terminal

  • modkey = ""

E.g. "Mod4" for super/meta/windows key

  • wallpaper = home .. ""

Fill in the blank with your wallpaper path, make sure awesome has access to it

  • kblayout = {"", ""}

Enter as many country codes as you like, e.g. "de", "ru", "us"

  • file_manager = ""

File manager, make sure to use the terminal command to start it

  • screenshot_program = ""

Again, fill in the blank with your favorite screenshot tool

  • dock_icon_size = dpi()

Any positive integer will do, make sure to use the dpi()

  • dock_programs = {}

This one is a bit more tricky since I had to support a number of things:

  • WM_CLASS <-- use xprop WM_CLASS and click a window to get this info
  • program <-- terminal command to execute program/script
  • name <-- A name you provide, call it whatever you like
  • icon_path <-- custom icon path, make sure awesome has access
  • isSteam <-- set to true if its a steam game
  • forced_image_size <-- Some images need a forced width/height

theme_variables.lua

Honestly this file is a mess, everything here works but I'm missing a lot where I just "hard coded" the value

Its pretty self explaining how to mess with this file.

init.lua

Here you can change the main icon which is no where used afaik lol

colors.lua

Best is to not mess with colors here, change them where they are used.

/crylia-bar/init.lua

This is where all bars come together, you really only have to mess with this file to change any bar appearance.

I explained the stuff more in detail in the code itself since Its already written there, but the most important stuff is this here:

  • require("src.modules.volume_controller")(s)

To require any module follow this pattern

  • s.audio = require("src.widgets.audio")(s)

Widgets are created like this, uncomment if you don't need them for performance reasons.

Some need to be passed an "s" and some don't, I prefilled all as needed.

  • require("crylia_bar.left_bar")(s, { s.layoutlist, s.taglist })

You simply pass every widget you want to use on bar X as a table like this, doesn't matter how many you use, but at some point they will overlap each other.

Advanced configuration

If you are not satisfied with what you can change then either tell me with an issue or dive deeper yourself!

You can safely go into each file and mess with their margin or color values etc, its all pretty modular and straight forward.