diff --git a/home/dot_config/ghostty/config b/home/dot_config/ghostty/config index 1c39111..47f7f1e 100644 --- a/home/dot_config/ghostty/config +++ b/home/dot_config/ghostty/config @@ -7,7 +7,7 @@ font-size = 13 font-family = "Maple Mono NF CN" theme = light:Catppuccin Latte,dark:Catppuccin Mocha -background-opacity = 0.8 +# background-opacity = 0.8 cursor-style = block_hollow cursor-style-blink = true diff --git a/home/dot_config/sway/config b/home/dot_config/sway/config index a7863bc..ae32953 100644 --- a/home/dot_config/sway/config +++ b/home/dot_config/sway/config @@ -1,44 +1,10 @@ -# Default config for sway -# -# Copy this to ~/.config/sway/config and edit it to your liking. -# -# Read `man 5 sway` for a complete reference. +# vim:ft=swayconfig ### Variables # -# Logo key. Use Mod1 for Alt. -set $mod Mod4 -# Home row direction keys, like vim -set $left h -set $down j -set $up k -set $right l -set $term kitty -set $menu rofi -show drun -icon-theme Papirus -show-icons -### Output configuration -# -# Default wallpaper (more resolutions are available in /run/current-system/sw/share/backgrounds/sway/) + output * bg /run/current-system/sw/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill -# -# Example configuration: -# -# output HDMI-A-1 resolution 1920x1080 position 1920,0 -# -# You can get the names of your outputs by running: swaymsg -t get_outputs - -### Idle configuration -# -# Example configuration: -# -# exec swayidle -w \ -# timeout 300 'swaylock -f -c 000000' \ -# timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \ -# before-sleep 'swaylock -f -c 000000' -# -# This will lock your screen after 300 seconds of inactivity, then turn off -# your displays after another 300 seconds, and turn your screens back on when -# resumed. It will also lock your screen before your computer goes to sleep. ### Input configuration # @@ -50,168 +16,21 @@ output * bg /run/current-system/sw/share/backgrounds/sway/Sway_Wallpaper_Blue_19 natural_scroll enabled } -### Key bindings -# -# Basics: -# - # Start a terminal - bindsym $mod+Return exec $term - - # Kill focused window - bindsym $mod+q kill - - # Start your launcher - bindsym alt+space exec $menu - - # Drag floating windows by holding down $mod and left mouse button. - # Resize them with right mouse button + $mod. - # Despite the name, also works for non-floating windows. - # Change normal to inverse to use left mouse button for resizing and right - # mouse button for dragging. - floating_modifier $mod normal - - # Reload the configuration file - bindsym $mod+Shift+r reload - - # Exit sway (logs you out of your Wayland session) -# -# Moving around: -# - # Move your focus around - bindsym $mod+$left focus left - bindsym $mod+$down focus down - bindsym $mod+$up focus up - bindsym $mod+$right focus right - # Or use $mod+[up|down|left|right] - bindsym $mod+Left focus left - bindsym $mod+Down focus down - bindsym $mod+Up focus up - bindsym $mod+Right focus right - - # Move the focused window with the same, but add Shift - bindsym $mod+Shift+$left move left - bindsym $mod+Shift+$down move down - bindsym $mod+Shift+$up move up - bindsym $mod+Shift+$right move right - # Ditto, with arrow keys - bindsym $mod+Shift+Left move left - bindsym $mod+Shift+Down move down - bindsym $mod+Shift+Up move up - bindsym $mod+Shift+Right move right -# -# Workspaces: -# - # Switch to workspace - bindsym $mod+1 workspace number 1 - bindsym $mod+2 workspace number 2 - bindsym $mod+3 workspace number 3 - bindsym $mod+4 workspace number 4 - bindsym $mod+5 workspace number 5 - bindsym $mod+6 workspace number 6 - bindsym $mod+7 workspace number 7 - bindsym $mod+8 workspace number 8 - bindsym $mod+9 workspace number 9 - bindsym $mod+0 workspace number 10 - # Move focused container to workspace - bindsym $mod+Shift+1 move container to workspace number 1 - bindsym $mod+Shift+2 move container to workspace number 2 - bindsym $mod+Shift+3 move container to workspace number 3 - bindsym $mod+Shift+4 move container to workspace number 4 - bindsym $mod+Shift+5 move container to workspace number 5 - bindsym $mod+Shift+6 move container to workspace number 6 - bindsym $mod+Shift+7 move container to workspace number 7 - bindsym $mod+Shift+8 move container to workspace number 8 - bindsym $mod+Shift+9 move container to workspace number 9 - bindsym $mod+Shift+0 move container to workspace number 10 - # Note: workspaces can have any name you want, not just numbers. - # We just use 1-10 as the default. # # Layout stuff: # # You can "split" the current object of your focus with # $mod+b or $mod+v, for horizontal and vertical splits # respectively. - bindsym $mod+b splith - bindsym $mod+shift+b splitv - - # Switch the current container between different layout styles - # bindsym $mod+s layout stacking - bindsym $mod+w layout tabbed - bindsym $mod+x layout toggle split - - # Make the current focus fullscreen - bindsym $mod+shift+m fullscreen - - # Toggle the current focus between tiling and floating mode - bindsym $mod+Shift+space floating toggle - - # Swap focus between the tiling area and the floating area - bindsym $mod+space focus mode_toggle - - # Move focus to the parent container - bindsym $mod+a focus parent - - bindsym $mod+e exec dolphin - bindsym $mod+shift+e exec kitty bash -c "yazi" - bindsym $mod+shift+w exec rofi -show window -icon-theme Papirus -show-icons - bindsym $mod+period exec rofi -show p -modi p:rofimoji | wl-copy - bindsym ctrl+alt+backspace exec rofi -show p -modi p:rofi-power-menu - # bindsym ctrl+alt+backspace exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' # -# Scratchpad: -# - # Sway has a "scratchpad", which is a bag of holding for windows. - # You can send windows there and get them back later. - # Move the currently focused window to the scratchpad - bindsym $mod+Shift+minus move scratchpad - # Show the next scratchpad window or hide the focused scratchpad window. - # If there are multiple scratchpad windows, this command cycles through them. - bindsym $mod+minus scratchpad show -# -# Resizing containers: -# -mode "resize" { - # left will shrink the containers width - # right will grow the containers width - # up will shrink the containers height - # down will grow the containers height - bindsym $left resize shrink width 10px - bindsym $down resize grow height 10px - bindsym $up resize shrink height 10px - bindsym $right resize grow width 10px +seat seat0 xcursor_theme breeze_cursors 30 - # Ditto, with arrow keys - bindsym Left resize shrink width 10px - bindsym Down resize grow height 10px - bindsym Up resize shrink height 10px - bindsym Right resize grow width 10px - # Return to default mode - bindsym Return mode "default" - bindsym Escape mode "default" -} -bindsym $mod+r mode "resize" -# -# Utilities: -# - # Special keys to adjust volume via PulseAudio - bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle - bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5% - bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5% - bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle - # Special keys to adjust brightness via brightnessctl - bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- - bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ - # Special key to take a screenshot with grim - bindsym Print exec grimshot --notify savecopy area ~/Pictures/$(date "+%Y-%m-%d"T"%H:%M:%S").png - bindsym $mod+shift+s exec grimshot --notify savecopy area ~/Pictures/$(date "+%Y-%m-%d"T"%H:%M:%S").png - -# -# Status Bar: -exec waybar - -seat seat0 xcursor_theme Adwaita 30 +# # Floating rules +# for_window [title=".*Picture in picture.*"] floating enable, +include ~/.config/sway/variables include /etc/sway/config.d/* +include ~/.config/sway/modules/* diff --git a/home/dot_config/sway/modules/display b/home/dot_config/sway/modules/display new file mode 100644 index 0000000..54488a7 --- /dev/null +++ b/home/dot_config/sway/modules/display @@ -0,0 +1,5 @@ +# vim:ft=swayconfig + +output eDP-1 disable scale 1.5 +output DP-2 scale 1.5 + diff --git a/home/dot_config/sway/modules/keymaps b/home/dot_config/sway/modules/keymaps new file mode 100644 index 0000000..b8fb9da --- /dev/null +++ b/home/dot_config/sway/modules/keymaps @@ -0,0 +1,145 @@ +# vim:ft=swayconfig + +bindsym $mod+Return exec $term + +# Kill focused window +bindsym $mod+q kill + +# Start your launcher +bindsym alt+space exec $launcher + +# Drag floating windows by holding down $mod and left mouse button. +# Resize them with right mouse button + $mod. +# Despite the name, also works for non-floating windows. +# Change normal to inverse to use left mouse button for resizing and right +# mouse button for dragging. +floating_modifier $mod normal + +# Reload the configuration file +bindsym $mod+Shift+r reload + +# Exit sway (logs you out of your Wayland session) +# +# Moving around: +# +# Move your focus around +bindsym $mod+$left focus left +bindsym $mod+$down focus down +bindsym $mod+$up focus up +bindsym $mod+$right focus right +# Or use $mod+[up|down|left|right] +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# Move the focused window with the same, but add Shift +bindsym $mod+Shift+$left move left +bindsym $mod+Shift+$down move down +bindsym $mod+Shift+$up move up +bindsym $mod+Shift+$right move right +# Ditto, with arrow keys +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right +# +# Workspaces: +# +# Switch to workspace +bindsym $mod+1 workspace number 1 +bindsym $mod+2 workspace number 2 +bindsym $mod+3 workspace number 3 +bindsym $mod+4 workspace number 4 +bindsym $mod+5 workspace number 5 +bindsym $mod+6 workspace number 6 +bindsym $mod+7 workspace number 7 +bindsym $mod+8 workspace number 8 +bindsym $mod+9 workspace number 9 +bindsym $mod+0 workspace number 10 +# Move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number 1 +bindsym $mod+Shift+2 move container to workspace number 2 +bindsym $mod+Shift+3 move container to workspace number 3 +bindsym $mod+Shift+4 move container to workspace number 4 +bindsym $mod+Shift+5 move container to workspace number 5 +bindsym $mod+Shift+6 move container to workspace number 6 +bindsym $mod+Shift+7 move container to workspace number 7 +bindsym $mod+Shift+8 move container to workspace number 8 +bindsym $mod+Shift+9 move container to workspace number 9 +bindsym $mod+Shift+0 move container to workspace number 10 + +bindsym $mod+b splith +bindsym $mod+shift+b splitv + +# Switch the current container between different layout styles +# bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+x layout toggle split + +# Make the current focus fullscreen +bindsym $mod+shift+m fullscreen + +# Toggle the current focus between tiling and floating mode +bindsym $mod+Shift+space floating toggle + +# Swap focus between the tiling area and the floating area +bindsym $mod+space focus mode_toggle + +# Move focus to the parent container +bindsym $mod+a focus parent + +bindsym $mod+e exec $explorer +bindsym $mod+shift+e exec $term_runner bash -c $explorer_cli +bindsym $mod+shift+w exec $menu -show window -icon-theme $icon_theme -show-icons +bindsym $mod+period exec $menu -show p -modi p:rofimoji | wl-copy +# bindsym ctrl+alt+backspace exec rofi -show p -modi p:rofi-power-menu +bindsym ctrl+alt+delete exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' + + +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show + +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle +bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5% +bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5% +bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle +# Special keys to adjust brightness via brightnessctl +bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- +bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ +# Special key to take a screenshot with grim +bindsym Print exec grimshot --notify savecopy area ~/Pictures/Screenshots/$(date "+%Y-%m-%d"T"%H:%M:%S").png +bindsym Shift+Print exec grimshot --notify savecopy active ~/Pictures/Screenshots/$(date "+%Y-%m-%d"T"%H:%M:%S").png +bindsym Alt+Print exec grimshot --notify savecopy screen ~/Pictures/Screenshots/$(date "+%Y-%m-%d"T"%H:%M:%S").png +bindsym $mod+shift+s exec grimshot --notify savecopy area ~/Pictures/Screenshots/$(date "+%Y-%m-%d"T"%H:%M:%S").png diff --git a/home/dot_config/sway/modules/startup b/home/dot_config/sway/modules/startup new file mode 100644 index 0000000..96ee71e --- /dev/null +++ b/home/dot_config/sway/modules/startup @@ -0,0 +1,10 @@ +# vim:ft=swayconfig + +exec waybar +exec fcitx5 +exec dunst +exec pcloud +exec swayidle -w \ + timeout 300 'swaylock -f -c 000000' \ + timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \ + before-sleep 'swaylock -f -c 000000' diff --git a/home/dot_config/sway/modules/win-rules b/home/dot_config/sway/modules/win-rules new file mode 100644 index 0000000..6c0c01f --- /dev/null +++ b/home/dot_config/sway/modules/win-rules @@ -0,0 +1,21 @@ +# vim:ft=swayconfig + +# https://gitlab.com/that1communist/dotfiles/-/blob/master/.config/sway/modules/win-rules + +# for_window [title=".*Picture in picture.*"] floating enable, + +set { + $ii inhibit_idle focus + $game inhibit_idle focus; floating enable; border none; fullscreen enable; shadows disable + $popup floating enable; border pixel 1; sticky enable; shadows enable + $float floating enable; border pixel 1; shadows enable + $video inhibit_idle fullscreen; border none; max_render_time off + $important inhibit_idle open; floating enable; border pixel 1 + $max inhibit_idle visible; floating enable; sticky enable; border pixel 1 +} + + +for_window [title="^Picture in picture.*$"] $popup + +# Generic rules for file dialog +for_window [title="(?:Open|Save) (?:File|Folder|As)"] floating enable, resize set width 1030 height 710 diff --git a/home/dot_config/sway/variables b/home/dot_config/sway/variables new file mode 100644 index 0000000..4522150 --- /dev/null +++ b/home/dot_config/sway/variables @@ -0,0 +1,16 @@ +# vim:ft=swayconfig + +# Logo key. Use Mod1 for Alt. +set $mod Mod4 +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l +set $term kitty +set $term_runner kitty +set $explorer dolphin +set $explorer_cli "yazi" +set $icon_theme Papirus +set $menu rofi +set $launcher rofi -show drun -icon-theme $icon_theme -show-icons diff --git a/home/dot_config/waybar/style.css b/home/dot_config/waybar/style.css index ee7b8eb..4cc850f 100644 --- a/home/dot_config/waybar/style.css +++ b/home/dot_config/waybar/style.css @@ -1,6 +1,6 @@ * { /* `otf-font-awesome` is required to be installed for icons */ - font-family: "Maple Mono NF CN"; + font-family: "Font Awesome 7 Free", "JetBrainsMono Nerd Font"; font-size: 14px; font-feature-settings: "tnum"; } diff --git a/nixcfgs/modules/nixos/desktop/de/sway.nix b/nixcfgs/modules/nixos/desktop/de/sway.nix index 42541d7..ea80704 100644 --- a/nixcfgs/modules/nixos/desktop/de/sway.nix +++ b/nixcfgs/modules/nixos/desktop/de/sway.nix @@ -4,7 +4,7 @@ environment.systemPackages = with pkgs; [ swaybg swayidle - mako + dunst rofi rofimoji rofi-power-menu diff --git a/nixcfgs/modules/nixos/programs/dolphin.nix b/nixcfgs/modules/nixos/programs/dolphin.nix new file mode 100644 index 0000000..5af2ca2 --- /dev/null +++ b/nixcfgs/modules/nixos/programs/dolphin.nix @@ -0,0 +1,10 @@ +{pkgs, ...}: { + environment.systemPackages = with pkgs.kdePackages; [ + dolphin + dolphin-plugins + konsole + kio-admin + ]; + # See: https://github.com/NixOS/nixpkgs/issues/409986 + environment.etc."xdg/menus/applications.menu".source = "${pkgs.kdePackages.plasma-workspace}/etc/xdg/menus/plasma-applications.menu"; +} diff --git a/nixcfgs/users/js0ny/packages/flatpak.nix b/nixcfgs/users/js0ny/packages/flatpak.nix index 990e493..ce2323d 100644 --- a/nixcfgs/users/js0ny/packages/flatpak.nix +++ b/nixcfgs/users/js0ny/packages/flatpak.nix @@ -24,6 +24,7 @@ # "com.vivaldi.Vivaldi" "com.getpostman.Postman" "us.zoom.Zoom" + "com.ticktick.Ticktick" ]; services.flatpak.overrides = { global = { @@ -48,6 +49,7 @@ }; }; "md.obsidian.Obsidian".Context.sockets = ["wayland"]; + "com.ticktick.Ticktick".Context.sockets = ["wayland"]; "com.getpostman.Postman".Context.persistent = ["Postman"]; }; } diff --git a/nixcfgs/users/js0ny/programs/gnome/default.nix b/nixcfgs/users/js0ny/programs/desktop/gnome/default.nix similarity index 100% rename from nixcfgs/users/js0ny/programs/gnome/default.nix rename to nixcfgs/users/js0ny/programs/desktop/gnome/default.nix diff --git a/nixcfgs/users/js0ny/programs/gnome/paperwm.nix b/nixcfgs/users/js0ny/programs/desktop/gnome/paperwm.nix similarity index 100% rename from nixcfgs/users/js0ny/programs/gnome/paperwm.nix rename to nixcfgs/users/js0ny/programs/desktop/gnome/paperwm.nix diff --git a/nixcfgs/users/js0ny/programs/niri.nix b/nixcfgs/users/js0ny/programs/desktop/niri.nix similarity index 100% rename from nixcfgs/users/js0ny/programs/niri.nix rename to nixcfgs/users/js0ny/programs/desktop/niri.nix diff --git a/nixcfgs/users/js0ny/programs/plasma.nix b/nixcfgs/users/js0ny/programs/desktop/plasma.nix similarity index 100% rename from nixcfgs/users/js0ny/programs/plasma.nix rename to nixcfgs/users/js0ny/programs/desktop/plasma.nix diff --git a/nixcfgs/users/js0ny/programs/desktop/sway.nix b/nixcfgs/users/js0ny/programs/desktop/sway.nix new file mode 100644 index 0000000..a5f3bfc --- /dev/null +++ b/nixcfgs/users/js0ny/programs/desktop/sway.nix @@ -0,0 +1,43 @@ +# See also: ~/.dotfiles/home/dot_config/sway +# https://d19qhx4ioawdt7.cloudfront.net/docs/nix-home-manager-sway.html +{ + lib, + pkgs, + ... +}: let + mod = "Mod4"; +in { + wayland.windowManager.sway = { + checkConfig = true; + # config = { + # modifier = mod; + # keybindings = lib.attrsets.mergeAttrsList [ + # (lib.attrsets.mergeAttrsList (map (num: let + # ws = toString num; + # in { + # "${mod}+${ws}" = "workspace ${ws}"; + # "${mod}+Ctrl+${ws}" = "move container to workspace ${ws}"; + # }) [1 2 3 4 5 6 7 8 9 0])) + # + # (lib.attrsets.concatMapAttrs (key: direction: { + # "${mod}+${key}" = "focus ${direction}"; + # "${mod}+Ctrl+${key}" = "move ${direction}"; + # }) { + # h = "left"; + # j = "down"; + # k = "up"; + # l = "right"; + # }) + # ]; + # }; + swaynag.enable = true; + }; + + home.packages = with pkgs; [ + grim + slurp + grim + dunst + sway-contrib.grimshot + ]; +} diff --git a/nixcfgs/users/js0ny/zephyrus.nix b/nixcfgs/users/js0ny/zephyrus.nix index 28e6d13..c745765 100644 --- a/nixcfgs/users/js0ny/zephyrus.nix +++ b/nixcfgs/users/js0ny/zephyrus.nix @@ -35,8 +35,8 @@ ./programs/ollama.nix # Desktop Linux - ./programs/plasma.nix - ./programs/niri.nix + ./programs/desktop/plasma.nix + ./programs/desktop/sway.nix # General Program config ../../modules/home/programs/eza.nix