Git Product home page Git Product logo

leftwm's Introduction

LeftWM

A window manager for adventurers

build status wiki Documentation
discord Matrix Chat: Announcements Matrix Chat: General Matrix Chat: Support

Screenshot of LeftWM in action

IMPORTANT NOTE: LeftWM has changed the config language from TOML to RON with the 0.4.0 release. Please use leftwm-check --migrate-toml-to-ron to migrate your config and visit the wiki for more info.

Table of contents

Why go left

LeftWM is a tiling window manager written in Rust that aims to be stable and performant. LeftWM is designed to do one thing and to do that one thing well: be a window manager. LeftWM follows the following mantra:

LeftWM is not a compositor. LeftWM is not a lock screen. LeftWM is not a bar. But, there are lots of good bars out there. With themes, picking one is as simple as setting a symlink.

Because you probably want more than just a black screen, LeftWM is built around the concept of themes. With themes, you can choose between different bars, compositors, backgrounds, colors, docks, and whatever else makes you happy.

LeftWM was built from the very beginning to support multiple screens and ultrawide monitors. The default keybindings support ultrawide monitors and multiple screens.

One of the core concepts/features of LeftWM is theming

With LeftWM, there are two types of configuration files:

  • LeftWM Configuration files: LeftWM configurations are specific to you and don’t change for different themes. These are settings like keybindings, workspace locations, and names of desktops/tags. These settings can be found in $XDG_CONFIG_HOME/leftwm/config.ron.

  • Theme Configuration files: The appearance of your desktop is different. It’s fun to try new looks and feels. It’s fun to tweak and customize the appearance (AKA: ricing). It’s fun to share so others can experience your awesome desktop! LeftWM is built around this concept. By pulling all these settings out into themes, you can now easily tweak, switch, and share your experiences. This configuration is spread between theme.ron and related files contained within a theme's folder.

Note: some example config and themes can be found in the share dir, e.g. /usr/share/leftwm oh Arch based disros.

Dependencies

While LeftWM has very few dependencies, this isn't always the case for themes. Themes typically require the following to be installed. However, this is up to the author of the theme and could be different.

List of LeftWM dependencies:

  • xorg (runtime, build): specifically libx11, xrandr, xorg-server, libxinerama
  • sh (runtime): any posix-compliant shell for starting up and down files
  • rust (build): >= 1.74.0
  • bash (optional): Most of the themes available use bash, though the scripts maybe converted to any posix-compliant shell

List of common dependencies for themes:

Dependency
(git)
Ubuntu 20.4.1
sudo apt install {}
Arch
sudo pacman -S {}
Fedora 33
sudo dnf install {}
PKGS
feh feh feh feh feh
compton compton picom compton compton
picom manual ** picom picom picom
polybar manual ** polybar polybar polybar
xmobar xmobar xmobar xmobar xmobar
lemonbar lemonbar paru -S lemonbar* manual ** lemonbar
conky conky conky conky conky
dmenu dmenu dmenu dmenu dmenu

* You can use whichever AUR wrapper you like. See paru and yay. ** See the git page (link in first column) for how to install these manually

Installation (with package manager)

Packaging status

Gentoo (GURU)

sudo layman -a guru && sudo emerge --sync
sudo emerge --ask --verbose x11-wm/leftwm

Archlinux (AUR)

paru -S leftwm

paru is an AUR helper like yay, but written in Rust.

Fedora (copr)

sudo dnf copr enable th3-s4lm0n/leftwm -y && sudo dnf install leftwm
pkgin install leftwm

or, if you prefer to build it from source

cd /usr/pkgsrc/wm/leftwm
make install

Void (XBPS)

sudo xbps-install -S leftwm

Cargo (crates.io)

cargo install leftwm

If you install LeftWM with crates.io, you will need to link to the xsession desktop file if you want to be able to login to LeftWM from a display manager (GDM, SSDM, LightDM, etc.):

sudo cp PATH_TO_LEFTWM/leftwm.desktop /usr/share/xsessions

Also see the build options for more feature options, especially if you don't use systemd or want to use your own hotkey daemon like sxhkd.

OpenBSD (OpenBSD)

At the moment LeftWM is not packaged with OpenBSD package manager, but it could be installed via Cargo.

cargo install leftwm --no-default-features --features lefthk

leftwm-config not yet ported to OpenBSD, as it requires a nightly Rust compiler to build. The default config is generated by LeftWM when it is first started.

To start LeftWM with xenodm add the following to your ~/.xsession. Make sure to remove or comment-out the exec to the previous WM you had there.

exec dbus-launch ~/.cargo/bin/leftwm >> ~/.cache/leftwm.log 2>&1

Manual Installation (no package manager)

Using a graphical login such as LightDM, GDM, LXDM, and others

  1. Dependencies: Rust, Cargo

  2. Clone the repository and cd into the directory

    git clone https://github.com/leftwm/leftwm.git
    cd leftwm
  3. Build leftwm

    cargo build --profile optimized

    For more options see the build options section.

  4. Copy leftwm executables to the /usr/bin folder

    sudo install -s -Dm755 ./target/optimized/leftwm ./target/optimized/leftwm-worker ./target/optimized/lefthk-worker ./target/optimized/leftwm-state ./target/optimized/leftwm-check ./target/optimized/leftwm-command -t /usr/bin
  5. Copy leftwm.desktop to xsessions folder

    sudo cp leftwm.desktop /usr/share/xsessions/

You should now see LeftWM in your list of available window managers. At this point, expect only a simple black screen on login. For a more customized look, install a theme.

Optional Development Installation

If your goal is to continuously build leftwm and keep up to date with the latest releases, you may prefer to symlink the leftwm executables instead of copying them. If you choose to install this way, make sure you do not move the build directory as it will break your installation.

Note that if you want to build leftwm with another build profile, you will have to change the --profile <profile-name> option and the target folder to target/<profile-name>. Currently available are dev, release and optimized.

  1. Dependencies: Rust, Cargo

  2. Clone the repository and cd into the directory

    git clone https://github.com/leftwm/leftwm.git
    cd leftwm
  3. Build leftwm

    # With systemd logging (view with 'journalctl -f -t leftwm-worker')
    cargo build --profile optimized

    For more options see build options below.

  4. Create the symlinks

    sudo ln -s "$(pwd)"/target/optimized/leftwm /usr/bin/leftwm
    sudo ln -s "$(pwd)"/target/optimized/leftwm-worker /usr/bin/leftwm-worker
    sudo ln -s "$(pwd)"/target/optimized/lefthk-worker /usr/bin/lefthk-worker
    sudo ln -s "$(pwd)"/target/optimized/leftwm-state /usr/bin/leftwm-state
    sudo ln -s "$(pwd)"/target/optimized/leftwm-check /usr/bin/leftwm-check
    sudo ln -s "$(pwd)"/target/optimized/leftwm-command /usr/bin/leftwm-command
  5. Copy leftwm.desktop to xsessions folder

    sudo cp leftwm.desktop /usr/share/xsessions/

You should now see LeftWM in your list of available window managers. At this point, expect only a simple black screen on login. For a more customized look, install a theme.

Rebuilding the development installation

  1. Now if you want to get the newest version of leftwm run this command from your build directory:

    git pull origin main
  2. Build leftwm

    # With systemd logging (view with 'journalctl -f -t leftwm-worker')
    cargo build --profile optimized
  3. And press the following keybind to reload leftwm

    Mod + Shift + R

Optional Build Features

Since LeftWM is targeting to be more and more modular, there are a few features that can be selected at compile time:

Use cargo with the added flags --no-default-features --features= and then commaseparated a selection from the following features:

feature info default
lefthk built-in hotkey daemon, if you build with out make sure you bring your own (e.g. sxhkd) to manage any keybinds, be sure you install the lefthk-worker binary if you build with this option
journald-log logging to journald, depends on systemd
sys-log use standard system logging
file-log log to /tmp/leftwm/<log-file-by-datetime-of-launch>

Example:

# With `lefthk` and logging to `sys-log`
cargo build --profile optimized --no-default-features --features=lefthk,sys-log

# Without `lefthk` and logging to file
cargo build --profile optimized --no-default-features --features=file-log

There are also multiple levels of optimization. These are specified by the cargo profiles, available are dev, release and optimized. The dev and release profiles are default profiles used by cargo, whereas the optimized profile is recomended for production builds.

Example:

# With the dev profile
cargo build --profile dev

# With the release profile
cargo build --profile release

Using the Makefile

For conveniece we also have a Makefile with the following rules:

make ... info
all implies build and test
test runs same tests as CI on github
test-full deprecated, do not use
test-full-nix same as test-full but additionally compiles the nix package, resulting in a full representation of ci checks
build builds with cargo profile optimized by default; read build output on how to change the profile.
clean clean all buildfiles
install install by copying binaries to /usr/bin, also places leftwm.desktop file to /usr/share/xsession and cleans build files
install-linked installs by symlinking, copies leftwm.desktop, no clean
uninstall removes leftwm-* files from /usr/bin and leftwm.desktop file

Note that for build, install and install-linked, you can specify the build profile to use by adding the profile=<profile-name> argument. Currently available are dev, release and release-optimized.

Starting with startx or a login such as slim

Make sure this is at the end of your .xinitrc file:

# .xinitrc
exec dbus-launch leftwm

On some distros like Archlinux, the environment variables are being setup by sourcing /etc/X11/xinit/xinitrc.d, as described in the Arch docs, please make sure you copy the default xinitrc like this:

cp /etc/X11/xinit/xinitrc ~/.xinitrc

Note: In this case it is not necessary to start leftwm through dbus-launch and might even result in some cases in services like gnome-keyring to fail. In such an occasion just use:

# .xinitrc
exec leftwm

Theming

If you want to see more than a black screen when you login, select a theme:

leftwm-theme update
leftwm-theme install NAME_OF_THEME_YOU_LIKE
leftwm-theme apply NAME_OF_THEME_YOU_LIKE

Without LeftWM-Theme

To set up your own custom theme, you will need to create a directory containing the theme files and then symlink it to $XDG_CONFIG_HOME/leftwm/themes/current.

A theme directory contains at least 2 files:

  • up: a script which is loaded with the theme.
  • down: a script which is called when the theme is unloaded.

These files need to be made executable. Many theme directories also contain:

  • theme.ron: which contains additional configuration options specific to the theme.
  • polybar.ini: a configuration file for the polybar application. You need to have polybar installed!
  • picom.conf: a configuration file for the picom compositor. You need to have picom installed!

See the theme guide for examples and further information. There is also a community repository for sharing themes.


Configuring

You can configure key bindings, default mod key and many other options:

leftwm-config -n # Generate new config
leftwm-config    # Open configuration file in $EDITOR
leftwm-config -t # Edit configuration via TUI (Beta)

Manually editing the configuration file

$XDG_CONFIG_HOME/leftwm/config.ron

Note: The configuration file is automatically generated when leftwm or leftwm-check is run for the first time.


Default keys

Keybinding Description
Mod + (1-9) Switch to a desktop/tag
Mod + Shift + (1-9) Move the focused window to desktop/tag
Mod + W Switch the desktops for each screen. Desktops [1][2] changes to [2][1]
Mod + Shift + W Move window to the other desktop
Mod + (⬆️⬇️) Focus on the different windows in the current workspace
Mod + Shift + (⬆️⬇️) Move the different windows in the current workspace
Mod + Enter Move selected window to the top of the stack in the current workspace
Mod + Ctrl + (⬆️⬇️) Switch between different layouts
Mod + Shift + (⬅➡) Switch between different workspaces
Mod + Shift + Enter Open a terminal
Mod + Ctrl + L Lock the screen
Mod + Shift + X Exit LeftWM
Mod + Shift + Q Close the current window
Mod + Shift + R Reload LeftWM and its config
Mod + p Use dmenu to start application

Note: Although we encourage you to use Alacritty, LeftWM will set your default terminal to the first terminal it finds in this list (in the order presented):

  1. Alacritty
  2. Termite
  3. Kitty
  4. URXVT
  5. RXVT
  6. ST
  7. ROXTerm
  8. Eterm
  9. XTerm
  10. Terminator
  11. Terminology
  12. Gnome Terminal
  13. XFCE4 Terminal
  14. Konsole
  15. UXTerm
  16. Guake

Floating Windows

You can optionally switch between tiling or floating mode for any window.

Keybinding Description
Mod + MouseDrag Switch a tiled window to floating mode
Mod + RightMouseDrag Resize a window
Drag window onto a tile Switch a floating window to tiling mode
Mod + Shift + (1-9) Switch a floating window to tiling mode

Workspaces

Workspaces are how you view tags (desktops). A workspace is an area on a screen or most likely the whole screen. in these areas you can view a given tag.

Default: workspaces: [] (one workspace per screen)

Workspaces are only applied if the specified output is the name of a connected screen. The output is also used as identifier of the workspace.

You can get the output names by running xrandr in your terminal.

Example (two workspaces on a single ultrawide):

workspaces: [
	( output: "HDMI-1", y: 0, x: 0, height: 1440, width: 1720 ),
	( output: "HDMI-1", y: 0, x: 1720, height: 1440, width: 1720 ),
],

Tags / Desktops

The default tags are 1-9. They can be renamed in the config file by setting the list of tags.

Here is an example config changing the list of available tags. NOTE: tag navigation (Mod + #) is based on the index of the tag in the list (starting with index 1).

tags: ["Web", "Code", "Shell", "Music", "Connect"],

Layouts

Leftwm supports user definable layouts. The relevant entries in the configuration file are the layouts and layout_definitions lists.

Only the layouts whose name appears in layouts will be accessible when switching layouts through the commands NextLayout, PreviousLayout and SetLayout. Each layout appearing in the layouts list must have a corresponding definition in layout_definitions.

Example:

layouts: [
	"Monocle",
	"MainAndDeck",
	"MainAndVertStack",
],
layout_definitions: [
	(name: "Monocle", flip: None, rotate: North, reserve: None, columns: (flip: None, rotate: North, main: None, stack: (flip: None, rotate: North, split: None), second_stack: None)),
	(name: "MainAndDeck", flip: None, rotate: North, reserve: None, columns: (flip: None, rotate: North, main: (count: 1, size: 0.5, flip: None, rotate: North, split: None), stack: (flip: None, rotate: North, split: None), second_stack: None)),
	(name: "MainAndVertStack", flip: None, rotate: North, reserve: None, columns: (flip: None, rotate: North, main: (count: 1, size: 0.5, flip: None, rotate: North, split: Vertical), stack: (flip: None, rotate: North, split: Horizontal), second_stack: None)),
]

More detailed configuration information can be found in the Wiki.

LeftWM is EWMH compliant

The default layouts are all of the kinds described by the Layout enum.

Troubleshooting

Issue Description Solution
LeftWM not listed by login manager You likely need to add the xsessions file to the right folder. See installation
No config.ron file exists LeftWM does not always ship with a config.ron. You will need to execute LeftWM at least once for one to be generated. Try the following: leftwm-worker
config.ron is not being parsed LeftWM ships with a binary called leftwm-check. It might not be installed by the AUR. Try the following: leftwm-check
Keybinding doesn't work It's likely you need to specify a value or have a typo. See Wiki

Support

LeftWM now has a Discord channel for faster help.

leftwm's People

Contributors

0323pin avatar aethanfoot avatar barkyq avatar bksalman avatar blackdragon2447 avatar carrascomj avatar cecton avatar eskaan avatar hertg avatar kid avatar lengyijun avatar lex148 avatar mautamu avatar mfdorst avatar nemalex avatar nickzana avatar ofekshochat avatar p3s avatar pvautour avatar sagittarius-a avatar samclercky avatar silicasandwhich avatar sokom141 avatar stanislav-lapata avatar syudagye avatar tatrix avatar th3-s4lm0n avatar tornaxo7 avatar vrmiguel avatar vuimuich avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

leftwm's Issues

Multi Monitor Setup

What config setting do I change to use multiple monitors as a single x-screen? Right now it detects one monitor as the "main" one and mirrors the other. With XFCE both monitors are set as a single X screen/workspace, which is what I want.

add 0.1.10 tag

AUR package not building b/c no tag for latest release:

fatal: '0.1.10' is not a commit and a branch 'makepkg' cannot be created from it
==> ERROR: Failure while creating working copy of leftwm git repo

alternatively this could be considered an AUR maintainer's issue and they should change the PKGBUILD to not use the tag in the source.

Possible memory leak on pkill leftwm-worker

When I start a clean leftwm session, my memory footprint is around 500MB (running kubuntu). After several restarts of leftwm-worker during a theme developing session, that footprint inflates up to 3GB and closing all active programs doesn't decrease back down. Running htop shows considerably less memory in actual use than polybar or conky shows. This problem doesn't appear in i3 or Plasma sessions. It appears to be impacted most by heavy Chrome usage during restarts, but I haven't been able to determine if that's because it primarily affects Chrome or because Chrome just generally uses a lot of RAM and is the worst offender.

Polybar not starting properly

On every startup or reload of leftwm, my polybar is invisible, as if it is rendered outside of the window.
2019-12-17-163808_1920x1080_scrot

You can see in the upper-left corner a little green square. But as soon as I press ModKey + # to change tag, the bar is displaying correctly
2019-12-17-163829_1920x1080_scrot

This is my up script concerning polybar:

if [ -x "$(command -v polybar)" ]; then
	pkill polybar
	leftwm-state -q -n -t $SCRIPTPATH/sizes.liquid | sed -r '/^\s*$/d' |
	while read -r w x y; do
		export OFFSETX=$x
		export OFFSETY=$y
		export WIDTH=$w
		export MONITOR="$(polybar -m | sed s/:.\*// | tac)"
		polybar -c $SCRIPTPATH/polybar.config mainbar &> /dev/null &
	done
fi

and this is my mainbar config of polybar

[bar/mainbar]
monitor = ${env:MONITOR}
offset-x = ${env:OFFSETX}
offset-y = ${env:OFFSETY}
width = ${env:WIDTH}
height = 40
fixed-center = false
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 5
line-color = ${colors.primary}
border-size = 0
border-color = ${colors.foreground}
padding-left = 0
padding-right = 0
module-margin-left = 0
module-margin-right = 2
font-0 = Hack:pixelsize=12;2
font-1 = Hack:pixelsize=18;2
font-2 = FontAwesome:size=12;2
font-3 = Monofonto:pixelsize:18;2

modules-left = ewmh
modules-center = xwindow
modules-right = alsa backlight-acpi wlan battery date powermenu
;tray-position = right
;tray-padding = 2
cursor-click = pointer
cursor-scroll = ns-resize
wm-name = LeftWM
bottom = false

do you have any idea why is this happening?

Not all keybindings in config.toml work

In particular, I am having a hard time launching anything with mod-p. Here is the entry in config.toml:

[[keybind]]
command = "Execute"
value = "rofi -show run" //I've also tried "alacritty" without success
modifier = ["modkey"]
key = "p"

I'm certain this is user error but can't seem to figure out what I've got wrong. The whole config is attached.
config.txt

EWMH tag _NET_WM_NAME not compliant

_NET_WM_NAME(CARDINAL): Type mismatch: assumed size 8 bits, actual size 32 bits.

I'm guessing the tag is expecting a string in ascii, but the WM is setting it in Unicode

Windows when reloading Left

After having moved windows out of their grid places, running Mod + shift + R, they reset their positions and lock to the tiling grid again.

I have a few questions.

Is it possible to either remove the gaps between borders, or reduce the size of the gaps?


Is it possible to bind multimedia keys like "XF86AudioPlay", and can I bind it without using the modifier?


Is it possible to remove borders from a fullscreen application? For example, I just tried to watch a video with mpv in fullscreen (and it worked perfectly), however I noticed that either the full border or a partial border will stay on screen.


Is it possible to stretch the current window to the size of the screen if it is the only window in that workspace?


Is it possible to go/move to "Next Workspace" or "Previous Workspace" instead of specifying one?


This probably sounds stupid, but how do you actually exit the WM. Is there a command or default keybinding for it?


I just noticed something else. This only mostly happens with Firefox, but sometimes with other windows. Every once in a while, it's almost like there's a invisible window strange vertical line or something in the center of Firefox the screen that forces the mouse position to the center of the screen. It'll last for around 5 seconds before I can actually use my mouse again. Is this a known issue? Or something on my end?


I'm sorry if these have already been covered somewhere. I've looked around but couldn't find anything regarding my questions.

I have just switched over to LeftWM from XMonad today, and have been enjoying it so far. Everything is noticably faster and I don't have to deal with 10+ not-very-helpful Haskell error messages everytime I change something in my config.

I apologize for the very long issue, and I thank you for reading it.

session doesn't close fully

Running leftwm with SDDM, when you restart SDDM and then start a new session in Plasma, the windows are stuck in a bizarre forced tiling situation that persists until a full reboot.

Unable to find configuration documentation

Is there a place that documents all of the available commands which can be bound to keys? I see the default config file generated when first run, but It's unclear what else can go in there.

Same goes for things like configuring displays.

polybar on top of i3lock

  1. run a theme with polybar
  2. lock your screen with i3lock
  3. turn off your monitor
  4. turn back on your monitor

Expected: i3lock to be the top most window

Weird Graphical glitch in Firefox, holding cursor

Here's is a quick video of what happens. My mouse will get stuck in the center of the screen, and when I try to move it various things will flash and my mouse will go back to the center. Happens sometimes with other windows, but mostly with Firefox. I noticed it happens whenever I switch tags, and whenever I launch another program on the same tag as Firefox. For some reason, it want to happen for that long when I was recording it, but it does desfinitely happen for longer than that.

example:
https://i.imgur.com/CzrqtXM.mp4

seen using:
Firefox: Nightly
Graphics: Proprietary Nvidia drivers, version 390xx

There should be a tool to help manage and use themes

some ideas:

leftwm-themes add https://github.com/lex148/leftwm_theme_bla
leftwm-themes remove leftwm_theme_bla
leftwm-themes update
leftwm-themes update leftwm_theme_bla
leftwm-themes next
leftwm-themes previous
leftwm-themes set leftwm_theme_bla

leftwm doesn't respond to polybar commands immediately

Clicking a tag in polybar does nothing until you mouse out of polybar.

This is because no xorg event is created until the mouse leaves the polybar window.
xlib is blocking leftwm from changing the workspace until the next event

Spawn apps on tag where initially launched

Because floating mode windows are present on all tags, when a program with a splash screen loads, if you change tags while it's loading, it opens on the tag you're currently on, not the tag you initially intended to open it to. It would be nice if there were some way for the information of what tag you initially were on to be retained during the loading process, so you don't need to wait for it to load to continue to use the system in order to have it open where you want it, or have to shuffle around programs after the fact.

some windows do not redraw until clicked on

I have only seen this on virt-manager way down in the bowels of dialogs.

steps to reproduce:

  1. open virt-manager
  2. open a VM
  3. click details button in top menu
    NOTE: window doesn't redraw to show details
  4. mouse out of window
    window redraws

expected window to redraw after step 3

[Enhancement] "-git" aur package?

Would you consider making a "-git" aur package? I noticed that you've added some things like "disabled borders while in fullscreen" and it would be great to be able to have that stuff as soon as you push it to the repo. Currently, I'm using the aur package you have set up which means I have to wait until you decide that you added/edited enough stuff to update the pkgbuild.

It's perfectly fine if you don't want to make a "-git" package, I'll just have to start building from source (which is a bit tedious to clone the repo every time), but it'd be worth it in my opinion.

Hope you consider it. :)

Feature request: turn off drop shadow for inactive windows

In particular this would be helpful for running conky in the background. Currently with conky set as an own window, the conky window always has a drop shadow around it. My conky uses a script to provide a background with rounded corners, but the drop shadow has square corners.
Screenshot_2019-06-23_11-21-57

Not EWMH compliant?

I like to use XWinMosiac as my window switcher, and I can't use it due to this error:

Error: your WM does not support EWMH specifications.

I know that I can just use Rofi as my Window switcher since I already have it installed, but XWinMosiac just looks really nice.

Wine popups render incorrectly

Popup windows in programs running under Wine frequently appear as the wrong size. The most common instance is the height being too short and the width far too wide, often resulting in cut off buttons at the bottom of the popup and a large amount of black space to the right of the window. This issue has impacted every program I've run under Wine in LeftWM to varying degrees.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.