[StumpWM] Move commands, better function for launching WM at work
This commit is contained in:
parent
47d63fedb4
commit
00ee413240
@ -258,107 +258,6 @@ Finally, we can notify the user everything is ready.
|
|||||||
|
|
||||||
And it’s done! We can now move on to the creation of the other CLisp files.
|
And it’s done! We can now move on to the creation of the other CLisp files.
|
||||||
|
|
||||||
* Commands
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: Commands-1wagy001v5j0
|
|
||||||
:header-args:lisp: :mkdirp yes :tangle ~/.stumpwm.d/commands.lisp
|
|
||||||
:END:
|
|
||||||
The first command I declare in this file is a command that will avoid
|
|
||||||
me invoking too many Firefox instances. Either Firefox is not already
|
|
||||||
running and an instance is launched, or one already is and we are
|
|
||||||
brought to it. This is done like so:
|
|
||||||
#+begin_src lisp
|
|
||||||
(defcommand firefox () ()
|
|
||||||
"Run or raise Firefox."
|
|
||||||
(sb-thread:make-thread (lambda () (run-or-raise "firefox" '(:class "Firefox") t nil))))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Next, this command will not only close the current window, but it will
|
|
||||||
also close the current frame.
|
|
||||||
#+begin_src lisp
|
|
||||||
(defcommand delete-window-and-frame () ()
|
|
||||||
"Delete the current frame with its window."
|
|
||||||
(delete-window)
|
|
||||||
(remove-split))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
The two following commands will create a new frame to the right and
|
|
||||||
below the current frame respectively, then focus it.
|
|
||||||
#+begin_src lisp
|
|
||||||
(defcommand hsplit-and-focus () ()
|
|
||||||
"Create a new frame on the right and focus it."
|
|
||||||
(hsplit)
|
|
||||||
(move-focus :right))
|
|
||||||
|
|
||||||
(defcommand vsplit-and-focus () ()
|
|
||||||
"Create a new frame below and move focus to it."
|
|
||||||
(vsplit)
|
|
||||||
(move-focus :down))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Now, let’s create a command for invoking the terminal, optionally with
|
|
||||||
a program.
|
|
||||||
#+begin_src lisp
|
|
||||||
(defcommand term (&optional program) ()
|
|
||||||
"Invoke a terminal, possibly with a @arg{program}."
|
|
||||||
(sb-thread:make-thread
|
|
||||||
(lambda ()
|
|
||||||
(run-shell-command (if program
|
|
||||||
(format nil "kitty ~A" program)
|
|
||||||
"kitty")))))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** At work
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: CommandsAtwork-6u8lkt51vsj0
|
|
||||||
:END:
|
|
||||||
When I’m at work, I have a desktop layout I always use. No need to
|
|
||||||
describe it here, but I want a quick command to save my layout in case
|
|
||||||
I change it a bit as well as a command to load it. That way, I can
|
|
||||||
automatically organize my screens. These command will save and load
|
|
||||||
the dump where the variable ~*my/desktop-dump-file*~ points at.
|
|
||||||
#+begin_src lisp
|
|
||||||
(defvar *my/desktop-dump-file* "~/.cache/stump-at-work"
|
|
||||||
"Where my desktop dump should go and be loaded from.")
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
To save the current desktop, I can write a wrapper around
|
|
||||||
~dump-desktop-to-file~.
|
|
||||||
#+begin_src lisp
|
|
||||||
(defcommand dump-work () ()
|
|
||||||
"Save desktop layout when at work."
|
|
||||||
(dump-desktop-to-file *my/desktop-dump-file*))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Basically the same goes for loading the desktop layout, but this time
|
|
||||||
it’s ~restore-from-file~ that’s wrapped. I also want to launch Global
|
|
||||||
Protect at the same time, because I always forget to before launching
|
|
||||||
~launch-work~ described below, and automatically connect my bluetooth
|
|
||||||
headset.
|
|
||||||
#+begin_src lisp
|
|
||||||
(defcommand at-work () ()
|
|
||||||
"Restore desktop layout when at work."
|
|
||||||
(restore-from-file *my/desktop-dump-file*)
|
|
||||||
(run-shell-command "gpclient")
|
|
||||||
(run-shell-command "bluetoothctl power on && bluetoothctl connect 14:3F:A6:6D:E3:D9"))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
If I want to quickly launch all programs I will need, I can also
|
|
||||||
invoke the command ~launch-work~.
|
|
||||||
#+begin_src lisp
|
|
||||||
(defcommand launch-work () ()
|
|
||||||
"Launch programs I need at work."
|
|
||||||
(run-shell-command "autorandr -l work; xwallpaper --zoom (cat $HOME/.cache/wallpaper)" t)
|
|
||||||
(run-shell-command "pkill picom")
|
|
||||||
(run-shell-command "firefox")
|
|
||||||
(run-shell-command "remmina")
|
|
||||||
(run-shell-command "kitty btop")
|
|
||||||
(run-shell-command "kitty")
|
|
||||||
(run-shell-command "kitty ncmpcpp -qs clock")
|
|
||||||
(run-shell-command "teams")
|
|
||||||
(run-shell-command "discord"))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Colors
|
* Colors
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: Colors-w5493d01v5j0
|
:CUSTOM_ID: Colors-w5493d01v5j0
|
||||||
@ -939,6 +838,109 @@ Finally, let’s enable our gaps:
|
|||||||
(swm-gaps:toggle-gaps))
|
(swm-gaps:toggle-gaps))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Commands
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: Commands-1wagy001v5j0
|
||||||
|
:header-args:lisp: :mkdirp yes :tangle ~/.stumpwm.d/commands.lisp
|
||||||
|
:END:
|
||||||
|
The first command I declare in this file is a command that will avoid
|
||||||
|
me invoking too many Firefox instances. Either Firefox is not already
|
||||||
|
running and an instance is launched, or one already is and we are
|
||||||
|
brought to it. This is done like so:
|
||||||
|
#+begin_src lisp
|
||||||
|
(defcommand firefox () ()
|
||||||
|
"Run or raise Firefox."
|
||||||
|
(sb-thread:make-thread (lambda () (run-or-raise "firefox" '(:class "Firefox") t nil))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Next, this command will not only close the current window, but it will
|
||||||
|
also close the current frame.
|
||||||
|
#+begin_src lisp
|
||||||
|
(defcommand delete-window-and-frame () ()
|
||||||
|
"Delete the current frame with its window."
|
||||||
|
(delete-window)
|
||||||
|
(remove-split))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
The two following commands will create a new frame to the right and
|
||||||
|
below the current frame respectively, then focus it.
|
||||||
|
#+begin_src lisp
|
||||||
|
(defcommand hsplit-and-focus () ()
|
||||||
|
"Create a new frame on the right and focus it."
|
||||||
|
(hsplit)
|
||||||
|
(move-focus :right))
|
||||||
|
|
||||||
|
(defcommand vsplit-and-focus () ()
|
||||||
|
"Create a new frame below and move focus to it."
|
||||||
|
(vsplit)
|
||||||
|
(move-focus :down))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Now, let’s create a command for invoking the terminal, optionally with
|
||||||
|
a program.
|
||||||
|
#+begin_src lisp
|
||||||
|
(defcommand term (&optional program) ()
|
||||||
|
"Invoke a terminal, possibly with a @arg{program}."
|
||||||
|
(sb-thread:make-thread
|
||||||
|
(lambda ()
|
||||||
|
(run-shell-command (if program
|
||||||
|
(format nil "kitty ~A" program)
|
||||||
|
"kitty")))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** At work
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: CommandsAtwork-6u8lkt51vsj0
|
||||||
|
:END:
|
||||||
|
When I’m at work, I have a desktop layout I always use. No need to
|
||||||
|
describe it here, but I want a quick command to save my layout in case
|
||||||
|
I change it a bit as well as a command to load it. That way, I can
|
||||||
|
automatically organize my screens. These command will save and load
|
||||||
|
the dump where the variable ~*my/desktop-dump-file*~ points at.
|
||||||
|
#+begin_src lisp
|
||||||
|
(defvar *my/desktop-dump-file* "~/.cache/stump-at-work"
|
||||||
|
"Where my desktop dump should go and be loaded from.")
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
To save the current desktop, I can write a wrapper around
|
||||||
|
~dump-desktop-to-file~.
|
||||||
|
#+begin_src lisp
|
||||||
|
(defcommand dump-work () ()
|
||||||
|
"Save desktop layout when at work."
|
||||||
|
(dump-desktop-to-file *my/desktop-dump-file*))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Basically the same goes for loading the desktop layout, but this time
|
||||||
|
it’s ~restore-from-file~ that’s wrapped. I also want to launch Global
|
||||||
|
Protect at the same time, because I always forget to before launching
|
||||||
|
~launch-work~ described below, and automatically connect my bluetooth
|
||||||
|
headset.
|
||||||
|
#+begin_src lisp
|
||||||
|
(load-module "swm-gaps")
|
||||||
|
(defcommand at-work () ()
|
||||||
|
"Restore desktop layout when at work."
|
||||||
|
(swm-gaps:toggle-gaps-off)
|
||||||
|
(run-shell-command "pkill picom" t)
|
||||||
|
(run-shell-command "autorandr -l work" t)
|
||||||
|
(run-shell-command "xwallpaper --zoom $(cat $HOME/.cache/wallpaper)" t)
|
||||||
|
(run-shell-command "gpclient")
|
||||||
|
(run-shell-command "bluetoothctl power on && bluetoothctl connect 14:3F:A6:6D:E3:D9"))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
If I want to quickly launch all programs I will need, I can also
|
||||||
|
invoke the command ~launch-work~.
|
||||||
|
#+begin_src lisp
|
||||||
|
(defcommand launch-work () ()
|
||||||
|
"Launch programs I need at work."
|
||||||
|
(run-shell-command "firefox")
|
||||||
|
(run-shell-command "remmina")
|
||||||
|
(run-shell-command "kitty tmux")
|
||||||
|
(run-shell-command "teams")
|
||||||
|
(run-shell-command "discord")
|
||||||
|
(restore-from-file *my/desktop-dump-file*)
|
||||||
|
(restore-window-placement-rules "~/.cache/placement-rules"))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* Keybinds
|
* Keybinds
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: Keybinds-c6wgf961v5j0
|
:CUSTOM_ID: Keybinds-c6wgf961v5j0
|
||||||
|
Loading…
Reference in New Issue
Block a user