diff options
| -rw-r--r-- | config/.tmux.conf | 4 | ||||
| -rw-r--r-- | config/alacritty/alacritty.toml | 26 | ||||
| -rw-r--r-- | config/dwl.nix | 4 | ||||
| -rw-r--r-- | config/qtile/config.py | 309 | ||||
| -rw-r--r-- | config/qtile/default.nix | 5 | ||||
| -rw-r--r-- | config/themes.nix | 6 | ||||
| -rwxr-xr-x | dist/autostart.sh | 6 | ||||
| -rw-r--r-- | flake.lock | 12 | ||||
| -rw-r--r-- | machines/x/configuration.nix | 8 | ||||
| -rw-r--r-- | machines/x/home.nix | 5 | ||||
| -rw-r--r-- | modules/login.nix | 2 | ||||
| -rw-r--r-- | modules/qtile/default.nix | 5 | ||||
| -rw-r--r-- | modules/wm_utils.nix | 4 | 
13 files changed, 380 insertions, 16 deletions
| diff --git a/config/.tmux.conf b/config/.tmux.conf index 1137b9d..2a3e06b 100644 --- a/config/.tmux.conf +++ b/config/.tmux.conf @@ -37,8 +37,8 @@ bind-key r command-prompt -I "#W" "rename-window '%%'"  bind-key x kill-pane  bind-key c new-window -c "#{pane_current_path}" -fg="#272727" -bg="#f2f0fa" +fg="#d3c6aa" +bg="#202222"  set -g status-position "bottom"  set -g status-style bg=default,fg=default diff --git a/config/alacritty/alacritty.toml b/config/alacritty/alacritty.toml index 6700cab..fd75e99 100644 --- a/config/alacritty/alacritty.toml +++ b/config/alacritty/alacritty.toml @@ -12,3 +12,29 @@ style = { shape = "Beam" }  [env]  TERM = "xterm-256color" + +[colors.primary] +background = "#0F1212" +foreground = "#d3c6aa" + +# Normal colors +[colors.normal] +black   = "#414b50" +red     = "#e67e80" +green   = "#a7c080" +yellow  = "#dbbc7f" +blue    = "#7fbbb3" +magenta = "#d699b6" +cyan    = "#83c092" +white   = "#d3c6aa" + +# Bright colors +[colors.bright] +black   = "#475258" +red     = "#e67e80" +green   = "#a7c080" +yellow  = "#dbbc7f" +blue    = "#7fbbb3" +magenta = "#d699b6" +cyan    = "#83c092" +white   = "#d3c6aa" diff --git a/config/dwl.nix b/config/dwl.nix index 3a011b2..2d0ab0a 100644 --- a/config/dwl.nix +++ b/config/dwl.nix @@ -4,9 +4,5 @@ let    dwl = (pkgs.callPackage ../packages/dwl.nix {});    dwlb = (pkgs.callPackage ../packages/dwlb.nix {});  in { -  xdg.portal.enable = true; -  xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-wlr pkgs.xdg-desktop-portal ]; -  xdg.portal.config.common.default = "wlr"; -    home.packages = [ dwl dwlb ];  } diff --git a/config/qtile/config.py b/config/qtile/config.py new file mode 100644 index 0000000..a1bdb73 --- /dev/null +++ b/config/qtile/config.py @@ -0,0 +1,309 @@ +from libqtile import bar, layout, qtile, widget +from libqtile.config import Click, Drag, Group, Key, Match, Screen +from libqtile.lazy import lazy +from libqtile.backend.wayland import InputConfig + +mod = "mod4" +terminal = "alacritty" +launcher = "/etc/nixos/dist/run.sh" + +keys = [ +    # Switch between windows +    Key([mod], "h", lazy.layout.left(), desc="Move focus to left"), +    Key([mod], "l", lazy.layout.right(), desc="Move focus to right"), +    Key([mod], "j", lazy.layout.down(), desc="Move focus down"), +    Key([mod], "k", lazy.layout.up(), desc="Move focus up"), + +    # Move windows between left/right columns or move up/down in current stack. +    Key([mod, "shift"], "h", lazy.layout.shuffle_left(), desc="Move window to the left"), +    Key([mod, "shift"], "l", lazy.layout.shuffle_right(), desc="Move window to the right"), +    Key([mod, "shift"], "j", lazy.layout.shuffle_down(), desc="Move window down"), +    Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Move window up"), + +    # Grow windows +    Key([mod, "control"], "h", lazy.layout.grow_left(), desc="Grow window to the left"), +    Key([mod, "control"], "l", lazy.layout.grow_right(), desc="Grow window to the right"), +    Key([mod, "control"], "j", lazy.layout.grow_down(), desc="Grow window down"), +    Key([mod, "control"], "k", lazy.layout.grow_up(), desc="Grow window up"), +    Key([mod], "n", lazy.layout.normalize(), desc="Reset all window sizes"), + +    Key( +        [mod], +        "f", +        lazy.window.toggle_fullscreen(), +        desc="Toggle fullscreen on the focused window", +    ), +    Key([mod, "shift"], "f", lazy.window.toggle_floating(), desc="Toggle floating on the focused window"), + +    Key([mod, "shift"], "Return", lazy.spawn(terminal), desc="Launch terminal"), +    Key([mod], "space", lazy.spawn(launcher), desc="Launcher"), + +    Key([], "XF86AudioRaiseVolume", lazy.spawn("pamixer -i 5"), desc='Volume up'), +    Key([], "XF86AudioLowerVolume", lazy.spawn("pamixer -d 5"), desc='Volume down'), +    Key([], "XF86AudioMute", lazy.spawn("pamixer -t"), desc='Volume Mute'), +    Key([], "XF86MonBrightnessUp", lazy.spawn("brightnessctl s 5%+"), desc='brightness UP'), +    Key([], "XF86MonBrightnessDown", lazy.spawn("brightnessctl s 5%-"), desc='brightness Down'), +    Key([mod],"e", lazy.spawn("pcmanfm"), desc='File manager'), +    # Key([mod], "s", lazy.spawn("flameshot gui"), desc='Screenshot'), + +    Key([mod], "Tab", lazy.next_layout(), desc="Toggle between layouts"), + +    Key([mod, "shift"], "q", lazy.window.kill(), desc="Kill focused window"), +    Key([mod, "shift"], "r", lazy.reload_config(), desc="Reload the config"), +    Key([mod, "shift"], "b", lazy.shutdown(), desc="Shutdown Qtile"), + +    Key([mod], "r", lazy.spawncmd(), desc="Spawn a command using a prompt widget"), +] + +# Add key bindings to switch VTs in Wayland. +for vt in range(1, 8): +    keys.append( +        Key( +            ["control", "mod1"], +            f"f{vt}", +            lazy.core.change_vt(vt), +            desc=f"Switch to VT{vt}" +        ) +    ) + + +groups = [Group(f"{i+1}", label="") for i in range(9)] + +for i in groups: +    keys.extend( +            [ +                Key( +                    [mod], +                    i.name, +                    lazy.group[i.name].toscreen(), +                    desc="Switch to group {}".format(i.name), +                    ), +                Key( +                    [mod, "shift"], +                    i.name, +                    lazy.window.togroup(i.name, switch_group=True), +                    desc="Switch to & move focused window to group {}".format(i.name), +                    ), +                ] +            ) + +layouts = [ +    layout.MonadTall( +        border_focus="#202222", +        border_normal="#0F1212", +        border_width=4, +        margin=8 +        ), +    layout.Max() +] + +widget_defaults = dict( +    font="UbuntuMono Nerd Font", +    fontsize=14, +    padding=4 +) +extension_defaults = widget_defaults.copy() + +screens = [ + +    Screen( +        wallpaper="/etc/nixos/dist/wallpaper.jpg", +        wallpaper_mode='fill', +        top=bar.Bar( +            [ +                widget.GroupBox( +                    fontsize=24, +                    borderwidth=3, +                    highlight_method='block', +                    active='#607767', +                    block_highlight_text_color="#B2BEBC", +                    highlight_color='#202222', +                    inactive='#0F1212', +                    foreground='#4B427E', +                    background='#202222', +                    this_current_screen_border='#202222', +                    this_screen_border='#202222', +                    other_current_screen_border='#202222', +                    other_screen_border='#202222', +                    urgent_border='#202222', +                    rounded=True, +                    disable_drag=True, +                ), + +                widget.Sep( +                    background='#202222', +                    padding=14, +                    linewidth=2, +                    size_percent=50 +                ), + +                widget.WindowName( +                    background='#202222', +                    empty_group_string="Desktop", +                    max_chars=130, +                    foreground='#607767', +                ), + +                widget.Spacer( +                    length=8, +                    background='#0F1212', +                ), + +                widget.Sep( +                    background='#0F1212', +                    foreground='#607767', +                    padding=10, +                    linewidth=2, +                    size_percent=50 +                ), + +                widget.StatusNotifier( +                    background='#0F1212', +                    fontsize=2, +                ), + +                widget.Sep( +                    background='#0F1212', +                    foreground='#607767', +                    padding=10, +                    linewidth=2, +                    size_percent=50 +                ), + +                widget.Wlan( +                    fontsize=13, +                    background='#0F1212', +                    foreground='#607767', +                    format='  {essid}', +                    interface='wlp3s0' +                ), + +                widget.Sep( +                    background='#0F1212', +                    foreground='#607767', +                    padding=10, +                    linewidth=2, +                    size_percent=50 +                ), + +                widget.Memory( +                    format=' {MemUsed: .0f}{mm}', +                    foreground='#607767', +                    background='#0F1212', +                    update_interval=5, +                ), + +                widget.Sep( +                    background='#0F1212', +                    foreground='#607767', +                    padding=10, +                    linewidth=2, +                    size_percent=50 +                ), + +                widget.Battery( +                    background='#0F1212', +                    foreground='#607767', +                    format='  {percent:2.0%}', +                ), + +                widget.Sep( +                    background='#0F1212', +                    foreground='#607767', +                    padding=10, +                    linewidth=2, +                    size_percent=50 +                ), + +                widget.PulseVolume( +                    fontsize=13, +                    background='#0F1212', +                    foreground='#607767', +                    fmt=" {}" +                ), + +                widget.Sep( +                    background='#0F1212', +                    foreground='#607767', +                    padding=10, +                    linewidth=2, +                    size_percent=50 +                ), + +                widget.Clock( +                    format='  %d/%M/%y', +                    background='#0F1212', +                    foreground='#607767', +                ), + +                widget.Sep( +                    background='#0F1212', +                    foreground='#607767', +                    padding=10, +                    linewidth=2, +                    size_percent=50 +                ), + +                widget.Clock( +                    format='  %I:%M %p', +                    background='#0F1212', +                    foreground='#607767', +                ), +            ], +            28, +        ), +    ), +] + +# Drag floating layouts. +mouse = [ +    Drag([mod], "Button1", lazy.window.set_position_floating(), start=lazy.window.get_position()), +    Drag([mod], "Button3", lazy.window.set_size_floating(), start=lazy.window.get_size()), +    Click([mod], "Button2", lazy.window.bring_to_front()) +] + +dgroups_key_binder = None +dgroups_app_rules = [] +follow_mouse_focus = True +bring_front_click = True +floats_kept_above = True +cursor_warp = False +floating_layout = layout.Floating( +    border_focus="#202222", +    border_normal="#0F1212", +    border_width=4, +    float_rules=[ +        # Run the utility of `xprop` to see the wm class and name of an X client. +        *layout.Floating.default_float_rules, +        Match(wm_class="confirmreset"),  # gitk +        Match(wm_class="makebranch"),  # gitk +        Match(wm_class="maketag"),  # gitk +        Match(wm_class="ssh-askpass"),  # ssh-askpass +        Match(title="branchdialog"),  # gitk +        Match(title="pinentry"),  # GPG key password entry +        Match(title="float"), +    ] +) +auto_fullscreen = True +focus_on_window_activation = "smart" +reconfigure_screens = True +auto_minimize = True + +wl_input_rules = { +    "*": InputConfig(tap=True, natural_scroll=True) +} + +wl_xcursor_theme = None +wl_xcursor_size = 16 + +wmname = "LG3D" + +import os +import subprocess + +from libqtile import hook + +@hook.subscribe.startup_once +def autostart(): +    home = os.path.expanduser('/etc/nixos/dist/autostart.sh') +    subprocess.Popen([home]) diff --git a/config/qtile/default.nix b/config/qtile/default.nix new file mode 100644 index 0000000..826c46e --- /dev/null +++ b/config/qtile/default.nix @@ -0,0 +1,5 @@ +{ pkgs, config, ... }: + +{ +  xdg.configFile."qtile/config.py".source = ./config.py; +} diff --git a/config/themes.nix b/config/themes.nix index b406f36..3d3fb34 100644 --- a/config/themes.nix +++ b/config/themes.nix @@ -11,7 +11,7 @@    gtk = {      enable = true; -    theme = { name = "adw-gtk3-dark"; package = pkgs.adw-gtk3; }; +    theme = { name = "Everforest-Dark-BL-LB"; package = pkgs.everforest-gtk-theme; };      iconTheme = { name = "Papirus-Dark"; package = pkgs.papirus-icon-theme; };      font = { name = "UbuntuMono Nerd Font Mono"; }; @@ -19,6 +19,10 @@      gtk3.extraConfig = {        gtk-decoration-layout = "appmenu:none";      }; + +    gtk4.extraConfig = { +      gtk-decoration-layout = "appmenu:none"; +    };    };    qt = { diff --git a/dist/autostart.sh b/dist/autostart.sh new file mode 100755 index 0000000..c673bd1 --- /dev/null +++ b/dist/autostart.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +way-displays & +dunst & +blueman-applet & +systemctl --user import-environment DISPLAY WAYLAND_DISPLAY & @@ -7,11 +7,11 @@          ]        },        "locked": { -        "lastModified": 1725180166, -        "narHash": "sha256-fzssXuGR/mCeGbzM1ExaTqDz7QDGta3WA4jJsZyRruo=", +        "lastModified": 1727383923, +        "narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=",          "owner": "nix-community",          "repo": "home-manager", -        "rev": "471e3eb0a114265bcd62d11d58ba8d3421ee68eb", +        "rev": "ffe2d07e771580a005e675108212597e5b367d2d",          "type": "github"        },        "original": { @@ -22,11 +22,11 @@      },      "nixpkgs": {        "locked": { -        "lastModified": 1725432240, -        "narHash": "sha256-+yj+xgsfZaErbfYM3T+QvEE2hU7UuE+Jf0fJCJ8uPS0=", +        "lastModified": 1727348695, +        "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=",          "owner": "nixos",          "repo": "nixpkgs", -        "rev": "ad416d066ca1222956472ab7d0555a6946746a80", +        "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784",          "type": "github"        },        "original": { diff --git a/machines/x/configuration.nix b/machines/x/configuration.nix index d80dad9..3d89307 100644 --- a/machines/x/configuration.nix +++ b/machines/x/configuration.nix @@ -6,19 +6,25 @@      inputs.home-manager.nixosModules.default    ] ++ (map (path: ../../modules/${path}) [      "core/global.nix" +      "amdgpu.nix"      "amd.nix"      "nvidia.nix"      "laptop.nix" +      "core/audio.nix"      "core/bluetooth.nix"      "core/fonts.nix" -    "wm_utils.nix" +      "compromyse.nix"      "login.nix"      "polkit.nix" +      "virtualization.nix"      "remapcapslock.nix" + +    "wm_utils.nix" +    "qtile"    ]);    boot.loader.systemd-boot.enable = true; diff --git a/machines/x/home.nix b/machines/x/home.nix index 52b6f06..2c009e5 100644 --- a/machines/x/home.nix +++ b/machines/x/home.nix @@ -25,6 +25,9 @@      firefox      google-chrome +    filezilla +    pcmanfm +      obs-studio      wl-clipboard @@ -40,7 +43,7 @@      "emacs"      "nvim" -    "dwl.nix" +    "qtile"      "themes.nix"      "way-displays"      "swaylock" diff --git a/modules/login.nix b/modules/login.nix index 038f4a3..28432c1 100644 --- a/modules/login.nix +++ b/modules/login.nix @@ -10,7 +10,7 @@      enable = true;      settings = {        default_session = { -        command = "tuigreet --time --remember --cmd \"dwl -s dwlb\""; +        command = "tuigreet --time --remember --cmd \"qtile start -b wayland\"";          user = "greeter";        };      }; diff --git a/modules/qtile/default.nix b/modules/qtile/default.nix new file mode 100644 index 0000000..3603183 --- /dev/null +++ b/modules/qtile/default.nix @@ -0,0 +1,5 @@ +{ pkgs, config, ... }: + +{ +  services.xserver.windowManager.qtile.enable = true; +} diff --git a/modules/wm_utils.nix b/modules/wm_utils.nix index 5981cf3..c61bba4 100644 --- a/modules/wm_utils.nix +++ b/modules/wm_utils.nix @@ -18,5 +18,9 @@      sway-launcher-desktop    ]; +  xdg.portal.enable = true; +  xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-wlr pkgs.xdg-desktop-portal ]; +  xdg.portal.config.common.default = "wlr"; +    services.dbus.enable = true;  } | 
