Emacs Desktop Environment #2 - Improving the EXWM Experience

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 ก.พ. 2025
  • In this stream, we'll continue building the ultimate desktop environment using Emacs Window Manager (EXWM). This time we're improving the day-to-day experience so that you will feel more at home using Emacs as your desktop environment! We cover setting the screen background, Emacs transparency, setting up system keys, useful system tray applications, and displaying time and battery status.
    Check out the configuration from this stream here: github.com/dav...
    The show notes can be found here: github.com/dav...
    My Emacs configuration: github.com/dav...
    If you enjoy this series, please consider becoming a GitHub Sponsor: github.com/spo...
    Follow me on Twitter for more Emacs content!
    / systemcrafters
    Chat with the System Crafters community on Discord: / discord
    Intro music: Coriolis Effect by logos feat. stefsax, licensed CC-BY
    ccmixter.org/fi...

ความคิดเห็น • 17

  • @dabodyx
    @dabodyx 3 ปีที่แล้ว +3

    i just spent my last week-end configuring emacs for myself with your videos. I'm having the time of my life, thank you very much sir for all your work on this very tedious subject, you're awesome!

  • @wakamenod9556
    @wakamenod9556 4 ปีที่แล้ว +10

    0:35 - Introduction
    1:20 - Separating Desktop configuration into another file
    5:20 - Chat Questions (the location of the desktop file)
    6:07 - Loading Desktop config at startup
    9:13 - Configuring EXWM after load
    12:40 - Chat Questions (`call-process`)
    13:49 - Setting EXWM system tray height
    15:12 - Setting a background image
    23:50 - Chat Questions (`start-process-shell-command`)
    24:51 - Using media keys
    30:29 - Chat Questions (MATE Desktop Environment / EXWM key bindings)
    31:34 - System tray apps
    34:59 - Mode line status
    37:57 - Chat Questions
    38:56 - Better app launcher
    42:52 - Locking the screen
    46:41 - Chat Questions
    47:41 - About next time of this series
    48:25 - Chat Questions (Linux distro recommendations)
    49:46 - Outro

  • @wolfjb
    @wolfjb 4 ปีที่แล้ว +3

    First, apologies, I made my comment at the end of the stream because I joined late - the issue related to user-emacs-directory was covered early and I missed it.
    Second: list of things I'm interested in related to EXWM. I used to run EXWM, but had several challenges that I didn't have time to resolve then, but am curious how you might do it - although not sure if you can make it work with your VM setup (don't know if QEMU does multiple heads for example??) But here is the list:
    * Autostart apps - for my awesomewm configuration I use this: dex -e awesome --autostart --verbose, which might be nice to have output show up in *Messages*. Basically dex runs the .desktop apps in ~/.config/autostart. Maybe that line should go in the start-exwm.sh file? The follow on question is what happens for those that have icons which should show up in the system tray?
    * Multiple heads - you already covered xrandr and have something there for that, I have this command which I used to use with EXWM: xrandr --output HDMI1 --right-of LVDS1 --auto which works in so far as the monitors are in the places I expect them to be, but then it appears EXWM stretches across both monitors? I kinda like the way awesomewm (or i3 or xmonad) does it where each monitor has its own workspace. C-x 3 does what you expect though, one buffer is on the left monitor and one is on the right monitor... maybe that is the answer, but s-w 1 (for example) moves both monitors to another workspace... not really expecting that.
    * You already covered exwm-workspace-number, but if I wanted certain numbers to show up on a specific monitor... how would I do that? I haven't found a way, maybe I missed something? I did try this: (setq exwm-randr-workspace-output-plist '(0 "HDMI1" 9 "HDMI1" 8 "HDMI1")) which seems to work, but then those number span both monitors, ie I don't have 0-9 on the left monitor and 0-9 (different) on the right monitor (maybe I can't have that?) Xmonad works kinda like that, in the sense that a new workspace is created on the monitor you are on when you switch to it, or an existing workspace is moved to that monitor - that behavior is a bit confusing as I'd rather the workspaces stick to a monitor rather than float around all over the place.
    This is a great series, I've enjoyed watching your videos, looking forward to more of them.
    Best,
    Jeff

  • @wjcferguson
    @wjcferguson 4 ปีที่แล้ว

    Someone asked about fixing a primary window on one side. For this sort of thing it's worth looking into `(set-window-dedicated-p (selected-window) val)`, and you can query it with (window-dedicated-p (selected-window)). Check the 3 possible dedication levels available. Using that you could for instance lock your browser in place and then play with the rest of the display for other windows. Worth throwing that on a hotkey (s-d toggles loose/off for me, with prefix dedicating strongly).

  • @AndersJackson
    @AndersJackson 4 ปีที่แล้ว

    Miguel Suarez, Debian stable or Debina testing are what you are looking for.

  • @lorenzoiannuzzi3937
    @lorenzoiannuzzi3937 4 ปีที่แล้ว

    Os there a way of having seperate file buffers for different workspaces?

    • @SystemCrafters
      @SystemCrafters  4 ปีที่แล้ว +1

      One nice package that can help with this is called Bufler, it allows you to create different "workspaces" that you can activate per frame, enabling to you have separate buffer lists for each EXWM workspace. I'll do a video about that in the future!

    • @lorenzoiannuzzi3937
      @lorenzoiannuzzi3937 4 ปีที่แล้ว

      @@SystemCrafters Seems, interesting. I'll check it out!

  • @thushaveiheard6402
    @thushaveiheard6402 4 ปีที่แล้ว

    I want to use exwm, but I find I can not use my input method. so I give up and back to bspwm...

    • @SystemCrafters
      @SystemCrafters  4 ปีที่แล้ว +1

      What have you tried in EXWM so far? I think there are some solutions for setting input method, I might be able to help you find something

    • @thushaveiheard6402
      @thushaveiheard6402 4 ปีที่แล้ว

      @@SystemCrafters I use the fcitx input method. When in exwm, I try to start it and it works in other apps like firefox alacritty , however, it can not work with emacs itself. I guess maybe the environmental variables not right. so I add these to my .xinit file and it still dosen't work. Then I have to give up.

    • @dbmusicz
      @dbmusicz 4 ปีที่แล้ว +1

      @@thushaveiheard6402 Taken from the Arch-Wiki:
      If your LC_CTYPE is English, you may not be able to use input method in emacs due to an old emacs bug. You can set your LC_CTYPE to something else such as zh_CN.UTF-8 before emacs starts to get rid of this problem.
      Note that the corresponding locale should be generated on your your system.
      The default fontset will use `-*-*-*-r-normal--14-*-*-*-*-*-*-*' as basefont (in src/xfns.c), if you do not have one matched (like terminus or 75dpi things, you can look the output of `xlsfonts'), XIM can not be activated. According to FAQ and Fonts, it's likely that xorg-fonts-misc-otbAUR is the one that should be installed since xorg-fonts-misc no longer provides the required fontset.

  • @valentinherrmann6926
    @valentinherrmann6926 4 ปีที่แล้ว +1

    I dont't like the behaviour of counsel-linux-app-format-function-name-only, because it doesn't seperate name and comment, so i wrote my own function based on the default:
    ```
    (defun my-counsel-linux-app-format-function (name comment exec)
    (format "% -45s%s"
    (propertize
    (ivy--truncate-string name 45)
    'face 'counsel-application-name)
    (if comment
    (concat ": " comment)
    "")))
    ```
    Very nice :D