Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrisTitusTech committed Nov 13, 2024
2 parents e939d26 + cff15bf commit 6443013
Show file tree
Hide file tree
Showing 235 changed files with 3,818 additions and 4,836 deletions.
36 changes: 36 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Pull Request

## Title
<!--[Provide a succinct and descriptive title for the pull request.]-->

## Type of Change
- [ ] New feature
- [ ] Bug fix
- [ ] Documentation Update
- [ ] Refactoring
- [ ] Hotfix
- [ ] Security patch
- [ ] UI/UX improvement

## Description
<!--[Provide a detailed explanation of the changes you have made. Include the reasons behind these changes and any relevant context. Link any related issues.]-->

## Testing
<!--[Detail the testing you have performed to ensure that these changes function as intended. Include information about any added tests.]-->

## Impact
<!--[Discuss the impact of your changes on the project. This might include effects on performance, new dependencies, or changes in behaviour.]-->

## Issue related to PR
<!--[What issue/discussion is related to this PR (if any)]-->
- Resolves #

## Additional Information
<!--[Any additional information that reviewers should be aware of.]-->

## Checklist
- [ ] My code adheres to the coding and style guidelines of the project.
- [ ] I have performed a self-review of my own code.
- [ ] I have commented my code, particularly in hard-to-understand areas.
- [ ] I have made corresponding changes to the documentation.
- [ ] My changes generate no errors/warnings/merge conflicts.
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# binaries
/dwm

# Patch Fail
*.rej
*.orig

# Object Files
*.o
12 changes: 2 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,7 @@ dwm: ${OBJ}
${CC} -o $@ ${OBJ} ${LDFLAGS}

clean:
rm -f dwm ${OBJ} dwm-${VERSION}.tar.gz

dist: clean
mkdir -p dwm-${VERSION}
cp -R LICENSE Makefile README config.def.h config.mk\
dwm.1 drw.h util.h ${SRC} dwm.png dwm-${VERSION}
tar -cf dwm-${VERSION}.tar dwm-${VERSION}
gzip dwm-${VERSION}.tar
rm -rf dwm-${VERSION}
rm -f dwm ${OBJ} *.orig *.rej

install: all
mkdir -p ${DESTDIR}${PREFIX}/bin
Expand All @@ -52,4 +44,4 @@ release: dwm
cp -f dwm release/
tar -czf release/dwm-${VERSION}.tar.gz -C release dwm

.PHONY: all clean dist install uninstall release
.PHONY: all clean install uninstall release
163 changes: 108 additions & 55 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,74 +1,127 @@
dwm - dynamic window manager
============================
dwm is an extremely fast, small, and dynamic window manager for X.
<div align="center">
<img src="./dwm-logo-bordered.png" alt="dwm-logo-bordered" width="195" height="90"/>

This is my personal fork with following patches:
# dwm - dynamic window manager
### dwm is an extremely ***fast***, ***small***, and ***dynamic*** window manager for X.

+ alwayscenter
+ alwaysfullscreen
+ auto start
+ cfacts
+ chatterino bottom
+ cool autostart
+ fakefullscreen client (with resize fix for chrome-based browsers + noborder fix)
+ multikeycode
+ movestack
+ noborder (floating + border flicker fix)
+ pertag
+ placemouse
+ resizepoint
+ statuscmd
+ swallow
+ switchtag
+ systray
+ true fullscreen
+ hide vacant tags
+ warp v2
+ winicon
</div>

Some patches are rewritten or modified to work together.
---
This is my **Personal Fork** with following patches:

<details>
<summary>Click to see the list of patches</summary>

Requirements
------------
In order to build dwm you need the Xlib header files.
- alwayscenter
- alwaysfullscreen
- auto start
- cfacts
- chatterino bottom
- cool autostart
- fakefullscreen client (with resize fix for chrome-based browsers + noborder fix)
- multikeycode
- movestack
- noborder (floating + border flicker fix)
- pertag
- placemouse
- resizepoint
- statuscmd
- swallow
- systray
- true fullscreen
- hide vacant tags
- warp v2
- winicon

**Note**: Some patches are rewritten or modified to work together.
</details>

Installation
------------
Edit config.mk to match your local setup (dwm is installed into
the /usr/local namespace by default).
## 📋 Prerequisites
This guide assumes your system has the latest updates before going ahead with the installation.

Afterwards enter the following command to build and install dwm (if
necessary as root):
> [!NOTE]
> You may want to keep the source directories of the tools you download in a suitable location for future reference as you may need to recompile them to apply configuration changes.
make clean install
<details>
<summary>Arch</summary>

Install dependencies:

Running dwm
-----------
Add the following line to your .xinitrc to start dwm using startx:
```sh
sudo pacman -S --needed base-devel extra/git extra/libx11 extra/libxcb extra/libxinerama extra/libxft extra/imlib2
```

exec dwm
If you find yourself missing a library then this can usually be found by searching for the file name using pacman:

In order to connect dwm to a specific display, make sure that
the DISPLAY environment variable is set correctly, e.g.:
```sh
$ pacman -F Xlib-xcb.h
extra/libx11 1.6.12-1 [installed: 1.7.2-1]
usr/include/X11/Xlib-xcb.h
```

DISPLAY=foo.bar:1 exec dwm
</details>

(This will start dwm on display :1 of the host foo.bar.)
<details>
<summary>Debian/Ubuntu</summary>

In order to display status info in the bar, you can do something
like this in your .xinitrc:
Install dependencies:

while xsetroot -name "`date` `uptime | sed 's/.*,//'`"
do
sleep 1
done &
exec dwm
```sh
sudo apt install build-essential git libx11-dev libx11-xcb-dev libxcb-res0-dev libxinerama-dev libxft-dev libimlib2-dev
```

It is worth checking the version of gcc on debian based systems as they may come with older implementations that can result in compilation errors.

Configuration
-------------
The configuration of dwm is done by creating a custom config.h
and (re)compiling the source code.
```sh
gcc --version
```

You would expect at least v8.x or above here.

If you find yourself missing a library then this can usually be found by searching for the file name using apt-file, a tool that have to be installed separately:

```sh
$ sudo apt install apt-file
$ sudo apt-file update
$ apt-file search xcb/res.h
libxcb-res0-dev: /usr/include/xcb/res.h
```

</details>


<details>
<summary>Void Linux</summary>

Install dependencies:

```sh
sudo xbps-install -Su base-devel libX11-devel libXft-devel libXinerama-devel freetype-devel fontconfig-devel libxcb-devel imlib2-devel
```

If you find yourself missing a library then this can usually be found by searching for the file name using xlocate, a tool that have to be installed separately via the xtools package:

```sh
$ xlocate yajl/yajl_gen.h
yajl-devel-2.1.0._4 /usr/include/yajl/yajl_gen.h
```

</details>

## 🛠️ Installation
Clone the repository, then compile and install.

```sh
git clone https://github.com/ChrisTitusTech/dwm-titus.git && \
cd dwm-titus && \
make && \
sudo make install
```

- A dwm.desktop file will be placed in `/usr/share/xsessions/` so if you are using a login manager you should now be able to select dwm as the window manager when logging in.

- If you do not use a login manager then you already know what you are doing. Add `exec dwm` at the end of your `~/.xinitrc` file.

> [!TIP]
> - By default new terminals are opened by using the keyboard shortcut of <kbd>SUPER</kbd> + <kbd>X</kbd> while rofi is started using <kbd>SUPER</kbd>+<kbd>R</kbd>
> - Check `config.h` for the keybindings, and change them according to your preference.
Loading

0 comments on commit 6443013

Please sign in to comment.