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; } |
