Coder Social home page Coder Social logo

ft-labs / pdwm Goto Github PK

View Code? Open in Web Editor NEW
403.0 10.0 18.0 45.28 MB

full animation supported, easy configurable (uses shared library) dwm fork with a control center (pdwmc)

License: MIT License

Makefile 2.48% C 94.58% Roff 2.94%
dwm linux suckless windowmanager coolui

pdwm's Introduction

pdwm & phyOS-dwm

pdwm & phyOS-dwm are both suckless dwm forks. Both of them are in this repo, please read below to understand why. Also note that dwmblocks is embedded in this project, you don't need to download it from somewhere else.

For full animation support, please install phyOS-picom fork. Any other picom fork won't work.

phyOS-dwm is the oldest master branch of this project. This has been changed to pdwm branch. phyOS-dwm is just modified suckless dwm, with dwmblocks in it. Please note that this dwmblocks uses libconf library, which you can add/remove statusbar blocks with .cfg files. Also more than 10 statusbar blocks available for phyOS users. However, all of these can be installed on base arch linux too. Statusbar configuration can be made easily with pOS-make-bar script.

Settings button on top left (blue one) will open up a terminal application, which you can choose powermenu themes - colorschemes, and animation options from there. It also has some extra scripts in it to make your statusbar, choose sddm & grub themes.

Gifs

alt text alt text

Screenshots

(Alt + Tab to switch windows) (Hide and restore windows from bottom dock (Check keys for how to do this)) (catppuccin & tokyo night theme) (Power menu 'right one is to renew dwm without restart')

Why the change? What is pdwm?

Originally, dwm configuration options are compiled into a single binary. Therefore, to be able to change any attribute you need to edit configuration file and recompile it into dwm again. With pdwm, this changes. Since dwm is supposed to be minimalistic and performant, simply putting a configuration library to handle these options doesn't make sense. It will increase SLOC a lot. To overcome this issue, another simple method has been made: All of the configuration variables in dwm (nearly everything, except some edge cases) have been marked as extern variables. In pdwm folder, you can see all the configuration options. These options are made a shared library (.so). With this flexibility, and minor lines of code, at the execution stage of dwm, all of the variables are being loaded into dwm from an outside source, which is the shared library. This way, by just compiling the variables and renewing dwm, all options have been renewed. Without even using sudo. Note that from now on, mostly pdwm will get updated. However, the older fork, phyOS-dwm is still available on master branch. This is much of a choice now, choose whatever you prefer. The tool to configure dwm is a python program, which is called pdwmc. It is the main control center of pdwm. Link: https://github.com/FT-Labs/pdwmc

pdwm Usage

IMPORTANT: Please extend your "LD_LIBRARY_PATH" to this location: E.G: export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/.config/phyos/pdwm" You must do this, because fallback library will be in /usr/lib. Your local configurations (.so) file will be stored here, and you must extend it to this place for linux ld linker to be able to see it. As said before pdwm is a simple python program. It both has support for changing/printing any configuration options from terminal, or via QT app. Now lets get on with options.

usage: pdwmc [-h] [-w] [-b] [-g] [-s {appearance,buttons,keys,rules}]
            [-c {appr,font,button,key,rule}] [-a {font,button,key,rule}]
            [-d {font,button,key,rule}] [-q]

options:
  -h, --help            show this help message and exit
  -w, --write           Write current dwm configuration to edit [Use this before to
                        edit dwm configuration] or reset your changes
  -b, --build           Save changes to dwm
  -g, --get             Get default dwm settings (overrides current) to use pdwm,
                        also runs -w flag
  -s {appearance,buttons,keys,rules}, --show {appearance,buttons,keys,rules}
  -c {appr,font,button,key,rule}, --change {appr,font,button,key,rule}
                        Choose and change attribute
  -a {font,button,key,rule}, --add {font,button,key,rule}
                        Add new attribute
  -d {font,button,key,rule}, --delete {font,button,key,rule}
                        Delete an attribute
  -q, --qt              Run pdwm as a QT application

If you prefer a gui application, just run pdwmc -q. It is a simple and editable QT app, also catches your keypresses, which will save you some time from learning keysym's from internet. If key is not detected, simply find it from google and edit the key.

pdwmc screenshots

To be able to install these, please follow the steps below. Also if interested, you can download iso image to a vm, build it then update to system to be able to try.

These explanations are only for arch linux based distributions (any pacman using distro is okay). There are important dependencies, which I could not find all packages to fit all distributions. Later on a debian package version may come too.

Append package repo end of your /etc/pacman.conf :

[phyOS-repo]
SigLevel = Required DatabaseOptional
Server = https://FT-Labs.github.io/$repo/$arch

After adding the repo, install keyring first:

sudo pacman-key --recv-key 964FD85861C858D7
sudo pacman-key --lsign-key 964FD85861C858D7
sudo pacman -Syy phyOS-keyring
sudo pacman-key --init
sudo pacman-key --populate phyOS

Now install necessary packages (This will install most of the phyOS packages, if you which packages to choose simply install them, this is a general guide): sudo pacman -Syy curl https://raw.githubusercontent.com/FT-Labs/phyOS-Aug-22/master/packages.x86_64 | sed -e '/\#/d' | tr -s "\n" | xargs sudo pacman -S --noconfirm After the installation, please reboot your computer. Now you will need dotfiles, please move your current dots to somewhere else if they are important. Run: phyup dots --force to get latest dotfiles. This is required to set your .xinitrc, .xprofile and picom options etc. correctly. Anyway, if you want you can just check dotfiles repo and choose whatever is required from there. pdwm Packages: pdwm pdwmc phyOS-dwm (classic compiled dwm) packages: phyOS-dwm

Running:

Simply run startx from tty, or use a display manager. Desktop file is automatically made and installed.

NOTE: Caps Lock == Win

NOTE: Caps Lock is also equal to ESC in terminal (vim etc..)

Program Keys (man dwm will work too, or try keys sheet):

Key Combination Action
Win + q Quit focused
Win + Return Terminal(st)
Win + ESC Power menu
Win + Shift + Return Scratchpad (Terminal) [Press again to toggle]
Win + w $BROWSER(default ungoogled chromium)
Win + r File Browser (lf)
Win + a Execute Applications (rofi)
Win + b Toggle status bar (hide)
Win + d Jump to directory with terminal (check 'bm' script to add bookmarks)
Win + Shift + a Execute Any Runnable (dmenu)
Win + p passmenu (pass password manager)
Alt + p stress test and monitor (s-tui)
Win + F4 pulsemixer (audio input)
Win + F5 set multiple monitors and choose refresh rate
Win + F9 mount drive
Win + F10 unmount drive
Win + F11 Camera
Win + Shift + s Screenshot (choose area or screen)
Printscreen Screenshot fullscreen
Shift + Printscreen Screenshot (choose area or screen)
Win + ` Choose emoji and copy

Terminal keybinds

Key Combination Action
Alt + Shift + j Decrease font size (zoom -)
Alt + Shift + k Increase font size (zoom +)
Alt + o Copy output of command
Alt + ; Cycle fonts

Window Movement

Key Combination Action
Win + Tab Choose window from current desktop
Alt + Tab Choose any window and focus
Win + j Focus next
Win + Shift + j Move focused to next
Win + k Focus previous
Win + Shift + k Move focused to previous
Win + l Resize master +
Win + Shift + h Next Tag
Win + h Resize master -
Win + Shift + h Previous Tag
Win + s Sticky window toggle (show window in all tags)
Win + f Fullscreen (toggle)
Win + g Toggle gaps
Win + x Decrease gaps
Win + Shift + x Increase gaps
Win + Shift + g Set default gaps
Win + m Increase master (just try it to understand)
Win + Shift + m Decrease master (just try it to understand)
Win + Space Set focused as master
Win + Shift + Space Toggle floating window

Layouts

You can Right Click RMB on ' []= ' in status bar to choose layout with mouse

Key Combination Action
Alt + 1 Tiling (Default)
Alt + 2 Backstack
Alt + 3 Monocle (windows top of each)
Alt + 4 Deck layout
Alt + 5 Spiral
Alt + 6 Dwindle
Alt + 7 Centered master
Alt + 8 Centered floating master
Alt + 9 Floating (windows 10 style)
Win + Right Cycle layout next
Win + Left Cycle layout previous

Tag operations

You can Left Click LMB on 1-9 in status bar to focus tag

You can Right Click RMB on 1-9 in status bar to select multiple tags

Key Combination Action
Win + 1 .. 9 Go to tag number
Win + WheelUp Go to next tag
Win + WheelDown Go to previous tag
Win + Shift + 1 .. 9 Send focused window to tag number

Utility keys

Key Combination Action
Sound Up Increase sound
Sound Down Decrease sound
Brightness Down Decrease brightness
Brightness Up Increase brightness
fn + TouchpadToggle Toggle touchpad
fn + Kbd Backlight Up Increase keyboard backlight
fn + Kbd Backlight Down Decrease keyboard backlight

Mouse actions

Key Combination Action
RMB Open Dropdown Menu (On Root Window)
Win + RMB Open Dropdown Menu (On Any Client)
Win + LMB Move window with mouse (sets window to floating mode)
Win + MMB Resize window with mouse (sets window to floating mode)
Alt + LMB Hide focused window (iconic state, restore it from dock)
Alt + RMB Toggle dock

pdwm's People

Contributors

alpcho avatar arch-user-france1 avatar enterthevoid-x86 avatar ft-labs 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

pdwm's Issues

proper sticky

hello phy
saw ur commit about not focusing sticky windows,
might wanna check out this pr LukeSmithxyz/dwm#181, think it 'fixes' this behaviour pretty well

the ISVISIBLE(c) || c->issticky thing makes impossible to focus sticky windows if they are alone in a tag with focusstack() keybinding (you can still focus the window with the mouse).

Command not found: phyup

Greetings,

I am trying to install this on arch linux. I've installed the necessary packages and built both pdwm and pdwmc. When I try to run the `phyup dots --force' command, it cannot be found. Do you know what could be the problem?

Installation Help

Good morning,

I was able to get through all of the installation process until the very end. I have my pacman set up and updated. Then the readme tells me to pacman -Syy
and then
curl [https://raw.githubusercontent.com/FT-Labs/phyOS-Aug-22/master/packages.x86_64](https://raw.githubusercontent.com/FT-Labs/phyOS-Aug-22/master/packages.x86_64) | sed -e '/\#/d' | tr -s "\n" | xargs sudo pacman -S --noconfirm

The former works just fine. But the latter returns zsh: unknown file attribute: h error: no targets specified (use -h for help

I literally copied and pasted that second curl code into my terminal, so I assume it's correct. But there are several commands I am not familiar with, so I'm posting this here for some guidance.

Thank you.

phyOS repo is unavailable.

https://ft-labs.github.io/$repo/$arch just does not work.

If I try to do: sudo pacman -Syy phyOS-keyring, It does not work.


╰─$ sudo pacman -Syy phyOS-keyring
:: Synchronizing package databases...
 core                                                           157.0 KiB   518 KiB/s 00:00 [#####################################################] 100%
 extra                                                         1715.3 KiB  4.30 MiB/s 00:00 [#####################################################] 100%
 community                                                        6.7 MiB  9.04 MiB/s 00:01 [#####################################################] 100%
 multilib                                                       170.8 KiB  1761 KiB/s 00:00 [#####################################################] 100%
 phyOS-repo                                                      15.1 KiB   119 KiB/s 00:00 [#####################################################] 100%
resolving dependencies...
looking for conflicting packages...

Packages (1) phyOS-keyring-20240603-3

Total Download Size:   0.02 MiB
Total Installed Size:  0.00 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 phyOS-keyring-20240603-3-any                                    19.1 KiB   415 KiB/s 00:00 [#####################################################] 100%
(1/1) checking keys in keyring                                                              [#####################################################] 100%
(1/1) checking package integrity                                                            [#####################################################] 100%
error: phyOS-keyring: signature from "Arda Atci ([email protected]) <[email protected]>" is unknown trust
:: File /var/cache/pacman/pkg/phyOS-keyring-20240603-3-any.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] 
error: failed to commit transaction (invalid or corrupted package (PGP signature))
Errors occurred, no packages were upgraded.

as a solution, I suggest uploading the packages to the official arch repo. I need the components, not the entire package (as provided by the compiling option via git)

Power menu

You have a nice power menu. Can you install it separately. Or can you tell me how to make it?

Picom blurring issues on older hardware

Please fix the following bug:

Wow GitHub buggy too doesn't let me uploads let's try again ah doesn't work

Basically if I open more than two windows it starts glitching and flackering around which is very bad for health.

Using some old apple laptop. Resolution is terrible since yay -Syu too, WLAN driver is not the right one, it's the one that has terrible performance and phyup dots --force does not work - it doesn't create the hard link.

Why merge dwm and dwmblocks?

Was there a reason to merge the two? They're two separate pieces of software that do two different things. By merging them you've violated the suckless methodology.

Is there a technical reason to doing this other than "only installing one thing?"

It's a shame because I want to use your flavor of dwmblocks but not dwm and now that is not possible.

[REQUEST] dwm config

Hi there,

do you have a config for plain dwm? I don't mind if there are no animations, but I like the look of your dwm setup.

error: target not found

phyOS-repo is up to date
error: target not found: phyOS-dwm
error: target not found: phyOS-dunst
error: target not found: phyOS-dwmblocks
error: target not found: phyOS-st
error: target not found: phyOS-fonts
error: target not found: phyOS-dmenu
error: target not found: phyOS-xmenu
error: target not found: lf

gpg: error reading key: No public key

Hi! Doing just as described in README:

sudo pacman-key --recv-key 964FD85861C858D7
sudo pacman-key --lsign-key 964FD85861C858D7
sudo pacman -Syy phyOS-keyring
sudo pacman-key --init
sudo pacman-key --populate phyOS

But the last command gives this error:

==> Appending keys from phyOS.gpg...
gpg: error reading key: No public key
==> Locally signing trusted keys in keyring...
==> ERROR: 5E29997979B066C7CCF502FE7B2148AD90FEEC50 could not be locally signed.

Im using Arch

Installing from repo on Arch throws hooks error

I wanted to give this one a shot and followed the instructions, but I get an error with nvidia.hook

error: failed to commit transaction (conflicting files)
phyOS-sysconf: /etc/pacman.d/hooks/nvidia.hook exists in filesystem

I moved nvidia.hook to nvidia.hook.bkp and the installation proceeded, but it created a bunch of files in /etc/pacman.d/hooks. Is this necessary?

$: paru -S phyOS-dwm-beta 

community/gum                    0.6.0-1         26,19 MiB
phyOS-repo/phyOS-sysconf         2.0-03          14,94 MiB
phyOS-repo/phyOS-system-scripts  2.7-02           0,08 MiB
phyOS-repo/phyOS-dwm-beta        1.2.5_beta-01    0,17 MiB

Total Installed Size:  41,38 MiB

:: Proceed with installation? [Y/n] 
(4/4) checking keys in keyring                                                 [--------------------------------------------] 100%
(4/4) checking package integrity                                               [--------------------------------------------] 100%
(4/4) loading package files                                                    [--------------------------------------------] 100%
(4/4) checking for file conflicts                                              [--------------------------------------------] 100%
error: failed to commit transaction (conflicting files)
phyOS-sysconf: /etc/pacman.d/hooks/nvidia.hook exists in filesystem
Errors occurred, no packages were upgraded.

Couple of Questions

Firstly, I would like to say, this is an excellent piece of work, really commendable. I had a few questions, I wanted to ask.

  • Are there any resources for making a custom Arch ISO that I can refer to?
  • How are you handling the installation, from the ISO, I mean are you using something like the calamares installer?

I would appreciate it if you could help me with this.

Thanks

Preserve on restart patch - Wrong tag behavior for some windows

Note - I am not using this build of dwm, rather I am using the 'preserveonrestart' patch with my own build of dwm.

I have ran into an issue that I heavily suspect has to do with the preserveonrestart patch.

The easiest example of it I can show is with deadbeef music player's search window. If I send the deadbeef main window to another tag, go to its tag, and then trigger the search window with ctrl-f, the search window will spawn on the original deadbeef tag rather than the one the window actually exists on.

Furthermore, checking the _NET_CLIENT_INFO property of each window, the deadbeef window is updated from '4, 0' to '8, 0', while even the new search window after the old has been killed retains the old property.

I am unable to test this on pdwm at the moment, however I heavily suspect the same thing would occur on it.

Here is a video of the issue.

Cant install phyOS-dwm

Hi, I am using endeavouros with gnome desktop right now, and have been trying to install phyOS-dwm. However, when I tried to start dwm from the login screen, it just returns me back to login. I have setup everything according to this repo. dotfiles have also been put into my home directory. I have tried disabling wayland on gnome but it didn't change anything as well. Im not sure if it's path issue, since I didn't know what to set in path.

[FEATURE REQUEST] PreserveOnRestart Patch - Stay on the same tag after restart

I felt the need for an additional feature, where the windows that have been assigned particular tags in the "tags mask" section of client rules, are sent back to the assigned tag upon restart.

Current behaviour is that, the assigned client remains in the current tag.
In other words, if I am using Firefox [assigned to tag 9] in tag 2, upon restart, Firefox should be sent to tag 9, and the windows that haven't been assigned tags should remain in tag 2.

which picom fork are u using

i loved ur config but for the time being i can not re install my system unfortunately to try phy os, can u please tell how can i get your Alt+tab and the picom that u are using?

Suggestion for eyecandy.

Dear Phy,
Great project with great eye candy but I have a suggestion to enhance the feel.

I hope you have heard of Elkowar's Wacky Widgets (eww). I think you have seen (elenapan's rice)[https://old.reddit.com/r/unixporn/comments/hpakeu/awesome_afternoon_in_a_perfect_world/] on unixporn. The dashboard widget on the bottom picture is made with eww. It would be a great addition to your dwm build.

El Psy Kongroo.

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.