Update fennel + awesomewm config
+ Bumped fennel: 0.8.1 -> 0.9.2. + Use luajit for awesomewm + fennel. + Add barebones awesomewm fennel config (more to come later).
This commit is contained in:
parent
f894614a37
commit
b9d3279034
111
config/awesome/init.fnl
Normal file
111
config/awesome/init.fnl
Normal file
|
@ -0,0 +1,111 @@
|
|||
(local gears (require :gears))
|
||||
(local awful (require :awful))
|
||||
(local naughty (require :naughty))
|
||||
(require :awful.autofocus)
|
||||
|
||||
(local wincmd (require :commands.window))
|
||||
(local tagcmd (require :commands.tag))
|
||||
(local pa (require :utils.pulseaudio))
|
||||
(local input (require :utils.input))
|
||||
|
||||
|
||||
(fn initialize [bindings]
|
||||
;; 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)
|
||||
(let [preset { :timeout 0 :bg "#000000" :fg "#ff0000" :max_height 1080 }]
|
||||
(when awesome.startup_errors
|
||||
(naughty.notify {:preset preset
|
||||
:title "Oops, there were errors during startup!"
|
||||
:text awesome.startup_errors}))
|
||||
|
||||
(var in-error false)
|
||||
(awesome.connect_signal
|
||||
"debug::error"
|
||||
(fn []
|
||||
;; Make sure we don't go into an endless error loop
|
||||
(when (not in-error)
|
||||
(set in-error true)
|
||||
(naughty.notify {:preset preset
|
||||
:title "Oops, an error happened!"
|
||||
:text (tostring err)})
|
||||
(naughty.notify {:preset preset
|
||||
:title "Oops, an error happened!"
|
||||
:text (tostring err)})
|
||||
(set in-error false)))))
|
||||
|
||||
(root.keys bindings.global-keys)
|
||||
|
||||
(naughty.notify {:text "Glorious fennel"})
|
||||
(gears.wallpaper.set "#282c34"))
|
||||
|
||||
|
||||
(local
|
||||
bindings
|
||||
{
|
||||
:global-keys
|
||||
(gears.table.join
|
||||
|
||||
(input.key-group
|
||||
"awesome"
|
||||
[[:mod] :s hotkeys_popup.show_help "show help"]
|
||||
[[:mod :shift] :r awesome.restart "reload config"]
|
||||
)
|
||||
|
||||
(input.key-group
|
||||
"exec"
|
||||
[[:mod] :space (fn [] (awful.util.spawn "rofi -show run")) "app launcher"]
|
||||
[[:mod] :e (fn [] (awful.util.spawn "emacsclient -c -n -e '(switch-to-buffer nil)'")) "emacs"]
|
||||
[[:mod] :v (fn []
|
||||
(let [option "gopass ls --flat"
|
||||
prompt "rofi -dmenu -p pass"
|
||||
action "xargs --no-run-if-empty gopass show -c"
|
||||
cmd (.. option " | " prompt " | " action)]
|
||||
(awful.spawn.easy_async_with_shell cmd (fn []))))
|
||||
"secret vault"]
|
||||
[[:mod] :Return (fn [] (awful.spawn "xst")) "open terminal"]
|
||||
[[] :XF86AudioMute pa.toggle-muted "⏼ audio muted"]
|
||||
[[] :XF86AudioMicMute pa.toggle-mic-mute "⏼ mic muted"]
|
||||
[[] :XF86AudioRaiseVolume (fn [] (pa.adjust-volume 5)) "raise volume"]
|
||||
[[] :XF86AudioLowerVolume (fn [] (pa.adjust-volume -5)) "lower volume"]
|
||||
)
|
||||
|
||||
(input.key-group
|
||||
"client"
|
||||
[[:mod] :h (fn [] (awful.client.focus.bydirection :left)) "focus left"]
|
||||
[[:mod] :j (fn [] (awful.client.focus.bydirection :down)) "focus down"]
|
||||
[[:mod] :k (fn [] (awful.client.focus.bydirection :up)) "focus up"]
|
||||
[[:mod] :l (fn [] (awful.client.focus.bydirection :right)) "focus right"]
|
||||
[[:mod] :n (fn [] (awful.client.focus.byidx 1)) "focus next"]
|
||||
[[:mod] :p (fn [] (awful.client.focus.byidx -1)) "focus previous"]
|
||||
[[:mod :shift] :j (fn [] (awful.client.swap.byidx 1)) "swap next with previous"]
|
||||
[[:mod :shift] :k (fn [] (awful.client.swap.byidx -1)) "swap next with previous"]
|
||||
)
|
||||
)
|
||||
|
||||
:client-keys
|
||||
(gears.table.join
|
||||
(input.key-group
|
||||
"client"
|
||||
[[:mod] :n wincmd.minimize "minimize"]
|
||||
[[:mod] :t wincmd.toggle-ontop "⏼ keep on top"]
|
||||
[[:mod] :m wincmd.toggle-maximized "⏼ maximize"]
|
||||
[[:mod] :f wincmd.toggle-fullscreen "⏼ fullscreen"]
|
||||
[[:mod :ctrl] :space awful.client.floating.toggle "⏼ floating"]
|
||||
[[:mod :ctrl] :Return wincmd.move-to-master "move to master"]
|
||||
[[:mod :ctrl] :m wincmd.toggle-maximize-vertical "⏼ max vertically"]
|
||||
[[:mod :shift] :m wincmd.toggle-maximize-horizontal "⏼ max horizontally"]
|
||||
[[:mod :shift] :c wincmd.close "close"]
|
||||
))
|
||||
|
||||
:client-buttons
|
||||
(gears.table.join
|
||||
(input.mousebind [] input.left-click client.mouse-raise)
|
||||
(input.mousebind [:mod] input.left-click client.mouse-drag-move)
|
||||
(input.mousebind [:mod] input.right-click client.mouse-drag-resize)
|
||||
)
|
||||
})
|
||||
|
||||
|
||||
;;
|
||||
(initialize bindings)
|
57
modules/desktop/awesomewm.nix
Normal file
57
modules/desktop/awesomewm.nix
Normal file
|
@ -0,0 +1,57 @@
|
|||
{ options, config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.desktop.awesomewm;
|
||||
configDir = config.dotfiles.configDir;
|
||||
in {
|
||||
options.modules.desktop.awesomewm = {
|
||||
enable = mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
nixpkgs.overlays = [
|
||||
(self: super: with super; {
|
||||
awesome = super.awesome.override { luaPackages = super.luajitPackages; };
|
||||
})
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
luajit
|
||||
my.fennel
|
||||
];
|
||||
|
||||
services = {
|
||||
picom.enable = true;
|
||||
redshift.enable = true;
|
||||
xserver = {
|
||||
enable = true;
|
||||
displayManager = {
|
||||
lightdm.enable = true;
|
||||
# lightdm.greeters.mini.enable = true;
|
||||
};
|
||||
windowManager.awesome.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
home.configFile = {
|
||||
"awesome" = { source = "${configDir}/awesome"; recursive = true; };
|
||||
"awesome/rc.lua".text = ''
|
||||
-- File was auto-generated by nix. Do not touch!
|
||||
|
||||
-- Load system fennel
|
||||
package.path = package.path .. ";${pkgs.my.fennel}/?.lua"
|
||||
local fennel = require("fennel")
|
||||
debug.traceback = fennel.traceback
|
||||
|
||||
-- Then load our awesomewm config
|
||||
fennel.path = fennel.path .. ";.config/awesome/?.fnl"
|
||||
table.insert(package.loaders or package.searchers, fennel.makeSearcher({
|
||||
correlate = true,
|
||||
useMetadata = true
|
||||
}))
|
||||
require("init")
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,13 +1,13 @@
|
|||
{ lib, stdenv, luajit, my, ... }:
|
||||
|
||||
let name = "fennel";
|
||||
version = "0.8.1";
|
||||
version = "0.9.2";
|
||||
in stdenv.mkDerivation {
|
||||
inherit name version;
|
||||
|
||||
src = fetchTarball {
|
||||
url = "https://fennel-lang.org/downloads/${name}-${version}.tar.gz";
|
||||
sha256 = "0hzxnsgq4yqsvzkndplcllvq3j8cw45npqyrqa2ww8jv5abr183i";
|
||||
sha256 = "0p9zr2vb9gq877advb5jvybx6dmqzmxqh4i7yzdr7fwvz7xzd2jv";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -16,10 +16,11 @@ in stdenv.mkDerivation {
|
|||
|
||||
phases = "installPhase";
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
mkdir -p $out $out/bin
|
||||
cp $src/fennel $out/bin/fennel
|
||||
cp $src/fennel.lua $out/fennel.lua
|
||||
chmod +x $out/bin/fennel
|
||||
sed -i 's%^#!/usr/bin/env lua$%#!${luajit}/bin/lua%' $out/bin/fennel
|
||||
sed -i 's%^#!/usr/bin/env lua$%#!${luajit}/bin/luajit%' $out/bin/fennel
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
|
Loading…
Reference in a new issue