diff --git a/home-manager/home.nix b/home-manager/home.nix index 69f71d8..8121d07 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -31,6 +31,8 @@ azos.suites.base.enable = true; azos.suites.editor.enable = true; azos.suites.dev.enable = true; + azos.suites.station.enable = true; + azos.suites.exwm.enable = true; azos.name = "Aner Zakobar"; # TODO: Set your username @@ -39,6 +41,24 @@ homeDirectory = "/home/aner"; }; + xsession = { + windowManager.command = '' + exec ${pkgs.i3}/bin/i3 + ''; + # windowManager.command = "exec ${config.programs.emacs.package}/bin/emacs -l \"${config.programs.emacs.extraConfig} (azos/exwm/load-exwm)\""; + enable = true; + #Keybvoard rate + # initExtra = '' + # xset r rate 200 100 + # ''; + }; + # services.xserver.windowManager.myExwm = { + # enable = true; + # enableDefaultConfig = false; + # executable = config.programs.emacs.package; + # loadScript = ''(require 'azos-emacs-exwm)''; + # }; + # home.packages = with pkgs; [ # # steam # pandoc diff --git a/modules/home-manager/suites/base/emacs/default.nix b/modules/home-manager/suites/base/emacs/default.nix index fe952d7..806c1ed 100644 --- a/modules/home-manager/suites/base/emacs/default.nix +++ b/modules/home-manager/suites/base/emacs/default.nix @@ -3,7 +3,7 @@ let isEnabled = config.azos.emacs.enable && config.azos.suites.base.enable; emacspkgs = config.azos.emacs.emacspkg.pkgs; - # localPkgName = "azos-emacs-base"; + localPkgName = "azos-emacs-base"; in { options.azos.emacs.enable = (azos-utils.mkFeatureEnableOption { @@ -20,18 +20,18 @@ in description = "List of packages for Emacs."; }; - # options.azos.emacs.enabledSuites = lib.mkOption{ - # default = []; - # description = "List of enabled suite names for Emacs. Used to enable the " + - # "custom packages in init.el."; - # }; + options.azos.emacs.enabledSuites = lib.mkOption{ + default = []; + description = "List of enabled suite names for Emacs. Used to enable the " + + "custom packages in init.el."; + }; #Set config config = lib.mkIf isEnabled { #Base emacs suite definition azos.emacs.pkgs = [pkgs.azos.emacs.base]; - # azos.emacs.enabledSuites = [localPkgName]; + azos.emacs.enabledSuites = [localPkgName]; #Global instantiation of Emacs programs.emacs = { @@ -40,9 +40,9 @@ in ((pkgs.emacsPackagesFor config.azos.emacs.emacspkg).emacsWithPackages ( config.azos.emacs.pkgs )); - # extraConfig = lib.strings.concatStringsSep "\n" - # (builtins.map (s : "(require '" + s + ")\n") - # config.azos.emacs.enabledSuites); + extraConfig = lib.strings.concatStringsSep "\n" + (builtins.map (s : "(require '" + s + ")\n") + config.azos.emacs.enabledSuites); }; }; } diff --git a/modules/home-manager/suites/default.nix b/modules/home-manager/suites/default.nix index f20f3f3..3e4f7ee 100644 --- a/modules/home-manager/suites/default.nix +++ b/modules/home-manager/suites/default.nix @@ -8,5 +8,6 @@ ./station ./dev ./editor + ./exwm ]; } diff --git a/modules/home-manager/suites/dev/emacs/default.nix b/modules/home-manager/suites/dev/emacs/default.nix index 681c4aa..ad2e043 100644 --- a/modules/home-manager/suites/dev/emacs/default.nix +++ b/modules/home-manager/suites/dev/emacs/default.nix @@ -3,7 +3,7 @@ let isEnabled = config.azos.emacs.enable && config.azos.suites.dev.enable; emacspkgs = config.azos.emacs.emacspkg.pkgs; - # localPkgName = "azos-emacs-dev"; + localPkgName = "azos-emacs-dev"; in { #Set config @@ -12,6 +12,6 @@ in #Base emacs suite definition azos.emacs.pkgs = [pkgs.azos.emacs.dev]; - # azos.emacs.enabledSuites = [localPkgName]; + azos.emacs.enabledSuites = [localPkgName]; }; } diff --git a/modules/home-manager/suites/editor/emacs/default.nix b/modules/home-manager/suites/editor/emacs/default.nix index 7aad662..c8a6928 100644 --- a/modules/home-manager/suites/editor/emacs/default.nix +++ b/modules/home-manager/suites/editor/emacs/default.nix @@ -4,7 +4,7 @@ let config.azos.emacs.enable && config.azos.suites.dev.enable; emacspkgs = config.azos.emacs.emacspkg.pkgs; pythonpkgs = config.azos.python.pythonpkg.pkgs; - # localPkgName = "azos-emacs-editor"; + localPkgName = "azos-emacs-editor"; in { #Set config @@ -13,7 +13,7 @@ in #Base emacs suite definition azos.emacs.pkgs = [pkgs.azos.emacs.base]; - # azos.emacs.enabledSuites = [localPkgName]; + azos.emacs.enabledSuites = [localPkgName]; azos.python.pkgs = with pythonpkgs; [ graphviz pygments ]; }; diff --git a/modules/home-manager/suites/exwm/default.nix b/modules/home-manager/suites/exwm/default.nix index b4ac516..8c9d10c 100644 --- a/modules/home-manager/suites/exwm/default.nix +++ b/modules/home-manager/suites/exwm/default.nix @@ -1,4 +1,5 @@ #https://xeiaso.net/talks/asg-2023-nixos/ example +#https://gist.github.com/rycee/1ad8654856ce8519f2270b18d27b76d5 { lib, config, pkgs, options, azos-utils, ... }: let isEnabled = @@ -12,242 +13,9 @@ in ]; config = lib.mkIf isEnabled { - services.dunst = { - enable = true; - settings = { -[global] - ### Display ### - - monitor = 0 - follow = keyboard - geometry = "300x5-30+20" - - progress_bar = true - progress_bar_height = 10 - progress_bar_frame_width = 1 - progress_bar_min_width = 150 - progress_bar_max_width = 300 - - indicate_hidden = yes - shrink = no - transparency = 0 - - notification_height = 0 - separator_height = 1 - padding = 3 - horizontal_padding = 4 - text_icon_padding = 0 - - frame_width = 1 - - separator_color = frame - - background = "#cdcbb4" - - sort = yes - idle_threshold = 120 - - ### Text ### - - font = Iosevka Term 10 - line_height = 0 - - markup = full - - format = "%s\n%b" - - # Alignment of message text. - alignment = left - - # Vertical alignment of message text and icon. - # Possible values are "top", "center" and "bottom". - vertical_alignment = center - - # Show age of message if message is older than show_age_threshold - # seconds. - show_age_threshold = 60 - - # Split notifications into multiple lines if they don't fit into - # geometry. - word_wrap = yes - - # Ignore newlines '\n' in notifications. - ignore_newline = no - - # Stack together notifications with the same content - stack_duplicates = true - - # Hide the count of stacked notifications with the same content - hide_duplicate_count = false - - # Display indicators for URLs (U) and actions (A). - show_indicators = yes - - ### Icons ### - - # Align icons left/right/off - icon_position = left - - # Scale small icons up to this size, set to 0 to disable. Helpful - # for e.g. small files or high-dpi screens. In case of conflict, - # max_icon_size takes precedence over this. - min_icon_size = 0 - - # Scale larger icons down to this size, set to 0 to disable - max_icon_size = 32 - - # Paths to default icons. - icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ - - ### History ### - - # Should a notification popped up from history be sticky or timeout - # as if it would normally do. - sticky_history = yes - - # Maximum amount of notifications kept in history - history_length = 20 - - ### Misc/Advanced ### - - # dmenu path. - dmenu = /usr/bin/dmenu -p dunst: - - # Browser for opening urls in context menu. - browser = /usr/bin/firefox -new-tab - - # Always run rule-defined scripts, even if the notification is suppressed - always_run_script = true - - # Define the title of the windows spawned by dunst - title = Dunst - - # Define the class of the windows spawned by dunst - class = Dunst - - # Print a notification on startup. - # This is mainly for error detection, since dbus (re-)starts dunst - # automatically after a crash. - startup_notification = false - - # Manage dunst's desire for talking - # Can be one of the following values: - # crit: Critical features. Dunst aborts - # warn: Only non-fatal warnings - # mesg: Important Messages - # info: all unimportant stuff - # debug: all less than unimportant stuff - verbosity = mesg - - # Define the corner radius of the notification window - # in pixel size. If the radius is 0, you have no rounded - # corners. - # The radius will be automatically lowered if it exceeds half of the - # notification height to avoid clipping text and/or icons. - corner_radius = 0 - - # Ignore the dbus closeNotification message. - # Useful to enforce the timeout set by dunst configuration. Without this - # parameter, an application may close the notification sent before the - # user defined timeout. - ignore_dbusclose = false - - ### Wayland ### - # These settings are Wayland-specific. They have no effect when using X11 - - # Uncomment this if you want to let notications appear under fullscreen - # applications (default: overlay) - # layer = top - - # Set this to true to use X11 output on Wayland. - force_xwayland = false - - ### Legacy - - # Use the Xinerama extension instead of RandR for multi-monitor support. - # This setting is provided for compatibility with older nVidia drivers that - # do not support RandR and using it on systems that support RandR is highly - # discouraged. - # - # By enabling this setting dunst will not be able to detect when a monitor - # is connected or disconnected which might break follow mode if the screen - # layout changes. - force_xinerama = false - - ### mouse - - # Defines list of actions for each mouse event - # Possible values are: - # * none: Don't do anything. - # * do_action: If the notification has exactly one action, or one is marked as default, - # invoke it. If there are multiple and no default, open the context menu. - # * close_current: Close current notification. - # * close_all: Close all notifications. - # These values can be strung together for each mouse event, and - # will be executed in sequence. - mouse_left_click = close_current - mouse_middle_click = do_action, close_current - mouse_right_click = close_all - -# Experimental features that may or may not work correctly. Do not expect them -# to have a consistent behaviour across releases. -[experimental] - # Calculate the dpi to use on a per-monitor basis. - # If this setting is enabled the Xft.dpi value will be ignored and instead - # dunst will attempt to calculate an appropriate dpi value for each monitor - # using the resolution and physical size. This might be useful in setups - # where there are multiple screens with very different dpi values. - per_monitor_dpi = false - -# The internal keyboard shortcut support in dunst is now considered deprecated -# and should be replaced by dunstctl calls. You can use the configuration of your -# WM or DE to bind these to shortcuts of your choice. -# Check the dunstctl manual page for more info. -[shortcuts] - - # Shortcuts are specified as [modifier+][modifier+]...key - # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", - # "mod3" and "mod4" (windows-key). - # Xev might be helpful to find names for keys. - - # Close notification. Equivalent dunstctl command: - # dunstctl close - # close = ctrl+space - - # Close all notifications. Equivalent dunstctl command: - # dunstctl close-all - # close_all = ctrl+shift+space - - # Redisplay last message(s). Equivalent dunstctl command: - # dunstctl history-pop - # history = ctrl+grave - - # Context menu. Equivalent dunstctl command: - # dunstctl context - # context = ctrl+shift+period - -[urgency_low] - foreground = "#2f4f4f" - frame_color = "#cdcdb4" - timeout = 10 - # Icon for notifications with low urgency, uncomment to enable - #icon = /path/to/icon - -[urgency_normal] - foreground = "#00cd00" - frame_color = "#9aff9a" - timeout = 10 - # Icon for notifications with normal urgency, uncomment to enable - #icon = /path/to/icon - -[urgency_critical] - foreground = "#cd0000" - frame_color = "#cd0000" - timeout = 0 - # Icon for notifications with critical urgency, uncomment to enable - #icon = /path/to/icon - - }; - } + home.packages = [ pkgs.xlayoutdisplay ]; }; + + + } diff --git a/modules/home-manager/suites/exwm/emacs/default.nix b/modules/home-manager/suites/exwm/emacs/default.nix index ae2ed5a..b2e343d 100644 --- a/modules/home-manager/suites/exwm/emacs/default.nix +++ b/modules/home-manager/suites/exwm/emacs/default.nix @@ -3,12 +3,17 @@ let isEnabled = config.azos.emacs.enable && config.azos.suites.exwm.enable; emacspkgs = config.azos.emacs.emacspkg.pkgs; + localPkgName = "azos-emacs-exwm"; in { #Set config config = lib.mkIf isEnabled { + azos.emacs.enabledSuites = [localPkgName]; + #Base emacs suite definition azos.emacs.pkgs = [pkgs.azos.emacs.exwm]; + + home.file.".xinitrc".text = ''exec emacs''; }; } diff --git a/modules/home-manager/suites/station/default.nix b/modules/home-manager/suites/station/default.nix index fc91186..62abb83 100644 --- a/modules/home-manager/suites/station/default.nix +++ b/modules/home-manager/suites/station/default.nix @@ -10,13 +10,263 @@ in ]; config = lib.mkIf isEnabled { + #Input! + home.keyboard = { + options = [ + "grp:alt_shift_toggle" + ]; + layout = "us,il"; + }; + + #Flameshot + services.flameshot = { + enable = true; + settings = { + General = { + disabledTrayIcon = true; + showStartupLaunchMessage = false; + }; + }; + }; + + #DUNST + services.dunst = { + enable = true; + settings = { + global = { + monitor = 0; + follow = "keyboard"; + geometry = "300x5-30+20"; + + progress_bar = true; + progress_bar_height = 10; + progress_bar_frame_width = 1; + progress_bar_min_width = 150; + progress_bar_max_width = 300; + + indicate_hidden = "yes"; + shrink = "no"; + transparency = 0; + + notification_height = 0; + separator_height = 1; + padding = 3; + horizontal_padding = 4; + text_icon_padding = 0; + + frame_width = 1; + + separator_color = "frame"; + + background = "#cdcbb4"; + + sort = "yes"; + idle_threshold = 120; + + ### Text ### + + font = "Iosevka Term 10"; + line_height = 0; + + markup = "full"; + + format = "%s\n%b"; + + # Alignment of message text. + alignment = "left"; + + # Vertical alignment of message text and icon. + # Possible values are "top", "center" and "bottom". + vertical_alignment = "center"; + + # Show age of message if message is older than show_age_threshold + # seconds. + show_age_threshold = 60; + + # Split notifications into multiple lines if they don't fit into + # geometry. + word_wrap = "yes"; + + # Ignore newlines '\n' in notifications. + ignore_newline = "no"; + + # Stack together notifications with the same content + stack_duplicates = true; + + # Hide the count of stacked notifications with the same content + hide_duplicate_count = false; + + # Display indicators for URLs (U) and actions (A). + show_indicators = "yes"; + + ### Icons ### + + # Align icons left/right/off + icon_position = "left"; + + # Scale small icons up to this size, set to 0 to disable. Helpful + # for e.g. small files or high-dpi screens. In case of conflict, + # max_icon_size takes precedence over this. + min_icon_size = 0; + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 32; + + ### History ### + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = "yes"; + + # Maximum amount of notifications kept in history + history_length = 20; + + ### Misc/Advanced ### + + # Browser for opening urls in context menu. + # browser = /usr/bin/firefox -new-tab + + # Always run rule-defined scripts, even if the notification is suppressed + always_run_script = "true"; + + # Define the title of the windows spawned by dunst + title = "Dunst"; + + # Define the class of the windows spawned by dunst + class = "Dunst"; + + # Print a notification on startup. + # This is mainly for error detection, since dbus (re-)starts dunst + # automatically after a crash. + startup_notification = false; + + # Manage dunst's desire for talking + # Can be one of the following values: + # crit: Critical features. Dunst aborts + # warn: Only non-fatal warnings + # mesg: Important Messages + # info: all unimportant stuff + # debug: all less than unimportant stuff + verbosity = "mesg"; + + # Define the corner radius of the notification window + # in pixel size. If the radius is 0, you have no rounded + # corners. + # The radius will be automatically lowered if it exceeds half of the + # notification height to avoid clipping text and/or icons. + corner_radius = 0; + + # Ignore the dbus closeNotification message. + # Useful to enforce the timeout set by dunst configuration. Without this + # parameter, an application may close the notification sent before the + # user defined timeout. + ignore_dbusclose = false; + + ### Wayland ### + # These settings are Wayland-specific. They have no effect when using X11 + + # Uncomment this if you want to let notications appear under fullscreen + # applications (default: overlay) + # layer = top + + # Set this to true to use X11 output on Wayland. + force_xwayland = false; + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false; + + ### mouse + + # Defines list of actions for each mouse event + # Possible values are: + # * none: Don't do anything. + # * do_action: If the notification has exactly one action, or one is marked as default, + # invoke it. If there are multiple and no default, open the context menu. + # * close_current: Close current notification. + # * close_all: Close all notifications. + # These values can be strung together for each mouse event, and + # will be executed in sequence. + mouse_left_click = "close_current"; + mouse_middle_click = "do_action, close_current"; + mouse_right_click = "close_all"; + }; + + # Experimental features that may or may not work correctly. Do not expect them + # to have a consistent behaviour across releases. + experimental = { + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false; + }; + + # The internal keyboard shortcut support in dunst is now considered deprecated + # and should be replaced by dunstctl calls. You can use the configuration of your + # WM or DE to bind these to shortcuts of your choice. + # Check the dunstctl manual page for more info. + shortcuts = { + # Shortcuts are specified as [modifier+][modifier+]...key + # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", + # "mod3" and "mod4" (windows-key). + # Xev might be helpful to find names for keys. + + # Close notification. Equivalent dunstctl command: + # dunstctl close + # close = ctrl+space + + # Close all notifications. Equivalent dunstctl command: + # dunstctl close-all + # close_all = ctrl+shift+space + + # Redisplay last message(s). Equivalent dunstctl command: + # dunstctl history-pop + # history = ctrl+grave + + # Context menu. Equivalent dunstctl command: + # dunstctl context + # context = ctrl+shift+period + + }; + + urgency_low = { + foreground = "#2f4f4f"; + frame_color = "#cdcdb4"; + timeout = 10; + # Icon for notifications with low urgency, uncomment to enable + #icon = /path/to/icon + }; + + urgency_normal = { + foreground = "#00cd00"; + frame_color = "#9aff9a"; + timeout = 10; + #icon = /path/to/icon + }; + + urgency_critical = { + foreground = "#cd0000"; + frame_color = "#cd0000"; + timeout = 0; + #icon = /path/to/icon + }; + }; + }; + home.packages = with pkgs; [ - flameshot qutebrowser mpv upower pass - dunst lmms ]; }; diff --git a/modules/home-manager/suites/station/emacs/default.nix b/modules/home-manager/suites/station/emacs/default.nix index 94283cc..46dfadd 100644 --- a/modules/home-manager/suites/station/emacs/default.nix +++ b/modules/home-manager/suites/station/emacs/default.nix @@ -3,12 +3,15 @@ let isEnabled = config.azos.emacs.enable && config.azos.suites.station.enable; emacspkgs = config.azos.emacs.emacspkg.pkgs; + + localPkgName = "azos-emacs-station"; in { #Set config config = lib.mkIf isEnabled { - #Base emacs suite definition + azos.emacs.enabledSuites = [localPkgName]; + azos.emacs.pkgs = [pkgs.azos.emacs.station]; }; diff --git a/nixos/configuration-vm.nix b/nixos/configuration-vm.nix index daa2b9d..1b0c00a 100644 --- a/nixos/configuration-vm.nix +++ b/nixos/configuration-vm.nix @@ -103,8 +103,8 @@ imports = [ #Graphical environment services.xserver.enable = true; - services.xserver.displayManager.lightdm.enable = true; - services.xserver.desktopManager.xfce.enable = true; + services.xserver.displayManager.startx.enable = true; + # services.xserver.desktopManager.xfce.enable = true; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion system.stateVersion = "24.05"; diff --git a/pkgs/azos-emacs-exwm.nix b/pkgs/azos-emacs-exwm.nix index 1d8d2f0..7428443 100644 --- a/pkgs/azos-emacs-exwm.nix +++ b/pkgs/azos-emacs-exwm.nix @@ -9,10 +9,11 @@ orgTrivialBuild { src = ./elisp/azos-emacs-exwm.org; packageRequires = with epkgs; [ pkgs.azos.emacs.base - pkgs.azos.station.base + pkgs.azos.emacs.station exwm desktop-environment bluetooth + pulseaudio-control ]; } diff --git a/pkgs/elisp/azos-emacs-exwm.org b/pkgs/elisp/azos-emacs-exwm.org index 88e76fc..1af9497 100644 --- a/pkgs/elisp/azos-emacs-exwm.org +++ b/pkgs/elisp/azos-emacs-exwm.org @@ -180,8 +180,7 @@ Enabling randr. Automatic mapping of randr screens to workspaces. "xlayoutdisplay" nil "xlayoutdisplay") (setq exwm-randr-workspace-monitor-plist (azos/exwm/add-indexes (azos/exwm/get-monitor-list))) - (exwm-randr-refresh)) - ) + (exwm-randr-refresh))) (add-hook 'azos/exwm/load-hook (lambda () (progn (add-hook 'exwm-randr-screen-change-hook @@ -219,76 +218,71 @@ Sending simulated keys to X windows (use-package pulseaudio-control :after exwm) #+end_src -** TODO Dunst - -Used to have to run a service 'dunst'. Don't do that now, handled by OS. - -** TODO Flameshot - -Also Flameshot - ** Media keys https://gist.github.com/ajyoon/5323b999a01dce8db2d4456da1740fe3 #+begin_src emacs-lisp -(add-hook 'azos/exwm/load-hook (lambda () (progn - (dolist (k '(XF86AudioLowerVolume - XF86AudioRaiseVolume - XF86AudioPlay - XF86AudioStop - XF86AudioPrev - XF86AudioNext)) - (push k exwm-input-prefix-keys)) +(add-hook 'azos/exwm/load-hook (lambda () + (progn + (dolist (k '( + XF86AudioLowerVolume + XF86AudioRaiseVolume + XF86AudioPlay + XF86AudioStop + XF86AudioPrev + XF86AudioNext)) + (push k exwm-input-prefix-keys)) -(exwm-input-set-key - (kbd "") - (lambda () - (interactive) (start-process - "pactl" nil "pactl" "set-sink-volume" "0" "+5%"))) -(exwm-input-set-key - (kbd "") - (lambda () - (interactive) (start-process - "pactl" nil "pactl" "set-sink-volume" "0" "-5%"))) + (exwm-input-set-key + (kbd "") + (lambda () + (interactive) (start-process + "pactl" nil "pactl" "set-sink-volume" "0" "+5%"))) + (exwm-input-set-key + (kbd "") + (lambda () + (interactive) (start-process + "pactl" nil "pactl" "set-sink-volume" "0" "-5%"))) -(exwm-input-set-key - (kbd "") - (lambda () - (interactive) (start-process - "pactl" nil "pactl" "set-sink-mute" "0" "toggle"))) + (exwm-input-set-key + (kbd "") + (lambda () + (interactive) (start-process + "pactl" nil "pactl" "set-sink-mute" "0" "toggle"))) -(exwm-input-set-key - (kbd "") - 'desktop-environment-toggle-music) + (exwm-input-set-key + (kbd "") + 'desktop-environment-toggle-music) -(exwm-input-set-key - (kbd "") - 'desktop-environment-music-next) + (exwm-input-set-key + (kbd "") + 'desktop-environment-music-next) -(exwm-input-set-key - (kbd "") - 'desktop-environment-music-previous) + (exwm-input-set-key + (kbd "") + 'desktop-environment-music-previous) -(exwm-input-set-key - (kbd "") - 'desktop-environment-music-stop) + (exwm-input-set-key + (kbd "") + 'desktop-environment-music-stop) -(exwm-input-set-key - (kbd "") - 'desktop-environment-toggle-music) + (exwm-input-set-key + (kbd "") + 'desktop-environment-toggle-music) -(exwm-input-set-key - (kbd "") - (lambda () - (interactive) (start-process - "light" nil "light" "-A" "5"))) + (exwm-input-set-key + (kbd "") + (lambda () + (interactive) (start-process + "light" nil "light" "-A" "5"))) -(exwm-input-set-key - (kbd "") - (lambda () - (interactive) (start-process - "light" nil "light" "-U" "5"))))) + (exwm-input-set-key + (kbd "") + (lambda () + (interactive) (start-process + "light" nil "light" "-U" "5"))) + ))) #+end_src In the event =xbacklight= doesn't work, the following command can be run: @@ -297,19 +291,6 @@ In the event =xbacklight= doesn't work, the following command can be run: xrandr --output eDP1 --brightness 0.5 #+end_example -** TODO Input languages - -#+begin_src emacs-lisp -(defun azos/exwm/enable-heb () - (interactive) - (start-process-shell-command "heb" nil - "setxkbmap -layout us,il && setxkbmap -option 'grp:alt_shift_toggle'")) - ()) -(add-hook 'azos/exwm/load-hook 'azos/exwm/enable-heb) -#+end_src - -I think this can be handled by OS - ** Dedicated processes We'd want to be able to quickly map processes (Spotify, etc.) to